Developer Platform

Build

Ticket API

Read, synchronize, and respond to Concierge service requests from a site-scoped external system.

List and retrieve tickets

Ticket endpoints include only conversations created through the ticket route for the site in the URL. Lists are sorted by most recently updated.

OperationScopeNotes
GET /v1/sites/{siteId}/ticketstickets:readstatus, limit, and skip query parameters
GET /v1/sites/{siteId}/tickets/{ticketId}tickets:readReturns one site-scoped ticket
PATCH /v1/sites/{siteId}/tickets/{ticketId}tickets:writeUpdates status, priority, and external link data
POST /v1/sites/{siteId}/tickets/{ticketId}/commentstickets:writeAdds a specialist message and escalates the ticket
curl --fail-with-body \
  "$CONCIERGE_API_BASE/v1/sites/$CONCIERGE_SITE_ID/tickets?status=open&limit=25&skip=0" \
  -H "x-concierge-api-key: $CONCIERGE_API_KEY"

limit defaults to 25 and is capped at 100. Use skip for the next page and total to determine whether more records remain.

Understand the ticket object

Keep the Concierge ticket ID as your stable link. Store external identifiers back on the ticket so operators can move safely between systems.

FieldMeaning
idTicket identifier used by get, update, and comment operations.
statusopen, escalated, or resolved.
prioritynormal, high, or urgent.
visitorCaptured name, email, and phone when available.
requestThe visitor request, including the ticket form data.
messagesThe service-request conversation history.
externalTicketIdYour system's ticket or record identifier.
externalTicketUrlAn absolute HTTPS link back to your ticket.
externalSystemThe external system responsible for the update.
createdAt / updatedAtISO timestamps for ordering and synchronization.
{
  "id": "64f...",
  "siteId": "site_...",
  "status": "open",
  "priority": "high",
  "summary": "Customer needs installation help",
  "visitor": {
    "name": "Taylor",
    "email": "taylor@example.com",
    "phone": null
  },
  "externalTicketId": null,
  "externalTicketUrl": null,
  "externalSystem": null,
  "createdAt": "2026-07-29T18:10:00.000Z",
  "updatedAt": "2026-07-29T18:12:00.000Z"
}

Link your ticket and send a reply

After your system creates its record, patch the Concierge ticket with the external identity. Add a comment only when the text should be visible as a specialist message in the Concierge conversation.

  • status accepts open, escalated, or resolved.
  • priority accepts normal, high, or urgent.
  • externalTicketUrl must be an absolute HTTP or HTTPS URL.
  • A comment changes the ticket to escalated and records the named specialist.

Link and update

curl --fail-with-body -X PATCH \
  "$CONCIERGE_API_BASE/v1/sites/$CONCIERGE_SITE_ID/tickets/$TICKET_ID" \
  -H "Content-Type: application/json" \
  -H "x-concierge-api-key: $CONCIERGE_API_KEY" \
  --data '{
    "status": "escalated",
    "priority": "high",
    "externalTicketId": "HELP-1042",
    "externalTicketUrl": "https://support.example.com/tickets/HELP-1042",
    "externalSystem": "Example Support",
    "agentNote": "Assigned to installation team"
  }'

Add a specialist comment

curl --fail-with-body -X POST \
  "$CONCIERGE_API_BASE/v1/sites/$CONCIERGE_SITE_ID/tickets/$TICKET_ID/comments" \
  -H "Content-Type: application/json" \
  -H "x-concierge-api-key: $CONCIERGE_API_KEY" \
  --data '{"content":"We are reviewing your installation now.","authorName":"Example Support"}'

Next guide

CRM Webhook