Reseller API

Buy products with your account balance and pull the delivered accounts/codes into your own system automatically.

Getting started

  1. Verify your phone number. Your account must be at least 14 days old with at least 1 paid order.
  2. In Account → API press "Create my key" and enter the code sent to your phone. The key is shown only once — store it safely. You get an e-mail whenever a key is created.
  3. Add balance. The API buys only with balance; if your balance is not enough, no order is created.

Tiers and limits

Limits rise automatically with your account's total purchases. See your current tier in GET /account and on Account → API.

TierConditionDaily spendingRequests / minute
1 Total $0 purchases, 14-day-old account $25 30
2 Total $100 purchases, 30-day-old account $150 60
3 Total $500 purchases, 60-day-old account $500 120

If you need higher limits, contact our support team. Accounts with a card dispute (chargeback) permanently lose API access.

Authentication

Send the key only in a request header:

curl -H "Authorization: Bearer ftk_YOUR_KEY" https://followturk.com/api/v1/account

curl -H "X-API-Key: ftk_YOUR_KEY" https://followturk.com/api/v1/account
Requests with the key in the URL are refused. The API is server-to-server only: never put the key in web page, mobile app or browser code.

Endpoints

Base URL: https://followturk.com/api/v1

MethodEndpointDescription
GET/accountBalance, daily limit and today's spend
GET/categoriesCategories that have API products
GET/productsProducts sold through the API (paged)
GET/products/{id}One product
POST/ordersPlace an order paid from balance
GET/ordersOrders you placed through the API
GET/orders/{order_number}Order status and delivered accounts/codes

List endpoints accept the query parameters page and per_page (max 100). /products also accepts category_id.

POST /orders

Send a unique Idempotency-Key header with every order (8-64 chars: letters, digits, "-" or "_"). Resending with the same key never creates a second order; it returns the first one, so retrying after a network error is safe.

curl -X POST https://followturk.com/api/v1/orders \
  -H "Authorization: Bearer ftk_YOUR_KEY" \
  -H "Idempotency-Key: order-20261012-0001" \
  -H "Content-Type: application/json" \
  -d '{"items":[{"product_id":123,"quantity":2},{"product_id":456,"variant_id":789,"quantity":1}]}'
FieldDescription
items[].product_idProduct ID (integer, required)
items[].quantityQuantity (integer, within the product's min/max)
items[].variant_idRequired for products with variants, not allowed otherwise
Prices are always computed by the server; requests that send a price, coupon or any other field are refused. The amount leaves your balance in the same step that creates the order. Up to 10 lines; the minimum order amount is the same as on the website.

Delivered accounts and codes are not in the create response; fetch them with GET /orders/{order_number}.

Response format

{ "success": true, "data": { ... }, "meta": { "page": 1, "per_page": 50, "total": 120 } }

{ "success": false, "error": { "code": "insufficient_balance", "message": "Insufficient balance.", "details": { "required": 12.5, "balance": 4 } } }
HTTPCodeMeaning
400key_in_url / idempotency_key_requiredKey in URL, or Idempotency-Key missing
401unauthorizedMissing or invalid key
402insufficient_balanceNot enough balance — no order was created
403account_restricted / phone_not_verified / not_eligibleThis account cannot use the API or does not meet the requirements yet
404not_found / product_not_found / order_not_foundNot found
409out_of_stock / idempotency_conflictNot enough stock, or the Idempotency-Key was used for a different order
422invalid_* / product_unavailable / below_minimumInvalid request
429rate_limited / daily_limit_reachedPer-minute request limit or daily spending limit reached
503api_disabled / orders_disabled / orders_paused / busyAPI or ordering temporarily closed or busy; retry later

API key

Applications and key management live in Account → API.

Log in