Start
Developer quickstart
Choose a released Concierge integration surface and complete a working server-to-server request.
Choose one integration path
Start with the outcome you need. The Ticket API works with service requests already created by Concierge. CRM Webhook sends mapped contacts and inquiries to middleware you control. Routing webhooks send team alerts. CRM inbound returns a narrow set of approved fields to linked Concierge records.
| Need | Use | First guide |
|---|---|---|
| Read or update tickets | Ticket API | /developers/ticket-api |
| Create CRM records | CRM Webhook | /developers/crm-webhook |
| Receive visitor alerts | Routing webhook | /developers/routing-webhooks |
| Return approved CRM changes | CRM inbound | /developers/crm-inbound |
Make your first Ticket API request
A Concierge user with routing permission creates a key for one site. The external service keeps that key server-side and sends it with every request for that same site.
- 1In Concierge, select the site and open Integrations.
- 2Choose Developer access, then create an API key with tickets:read.
- 3Copy the cg_live_ secret immediately; it is shown only once.
- 4Store the API base, site ID, and key in your server-side secret manager.
- 5Run the request below and confirm the response contains data and total.
export CONCIERGE_API_BASE="https://poweredbyconcierge.com/api/backend"
export CONCIERGE_SITE_ID="site_..."
export CONCIERGE_API_KEY="cg_live_..."
curl --fail-with-body \
"$CONCIERGE_API_BASE/v1/sites/$CONCIERGE_SITE_ID/tickets?limit=10" \
-H "Accept: application/json" \
-H "x-concierge-api-key: $CONCIERGE_API_KEY"The production proxy above is the stable public base. For another environment, use the server URL in that environment's downloaded OpenAPI document.
Know what success looks like
A successful list request returns HTTP 200 and an object shaped like the example below. An empty data array is a valid result when the site has no ticket requests.
- 401 — the key is missing, invalid, or revoked.
- 403 — the key does not include the required ticket scope.
- 404 — the ticket is unavailable for this site; do not infer cross-site existence.
- 429 — stop sending that request class and retry only after the server permits it.
{
"data": [],
"total": 0
}Next guide
Authentication and credentials