Purchases
List purchases
Returns a keyset page of the community's one-time purchases, newest first.
Authorization
apiKey AuthorizationBearer <token>
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
Query Parameters
cursor?string
Opaque keyset cursor copied verbatim from a previous response's next_cursor. Omit it to fetch the first page.
limit?integer
Page size, capped at 100.
Default
25Range
1 <= value <= 100Response Body
application/json
application/problem+json
application/problem+json
application/problem+json
application/problem+json
curl -X GET "https://example.com/v1/purchases?cursor=eyJpZCI6IjAxSk1aWDQ3In0&limit=25"{
"data": [
{
"id": "pur_01JMZX9E7P",
"status": "completed",
"plan_id": "plan_01JMZX3B2K",
"plan_name": "Lifetime",
"tier_id": "tier_01JMZX2A9F",
"tier_name": "VIP",
"member_id": "mem_01JMZX1Z7D",
"amount_cents": 4900,
"currency": "usd",
"access_expires_at": "2027-05-01T00:00:00Z",
"paid_at": "2026-05-01T12:00:05Z",
"created_at": "2026-05-01T12:00:00Z"
}
],
"next_cursor": "eyJpZCI6InB1cl8wMUpNWlg5RSJ9"
}{
"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#rate_limited",
"title": "Too Many Requests",
"status": 429,
"detail": "Rate limit exceeded. Retry after the interval in the Retry-After header.",
"code": "rate_limited"
}