Create a checkout link
Creates a checkout for either a first-party platform identity or an operator-controlled subject. External checkouts return the provider's hosted URL, require no connected community platform, and return the canonical Arcalotl `member_id` for the operator's identity map. Closing checkout changes no entitlement state; create a new checkout link if the buyer returns. Supply an `Idempotency-Key` header to make retries safe.
Authorization
apiKey Community-scoped API key. Send it as Authorization: Bearer arclt_live_.... Keys carry scopes; endpoints that need a specific scope answer 403 missing_scope when the key lacks it.
In: header
Header Parameters
Opaque client-generated key (1-255 chars) that makes a write safe to retry for 24h. A replay of the same key and body returns the original response with Idempotent-Replayed: true. Reusing the key with a different body returns 422 idempotency_key_reuse; an in-flight duplicate returns 409 request_in_flight.
1 <= length <= 255Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/problem+json
application/problem+json
application/problem+json
application/problem+json
application/problem+json
application/problem+json
application/problem+json
curl -X POST "https://example.com/v1/checkout-links" \ -H "Idempotency-Key: 6f8a2c1e-4b3d-4e9a-9c21-2f0a1b7d5e44" \ -H "Content-Type: application/json" \ -d '{ "tier_id": "tier_01JMZX2A9F" }'{
"checkout_id": "cs_01JMZX9E7P",
"member_id": "mem_01JMZX1Z7D",
"url": "https://arcalotl.com/checkout/eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJwdXIiOiJjaGVja291dF9lbGVtZW50cyJ9.5mXf9pQ2vR7wA1",
"expires_at": "2026-07-04T12:00:00Z"
}{
"type": "https://docs.arcalotl.com/api/errors#invalid_request",
"title": "Bad Request",
"status": 400,
"detail": "The 'cursor' parameter is not a valid cursor from a previous response.",
"code": "invalid_request"
}{
"type": "https://docs.arcalotl.com/api/errors#unauthorized",
"title": "Unauthorized",
"status": 401,
"detail": "A valid API key is required. Provide it as 'Authorization: Bearer arclt_live_...'.",
"code": "unauthorized"
}{
"type": "https://docs.arcalotl.com/api/errors#missing_scope",
"title": "Forbidden",
"status": 403,
"detail": "This API key is missing the required scope: subscriptions:read.",
"code": "missing_scope"
}{
"type": "https://docs.arcalotl.com/api/errors#not_found",
"title": "Not Found",
"status": 404,
"detail": "The requested resource was not found.",
"code": "not_found"
}{
"type": "https://docs.arcalotl.com/api/errors#not_found",
"title": "Not Found",
"status": 404,
"detail": "The requested resource was not found.",
"code": "not_found"
}{
"type": "https://docs.arcalotl.com/api/errors#not_found",
"title": "Not Found",
"status": 404,
"detail": "The requested resource was not found.",
"code": "not_found"
}{
"type": "https://docs.arcalotl.com/api/errors#rate_limited",
"title": "Too Many Requests",
"status": 429,
"detail": "Rate limit exceeded. Retry after the interval in the Retry-After header.",
"code": "rate_limited"
}GETList discount codes
Lists the community's unarchived discount codes with their value, restrictions, schedule, and redemption counts. Requires the discounts:read scope.
GETList projected public events
Polling and reconciliation feed. Ordered newest-first with keyset pagination. Filter by one or more event types, or resume after a known event id. Requires the events:read scope.