BuyCheapKeys

Seller import API

Manage your offers and stock from your own system. All requests use HTTPS and JSON, amounts are in EUR.

https://buycheapkeys.com/partner-api/v1/seller

Authentication

Create a key in Seller panel → API and send it in the Authorization header. Keep it secret: it gives full access to your offers and stock.

Authorization: Bearer bcks_xxxxxxxxxxxx_…

Endpoints

MethodPathDescription
GET/meYour store and current commission terms.
GET/products?search=&page=&limit=Search the catalogue. Returns productId, shop price and best seller price.
GET/offers?status=&page=&limit=Your offers with stock, customer price and whether you are the cheapest.
POST/offersCreate or update your offer for a product: { productId, price, status? }.
GET/offers/{id}One offer.
PATCH/offers/{id}Change price and/or status (active | paused).
DELETE/offers/{id}Delete an offer without stock (offers with sales are paused instead).
POST/offers/{id}/keysUpload keys: { keys: ["…"] } (max 1,000 per request).
POST/offers/{id}/withdrawTake unsold keys back: { count? }. Returns them in plain text.
GET/sales?page=&limit=Your sales, earnings and hold dates.
GET/balancePending and available balance and upcoming releases.
GET/disputes?status=&page=&limit=Customer disputes on your sales (open | escalated | resolved).
GET/disputes/{id}One dispute with its messages.
POST/disputes/{id}/messagesAnswer the customer: { body }.
POST/disputes/{id}/replaceSend a replacement: { key } or { fromStock: true }.
POST/disputes/{id}/refundRefund the customer (the sale is reversed).

Prices

price is what you receive per unit. The customer pays your price plus the commission of the product type (keys, accounts and gifts, special subscriptions), shown in /me and in each offer. Your offer is sold when its customer price is the lowest available.

Example: list a product and upload keys

# 1. Find the product
curl "https://buycheapkeys.com/partner-api/v1/seller/products?search=elden%20ring" \
  -H "Authorization: Bearer $BCK_SELLER_KEY"

# 2. Create (or update) your offer — price = what you receive per unit, EUR
curl -X POST "https://buycheapkeys.com/partner-api/v1/seller/offers" \
  -H "Authorization: Bearer $BCK_SELLER_KEY" \
  -H "Content-Type: application/json" \
  -d '{"productId":"<productId>","price":24.90}'
# → { "created": true, "offer": { "id": "off_…", "customerPrice": 27.15, "stock": 0, … } }

# 3. Upload keys (max 1,000 per request; duplicates are skipped)
curl -X POST "https://buycheapkeys.com/partner-api/v1/seller/offers/off_…/keys" \
  -H "Authorization: Bearer $BCK_SELLER_KEY" \
  -H "Content-Type: application/json" \
  -d '{"keys":["XXXXX-XXXXX-XXXXX","YYYYY-YYYYY-YYYYY"]}'
# → { "added": 2, "duplicates": 0, "stock": 2 }

# 4. Follow your sales and balance
curl "https://buycheapkeys.com/partner-api/v1/seller/sales" -H "Authorization: Bearer $BCK_SELLER_KEY"
curl "https://buycheapkeys.com/partner-api/v1/seller/balance" -H "Authorization: Bearer $BCK_SELLER_KEY"

Errors and limits

Errors return { error: { code, message, requestId } } with a 4xx/5xx status. Limits: 20 requests per second and 600 per minute per key; 300 key uploads per minute.