SMS

Text messages received by the dongle's SIM card (for example verification codes), and sending SMS from it.

Received messages

GET /proxies/{id}/sms

Ability: read · Newest first.

Query
limit1–200, default 50
curl
Python
Node.js
PHP
curl 'https://proxykite.com/api/v1/proxies/7/sms?limit=10' \
  -H "Authorization: Bearer $HYP_TOKEN" \
  -H 'Accept: application/json'

Response 200

{"data": [
  {"id": 55, "phone": "+919800000000", "content": "Your code is 123456", "received_at": "2026-10-09T18:00:00+00:00", "read": false}
]}

Send an SMS

POST /proxies/{id}/sms

Ability: manage · Who: account owner, team admin, or the reseller sub-user the proxy is assigned to · 20 requests/min. Sends one SMS from the dongle's SIM (operator charges apply). "OK" means the dongle accepted it, not that it was delivered. Counts toward the proxy's SMS limits.

Body field
tophone number, digits with optional leading + (spaces, dashes, brackets are removed)
text1–670 characters
curl
Python
Node.js
PHP
curl -X POST 'https://proxykite.com/api/v1/proxies/7/sms' \
  -H "Authorization: Bearer $HYP_TOKEN" \
  -H 'Accept: application/json' \
  -H 'Content-Type: application/json' \
  -d '{"to":"+919800000000","text":"Hello"}'

Response 200

{"ok": true, "data": {"id": 31, "to": "+919800000000", "chars": 5, "sent_at": "2026-10-10T09:00:00+00:00"},
 "limits": {"day": {"limit": 50, "used": 13, "resets_at": "2026-10-10T18:30:00+00:00"}, "week": {…}, "month": {…}}}

429 — an SMS limit is used up (limit = the period that frees up last; Retry-After header in seconds):

{"error": "sms_limit_reached", "limit": "day", "max": 50, "used": 50,
 "resets_at": "2026-10-10T18:30:00+00:00", "message": "SMS limit reached: 50 of 50 this day. …"}

Other errors: 409 dongle_busy (a rotation or another SMS is running — retry shortly), 422 validation_failed (bad number or text), 502 sms_failed (the dongle refused or is unreachable).