Skip to main content

Tenant model

project_id is the tenant boundary for the API. User IDs are supplied by your integration and must be unique within that project.

Main resource families

ResourceWhat it representsExample routes
usersThe root record for a person in your ONVY projectPOST /users, GET /users/{user_id}
baselinesStable user-specific baselines used for personalizationGET /users/{user_id}/baselines
daily_recordsHarmonized daily scores, zones, and logsGET /users/{user_id}/daily_records/{type}
factsLong-term profile and context facts used for AI personalizationGET /users/{user_id}/facts
activitiesWorkouts and mindfulness sessionsGET /users/{user_id}/activities
ai_summariesGenerated summaries, including meal-related outputsGET /users/{user_id}/ai/summaries
custom_recordsCustomer-defined records and record typesGET /users/{user_id}/custom_records
mealsNutrition entries and AI meal analysis inputsGET /users/{user_id}/nutrition/meals
chat completionsUser-scoped conversational AI interactionsPOST /users/{user_id}/chat/completions

Pagination contract

List responses include a pagination object:
{
  "pagination": {
    "page": "eyJMYXN0RXZhbHVhdGVkS2V5IjogLi4ufQ==",
    "limit": 100,
    "total": 240,
    "next_page": "eyJMYXN0RXZhbHVhdGVkS2V5IjogLi4ufQ=="
  }
}

Rules

  • Treat page and next_page as opaque tokens.
  • Pass page={next_page} to request the next result window.
  • Do not decode or mutate the token client-side.
  • limit defaults and maximums can vary by route. Check the endpoint reference.

Naming conventions

  • JSON fields use snake_case
  • Enums use PascalCase
  • Providers use CAPITALCASE
  • ONVY-managed IDs are prefixed by type, for example proj_, score_, or recmd_