KDS endpoints require a valid JWT Bearer token with kitchen/chef roles. The API gateway exposes 6 KDS endpoints at /v1/commerce/kds/*.
KDS Ticket Lifecycle
Ticket operations for managing the kitchen order preparation workflow.
All ticket operations use the composite key of station_id and order_id to identify the ticket.
Get Station Tickets
Get all tickets assigned to a station.
GET /api/v1/kds/stations/{station_id}/tickets?status=all&limit=50
Authorization: Bearer {access_token}
| Parameter | Type | Description |
|---|---|---|
status | string | Filter: completed, all, or omit for active only |
limit | integer | Max tickets to return (default: 50) |
Response
[
{
"id": "ticket-abc123",
"tenant_id": "tenant-xyz",
"location_id": "loc-789",
"order_id": "order-12345",
"station_id": "station-grill",
"items": [
{
"menu_item_id": "item-burger",
"name": "Classic Burger",
"quantity": 2,
"modifiers": [
{
"modifier_id": "mod-cheese",
"name": "Cheddar",
"quantity": 1,
"allergens": ["dairy"]
}
],
"special_instructions": "Extra pickles",
"seat_number": 1,
"course": 2,
"is_done": false,
"allergens": ["gluten"]
}
],
"status": "pending",
"priority": "normal",
"course_number": 2,
"order_channel": "dine_in",
"order_reference": "Table 7",
"customer_name": null,
"server_name": "Sarah",
"target_time": "2026-01-23T12:30:00Z",
"estimated_prep_time": 480,
"metadata": {},
"created_at": "2026-01-23T12:00:00Z",
"started_at": null,
"completed_at": null,
"updated_at": "2026-01-23T12:00:00Z"
}
]
Start Ticket
Mark a ticket as "In Progress" when cook begins working.
POST /api/v1/kds/stations/{station_id}/orders/{order_id}/ticket/start
Authorization: Bearer {access_token}
Response: 200 OK
Sets started_at timestamp and transitions status from pending to in_progress.
Mark Ticket Ready
Mark ticket items as complete, ready for expo/pickup.
POST /api/v1/kds/stations/{station_id}/orders/{order_id}/ticket/ready
Authorization: Bearer {access_token}
Response: 200 OK
Transitions status from in_progress to ready.
Bump Ticket
Complete the ticket and clear from display.
POST /api/v1/kds/stations/{station_id}/orders/{order_id}/ticket/bump
Authorization: Bearer {access_token}
Response: 200 OK
Sets completed_at timestamp and transitions status to bumped (terminal state).
Recall Ticket
Bring back a ready ticket for modifications.
POST /api/v1/kds/stations/{station_id}/orders/{order_id}/ticket/recall
Authorization: Bearer {access_token}
Response: 200 OK
Transitions status from ready to recalled. Clears completed_at timestamp.
Void Ticket
Cancel a ticket entirely.
Permissions Required: manager, owner, tenant_admin
POST /api/v1/kds/stations/{station_id}/orders/{order_id}/ticket/void
Authorization: Bearer {access_token}
Response: 200 OK
Transitions status to voided (terminal state). Cannot void already-bumped tickets.
Update Ticket Priority
Change ticket priority level.
POST /api/v1/kds/stations/{station_id}/orders/{order_id}/ticket/priority
Authorization: Bearer {access_token}
Content-Type: application/json
{
"priority": "urgent"
}
Response: 200 OK
Priority values: normal, high, urgent