Download OpenAPI specification:
| session_id required | integer |
{- "session_id": 0
}{- "id": 0,
- "start_stress_score": 0,
- "end_stress_score": 0,
- "completed_at": "2019-08-24T14:15:22Z"
}| page | integer Page number |
| items_per_page | integer Items per page |
{- "collection": [
- {
- "id": 0,
- "completed_at": "2019-08-24T14:15:22Z",
- "session": {
- "id": 0,
- "name": "string",
- "category": {
- "id": 0,
- "name": "string"
}
}
}
], - "pagination": {
- "items_length": 0,
- "page": 0,
- "page_count": 0
}
}| id required | integer Activity ID |
| start_stress_score | integer or null |
| end_stress_score | integer or null |
{- "start_stress_score": 0,
- "end_stress_score": 0
}{- "id": 0,
- "start_stress_score": 0,
- "end_stress_score": 0,
- "completed_at": "2019-08-24T14:15:22Z"
}Authorization is optional - anonymous calls are accepted for pre-login events.
| event_name required | string |
| device_id required | string |
object or null | |
object or null |
{- "event_name": "string",
- "device_id": "string",
- "properties": { },
- "user_properties": { }
}| email required | string Account email address |
| password required | string Account password |
{- "email": "user@example.com",
- "password": "Password100!"
}{ }| dialing_code required | string International dialing code with leading '+' (e.g. '+1') |
| phone_number required | string National phone number without the dialing code |
{- "dialing_code": "+1",
- "phone_number": "2025551234"
}{ }| dialing_code required | string International dialing code with leading '+' (e.g. '+1') |
| phone_number required | string National phone number without the dialing code |
| code required | string 6-digit verification code |
{- "dialing_code": "+1",
- "phone_number": "2025551234",
- "code": "123456"
}{- "phone_verification_token": "string"
}string only for grant_type=password | |
| password | string only for grant_type=password |
| code | string 6-digit SMS code, required for grant_type=password (login 2FA) |
| refresh_token | string only for grant_type=refresh_token |
| grant_type required | string Enum: "password" "refresh_token" |
| scope required | string Value: "mobile" |
{- "email": "john.doe@example.com",
- "password": "Password100!",
- "code": "123456",
- "grant_type": "password",
- "scope": "mobile"
}{- "user_id": 0,
- "access_token": "string",
- "refresh_token": "string",
- "refresh_token_expires_at": 0,
- "scope": "string",
- "created_at": 0,
- "expires_in": 0,
- "token_type": "string"
}{- "available_settings": {
- "avatar": [
- {
- "id": 0,
- "image_url": "string"
}
], - "background_image": [
- {
- "id": 0,
- "image_url": "string"
}
], - "background_sound": [
- {
- "id": 0,
- "name": "string",
- "file_url": "string"
}
]
}, - "avatar": {
- "id": 0,
- "image_url": "string"
}, - "background_image": {
- "id": 0,
- "image_url": "string"
}, - "background_sound": {
- "id": 0,
- "name": "string",
- "file_url": "string"
}, - "music_volume": 0,
- "auto_stop_music": true,
- "display_captions": true
}| avatar_id | integer ID of the avatar to set |
| background_image_id | integer or null ID of the background image to set, or null to clear |
| background_sound_id | integer or null ID of the background sound to set, or null to clear |
| music_volume | integer Music volume level |
| auto_stop_music | boolean Whether to auto-stop background sound |
| display_captions | boolean Whether to display captions |
{- "avatar_id": 0,
- "background_image_id": 0,
- "background_sound_id": 0,
- "music_volume": 0,
- "auto_stop_music": true,
- "display_captions": true
}{- "available_settings": {
- "avatar": [
- {
- "id": 0,
- "image_url": "string"
}
], - "background_image": [
- {
- "id": 0,
- "image_url": "string"
}
], - "background_sound": [
- {
- "id": 0,
- "name": "string",
- "file_url": "string"
}
]
}, - "avatar": {
- "id": 0,
- "image_url": "string"
}, - "background_image": {
- "id": 0,
- "image_url": "string"
}, - "background_sound": {
- "id": 0,
- "name": "string",
- "file_url": "string"
}, - "music_volume": 0,
- "auto_stop_music": true,
- "display_captions": true
}| category_id | integer Filter by category ID |
{- "categories": [
- {
- "id": 0,
- "name": "string",
- "sessions_count": 0,
- "ui_color": "string"
}
], - "sessions": [
- {
- "id": 0,
- "name": "string",
- "duration": 0,
- "ui_color": "string",
- "category": {
- "id": 0,
- "name": "string",
- "ui_color": "string"
}
}
]
}| page | integer Page number |
| items_per_page | integer Items per page |
{- "collection": [
- {
- "id": 0,
- "title": "string",
- "body": "string",
- "notification_type": "next_session_ready",
- "data": { },
- "dedup_key": "string",
- "read_at": "2019-08-24T14:15:22Z",
- "sent_at": "2019-08-24T14:15:22Z",
- "created_at": "2019-08-24T14:15:22Z"
}
], - "pagination": {
- "items_length": 0,
- "page": 0,
- "page_count": 0
}
}| activity_id required | integer |
| message required | string |
{- "activity_id": 0,
- "message": "string"
}{- "id": 0,
- "message": "string",
- "created_at": "2019-08-24T14:15:22Z"
}| query | string Full-text search on name and description |
| is_favorite | boolean Filter by favorited sessions |
| page | integer Page number |
| items_per_page | integer Items per page |
{- "collection": [
- {
- "id": 0,
- "name": "string",
- "duration": 0,
- "ui_color": "string",
- "category": {
- "id": 0,
- "name": "string"
}
}
], - "pagination": {
- "items_length": 0,
- "page": 0,
- "page_count": 0
}
}| id required | integer Session ID |
{- "id": 0,
- "description": "string",
- "name": "string",
- "duration": 0,
- "audio_url": "string",
- "category": {
- "id": 0,
- "name": "string"
}, - "start_stress_checkin_time": 0,
- "end_stress_checkin_time": 0,
- "is_favorited": true,
- "taps": [
- {
- "show_at": 0,
- "point": "string"
}
], - "author": {
- "id": 0,
- "name": "string",
- "image_url": "string"
}
}Returns survey definitions (questions, answer options, scoring info) based on the authenticated user's track. Before the onboarding survey is submitted, definitions match the user's track; afterwards they form the follow-up set.
{- "survey_definitions": [
- {
- "id": "string",
- "title": "string",
- "tag": "string",
- "max_score": 0,
- "intros": [
- {
- "id": "string",
- "type": "intro",
- "tag": "string",
- "description": "string",
- "scored": true
}
], - "questions": [
- {
- "id": "string",
- "type": "single_select",
- "instruction": "string",
- "description": "string",
- "label": "string",
- "scored": true,
- "min": 0,
- "max": 0,
- "options": [
- {
- "key": 0,
- "value": "string"
}
]
}
]
}
]
}onboarding submits the user's selected track survey (the union of the track's instruments) and advances registration_checkpoint to intro_pending. follow_up covers the same instruments plus PGIC and requires the follow-up conditions to be met.
| survey_phase required | string Enum: "onboarding" "follow_up" Type of survey submission |
required | Array of objects |
{- "survey_phase": "onboarding",
- "survey": [
- {
- "id": "string",
- "questions": [
- {
- "id": "string",
- "answer": 0
}
]
}
]
}{- "sub_survey_results": [
- {
- "sub_survey_type": "string",
- "title": "string",
- "tag": "string",
- "range": {
- "min": 0,
- "max": 0
}, - "score": 0,
- "baseline_score": 0,
- "status": "baseline",
- "copy": {
- "body": "string",
- "addendum": "string"
}
}
]
}| page | integer Page number |
| items_per_page | integer Items per page |
| scope | string Limit results to a single set: 'onboarding' (baseline cards) or 'latest' (the most recent check-in batch). Omit for the full history.:
|
{- "collection": [
- {
- "sub_survey_type": "string",
- "title": "string",
- "tag": "string",
- "range": {
- "min": 0,
- "max": 0
}, - "score": 0,
- "baseline_score": 0,
- "status": "baseline",
- "copy": {
- "body": "string",
- "addendum": "string"
}
}
], - "pagination": {
- "items_length": 0,
- "page": 0,
- "page_count": 0
}
}| consent_definition_id required | integer ID of the consent definition being accepted |
{- "consent_definition_id": 0
}{- "id": 0,
- "email": "string",
- "first_name": "string",
- "last_name": "string",
- "birthdate": "2019-08-24",
- "push_enabled": true,
- "email_enabled": true,
- "daily_notification_time": "string",
- "time_zone": "string",
- "activated_at": "2019-08-24T14:15:22Z",
- "phone_number": {
- "dialing_code": "string",
- "number": "string"
}, - "track_type": "anxiety",
- "pain_location": "back_joints_multiple",
- "registration_checkpoint": "medicare_consent_pending",
- "next_follow_up_quarter": 0,
- "follow_up_available": true
}| consent_definition_id required | integer ID of the consent definition being submitted |
| accepted required | boolean Whether the user agrees to share data with their care team |
{- "consent_definition_id": 1,
- "accepted": true
}{- "id": 0,
- "email": "string",
- "first_name": "string",
- "last_name": "string",
- "birthdate": "2019-08-24",
- "push_enabled": true,
- "email_enabled": true,
- "daily_notification_time": "string",
- "time_zone": "string",
- "activated_at": "2019-08-24T14:15:22Z",
- "phone_number": {
- "dialing_code": "string",
- "number": "string"
}, - "track_type": "anxiety",
- "pain_location": "back_joints_multiple",
- "registration_checkpoint": "medicare_consent_pending",
- "next_follow_up_quarter": 0,
- "follow_up_available": true
}required | Array of objects |
{- "referrals": [
- {
- "referral_type": "primary_care_provider",
- "care_provider_name": "string",
- "clinic_name": "string",
- "phone_or_fax": "string"
}
]
}{- "id": 0,
- "email": "string",
- "first_name": "string",
- "last_name": "string",
- "birthdate": "2019-08-24",
- "push_enabled": true,
- "email_enabled": true,
- "daily_notification_time": "string",
- "time_zone": "string",
- "activated_at": "2019-08-24T14:15:22Z",
- "phone_number": {
- "dialing_code": "string",
- "number": "string"
}, - "track_type": "anxiety",
- "pain_location": "back_joints_multiple",
- "registration_checkpoint": "medicare_consent_pending",
- "next_follow_up_quarter": 0,
- "follow_up_available": true
}| password_reset_token required | string Encrypted token issued by the verify_code endpoint, valid for 30 minutes |
| password required | string min. 8 characters, must contain uppercase letter, lowercase letter, digit and special character, no spaces allowed |
| password_confirmation required | string |
{- "password_reset_token": "string",
- "password": "string",
- "password_confirmation": "string"
}{ }| email required | string Email address used in send_code |
| code required | string 6-digit verification code |
{- "email": "user@example.com",
- "code": "123456"
}{- "password_reset_token": "string"
}| current_password required | string |
| password required | string min. 8 characters, must contain uppercase letter, lowercase letter, digit and special character, no spaces allowed |
| password_confirmation required | string |
{- "current_password": "OldPassword1!",
- "password": "NewPassword1!",
- "password_confirmation": "NewPassword1!"
}{- "id": 0,
- "email": "string",
- "first_name": "string",
- "last_name": "string",
- "birthdate": "2019-08-24",
- "push_enabled": true,
- "email_enabled": true,
- "daily_notification_time": "string",
- "time_zone": "string",
- "activated_at": "2019-08-24T14:15:22Z",
- "phone_number": {
- "dialing_code": "string",
- "number": "string"
}, - "track_type": "anxiety",
- "pain_location": "back_joints_multiple",
- "registration_checkpoint": "medicare_consent_pending",
- "next_follow_up_quarter": 0,
- "follow_up_available": true
}{- "id": 0,
- "email": "string",
- "first_name": "string",
- "last_name": "string",
- "birthdate": "2019-08-24",
- "push_enabled": true,
- "email_enabled": true,
- "daily_notification_time": "string",
- "time_zone": "string",
- "activated_at": "2019-08-24T14:15:22Z",
- "phone_number": {
- "dialing_code": "string",
- "number": "string"
}, - "track_type": "anxiety",
- "pain_location": "back_joints_multiple",
- "registration_checkpoint": "medicare_consent_pending",
- "next_follow_up_quarter": 0,
- "follow_up_available": true
}| first_name | string |
| last_name | string |
| dialing_code | string International dialing code with leading '+' (e.g. '+1'). Required together with phone_number. |
| phone_number | string National phone number without the dialing code. Required together with dialing_code. |
| push_enabled | boolean |
| email_enabled | boolean |
| daily_notification_time | string Daily notification time in HH:MM format |
| time_zone | string IANA time zone name (e.g. 'America/New_York') |
{- "first_name": "Jane",
- "last_name": "Smith",
- "push_enabled": false,
- "email_enabled": true,
- "daily_notification_time": "09:00",
- "avatar_id": 1,
- "music_volume": 75
}{- "id": 0,
- "email": "string",
- "first_name": "string",
- "last_name": "string",
- "birthdate": "2019-08-24",
- "push_enabled": true,
- "email_enabled": true,
- "daily_notification_time": "string",
- "time_zone": "string",
- "activated_at": "2019-08-24T14:15:22Z",
- "phone_number": {
- "dialing_code": "string",
- "number": "string"
}, - "track_type": "anxiety",
- "pain_location": "back_joints_multiple",
- "registration_checkpoint": "medicare_consent_pending",
- "next_follow_up_quarter": 0,
- "follow_up_available": true
}| track_type required | string Enum: "anxiety" "mood" "pain" "anxiety_mood" "anxiety_pain" "mood_pain" "anxiety_mood_pain" The track to assign to the user (one of the seven base/combined conditions). Determines which surveys are required. |
| pain_location | string Enum: "back_joints_multiple" "shoulder_arm_hand" "legs_hips_knees_feet" "low_back" "neck" Where the user feels pain most. Required for pain-bearing tracks (pain, anxiety_pain, mood_pain, anxiety_mood_pain). |
{- "track_type": "anxiety",
- "pain_location": "back_joints_multiple"
}{- "id": 0,
- "email": "string",
- "first_name": "string",
- "last_name": "string",
- "birthdate": "2019-08-24",
- "push_enabled": true,
- "email_enabled": true,
- "daily_notification_time": "string",
- "time_zone": "string",
- "activated_at": "2019-08-24T14:15:22Z",
- "phone_number": {
- "dialing_code": "string",
- "number": "string"
}, - "track_type": "anxiety",
- "pain_location": "back_joints_multiple",
- "registration_checkpoint": "medicare_consent_pending",
- "next_follow_up_quarter": 0,
- "follow_up_available": true
}| email required | string |
| password required | string min. 8 characters, must contain uppercase letter, lowercase letter, digit and special character |
| first_name required | string |
| last_name required | string |
| birthdate required | string <date> |
| terms_accepted required | boolean Must be true to complete registration |
| consent_definition_id required | integer ID of the terms of service consent definition |
| time_zone required | string IANA time zone name (e.g. 'America/New_York', 'Europe/London') |
| dialing_code required | string International dialing code with leading '+' (e.g. '+1'), must match the one used in /auth/phone/verify_code |
| phone_number required | string National phone number without the dialing code, must match the one used in /auth/phone/verify_code |
| phone_verification_token required | string Signed token returned from /auth/phone/verify_code (valid for 10 minutes) |
| gender required | string Enum: "male" "female" "unknown" Birth sex. UI renders 'unknown' as 'Prefer not to say'. |
| medicare_id required | string 11-character Medicare Beneficiary Identifier (MBI). Dashes optional (e.g. '1EG4-TE5-MK73' or '1EG4TE5MK73'). |
{- "email": "john.doe@example.com",
- "password": "Password100!",
- "first_name": "John",
- "last_name": "Doe",
- "birthdate": "1950-01-01",
- "terms_accepted": true,
- "consent_definition_id": 1,
- "time_zone": "UTC",
- "dialing_code": "+1",
- "phone_number": "4254147755",
- "phone_verification_token": "<token from verify_code>",
- "gender": "female",
- "medicare_id": "1EG4-TE5-MK73"
}{- "access_token": "string",
- "token_type": "string",
- "expires_in": 0,
- "created_at": 0,
- "refresh_token": "string",
- "user": {
- "id": 0,
- "email": "string",
- "first_name": "string",
- "last_name": "string",
- "birthdate": "2019-08-24",
- "push_enabled": true,
- "email_enabled": true,
- "daily_notification_time": "string",
- "time_zone": "string",
- "activated_at": "2019-08-24T14:15:22Z",
- "phone_number": {
- "dialing_code": "string",
- "number": "string"
}, - "track_type": "anxiety",
- "pain_location": "back_joints_multiple",
- "registration_checkpoint": "medicare_consent_pending",
- "next_follow_up_quarter": 0,
- "follow_up_available": true
}
}