API v1

Quathos SMS developer docs

Quathos SMS sends transactional email, one-time codes and campaigns behind one account and one token. The public API is REST over JSON, versioned in the path. Requests and responses are JSON, timestamps are UTC in ISO 8601, identifiers are UUIDs you can store as opaque strings. Everything below works in both the test and live environments: the token prefix decides which.

Copy, paste, run

Send your first email in the language you already use.

curl -X POST https://api.mailer.quathos.com/api/v1/sms/messages \
  -H "Authorization: Bearer $QSENDYX_TOKEN" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{
    "from": "QSENDYX",
    "to":   "+5511999998888",
    "body": "Your code is 481902"
  }'

Response: 202 Accepted · { "id": "…", "status": "queued" }

When something fails

Every error returns the same shape: an HTTP status and a stable code you can branch on.

codeStatusWhen
invalid_token401Missing, malformed or revoked token.
insufficient_scope403Token lacks the scope for this call.
insufficient_balance402The wallet cannot cover the send or the reservation. Top up and retry.
not_found404Resource does not exist in your tenant.
duplicate_request409Same key reused with a different payload.
suppressed_recipient403Recipient is on the suppression list; nothing was sent.
destination_not_allowed403SMS destination not enabled for your account. US needs 10DLC, Canada a dedicated number.
destination_not_verified403Evaluation mode: until your first top-up, SMS only goes to numbers verified in the dashboard (SMS → Verified numbers).
invalid_sender403Sender not usable: number you do not own, or a protected brand name without the verified domain.
rate_limit_exceeded429Too many requests, or an SMS anti-fraud ceiling: back off and retry.

See the full error reference →

Frequently asked questions

Test freely

Use a test token while you integrate: it runs the full pipeline on isolated data, never emails a real recipient and never spends balance. Switch to a live token when you go to production.