Zad Top HTTP API
Connect your shop, website, or bot to the same redeem engine that runs @ZadTopBot. One key to authenticate, asynchronous redeem and check jobs, and a detailed result for every code.
Base URL
https://api.zadtop.com
Get a key
- Open @ZadTopBot → Subscription → HTTP API.
- Hold an active plan together with the API add-on, 15 USDT per 30 days.
- Tap New API key. Creating a key revokes the previous one immediately.
Authentication
Send the key in an X-API-Key header on every request. Access
pauses when either your plan or the API add-on expires, and resumes on renewal with the same
key.
X-API-Key: pk_YOUR_KEY_HERE
How jobs work
Redeems and bulk checks are asynchronous. A POST validates your request and
returns a job_id straight away; you then read the result from
GET /v1/jobs/{id} — or add ?wait=25 so the request returns as soon
as the job finishes, instead of polling.
A job reaching done does not mean every card
succeeded. It means the work was carried out. The outcome of each card is in
results[].success and, on failure, err_code.
curl -sS -X POST https://api.zadtop.com/v1/jobs/instant-redeem \
-H "X-API-Key: pk_YOUR_KEY_HERE" \
-H "Content-Type: application/json" \
-d '{"player_id":"2186053213","codes":["4233939008625064"],"game":"freefire"}'
Check codes without redeeming
Each card comes back with a status — valid, used,
invalid and a few more — and with with_value the pack it is worth.
Nothing is redeemed, so a good card stays good.
curl -sS -X POST https://api.zadtop.com/v1/codes/check \
-H "X-API-Key: pk_YOUR_KEY_HERE" \
-H "Content-Type: application/json" \
-d '{"codes":["7397062240255931","5539151276341494"],"with_value":true}'
Main routes
| POST | /v1/jobs/instant-redeem | Redeem Free Fire, PUBG, Yalla Ludo or Jawaker codes for a player ID. |
|---|---|---|
| POST | /v1/jobs/stock-redeem | Redeem from your stored stock by choosing packs. |
| POST | /v1/codes/check | Read up to 20 cards without redeeming them. |
| POST | /v1/jobs/code-check | The same check for up to 200 cards, as a job. |
| GET | /v1/player/lookup | The in-game name and region for a player ID. |
| GET | /v1/jobs/{id} | The state and result of one job. |
| GET | /v1/stock/summary | What you hold, per game and per pack. |
| POST | /v1/order/screenshot | The shop's order confirmation as a PNG. |
| GET | /v1/me · /v1/quota · /v1/history · /v1/players | Account, remaining allowance, past orders, saved players. |
| POST | /v1/subscription/purchase · purchase-api-addon | Buy or extend a plan from your USDT balance. |
Games
The same routes serve every game — change game. Full shapes,
packs and errors are in the
API reference
and on the game pages.
freefire | 16-digit code · ID 6–12 · check + redeem + lookup |
|---|---|
pubg | 18-character code · ID 8–11 starting with 5 · check + redeem + lookup |
ludo / ludogold | 12-character code · ID 6–16 · redeem with tier (no standalone check) |
jawaker | 10-character voucher or 12-character Mintroute pin · ID 6–12 · redeem + lookup (no standalone check) |
Daily allowance
Every plan carries a daily request allowance that resets at midnight UTC. A redeem costs 1 request per code, charged when the worker runs. A card check costs 1 as well, for each card the shop gave a verdict on. A player lookup costs 0.25. What is charged is the answer you asked for, so a refusal from the shop counts; only a failure on our side — network, captcha, a blocked session — is returned to your allowance automatically. The bot charges the same price for a redeem and a card check, from the same allowance.
Errors
Validation answers 400 with a code inside
detail.error; authentication answers 401 or 403; too many
calls answer 429. During a safe restart new jobs answer
503 SERVICE_DRAINING — retry shortly. The complete list of statuses, structured
error codes, and per-code err_code values is in the
full reference.
Regions
Players from almost every country are supported. Where Garena sells no vouchers at all
— the United States, Argentina, Chile and Russia — a player lookup answers 422 UNSUPPORTED_REGION,
before a single code is at risk.