API Conventions
Servers
| Environment | Base URL |
|---|---|
| Sandbox | https://api.b2.alianza.com |
| Production | https://api.alianza.com |
Authentication uses a separate base URL. See Authentication for both values.
Authentication
All operations require an OAuth 2.0 bearer token in the Authorization: Bearer <token> header. Two grant types are used; the Authentication guide covers each in detail. The OpenAPI spec declares the following flows:
oauth2
Type: oauth2
Flow: clientCredentials
- Token URL:
{baseAuthUrl}/oauth/token - Scopes:
experience-assignability:check— Permission to invoke the Experience Assignability endpoint to check if a target can be assigned to an Experienceusers:manage— Permission to list and retrieve unified users for accounts connected to your Experience
Flow: authorizationCode
- Authorization URL:
{baseAuthUrl}/authorize - Token URL:
{baseAuthUrl}/oauth/token - Scopes:
experience-assignments:manage— Permission to list, retrieve, create, and delete Experience Assignments for your Experienceexperience-connections:manage— Permission to list, retrieve, create, update, and delete Experience Connections for your Experienceusers:manage— Permission to list and retrieve unified users for accounts connected to your Experience
Pagination
Alianza APIs use one of two pagination styles — offset-based or cursor-based.
This API is cursor-paged. Don't carry that assumption to other Alianza
APIs: an offset-paged API takes pageNum instead of cursor, and a
cursor-paged one does not always expose pageSize. Check the reference for
whichever API you are calling.
The Crux API's list endpoints accept two query parameters:
| Parameter | Description |
|---|---|
pageSize |
Items per page. Default 100, valid range 1–100. |
cursor |
The cursor returned by the previous request. Omit it to fetch the first page. |
Responses are a paged envelope containing entities, the pageSize applied, and a cursor. Keep requesting with the returned cursor until it comes back null, which signals the last page. There is no total count and no page number — you cannot jump to an arbitrary page.
Changed in 1.0.0: the
pageSizemaximum dropped from200to100. A request for more than 100 items now fails validation rather than being clamped.
Identifiers
- Resource IDs are UUIDs (RFC 4122).
- Phone numbers are E.164 format (e.g.
+14155551234). - Timestamps are ISO 8601 in UTC (e.g.
2026-03-01T12:00:00Z).
Tracing
Alianza generates a trace ID for every request and returns it to you. You do not need to send one.
Error responses carry it in the traceId field of the ProblemDetails
body, where it is a required field — so any failure you can see, you can quote.
Log traceId whenever you handle a non-2xx response. It is the fastest way
for Alianza to find your specific request, and without it a support conversation
starts with narrowing down which call you mean.
Successful responses do not include a trace ID. In practice that is rarely a problem — the calls you need traced are the ones that failed.
Error format
Errors use RFC 9457 application/problem+json with the ProblemDetails shape. See Errors.
Rate limits
The Crux API applies a default limit of 100 requests per second. It is enforced per authorized credential on endpoints that require authorization, and per client IP address on endpoints that don't — so every endpoint in this API is metered against your OAuth2 credential, not your IP.
Individual services may define their own limits that override the default. None currently do, so 100 requests per second is the effective ceiling across this API today.
That is a generous budget for the work this API involves. A full re-sync of
10,000 Experience Connections is 100 requests at the maximum pageSize — about
a second of traffic. You are far more likely to hit the limit through a
retry storm than through legitimate paging, so cap concurrency and back off on
failure rather than engineering around the ceiling.