For sellers · REST · JSON
API documentation
A small REST API for sellers to pull their batches and packs and mark cards sold from their own tools — a till, a scanner, a spreadsheet macro, whatever you've already got. Three endpoints, plain JSON, token authentication.
Test vs live mode
Every new integration starts in test mode — every endpoint returns a sandbox batch instead of your real inventory, so you can build and test against realistic data without touching anything real. Every response carries an X-Api-Mode header telling you which mode you're in. Once we've reviewed your integration, we switch you to live mode and you start seeing your real batches. The sold endpoint has its own separate approval step on top of that — see its errors below.
Authentication
Every request needs a bearer token in the Authorization header:
Authorization: Bearer <your-api-token>Tokens are issued per store, not per user. If you're one of our sellers, grab yours from the API access page on your dashboard — access has to be switched on there before a token will work, and API access itself has to be granted to your store first. Not seeing it yet? Ask us at support@arcanepacks.com.
Rate limits
Two limits apply, independently of each other:
- 20 requests per minute — applies across the whole API, same for every store.
- A daily quota — set per store (1,000 requests a day by default); check the API access page on your dashboard for your own limit and how much you've used today.
Going over either returns 429 with a JSON body explaining which one:
{ "message": "Rate limit exceeded. Try again shortly." }
{ "message": "Daily request limit reached. Resets at midnight UTC." }Endpoints
List your batches
References of every active batch belonging to your store — usually the first call an integration makes, then used to feed the other two endpoints below.
Request
curl "https://arcanepacks.com/api/v1/batches" \
-H "Authorization: Bearer $ARCANE_API_TOKEN"Response — 200 OK
{
"data": [
{ "reference": "ARC-2026-0001", "status": "committed" },
{ "reference": "ARC-2026-0004", "status": "committed" }
]
}Errors
Get an active batch's packs
Every pack in one of your batches, along with its card and sale status. Only works for batches that are currently active (committed and not merged away) — a batch reference that's still a draft, or was merged into another batch, returns a 409.
Request
curl "https://arcanepacks.com/api/v1/batches/ARC-2026-0001" \
-H "Authorization: Bearer $ARCANE_API_TOKEN"Response — 200 OK
{
"data": [
{
"id": 10350,
"image_url": "https://pokepulse-static.s3.eu-west-2.amazonaws.com/cards/images/PHANTASMAL-FLAMES/Blowtorch_117_094.webp",
"title": "Blowtorch",
"rarity": "Ultra Rare",
"is_sold": false,
"sold_at": null,
"market_price": 2.40,
"market_price_last_synced_at": "2026-08-02T00:00:00+00:00",
"pokepulse_last_synced_at": "2026-08-02T18:38:03+00:00",
"qr_url": "https://arcanepacks.com/q/nkfp8iowm9uf"
},
{
"id": 10351,
"image_url": "https://pokepulse-static.s3.eu-west-2.amazonaws.com/cards/images/PHANTASMAL-FLAMES/Charizard_004_094.webp",
"title": "Charizard ex",
"rarity": "Special Illustration Rare",
"is_sold": true,
"sold_at": "2026-08-08T08:38:24+00:00",
"market_price": 84.00,
"market_price_last_synced_at": "2026-08-06T00:00:00+00:00",
"pokepulse_last_synced_at": "2026-08-06T09:12:47+00:00",
"qr_url": "https://arcanepacks.com/q/7q2vd0mksrat"
}
]
}Errors
Mark a pack sold
Marks the given pack's card as sold. {id} is the id field from the packs list above. Safe to call more than once on the same pack — re-marking an already-sold pack returns status: "already_sold" instead of erroring, so it's safe to wire up to a barcode scanner that might double-scan.
Request
curl -X POST "https://arcanepacks.com/api/v1/batches/ARC-2026-0001/packs/10350/sold" \
-H "Authorization: Bearer $ARCANE_API_TOKEN"Response — 200 OK
{
"status": "sold",
"data": {
"id": 10350,
"is_sold": true,
"sold_at": "2026-08-08T08:38:24+00:00"
}
}Errors
Already a seller?
Manage your API access and grab your token from your dashboard.