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.

EndpointTypes
/cs2prime, premier, premier-4-medals, premier-10-medals, premier-inactive, premier-10k, premier-15k, premier-20k, premier-rare
/rust1-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
/extrar6, 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

Request
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"
Response
{  "ok": true,  "order_id": "4b53000e7b4677d2-c69a8e94132d75e8",  "accounts": ["76561198168801886----eyAid..."],  "count": 1,  "charged_eur": 0.3,  "cached": false}
  • quantity is a whole number from 1 to 100.
  • result=json gives 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 priceCents from /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 E1401 and 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=1 adds €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

CodeHTTPMeaning
E1401402Your balance does not cover the purchase. Nothing was charged. Top up and retry.
E1501409Not 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.
E1503503Our supplier is briefly unavailable. Nothing was charged. Retry shortly.
E1506503The 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.
E1102400The type is missing, or not one this endpoint sells.
E1103400Quantity must be a whole number from 1 to 100.
E1301409That Idempotency-Key was already used with different parameters.
E1302409A call with the same Idempotency-Key is still running. Retry shortly.
E1002429Too many requests. Wait for the minute to roll over and retry. See Rate limits.

Every other code is in Error codes.

Buying accounts · API docs · nfa.pub