Skip to content
All developer guides

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.

NeedUseFirst guide
Read or update ticketsTicket API/developers/ticket-api
Create CRM recordsCRM Webhook/developers/crm-webhook
Receive visitor alertsRouting webhook/developers/routing-webhooks
Return approved CRM changesCRM 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.

  1. In Concierge, select the site and open Integrations.
  2. Choose Developer access, then create an API key with tickets:read.
  3. Copy the cg_live_ secret immediately; it is shown only once.
  4. Store the API base, site ID, and key in your server-side secret manager.
  5. Run 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"

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