Common issues
Diagnose frequent Partners API authentication, query, and write failures
Start by logging the HTTP status, response body, and requestId. The sections below cover the most common causes.
API key rejected
A Partners API key must use this exact header scheme:
Authorization: users API-Key YOUR_API_KEYBearer, API-Key without the users prefix, and differently capitalized variants are not accepted. Keys are available only when Partners API access is enabled for the tenant; ask your Basker administrator if the key is missing or disabled.
Request sent to /api/
API keys cannot access Basker's native /api/ routes. Use the versioned Partners API path:
https://api.basker.app/partners/2026-02/remarkable-theatre/pagesA request to /api/pages with a Partners API key returns 403.
Tenant cannot be resolved
Keep a valid tenant slug in the URL. If you also send x-basker-tenant-id or x-basker-tenant-slug, remember that the header takes precedence over the path.
An unknown tenant returns 404. Check the slug and remove override headers while diagnosing the request. See Multi-tenancy.
Filter returns no records or is rejected
Filters must use nested bracket notation. A JSON string assigned directly to where is not parsed as a filter object.
curl -s -G \
-H "Authorization: users API-Key YOUR_API_KEY" \
--data-urlencode 'where[title][contains]=Moonlit' \
"https://api.basker.app/partners/2026-02/remarkable-theatre/events"Check the collection slug, field name, operator, bracket structure, and encoded value. Remove conditions one at a time. Draft-only records require draft=true; records owned by another organisation appear only when the collection and record are shared with your tenant group.
Configured attributes use attributeWhere[custom.FIELD_KEY][OPERATOR], not where. See Filtering.
Relationship returns an ID
depth=0 deliberately returns relationship IDs. Increase depth and, when selecting a limited shape, add the related collection under populate:
?depth=1&select[venue]=true&populate[venues][id]=true&populate[venues][title]=trueUnsupported version
Use a supported version segment such as 2026-02 or the legacy 2025-07 contract. Retrieve the current version list and schema from GET https://api.basker.app/partners/openapi.
Read succeeds but write returns 404
Tenant-group sharing can make another member's record readable. Writes remain confined to the owning tenant, so PATCH, PUT, or DELETE returns 404 for that shared record. Confirm the record ID, collection, resolved tenant, and ownership.
Update returns 409
A dedicated block or theme-settings mutation rejected an outdated ifUpdatedAt value. Fetch the latest draft, reconcile your change, and retry with its current updatedAt. Do not automatically overwrite the newer edit.
Write returns 422
The request reached the endpoint but failed field or operation validation. Use the corresponding schema-discovery endpoint and inspect the response's errors details. Standard create/update routes also reject guarded fields such as blocks, theme, and themeSettings; use the dedicated mutation routes instead.
Request returns 429
The tenant exceeded its read or write allowance for the current one-minute window. Wait for the response's Retry-After duration, then retry with backoff and jitter. See Rate limits.