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.
| Operation | Scope | Notes |
|---|---|---|
| GET /v1/sites/{siteId}/tickets | tickets:read | status, limit, and skip query parameters |
| GET /v1/sites/{siteId}/tickets/{ticketId} | tickets:read | Returns one site-scoped ticket |
| PATCH /v1/sites/{siteId}/tickets/{ticketId} | tickets:write | Updates status, priority, and external link data |
| POST /v1/sites/{siteId}/tickets/{ticketId}/comments | tickets:write | Adds 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.
| Field | Meaning |
|---|---|
| id | Ticket identifier used by get, update, and comment operations. |
| status | open, escalated, or resolved. |
| priority | normal, high, or urgent. |
| visitor | Captured name, email, and phone when available. |
| request | The visitor request, including the ticket form data. |
| messages | The service-request conversation history. |
| externalTicketId | Your system's ticket or record identifier. |
| externalTicketUrl | An absolute HTTPS link back to your ticket. |
| externalSystem | The external system responsible for the update. |
| createdAt / updatedAt | ISO 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