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

Quinable Partner API — Clients (1.1.0)

Download OpenAPI specification:

Quinable Integrations: [email protected]

The Quinable Partner API lets an agency's external systems (e.g. a scheduling tool) create clients and routes/visits in Quinable and receive lifecycle status by signed webhooks.

Authentication. Every request carries a per-agency secret key in the Authorization header (Bearer qk_live_…). The key's prefix is its mode: qk_live_ acts on real data; qk_test_ is a sandbox — test routes never reach caregivers and move no money.

Conventions. JSON bodies; money is integer cents; ids are opaque prefixed strings (route_123); times of day are HH:MM in the route's local timezone. POST endpoints accept an Idempotency-Key header (replayed for 24h, then pruned). List endpoints use cursor pagination (limit, starting_after). Errors use real HTTP status codes plus a typed body.

Operations. Default rate limit 120 requests/min per key; a 429 carries the typed error body and a Retry-After header. Every response includes an X-Request-Id — quote it in support requests. To rotate an API key with zero downtime, issue a second key, switch, then revoke the old one; to rotate a webhook signing secret, register a second endpoint (new secret), verify deliveries, then delete the old endpoint.

Clients

The people care is delivered to.

List clients

Authorizations:
ApiKeyAuth
query Parameters
external_ref
string

Return the client with this partner-supplied id.

archived
boolean
Default: false
limit
integer [ 1 .. 100 ]
Default: 25
starting_after
string

A cursor — the id of the last object from the previous page.

Responses

Response samples

Content type
application/json
{
  • "object": "list",
  • "data": [
    ],
  • "has_more": true
}

Create a client

Authorizations:
ApiKeyAuth
header Parameters
Idempotency-Key
string <= 191 characters

Retrying with the same key replays the original response (24h) and creates nothing.

Request Body schema: application/json
required
first_name
required
string
last_name
required
string
email
string
mobile
string
external_ref
string

Your own id for this client. Unique per agency.

required
object

Responses

Request samples

Content type
application/json
{
  • "first_name": "string",
  • "last_name": "string",
  • "email": "string",
  • "mobile": "string",
  • "external_ref": "string",
  • "address": {
    }
}

Response samples

Content type
application/json
{
  • "id": "client_841",
  • "object": "client",
  • "first_name": "string",
  • "last_name": "string",
  • "email": "string",
  • "mobile": "string",
  • "address": {
    },
  • "timezone": "America/Detroit",
  • "external_ref": "string",
  • "archived": true,
  • "livemode": true,
  • "created_at": "2019-08-24T14:15:22Z"
}

Retrieve a client

Authorizations:
ApiKeyAuth
path Parameters
id
required
string
Example: client_841

Responses

Response samples

Content type
application/json
{
  • "id": "client_841",
  • "object": "client",
  • "first_name": "string",
  • "last_name": "string",
  • "email": "string",
  • "mobile": "string",
  • "address": {
    },
  • "timezone": "America/Detroit",
  • "external_ref": "string",
  • "archived": true,
  • "livemode": true,
  • "created_at": "2019-08-24T14:15:22Z"
}

Update a client

All fields optional. Sending address re-runs geocoding so timezone and caregiver-matching coordinates stay correct after a move. Sending external_ref reassigns the partner's own id (releases the old ref, claims the new one).

Authorizations:
ApiKeyAuth
path Parameters
id
required
string
Example: client_841
Request Body schema: application/json
required
first_name
required
string
last_name
required
string
email
string
mobile
string
external_ref
string

Your own id for this client. Unique per agency.

required
object

Responses

Request samples

Content type
application/json
{
  • "first_name": "string",
  • "last_name": "string",
  • "email": "string",
  • "mobile": "string",
  • "external_ref": "string",
  • "address": {
    }
}

Response samples

Content type
application/json
{
  • "id": "client_841",
  • "object": "client",
  • "first_name": "string",
  • "last_name": "string",
  • "email": "string",
  • "mobile": "string",
  • "address": {
    },
  • "timezone": "America/Detroit",
  • "external_ref": "string",
  • "archived": true,
  • "livemode": true,
  • "created_at": "2019-08-24T14:15:22Z"
}

Archive a client (end of care)

Archives the client (never deletes) and releases their external_ref for reuse by a replacement.

Authorizations:
ApiKeyAuth
path Parameters
id
required
string
Example: client_841
Request Body schema: application/json
optional
reason
string

Responses

Request samples

Content type
application/json
{
  • "reason": "string"
}

Response samples

Content type
application/json
{
  • "id": "client_841",
  • "object": "client",
  • "first_name": "string",
  • "last_name": "string",
  • "email": "string",
  • "mobile": "string",
  • "address": {
    },
  • "timezone": "America/Detroit",
  • "external_ref": "string",
  • "archived": true,
  • "livemode": true,
  • "created_at": "2019-08-24T14:15:22Z"
}