Admin — retrieve tickets for a fulfillment order

ADMIN

Returns the tickets issued for a specific fulfillment order, plus a
short-lived presigned download URL for the consolidated ticket PDF when
one has been produced.

external_user_id is the same identifier the integrator supplied to
POST /session when generating the user's authorization code — there is no
separate platform user ID.

The order is resolved by fulfillment_order_id and must belong to the
external_user_id in the path. If either the order does not exist or
it belongs to a different user, 404 Not Found is returned without
distinguishing between the two — this prevents enumeration of order IDs
across users.

If the order exists and belongs to the user but tickets have not yet been
assigned (status PENDING / CONFIRMED), 409 Conflict is returned with
the current status so the caller can poll.

Recent Requests
Log in to see full request history
TimeStatusUser Agent
Retrieving recent requests…
LoadingLoading…

Part of ticketing — Tickets and fulfillment explains the order lifecycle and how tickets are issued.

Why this endpoint exists

The server-to-server equivalent of
GET /me/fulfillment/orders/{id}/tickets: one order's tickets
plus a short-lived presigned URL for the consolidated ticket PDF.

Reach for it when your backend needs the actual document — attaching a ticket to your own support
reply, or serving it from your own account pages. If all you need is to get the e-mail re-sent, use
resend-ticket instead; it is one call and needs no file
handling on your side.

Authorisation and scoping

CredentialS2S token (client_credentials)
Scopefuntrips/fulfillment.read
CampaignResolved from the token's campaign claim

Both path parameters are required and must agree: external_user_id is your identifier for the
customer, fulfillment_order_id comes from
the list endpoint.

Request

curl "https://api.acc.funtrips.io/v2/admin/fulfillment/users/customer-4815162342/orders/$FULFILLMENT_ORDER_ID/tickets" \
  -H "Authorization: Bearer $S2S_TOKEN"

The response is one order with its tickets and, when a document has been produced, a
deliverable. See Tickets and fulfillment for what a ticket carries
and how to render a barcode.

Fetch the PDF immediately

deliverable.download_url is presigned and short-lived, with the deadline in expires_at. Stream
the bytes now; do not store the URL, forward it, or embed it in an e-mail you send — it expires
long before a recipient clicks. Call this endpoint again for a fresh one.

deliverable is absent when no document exists, which is legitimate for an order whose lines are
all shipped physically.

409 means not ready yet

While the order exists but its tickets do not (PENDING / CONFIRMED), the answer is 409 with a
Retry-After header in seconds.

Honour it, back off exponentially, and cap at around five minutes. For a support tool, one or two
attempts then "still being issued" is usually the right behaviour — a human is waiting.

404 hides ownership

An order that does not exist and an order belonging to a different customer both return 404,
indistinguishable by design so order ids cannot be probed across customers.

A 404 therefore does not prove the order is missing. Check that the fulfillment_order_id really
belongs to the external_user_id you paired it with — they are validated together.

Errors

StatusMeaningWhat to do
401S2S token missing, expired or invalidRe-fetch the token, retry once
403Token lacks funtrips/fulfillment.readProvisioning — contact us
404No such order for that customerSee above
409Tickets not issued yetHonour Retry-After
500Server-side faultRetryable

Fulfillment routes answer with status and title — branch on the status code.

Path Params
string
required

Identifier of the user in the integrator's system. This is the same value
the integrator supplied as external_user_id when generating an authorization
code via POST /session (see GenerateAuthCodeRequest.external_user_id).
The platform stores it verbatim and uses it as the canonical user reference
across loyalty, fulfillment, and other admin endpoints — there is no separate
platform user ID to look up.

uuid
required

Platform-generated identifier of the fulfillment order.

Headers
string
enum
Defaults to application/json

Generated from available response content types

Allowed:
Responses

Language
Credentials
OAuth2
Missing 1 required scope
URL
LoadingLoading…
Response
Click Try It! to start a request and see the response here! Or choose an example:
application/json
application/problem+json