Integration guide · v1.0.0
Make your first crewQI request.
Create an organization-bound API key, call the same product entities used by the app, and use the versioned reference when you need the exact schema or operation details.
1. Create a key
An organization admin creates a TEST or LIVE key in crewQI Settings → API keys. The full secret is shown once, so store it in the customer’s server-side secret manager.
Environment boundary: cqi_test_ keys work only with the paired TEST organization and api-test.crewqi.com. Use cqi_live_ only with LIVE.
2. Make a first request
Send the key as a bearer token and put the organization ID in the URL. This example lists locations—the product entity name is locations, not buildings.
export CQI_API_KEY='cqi_test_<key-id>.<secret>'
export CQI_ORGANIZATION_ID='00000000-0000-0000-0000-000000000000'
curl --fail-with-body \
-H "Authorization: Bearer $CQI_API_KEY" \
-H 'Accept: application/json' \
"https://api-test.crewqi.com/v1/organizations/$CQI_ORGANIZATION_ID/locations?limit=50"
Collections return { items, nextCursor }. IDs are opaque UUIDs and JSON fields use camelCase. Cursors are opaque: send the returned value as cursor on the next request.
3. Write safely
- Make writes idempotent. Send a unique
Idempotency-Keyon every create or command so retries do not duplicate work. - Protect updates. Persist the response
ETagand send it asIf-Matchon updates. A changed representation returns412. - Follow the scope. Give each integration only the resource scopes it needs. The URL organization and the organization bound to the key must match.
Continue with the JavaScript example or Python example. The complete contract is available as openapi.yaml.