Visits

10 endpoints in this category.

GET/get-upcomming-visits

Get Upcoming Visits

Get today's visits and upcoming scheduled visits.

Authentication:Required — Authorization: Bearer <token>

Query Parameters

NameTypeRequiredDescription
per_pageintegerNoResults per page
filterstringNoFilter type
filter_datestringNoFilter by date (YYYY-MM-DD)

Response Fields

NameTypeRequiredDescription
today_visitVisit[]YesToday's visits
upcomming_visitVisit[]YesFuture scheduled visits

Error Codes

StatusMeaning
401Unauthorized

Code Examples

curl -X GET 'https://visitnote-api-production.up.railway.app/api/therapist/v1/get-upcomming-visits' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer YOUR_TOKEN'
GET/get-visit-history

Get Visit History

Get past visits with optional filtering by note status.

Authentication:Required — Authorization: Bearer <token>

Query Parameters

NameTypeRequiredDescription
per_pageintegerNoResults per page
record_typestringNo'all' or 'with_notes'

Response Fields

NameTypeRequiredDescription
dataVisit[]YesArray of past visits

Error Codes

StatusMeaning
401Unauthorized

Code Examples

curl -X GET 'https://visitnote-api-production.up.railway.app/api/therapist/v1/get-visit-history' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer YOUR_TOKEN'
GET/visit-details/:scheduleUuid

Get Visit Details

Get full details for a specific visit including SOAP notes if completed.

Authentication:Required — Authorization: Bearer <token>

Path Parameters

NameTypeRequiredDescription
scheduleUuidstringYesVisit schedule UUID

Response Fields

NameTypeRequiredDescription
dataVisitYesComplete visit object with notes

Error Codes

StatusMeaning
404Visit not found

Code Examples

curl -X GET 'https://visitnote-api-production.up.railway.app/api/therapist/v1/visit-details/:scheduleUuid' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer YOUR_TOKEN'
POST/schedule-visit-request-save

Schedule Visit

Create a new visit request / schedule a visit.

Authentication:Required — Authorization: Bearer <token>

Request Body

NameTypeRequiredDescription
patient_uuidstringNoPatient UUID (if existing patient)
visit_datestringYesDate (YYYY-MM-DD)
start_timestringYesStart time (HH:MM)
notesstringNoVisit notes
addressstringNoVisit address

Response Fields

NameTypeRequiredDescription
uuidstringYesCreated visit UUID

Error Codes

StatusMeaning
422Missing required fields or invalid date/time

Code Examples

curl -X POST 'https://visitnote-api-production.up.railway.app/api/therapist/v1/schedule-visit-request-save' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{
  "patient_uuid": "your_patient_uuid",
  "visit_date": "your_visit_date",
  "start_time": "your_start_time",
  "notes": "your_notes",
  "address": "your_address"
}'
POST/visit-audio-upload

Upload Visit Audio

Upload an audio recording for a visit. Uses multipart form data.

Authentication:Required — Authorization: Bearer <token>
Use multipart/form-data content type. Max file size: 50MB.

Request Body

NameTypeRequiredDescription
audioFileYesAudio file (m4a, wav, mp3)
schedule_uuidstringYesVisit schedule UUID

Response Fields

NameTypeRequiredDescription
urlstringYesS3 URL of uploaded audio

Error Codes

StatusMeaning
413File too large
422Invalid file type

Code Examples

curl -X POST 'https://visitnote-api-production.up.railway.app/api/therapist/v1/visit-audio-upload' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: multipart/form-data' \
  -F 'audio=@/path/to/file' \
  -F 'schedule_uuid=value'
POST/visit-timer-events

Sync Timer Events

Upload visit timer events with GPS coordinates for visit tracking.

Authentication:Required — Authorization: Bearer <token>
Timer event types: start_travel, arrive, start_documentation, complete. Each event includes GPS coordinates and accuracy in meters.

Request Body

NameTypeRequiredDescription
schedule_uuidstringYesVisit schedule UUID
eventsTimerEvent[]YesArray of timer events

Error Codes

StatusMeaning
422Invalid event data

Code Examples

curl -X POST 'https://visitnote-api-production.up.railway.app/api/therapist/v1/visit-timer-events' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{
  "schedule_uuid": "your_schedule_uuid",
  "events": "[{\"event_type\": \"start_travel\", \"event_time\": \"2026-03-01T08:30:00Z\", \"latitude\": 29.7604, \"longitude\": -95.3698, \"accuracy\": 10.5}]"
}'
POST/patient-referral-end-visit-note

Submit SOAP Note

Submit a completed SOAP note for a visit. Includes subjective, objective, assessment, plan, vitals, and signature.

Authentication:Required — Authorization: Bearer <token>

Request Body

NameTypeRequiredDescription
schedule_uuidstringYesVisit schedule UUID
subjectivestringYesSubjective section
objectivestringYesObjective section
assessmentstringYesAssessment section
planstringYesPlan section
vital_signsobjectNoVital signs data
signaturestringNoBase64-encoded signature image

Error Codes

StatusMeaning
404Visit not found
422Missing required SOAP sections

Code Examples

curl -X POST 'https://visitnote-api-production.up.railway.app/api/therapist/v1/patient-referral-end-visit-note' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{
  "schedule_uuid": "your_schedule_uuid",
  "subjective": "your_subjective",
  "objective": "your_objective",
  "assessment": "your_assessment",
  "plan": "your_plan",
  "vital_signs": "your_vital_signs",
  "signature": "your_signature"
}'
POST/register-fcm-token

Register FCM Token

Register a Firebase Cloud Messaging token for push notifications.

Authentication:Required — Authorization: Bearer <token>

Request Body

NameTypeRequiredDescription
fcm_tokenstringYesFirebase FCM device token

Error Codes

StatusMeaning
422Invalid token

Code Examples

curl -X POST 'https://visitnote-api-production.up.railway.app/api/therapist/v1/register-fcm-token' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{
  "fcm_token": "your_fcm_token"
}'
POST/scheduling/optimize

Optimize Day Route

Compute the visit order that minimizes drive time for a given day, using traffic-aware routing. Returns a suggested order with realistic suggested times (visit durations + buffers + drive legs), total drive time and miles, and the estimated savings versus the current order. Suggest-only — nothing is rescheduled until the client applies changes via the reschedule endpoint.

Authentication:Required — Authorization: Bearer <token>
Uses the clinician's home base as the route start/end when one is set in the scheduling policy. Falls back to open routing data when live traffic is unavailable.

Request Body

NameTypeRequiredDescription
datestringYesDay to optimize (YYYY-MM-DD)
lock_firstbooleanNoKeep the first visit fixed and optimize the rest

Error Codes

StatusMeaning
422Fewer than 3 geocodable visits on that day, or more than 12 visits (routing API limit)

Code Examples

curl -X POST 'https://visitnote-api-production.up.railway.app/api/therapist/v1/scheduling/optimize' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{
  "date": "2026-08-14",
  "lock_first": "your_lock_first"
}'
PUT/visit/:uuid/mileage

Update Visit Mileage

Write mileage for a visit — the total, optionally split into travel vs. on-site miles. Used for reimbursement and year-end tax reporting.

Authentication:Required — Authorization: Bearer <token>

Path Parameters

NameTypeRequiredDescription
uuidstringYesVisit UUID

Request Body

NameTypeRequiredDescription
total_milesnumberYesTotal miles for the visit
travel_milesnumberNoMiles driven between visits (business miles)
onsite_milesnumberNoMiles driven on-site

Error Codes

StatusMeaning
404Visit not found (including cross-tenant access attempts)
422Invalid mileage values

Code Examples

curl -X PUT 'https://visitnote-api-production.up.railway.app/api/therapist/v1/visit/:uuid/mileage' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{
  "total_miles": "12.4",
  "travel_miles": "your_travel_miles",
  "onsite_miles": "your_onsite_miles"
}'