/api/v1/balanceYour wallet balance.
curl https://arcadezy.com/api/v1/balance -H "X-API-Key: ak_..."
Programmatic access to the Arcadezy catalog and orders: browse offers at your prices, create orders paid from your balance, follow their status and collect delivered codes.
X-API-Key header.{ ok: true, ... } or { ok: false, code, error }.Check what you can spend before you order.
/api/v1/balanceYour wallet balance.
curl https://arcadezy.com/api/v1/balance -H "X-API-Key: ak_..."
Browse categories and offers at the prices that apply to your account.
/api/v1/categories?type=topup&q=&page=1&sort=loCatalog. type: topup | giftcard | gamekey | telegram | steam. Paginated, 48 per page.
curl "https://arcadezy.com/api/v1/categories?type=topup" -H "X-API-Key: ak_..."
/api/v1/categories/{slug}/offersOffers with your prices (retail, or your reseller plan) and the fields required to place an order.
curl https://arcadezy.com/api/v1/categories/mobile-legends-global/offers -H "X-API-Key: ak_..."
/api/v1/categories/{slug}/validate-idCheck a game ID before ordering: whether the account exists and whose it is. supported=false means the game has no check (not that the ID is wrong); 503 means our supplier is temporarily unreachable — do not treat it as a valid ID. Limit: 20 checks per minute per key; repeated checks of the same ID are served from cache.
curl -X POST https://arcadezy.com/api/v1/categories/mobile-legends-global/validate-id \
-H "X-API-Key: ak_..." -H "Content-Type: application/json" \
-d '{"fields":{"player_id":"123456789","server_id":"1234"}}'Create orders paid from your balance, then poll their status and collect codes.
/api/v1/ordersCreate an order, paid from your balance. The Idempotency-Key header is required — retrying with the same key returns the same order instead of charging you twice.
curl -X POST https://arcadezy.com/api/v1/orders \
-H "X-API-Key: ak_..." \
-H "Idempotency-Key: your-unique-id-123" \
-H "Content-Type: application/json" \
-d '{"offer_id":"<uuid from /offers>","fields":{"player_id":"123456789","server_id":"1234"}}'/api/v1/orders?limit=20Recent orders.
curl https://arcadezy.com/api/v1/orders -H "X-API-Key: ak_..."
/api/v1/orders/{id}Order status. For completed gift cards and game keys the response also includes codes[].
curl https://arcadezy.com/api/v1/orders/<order-id> -H "X-API-Key: ak_..."
Let us push order events to you instead of polling for them.
/api/v1/webhookSubscribe to order events — we POST to your URL instead of you polling. Returns the signing secret once. Events: order.completed, order.failed. The URL must be public https on port 443 (private and loopback addresses are rejected, DNS is re-checked before every delivery). Delivery: 5 second timeout, up to 3 attempts with backoff.
curl -X PUT https://arcadezy.com/api/v1/webhook \
-H "X-API-Key: ak_..." -H "Content-Type: application/json" \
-d '{"url":"https://your-shop.com/arcadezy-hook"}'/api/v1/webhookCurrent subscription: url, enabled, consecutive failures, last error. After 10 consecutive failures delivery turns itself off.
curl https://arcadezy.com/api/v1/webhook -H "X-API-Key: ak_..."
/api/v1/webhookSend a test event to your URL and report whether it was delivered.
curl -X POST https://arcadezy.com/api/v1/webhook -H "X-API-Key: ak_..."
/api/v1/webhookStop delivery.
curl -X DELETE https://arcadezy.com/api/v1/webhook -H "X-API-Key: ak_..."
Verify every delivery before you trust the payload.
Each webhook carries X-Arcadezy-Signature and X-Arcadezy-Timestamp. The signature is hex(HMAC-SHA256(secret, `{timestamp}.{raw_body}`)). Reject requests whose timestamp is older than about five minutes to prevent replay.
// Node.js
const expected = crypto.createHmac("sha256", SECRET)
.update(`${req.headers["x-arcadezy-timestamp"]}.${rawBody}`)
.digest("hex");
const ok = crypto.timingSafeEqual(
Buffer.from(expected), Buffer.from(req.headers["x-arcadezy-signature"]));Failed requests answer with an HTTP status and a stable code in the body.
UNAUTHORIZEDThe key is missing, revoked or wrong.
INSUFFICIENT_BALANCETop up the wallet and retry.
EMAIL_NOT_VERIFIEDConfirm the account email first.
NOT_FOUNDNo such category, offer or order.
OUT_OF_STOCKIDEMPOTENCY_CONFLICTThe offer ran out, or the same Idempotency-Key was reused with a different body.
VALIDATIONFIELDS_INVALIDQTY_INVALIDThe request body is malformed, or the order fields do not match the offer.
RATE_LIMITEDDAILY_LIMITToo many requests — slow down and retry later.
SUPPLIER_UNAVAILABLEOur supplier is temporarily unreachable. Retry; do not assume the order failed.