Purchase status + cards

GET /api/v1/instant/purchase/:purchase_id packs:read

Poll this after buying an instant pack: PENDING → RESERVED → SUBMITTING → SUBMITTED → FULFILLED (or REFUNDED / FAILED). Delivery usually takes a few seconds and up to ~90 seconds while Chainlink VRF settles. Once FULFILLED it includes the opened pack and its cards with full metadata (name, images, value_usd).

Try it GET /api/v1/instant/purchase/0

These inputs are shared across all docs pages, so an id entered here carries over.

response

Not run yet. Press Run to make a live call against https://service.rip.fun (through this demo's server-side proxy; the API key never reaches the browser).

tracks the inputs above
curl -X GET 'https://service.rip.fun/api/v1/instant/purchase/0' \
  -H 'X-API-Key: rip_…'

Response fields (data)

FieldDescription
statusPENDING → RESERVED → SUBMITTING → SUBMITTED → FULFILLED, or REFUNDED / FAILED (failure_reason set when FAILED)
packet_type_id / set_id / product_id / quantityWhat was bought
price / price_usdcAmount charged (micros string + decimal display)
onchain_request_id / transaction_hashVRF request + purchase tx, once on-chain
purchaser_address / recipient_addressThe CardOS relayer that paid, and the wallet the cards were delivered to
packOnce FULFILLED: the delivered pack (unique_id, set_id, name, image_url, opened_at)
cards[]Once FULFILLED: token_id, unique_id, card_id, name, card_number, rarity, is_chase, small/large/front image urls, value_usd, set_id. `token_id` is the only one guaranteed — a token we have not finished indexing comes back with every other field null, so render from `token_id` and treat the rest as optional
memo"{partner-slug}-instant-{id}" per-key attribution tag
reserved_at / submitted_at / fulfilled_at / created_atLifecycle timestamps

Errors

StatusCodeWhen
404not_foundpurchase_id does not belong to this partner

See Errors for the response envelope and the full code list.