Skip to content

Statuses

Statuses in BenchKey are tenant-configurable, every shop can rename, add, and re-order its workflow. These read-only discovery endpoints return the exact values the rest of the API accepts, so your integration never has to hardcode or guess status strings:

All three are settings-style lists: small, returned in full, not paginated.


GET /api/v1/statuses

Returns the tenant’s configured ticket status catalog, in display order, the exact values accepted by POST /tickets/:id/status. Statuses with is_system: true are set by business logic and cannot be renamed or deleted. Tenants that have never customized statuses get the standard default catalog.

Scope required: tickets.read

Terminal window
curl "https://app.benchkey.com/api/v1/statuses" \
-H "Authorization: Bearer bk_live_01J8X4_kvWz9nP3mRqTs7uYeBfGhDjLa"
const res = await fetch("https://app.benchkey.com/api/v1/statuses", {
headers: { Authorization: "Bearer bk_live_01J8X4_kvWz9nP3mRqTs7uYeBfGhDjLa" },
});
const { data } = await res.json();
const validStatuses = data.map((s) => s.name);
{
"object": "list",
"data": [
{
"object": "ticket_status",
"name": "Waiting for Parts",
"color_category": "warning",
"is_system": false
},
{
"object": "ticket_status",
"name": "Ready for Pickup",
"color_category": "success",
"is_system": true
}
],
"has_more": false,
"next_cursor": null
}
FieldTypeDescription
namestringThe exact status string ticket endpoints accept
color_categorystringDisplay color bucket: accent, neutral, success, warning, or danger
is_systembooleanSet by business logic; cannot be renamed or deleted

GET /api/v1/statuses/queues

Returns the tenant’s queue list in display order, valid targets for queue assignment. id and color are null for legacy tenants whose queues predate the queues table.

Scope required: tickets.read

Terminal window
curl "https://app.benchkey.com/api/v1/statuses/queues" \
-H "Authorization: Bearer bk_live_01J8X4_kvWz9nP3mRqTs7uYeBfGhDjLa"
{
"object": "list",
"data": [
{
"object": "queue",
"id": 1,
"name": "Front Bench",
"color": "#539bf5",
"display_order": 0
}
],
"has_more": false,
"next_cursor": null
}
FieldTypeDescription
idinteger|nullQueue ID (null for legacy tenants whose queues predate the queues table)
namestringQueue name, the value queue_name fields accept
colorstring|nullDisplay color
display_orderintegerPosition in the app’s queue list

GET /api/v1/statuses/leads

Returns the tenant’s lead status registry in pipeline order. key is the machine value lead endpoints accept; is_terminal marks end states (won/lost) excluded from auto-chain progression; follow_up_after_days is the auto-advance timer (null = none).

Scope required: leads.read

Terminal window
curl "https://app.benchkey.com/api/v1/statuses/leads" \
-H "Authorization: Bearer bk_live_01J8X4_kvWz9nP3mRqTs7uYeBfGhDjLa"
{
"object": "list",
"data": [
{
"object": "lead_status",
"key": "new",
"label": "New",
"color": "#539bf5",
"order_index": 0,
"follow_up_after_days": 2,
"is_terminal": false,
"is_system": true
},
{
"object": "lead_status",
"key": "won",
"label": "Won",
"color": "#57ab5a",
"order_index": 5,
"follow_up_after_days": null,
"is_terminal": true,
"is_system": true
}
],
"has_more": false,
"next_cursor": null
}
FieldTypeDescription
keystringMachine key lead endpoints accept (e.g. "new", "pending")
labelstringHuman display label
colorstring|nullDisplay color
order_indexintegerPipeline display order
follow_up_after_daysinteger|nullAuto-advance timer in days (null = no timer)
is_terminalbooleanEnd state (won/lost); excluded from auto-chain progression
is_systembooleanSeeded system status; protected from deletion

HTTP statusCodeMeaning
401unauthorizedKey is missing, malformed, or revoked
403insufficient_scopeAPI key lacks tickets.read (ticket statuses, queues) or leads.read (lead statuses)

See Errors for the full error envelope format.

System status