API Documentation

One API key. Two REST APIs. Same infrastructure your dashboard uses.

SMM Reseller API v1

Stable REST API to order social media growth services (Instagram, TikTok, YouTube, Twitter, Facebook and more) programmatically. Same catalog, same prices you see in your dashboard — your profit margin is already included.

Base URL: https://smsverifyo.com
Auth: Bearer token
Format: JSON (UTF-8)
TLS 1.2+ only
Getting started in 3 minutes
  1. Sign up and top up your account (Cryptomus / Stripe / Paddle / PayTR / Shopier).
  2. Open the API keys page, click Create key — shown once and emailed. Format: sk_live_… (56 chars). One key works for BOTH SMS and SMM APIs.
  3. Send it as an HTTP header on every request:
    Authorization: Bearer sk_live_…
  4. Start with GET /smm/balance to confirm the key works, then GET /smm/services → POST /smm/order → poll GET /smm/order/{id}.
Conventions
  • All amounts are in USD with 4-decimal precision (includes your dashboard price with margin).
  • All timestamps are ISO-8601 UTC.
  • Successful responses include "ok": true. Errors return { ok: false, error: { message, code } } with a 4xx/5xx status.
  • CORS is enabled — API keys must live on the server, never in a browser.
  • Responses are Cache-Control: no-store. Cache /smm/services on your side for a few minutes if you list them to end users.
GET
/api/public/v1/smm/balance

Returns your current account balance in USD. Same balance the SMS API uses.

Request

curl -H "Authorization: Bearer $KEY" https://smsverifyo.com/api/public/v1/smm/balance

Response 200

{ "ok": true, "balance_usd": 42.5000, "currency": "USD" }
GET
/api/public/v1/smm/services

Lists every enabled SMM service (Instagram Followers, TikTok Views, YouTube Watchtime…) with the final price you'll be charged. Cache this — it changes at most a few times a day.

Request

curl -H "Authorization: Bearer $KEY" https://smsverifyo.com/api/public/v1/smm/services

Response 200

{
  "ok": true,
  "services": [
    {
      "id": "…uuid",
      "name": "1000 Instagram Followers",
      "platform": "instagram",
      "platform_name": "Instagram",
      "category": "followers",
      "category_name": "Followers",
      "link_kind": "profile",
      "default_quantity": 1000,
      "min": 100,
      "max": 100000,
      "price_usd": 3.9000
    }
  ]
}
POST
/api/public/v1/smm/order

Places an SMM order. Debits your balance atomically, dispatches to the upstream provider, and returns the internal order id. If the provider rejects, the balance is refunded automatically.

Parameters

NameTypeRequiredDescription
service_iduuidyesThe service.id returned by /smm/services.
linkurlyesTarget link (profile, video, post URL). Must match the category's link_kind.
quantityintnoOptional. Defaults to the service's default_quantity. Must be within [min, max].

Request

curl -X POST -H "Authorization: Bearer $KEY" -H "Content-Type: application/json" \
  -d '{"service_id":"SERVICE_UUID","link":"https://instagram.com/username","quantity":1000}' \
  https://smsverifyo.com/api/public/v1/smm/order

Response 200

{
  "ok": true,
  "order": {
    "id": "…uuid",
    "status": "in_progress",
    "service_id": "…uuid",
    "service_name": "1000 Instagram Followers",
    "quantity": 1000,
    "link": "https://instagram.com/username",
    "charged_usd": 3.9000,
    "balance_usd": 38.6000
  }
}
GET
/api/public/v1/smm/order/{id}

Fetches an order's current state. Poll every 30–60 s for open orders; the endpoint also refreshes stale rows from the upstream provider on demand.

Request

curl -H "Authorization: Bearer $KEY" https://smsverifyo.com/api/public/v1/smm/order/ORDER_ID

Response 200

{
  "ok": true,
  "order": {
    "id": "…uuid",
    "status": "in_progress",
    "quantity": 1000,
    "link": "https://instagram.com/username",
    "charged_usd": 3.9000,
    "start_count": 8421,
    "remains": 380,
    "refill_id": null,
    "error": null,
    "created_at": "2026-07-10T09:12:00Z"
  }
}
POST
/api/public/v1/smm/order/{id}/refill

Asks the provider to top-up an order that has dropped (e.g. followers that unfollowed). Only supported when the underlying service allows refill.

Request

curl -X POST -H "Authorization: Bearer $KEY" https://smsverifyo.com/api/public/v1/smm/order/ORDER_ID/refill

Response 200

{ "ok": true, "refill_id": "R12345" }
POST
/api/public/v1/smm/order/{id}/cancel

Requests the provider to cancel an order that has not yet fully processed. Not guaranteed — many services start instantly.

Request

curl -X POST -H "Authorization: Bearer $KEY" https://smsverifyo.com/api/public/v1/smm/order/ORDER_ID/cancel

Response 200

{ "ok": true, "status": "cancel_requested" }
Order lifecycle
  1. POST /smm/order → status in_progress, balance debited atomically.
  2. Order progresses through provider: in_progress → processing → partial/completed.
  3. GET /smm/order/{id} every 30–60 s to track status, start_count and remains.
  4. Refill (if supported) restores lost quantity — provider dependent.
  5. Completed and canceled orders are terminal — stop polling.
Error codes
HTTPerror.codeWhen it happens
401unauthorizedMissing / invalid / revoked API key.
400invalid_requestMissing or malformed body parameters.
402insufficient_fundsBalance is not enough to cover the order price.
403demo_modeDemo accounts cannot place orders.
404not_foundOrder id does not exist or belongs to another user.
409invalid_stateTrying to cancel an order that already ran (not cancellable).
400order_failedProvider rejected the order (link, quantity or upstream stock issue). Balance was refunded.
429rate_limitedToo many requests. Back off and retry.
Rate limits & best practices
  • Soft limit: ~120 requests/minute per key. Sustained overload returns 429.
  • Poll /smm/order/{id} at 30–60 s intervals. Anything under 10 s is wasteful — provider itself updates every ~1 min.
  • Cache /smm/services on your side for at least 5 minutes to keep your storefront fast.
  • Always retry 5xx and 429 with exponential backoff (2 s, 4 s, 8 s…).
  • Rotate keys periodically. Revoke old keys from the API keys page — takes effect instantly.
  • Validate the `link` (Instagram profile URL, YouTube video URL, etc.) client-side before calling /smm/order to avoid useless debits.
Support
Questions or integration help? Open a ticket from the Support page or email [email protected].