Quinable Partner APIv1.1.0Guide Clients Routes Bids Timesheets Events & Webhooks Lookups

The core flow

a. Create (or resolve) the client

curl https://app.quinable.com/api/partner/v1/clients \
  -H "Authorization: Bearer $KEY" -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{ "first_name":"June", "last_name":"Delano",
        "external_ref":"RAH-CL-00123",
        "address":{"line1":"412 Palmer St","city":"Detroit","state":"MI","zip":"48201"} }'

Set external_ref to your own client id, then resolve later with GET /clients?external_ref=RAH-CL-00123 — so you never store Quinable's ids.

b. Post the route with its visits

curl https://app.quinable.com/api/partner/v1/routes \
  -H "Authorization: Bearer $KEY" -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{ "name":"Morning care", "date":"2026-09-01",
        "confirmation_type":"agency_confirm", "profession_id":291,
        "external_ref":"RAH-SCH-991",
        "visits":[{ "client":"client_841", "start_time":"08:00", "end_time":"10:00",
                    "pay_type":"per_hour", "hourly_rate":3200 }] }'

profession_id comes from GET /professions. Post one route per date (recurrence is your tool's job). The response's total_pay and status are computed by Quinable.

c. Choosing the caregiver

New caregivers may have null rating/reliability — treat that as "no track record yet," not a zero.

d. Follow the work

Watch webhooks (below), or poll: