Buying accounts
Pick a product type and a quantity. The accounts come back in the same response, and your balance is charged only for what was delivered.
Find what to buy
/products lists every product with the price you pay. /stock shows how many are for sale right now, and needs no key.
The buy endpoints take a short type, not the product id. CS2 types go to /cs2, Rust types to /rust, and every other game to /extra.
| Endpoint | Types |
|---|---|
/cs2 | prime, premier, premier-4-medals, premier-10-medals, premier-inactive, premier-10k, premier-15k, premier-20k, premier-rare |
/rust | 1-99, 100-199, 200-499, 500-999, 1000-plus, inactive, premium-1-99, premium-100-199, premium-200-499, premium-500-999, premium-1000-plus, premium-inactive |
/extra | r6, dayz, bf6, wardogs-0-100, wardogs-100-201, wardogs-201-301, arc-0-100, arc-100-200, arc-200-plus, apex-0-100, apex-100-200, apex-200-plus, r6-100-201, r6-201-301, r6-ranked, dayz-100-plus, bf6-100-plus, arc-50-100, tarkov-0-100, tarkov-100-200, tarkov-200-plus, ark-0-100, ark-100-plus, ark-inactive, mw4-0-50, mw4-50-100, mw4-100-200, mw4-200-plus |
The Rust premium- types come with a Rust skin inventory worth $15 or more.
Buy
curl -X POST "https://www.nfa.pub/api/v1/cs2?type=prime&quantity=1&result=json" \ -H "X-Api-Key: rsk_..." \ -H "Idempotency-Key: order-1001"{ "ok": true, "order_id": "4b53000e7b4677d2-c69a8e94132d75e8", "accounts": ["76561198168801886----eyAid..."], "count": 1, "charged_eur": 0.3, "cached": false}quantityis a whole number from 1 to 100.result=jsongives the JSON above. Without it you get plain text, one account per line.- An account line is the steam id, four dashes, then the login token.
- Keep
order_id. Order lookups, replacements and webhooks all use it.
Never pay twice
Send an Idempotency-Key header with every buy, unique for each order you mean to place. If a call times out, send it again with the same key: you get the first result back with cached: true, and nothing is charged a second time.
- The same key with different parameters is refused with
E1301. - The same key while the first call is still running gets
E1302. Retry shortly with the same key. - Up to 200 characters. A longer key is ignored, and that call is not protected.
What you pay
- The
priceCentsfrom/products, for each account delivered. With a key that is your own price: an agreed price or your volume discount is already in it. - Your balance is checked first. If it is short, the buy is refused with
E1401and nothing is charged. - A short fill is refunded down to what shipped. If nothing can be delivered, the whole charge is reversed and you get an error.
extended_warranty=1adds €0.30 per account for 12 hours of cover instead of 6. See Replacements and warranty.
Sold out
Without a flag, a sold-out product is refused with E1501 and nothing is charged. Add preorder=1 to queue a paid pre-order instead.
Limits
30 buys a minute per account, shared by every key on it. Your own API protection rules apply on top: pause, spending limits, purchases per hour, max accounts per request and allowed products.
Common errors
| Code | HTTP | Meaning |
|---|---|---|
E1401 | 402 | Your balance does not cover the purchase. Nothing was charged. Top up and retry. |
E1501 | 409 | Not enough stock, and nothing was charged. With preorder=1 it means there was some stock but less than you asked for, or, rarely, that the supplier had nothing after all. |
E1503 | 503 | Our supplier is briefly unavailable. Nothing was charged. Retry shortly. |
E1506 | 503 | The supplier's account checks are down for this product. Nothing was charged. Retry after the Retry-After seconds, or send preorder=1 to queue it. |
E1102 | 400 | The type is missing, or not one this endpoint sells. |
E1103 | 400 | Quantity must be a whole number from 1 to 100. |
E1301 | 409 | That Idempotency-Key was already used with different parameters. |
E1302 | 409 | A call with the same Idempotency-Key is still running. Retry shortly. |
E1002 | 429 | Too many requests. Wait for the minute to roll over and retry. See Rate limits. |
Every other code is in Error codes.