Reseller API

Run bulk phone-number scans programmatically. Submit a number list with a service and a country, we validate and price it against your prepaid wallet, run it, and hand back a downloadable result file — all through a single API-key header. No OAuth, no sessions, no cookies.

Base URL

Every path below is relative to the production base URL. Paths have no trailing slash.

https://api.p-syke.com/api/reseller

What you can do

Quickstart — submit, poll, download

  1. Get an API key. Sign in to the psyke app → API access and create a key. The plaintext key (rsl_live_…) is shown once — copy it immediately.
  2. Submit an order. POST /orders with a service_code, a country, and a file of ≥ 2,000 numbers (multipart). You are charged at submit time and get back an order_id.
  3. Poll status. GET /orders/{order_id} every 30–60 seconds until status is completed (or failed).
  4. Download the result. GET /orders/{order_id}/result returns the finished CSV/TSV file.

A complete, runnable end-to-end example in three languages (set KEY to your real key and numbers.txt to your list):

cURL
export BASE="https://api.p-syke.com/api/reseller"
export KEY="rsl_live_xxxxxxxxxxxxxxxx"

# 1. Submit (multipart). numbers.txt = one number per line, ≥ 2000 valid.
ORDER_ID=$(curl -s -X POST "$BASE/orders" \
  -H "X-Reseller-API-Key: $KEY" \
  -H "Idempotency-Key: order-2026-07-17-001" \
  -F "service_code=tg-active" \
  -F "country=US" \
  -F "[email protected]" \
  | python3 -c 'import sys,json;print(json.load(sys.stdin)["order_id"])')
echo "order $ORDER_ID"

# 2. Poll every 45s until completed (or failed).
while :; do
  status=$(curl -s "$BASE/orders/$ORDER_ID" -H "X-Reseller-API-Key: $KEY" \
           | python3 -c 'import sys,json;print(json.load(sys.stdin)["status"])')
  echo "status=$status"
  [ "$status" = "completed" ] && break
  [ "$status" = "failed" ] && { echo "order failed"; exit 1; }
  sleep 45
done

# 3. Download the result file (CSV or TSV; -OJ honors the server filename).
curl -s "$BASE/orders/$ORDER_ID/result" -H "X-Reseller-API-Key: $KEY" -OJ

Order status lifecycle

  • queued
  • running
  • completed
  • failed

The five status values are draft, queued, running, completed, failed. A completed order has a downloadable result; a failed order carries a customer-safe failure_message and is auto-refunded. Poll GET /orders/{order_id} — do not loop on the /result endpoint (it returns 409 NOT_READY until completion).

Endpoints at a glance

MethodPathPurpose
GET/api/reseller/servicesList services
GET/api/reseller/countriesList countries
GET/api/reseller/balanceGet wallet balance
POST/api/reseller/ordersSubmit an order
GET/api/reseller/orders/{order_id}Poll order status
GET/api/reseller/orders/{order_id}/resultDownload result