Skip to main content
Authenticated API

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}
ParameterTypeDescription
statusstringFilter: completed, all, or omit for active only
limitintegerMax 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


  • Stations - Station management
  • Routing - How orders get routed to stations
  • Events - Real-time ticket state change events
  • Overview - KDS API overview