API Documentation
ReSellCodes API v1 is a REST API for wholesale resellers: read the catalogue at the prices set for your account, order gift card codes, game keys, in-game top-ups, Steam wallet top-ups, Steam Gifts and Telegram, and collect the delivered codes. JSON only. HTTPS only.
Open the interactive reference → · OpenAPI 3.1 spec
Quickstart
Three calls take you from an empty terminal to delivered codes. Before the first one: create an account (the key is issued on the spot), top the balance up in USDT, and copy your key from Dashboard → API.
Step 1 · read the catalogue at your prices
curl "https://resell.codes/api/v1/gift-cards/categories/roblox_ru/cards" \
-H "Authorization: Bearer rsc_live_xxxxxxxxxxxxxxxxxxxx"
{
"object": "gift_card_offers",
"category_id": "roblox_ru",
"name": "Roblox (RU)",
"offers": [
{ "card_id": "199_robux", "name": "199 Robux", "price_usd": "2.8100", "stock": 689, "min_quantity": 1, "max_quantity": 100 }
]
}
Sample response — take card_id and the price from your own call, never from this page. The $2.81 figure is what the public Roblox (RU) table showed on 8 September 2026; prices are per-account and move with the market. Category ids come from GET /gift-cards/categories?q=roblox.
Step 2 · place the order
curl -X POST https://resell.codes/api/v1/gift-cards/order \
-H "Authorization: Bearer rsc_live_xxxxxxxxxxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{"category_id":"roblox_ru","card_id":"199_robux","quantity":2}'
{
"object": "order",
"number": 12,
"type": "gift_card",
"channel": "api",
"status": "processing",
"charged_usd": "5.6200",
"status_reason": null,
"fail_code": null,
"created_at": "2026-09-08T13:15:00.000Z",
"status_history": [ { "status": "created", "reason": null, "at": "2026-09-08T13:15:00.000Z" } ],
"category_id": "roblox_ru",
"category_name": "Roblox (RU)",
"card_id": "199_robux",
"card_name": "199 Robux",
"quantity": 2,
"codes": []
}
Your balance is charged here — quantity × the catalogue price, nothing added on top. Keep number: it is how you reach this order everywhere else. Fast items often come back as completed with the codes already filled in.
Step 3 · collect the codes by order number
curl https://resell.codes/api/v1/orders/12 \
-H "Authorization: Bearer rsc_live_xxxxxxxxxxxxxxxxxxxx"
{
"object": "order",
"number": 12,
"type": "gift_card",
"status": "completed",
"charged_usd": "5.6200",
"card_name": "199 Robux",
"quantity": 2,
"codes": ["RBXXXXXXXXXXXXXX", "RBYYYYYYYYYYYYYY"]
}
Trimmed response. Poll this endpoint while status is created or processing — a few seconds apart is plenty; most orders finish within minutes, some take longer (see Order statuses). Game keys arrive the same way in keys; top-ups deliver into the player's account and carry no codes.
/game-keys + /game-keys/order, /top-ups/categories + /top-ups/order, /steam-gifts/games + /steam-gifts/order, /steam-topup/rates + /steam-topup/order. Status always comes from GET /orders/{number}.Cost, minimums and limits
The questions that decide whether the integration is worth writing, answered before the endpoint reference.
What does API access cost?
Nothing beyond the goods themselves. There is no subscription, no setup fee and no per-call charge: registering issues a key automatically, and you pay only for the orders you place. The price a catalogue endpoint returns for your account is the price charged to your balance — quantity × that price, nothing added at checkout.
How much money do I need to start?
There is no minimum order — a single code is a valid order. The only floor is the balance top-up: 3 USD minimum, 10,000 USD maximum per payment. Top-ups are USDT only, in the TRC-20, BEP-20, TON or Aptos networks, and an order is charged from that balance the moment it is created.
What happens if an order cannot be filled?
The charge comes back to your balance automatically. The order ends in the refund state and a matching CREDIT transaction named “Refund · order #12” appears in your history, so the order and the money stay auditable. The same happens when the price or the stock of an item changes before the order is executed: the charge is returned and fail_code says why (price_changed, stock_short, offer_gone). If an order ends as failed and the amount is still missing, open a ticket and support settles it.
What are the rate limits?
A new account gets 30 requests per minute and 5,000 per day. Every response carries the X-RateLimit-Limit-Minute, X-RateLimit-Remaining-Minute and the matching daily headers, so you can throttle from the response instead of guessing; going over returns 429 with Retry-After in seconds. Limits are per account and can be raised — ask support if your integration needs a bigger budget.
Where do I get the API key?
In the dashboard, section API. Signing up issues the key immediately — there is no application form and no approval step. It looks like rsc_live_ followed by 48 hex characters and travels in the Authorization: Bearer header. You can rotate it yourself on the Profile page; the previous key stops working the moment you do.
Create an account · Dashboard → API · Top up the balance
What can be ordered through the API?
Gift card codes, game keys, in-game top-ups by player ID, Steam wallet top-ups for CIS accounts, Steam Gifts, Telegram Stars and Premium, and manually-fulfilled services with an order chat. Each product type has its own catalogue endpoint and its own order endpoint, and every order type reports progress through GET /orders/{number}.
How are the codes delivered?
On the order itself. Poll GET /orders/{number}: when status becomes completed, gift card codes are in the codes array and game keys in the keys array. The same codes are visible on that order in the dashboard. Top-ups have no codes — they land straight in the player's account.
How do I reach support?
A ticket in the dashboard (fastest, and it keeps the history with the order) or Telegram @ReSellCodeSupport. The project has no email address, so nothing waits in a mailbox nobody reads.
Overview
The API lets you programmatically access your own account. Authentication is a single API key you carry as a Bearer token. Every response is JSON; all monetary values are strings with four decimals in USD (for example "150.0000") so you never lose precision to floating point.
The surface covers a full reselling cycle: catalogues priced for your account, an order endpoint per product family, order status with the delivered codes, and your balance and transaction history. It keeps growing; existing fields will not be removed without a new version.
Base URL
All endpoints below are relative to this base. Requests must use HTTPS.
Authentication
Find your API key in your dashboard under API. Send it in the Authorization header of every request:
Authorization: Bearer rsc_live_xxxxxxxxxxxxxxxxxxxx
rsc_live_ plus 48 hex characters; if it leaks, rotate it yourself on the Profile page in the dashboard and the old one stops working immediately.Requests without a valid key return 401 Unauthorized. A suspended account returns 403 Forbidden.
Rate limits
Each account has a per-minute and a per-day request limit. Every response includes your current budget in headers:
| Header | Meaning |
|---|---|
X-RateLimit-Limit-Minute | Requests allowed per minute |
X-RateLimit-Remaining-Minute | Remaining this minute |
X-RateLimit-Limit-Day | Requests allowed per day |
X-RateLimit-Remaining-Day | Remaining today |
Exceeding a limit returns 429 Too Many Requests with a Retry-After header (seconds to wait). Back off until then.
Errors
Errors use standard HTTP status codes and a consistent JSON body:
{
"error": {
"type": "unauthorized",
"message": "Invalid API key."
}
}
| Status | type | When |
|---|---|---|
| 400 | invalid_request | A query parameter was invalid |
| 401 | unauthorized | Missing or invalid API key |
| 403 | forbidden | Account suspended |
| 404 | not_found | Resource does not exist or isn't yours |
| 429 | rate_limited | Rate limit exceeded |
Pagination
List endpoints are cursor-paginated and return the newest items first. Pass limit (1–100, default 20). The response includes has_more and next_cursor; to fetch the next page, send next_cursor back as the cursor parameter. When next_cursor is null, you've reached the end.
Get account
Returns your account: balance, lifetime totals and rate limits.
Example
curl https://resell.codes/api/v1/me \
-H "Authorization: Bearer rsc_live_xxxxxxxxxxxxxxxxxxxx"
Response
{
"object": "account",
"nickname": "reseller1",
"email": "you@example.com",
"status": "ACTIVE",
"balance_usd": "150.0000",
"total_orders": 12,
"total_spent_usd": "1840.5000",
"created_at": "2026-06-01T09:12:44.000Z"
}
List transactions
Your balance transactions, newest first. You only ever see your own.
Query parameters
| Name | Type | Description | |
|---|---|---|---|
limit | integer | optional | 1–100, default 20 |
cursor | integer | optional | A transaction number; returns items older than it |
direction | string | optional | CREDIT or DEBIT |
type | string | optional | DEPOSIT, ORDER or ADJUSTMENT |
status | string | optional | PENDING, COMPLETED or CANCELLED |
Example
curl "https://resell.codes/api/v1/transactions?limit=2&direction=CREDIT" \
-H "Authorization: Bearer rsc_live_xxxxxxxxxxxxxxxxxxxx"
Response
{
"object": "list",
"data": [
{
"object": "transaction",
"number": 1024,
"direction": "CREDIT",
"type": "DEPOSIT",
"status": "COMPLETED",
"amount_usd": "50.0000",
"balance_after": "150.0000",
"note": "USDT · TRC-20",
"created_at": "2026-07-25T19:03:14.530Z"
},
{
"object": "transaction",
"number": 1007,
"direction": "CREDIT",
"type": "DEPOSIT",
"status": "COMPLETED",
"amount_usd": "100.0000",
"balance_after": "100.0000",
"note": "USDT · TON",
"created_at": "2026-07-20T11:41:02.100Z"
}
],
"limit": 2,
"has_more": true,
"next_cursor": 1007
}
cursor=1007.Get a transaction
Fetch a single transaction by its number. A number that isn't yours returns 404 — the API never reveals whether someone else's transaction exists.
Example
curl https://resell.codes/api/v1/transactions/1024 \
-H "Authorization: Bearer rsc_live_xxxxxxxxxxxxxxxxxxxx"
Response
{
"object": "transaction",
"number": 1024,
"direction": "CREDIT",
"type": "DEPOSIT",
"status": "COMPLETED",
"amount_usd": "50.0000",
"balance_after": "150.0000",
"note": "USDT · TRC-20",
"created_at": "2026-07-25T19:03:14.530Z"
}
Steam top-up rates
Current exchange rates for Steam wallet top-ups. Four currencies are supported: USD, RUB, UAH, KZT. The minimum top-up is 0.15 USD.
curl https://resell.codes/api/v1/steam-topup/rates \
-H "Authorization: Bearer rsc_live_xxxxxxxxxxxxxxxxxxxx"
{
"object": "steam_rates",
"base": "USD",
"rates": { "USD": 1, "RUB": 78.12, "UAH": 44.87, "KZT": 474.84 },
"min_topup_usd": "0.15",
"updated_at": "2026-07-25T20:38:10.220Z"
}
Check a Steam login
Verify a Steam login can receive a wallet top-up before creating an order.
curl -X POST https://resell.codes/api/v1/steam-topup/check-login \
-H "Authorization: Bearer rsc_live_xxxxxxxxxxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{"steam_login":"ricardomoe3y"}'
{
"object": "steam_login_check",
"steam_login": "ricardomoe3y",
"can_refill": true
}
Create a Steam top-up
Places a Steam wallet top-up for a given login. Your balance is charged immediately (face value minus your discount); the top-up is then fulfilled asynchronously. If the top-up is rejected, the charge is refunded automatically. Each order type has its own creation endpoint.
Body
| Field | Type | Description | |
|---|---|---|---|
steam_login | string | required | The Steam account login |
currency | string | required | USD, RUB, UAH or KZT |
amount | string | required | Amount in that currency (USD ≤ 2 decimals) |
Example
curl -X POST https://resell.codes/api/v1/steam-topup/order \
-H "Authorization: Bearer rsc_live_xxxxxxxxxxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{"steam_login":"ricardomoe3y","currency":"USD","amount":"10"}'
Response
{
"object": "order",
"number": 12,
"type": "steam_topup",
"status": "processing",
"steam_login": "ricardomoe3y",
"currency": "USD",
"amount": "10",
"amount_usd": "10.0000",
"charged_usd": "9.7000",
"status_reason": null,
"fail_code": null,
"created_at": "2026-07-25T21:00:00.000Z",
"status_history": [
{ "status": "created", "reason": null, "at": "2026-07-25T21:00:00.000Z" },
{ "status": "processing", "reason": null, "at": "2026-07-25T21:00:01.000Z" }
]
}
fail_code list: Order statuses.List orders
Your orders of every type, newest first. Same cursor pagination as transactions; optional status filter (CREATED, PROCESSING, COMPLETED, FAILED, REFUND) and optional type filter (GIFT_CARD, GAME_KEY, GAME_TOPUP, STEAM_TOPUP, STEAM_GIFT, TELEGRAM_STARS, TELEGRAM_PREMIUM, MANUAL_SERVICE).
curl "https://resell.codes/api/v1/orders?limit=20&status=COMPLETED" \
-H "Authorization: Bearer rsc_live_xxxxxxxxxxxxxxxxxxxx"
Get an order
One of your orders by number, including full status history. A number that isn't yours returns 404.
curl https://resell.codes/api/v1/orders/12 \
-H "Authorization: Bearer rsc_live_xxxxxxxxxxxxxxxxxxxx"
Order statuses
Every order type — codes, keys, top-ups, Steam, Telegram, manual services — moves through the same states, reported by GET /orders/{number} and in the status_history array. Branch on status and fail_code; status_reason is free text for humans.
| status | Meaning | What to do |
|---|---|---|
created | Accepted and charged; being sent for execution. | Poll. |
processing | Accepted and being executed. Nothing to do on your side — it ends as completed or, if it cannot be delivered, as failed / refund. | Poll. Most orders finish within minutes; a longer interval is fine if it takes longer. |
completed | Delivered. Gift card codes are in codes, game keys in keys; top-ups land in the player's account. | Done. |
failed | Could not be delivered. | Read fail_code. If the charge has not come back, open a ticket. |
refund | The charge was returned to your balance as a CREDIT transaction “Refund · order #N”. | Read fail_code; the money is spendable again immediately. |
fail_code values
fail_code is present only when status is failed or refund; status_reason carries the same reason as a sentence. Every code below comes with the refund.
| fail_code | Meaning | What to do |
|---|---|---|
out_of_stock | The item ran out before the order could be filled. | Order again later. |
stock_short | Fewer in stock than ordered. | Order the available quantity — check the catalogue for the current stock. |
price_changed | The price changed before the order was executed. | Re-read the catalogue price and order again. |
offer_gone | The item is no longer available. | Pick another item. |
account_problem | The login, username, player id or recipient was rejected or not found. | Check the account details and order again. |
region_restricted | The target account or region is not eligible. | — |
limit_exceeded | A quantity or frequency limit was hit. | Retry later or with a smaller quantity. |
timed_out | Execution did not finish in time. | Order again. |
cancelled | The order was cancelled before execution. | Order again if still needed. |
declined | Any other rejection. | Order again; if it repeats, open a ticket. |
{
"object": "order",
"number": 12,
"type": "gift_card",
"status": "refund",
"charged_usd": "5.6200",
"status_reason": "The price changed — please order again.",
"fail_code": "price_changed",
"created_at": "2026-09-19T10:02:10.000Z",
"codes": []
}
Trimmed response of a refunded order. The matching CREDIT transaction is already on the balance.
refund always comes with the money: the matching CREDIT transaction is in /transactions under the order number. Nothing to claim, nothing to wait for.Buy Telegram Stars
Send Stars to a Telegram username. Your balance is charged immediately; delivery is asynchronous. Quantity 50–10000. Live pricing: GET /telegram/stars.
Body
| Field | Type | Description | |
|---|---|---|---|
telegram_username | string | required | Recipient (with or without @) |
quantity | integer | required | 50–10000 stars |
curl -X POST https://resell.codes/api/v1/telegram/stars/buy \
-H "Authorization: Bearer rsc_live_xxxxxxxxxxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{"telegram_username":"durov","quantity":50}'
{
"object": "order",
"number": 42,
"type": "telegram_stars",
"status": "processing",
"telegram_username": "durov",
"stars": 50,
"charged_usd": "0.7631",
"status_reason": null,
"created_at": "2026-07-26T22:40:00.000Z",
"status_history": [ ... ]
}
Manual services — list & offers
Manually-fulfilled services. Some (e.g. Roblox Robux via login) require buyer input (account credentials) and have an order chat; others (loaded accounts) are simple transfers. Prices from the offers endpoint already include your markup.
curl https://resell.codes/api/v1/manual-services \
-H "Authorization: Bearer rsc_live_xxxxxxxxxxxxxxxxxxxx"
{
"object": "list",
"data": [
{ "id": "roblox", "name": "Roblox (Robux via login)", "kind": "replenishment", "chat": true, "info": "...", "image": "..." },
{ "id": "xbox_loaded_accounts_us", "name": "Xbox Loaded Accounts (US)", "kind": "transfer", "chat": false, "info": "...", "image": "..." }
]
}
Returns the offers and the fields the buyer must provide when ordering.
{
"object": "manual_offers",
"service_id": "roblox",
"kind": "replenishment",
"chat": true,
"fields": [ { "code": "username", "name": "Username" }, { "code": "password", "name": "Password" } ],
"offers": [ { "id": "62148018", "name": "80 Robux", "price_usd": "0.9741", "delivery_minutes": 180, "note": null } ]
}
Create a manual-service order
Charges your balance immediately. fields must contain every field code from the offers response.
curl -X POST https://resell.codes/api/v1/manual-services/order \
-H "Authorization: Bearer rsc_live_xxxxxxxxxxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{"service_id":"roblox","product_id":"62148018","fields":{"username":"myacct","password":"secret"}}'
GET /orders/{number}.Order chat
Manual services with chat: true have an order chat — the executor may ask for a code or confirmation. Text and image attachments are supported.
curl https://resell.codes/api/v1/orders/42/chat \
-H "Authorization: Bearer rsc_live_xxxxxxxxxxxxxxxxxxxx"
{ "object": "chat", "order": 1234, "can_send": true, "messages": [ { "id": "m1", "from": "executor", "text": "…", "at": "2026-10-10T12:00:00.000Z" } ] }
Send a message — multipart/form-data with body (text) and/or image (file).
curl -X POST https://resell.codes/api/v1/orders/42/chat \
-H "Authorization: Bearer rsc_live_xxxxxxxxxxxxxxxxxxxx" \
-F "body=Here is the code: 123456" \
-F "image=@screenshot.png"
Steam Gifts — games & offers
Gift a Steam game or edition to a friend. The catalog is huge (~173k games); the games list returns the top games (cached ~10 min), and per-game offers/prices are fetched on demand (cached ~30 min).
{ "object": "list", "data": [ { "app_id": 730, "name": "Counter-Strike 2" }, { "app_id": 570, "name": "Dota 2" } ] }
Offers (editions) with per-region prices — prices already include your markup.
{
"object": "steam_gift_offers",
"app_id": 730,
"offers": [
{
"sub_id": 54029,
"name": "Prime Status Upgrade",
"regions": [
{ "region": "RU", "price_usd": "14.4467" },
{ "region": "UA", "price_usd": "14.3357" }
]
}
]
}
Order a Steam gift
Charges your balance immediately. The gift is delivered to the Steam friend invite URL you provide.
| Field | Type | Description | |
|---|---|---|---|
app_id | integer | required | Steam app id |
sub_id | integer | required | The offer/edition |
region | string | required | Region from the offer (e.g. RU, UA, KZ, CIS) |
invite_url | string | required | Steam friend invite link |
app_name | string | optional | For display in your order history |
curl -X POST https://resell.codes/api/v1/steam-gifts/order \
-H "Authorization: Bearer rsc_live_xxxxxxxxxxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{"app_id":730,"sub_id":54029,"region":"RU","invite_url":"https://s.team/p/xxxxx","app_name":"Counter-Strike 2"}'
Gift cards — categories & cards
Buy gift-card codes. Prices already include your markup. Order 1–100 at once; codes are delivered on the order once it completes.
{ "object": "list", "total": 1, "data": [ { "category_id": "roblox_ru", "name": "Roblox (RU)", "image": "/api/media/..." } ] }
{
"object": "gift_card_offers",
"category_id": "roblox_ru",
"name": "Roblox (RU)",
"offers": [
{ "card_id": "199_robux", "name": "199 Robux", "price_usd": "2.5750", "stock": 689, "min_quantity": 1, "max_quantity": 100 }
]
}
Gift cards — brands
The flat catalogue categories grouped into brands with per-region subcategories (e.g. App Store & iTunes → CA, AT, …). Handy for building a storefront. Use the category_id of a subcategory with the endpoints above.
{
"object": "list",
"total": 1,
"data": [
{ "brand": "App Store & iTunes", "subcategories": [
{ "category_id": "appstore_ca", "region": "CA", "image": "/api/media/..." },
{ "category_id": "appstore_at", "region": "AT", "image": "/api/media/..." }
] }
]
}
Buy gift-card codes
Charges your balance immediately. Poll GET /orders/{number} — once status is completed, the codes array is populated.
curl -X POST https://resell.codes/api/v1/gift-cards/order \
-H "Authorization: Bearer rsc_live_xxxxxxxxxxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{"category_id":"roblox_ru","card_id":"199_robux","quantity":2}'
{
"object": "order",
"number": 12,
"type": "gift_card",
"status": "completed",
"category_name": "Roblox (RU)",
"card_name": "199 Robux",
"quantity": 2,
"charged_usd": "5.1500",
"codes": ["RBXXXXXXXXXXXXXX", "RBYYYYYYYYYYYYYY"]
}
Game keys — games & offers
Buy game key codes (Steam, Xbox, EA, Rockstar). Prices already include your markup. Order 1–100 at once; keys are delivered on the order once it completes.
{
"object": "list",
"total": 1,
"data": [
{
"game_id": "7_days_to_die_global",
"name": "7 Days to Die",
"region": "GLOBAL",
"platform": "Steam",
"region_restriction": false,
"image": "https://cdn.cloudflare.steamstatic.com/steam/apps/251570/header.jpg"
}
]
}
{
"object": "game_key_offers",
"game_id": "7_days_to_die_global",
"name": "7 Days to Die",
"region": "GLOBAL",
"platform": "Steam",
"region_restriction": false,
"keys": [
{ "key_id": "7_days_to_die", "name": "7 Days to Die", "price_usd": "17.2971", "stock": 1, "min_quantity": 1, "max_quantity": 1 }
]
}
Game keys — region restriction
When a game has region_restriction: true, check which countries can activate the key before selling it.
{
"object": "region_restriction",
"game_id": "ace_attorney_investigations_collection_cis",
"region": "CIS",
"has_availability": true,
"available": [ { "code": "AM", "name": "Armenia" }, { "code": "BY", "name": "Belarus" } ],
"unavailable": [ { "code": "US", "name": "United States" } ]
}
Buy game keys
Charges your balance immediately. Poll GET /orders/{number} — once status is completed, the keys array is populated.
curl -X POST https://resell.codes/api/v1/game-keys/order \
-H "Authorization: Bearer rsc_live_xxxxxxxxxxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{"game_id":"7_days_to_die_global","key_id":"7_days_to_die","quantity":1}'
{
"object": "order",
"number": 15,
"type": "game_key",
"status": "completed",
"game_name": "7 Days to Die",
"key_name": "7 Days to Die",
"quantity": 1,
"region": "GLOBAL",
"platform": "Steam",
"charged_usd": "17.2971",
"keys": ["XXXXX-YYYYY-ZZZZZ"]
}
Game top-ups — categories & offers
In-game top-ups (UC, diamonds, robux, …) delivered straight to the player's account. Prices already include your markup. One top-up per order.
{ "object": "list", "total": 1, "data": [ { "category_id": "pubg_mobile_auto", "name": "PUBG Mobile (Auto)", "note": "Region: Global…", "image": "/api/media/..." } ] }
Each category declares the buyer inputs (fields) you must collect and send with the order.
{
"object": "top_up_offers",
"category_id": "pubg_mobile_auto",
"name": "PUBG Mobile (Auto)",
"fields": [ { "key": "player_id", "label": "Player ID", "type": "text" } ],
"offers": [
{ "offer_id": "60_uc", "name": "60 UC", "price_usd": "0.9161" },
{ "offer_id": "325_uc", "name": "325 UC", "price_usd": "4.5835" }
]
}
Categories grouped into brands with per-region subcategories (region defaults to GLOBAL when unspecified). Delivery-mode suffixes like "(Auto)" become the subcategory's variant — one brand, many modes.
{
"object": "list",
"total": 1,
"data": [
{ "brand": "PUBG Mobile", "subcategories": [
{ "category_id": "pubg_mobile_auto", "name": "PUBG Mobile (Auto)", "region": "GLOBAL", "variant": "Auto", "image": "/api/media/..." },
{ "category_id": "pubg_mobile_fast", "name": "PUBG Mobile (Fast)", "region": "GLOBAL", "variant": "Fast", "image": "/api/media/..." }
] }
]
}
Buy a game top-up
Charges your balance immediately. fields keys must match the category's fields[].key. Poll GET /orders/{number} until completed — delivery goes straight to the player's account, there are no codes.
curl -X POST https://resell.codes/api/v1/top-ups/order \
-H "Authorization: Bearer rsc_live_xxxxxxxxxxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{"category_id":"pubg_mobile_auto","offer_id":"60_uc","fields":{"player_id":"5123456789"}}'
{
"object": "order",
"number": 16,
"type": "game_topup",
"status": "processing",
"category_name": "PUBG Mobile (Auto)",
"offer_name": "60 UC",
"fields": { "player_id": "5123456789" },
"charged_usd": "0.9161"
}