SMMGlide API

REST API for automated ordering. All responses are JSON. Public unit_price always means the price of one item. The documentation is public — start by getting a token.

Base URL
https://smmglide.site/api

Authentication

Get a token via /auth/register or /auth/login and send it in the header:

Authorization: Bearer YOUR_TOKEN

The token is also available in your dashboard under API. Endpoints marked “token” require authentication. API

Authentication

POST/auth/registerpublic

Register

Creates an account and returns an access token (valid for 7 days). The optional ref parameter is the referral code (id of the inviting user).

Request body (JSON)

email*stringEmail in user@host.tld format
password*stringPassword, 6–128 characters
refintegerReferral code of the inviting user (optional)

Request

curl -X POST https://smmglide.site/api/auth/register \
  -H "Content-Type: application/json" \
  -d '{"email":"you@example.com","password":"secret123"}'

Response

{ "token": "eyJzdWIiOiIx..." }
POST/auth/loginpublic

Log in

Returns an access token for an email and password pair.

Request body (JSON)

email*stringAccount email
password*stringPassword

Request

curl -X POST https://smmglide.site/api/auth/login \
  -H "Content-Type: application/json" \
  -d '{"email":"you@example.com","password":"secret123"}'

Response

{ "token": "eyJzdWIiOiIx..." }

Catalog

GET/servicespublic

List services

All active services with a per-item price (unit_price), limits and the refill flag. Public — no token required; retail_rate remains for compatibility.

Request

curl https://smmglide.site/api/services

Response

[
  {
    "id": 465,
    "name": "Telegram Просмотры на 20 последних постов [Россия]",
    "category": "Telegram Просмотры",
    "description": "Быстрый старт...",
    "service_type": null,
    "platform": "telegram",
    "kind": "view",
    "retail_rate": "115.00",
    "unit_price": "0.115",
    "min_qty": 100,
    "max_qty": 30000,
    "refill": true
  }
]

Account

GET/metoken

Profile

Account data: balance, currency, permissions.

Request

curl https://smmglide.site/api/me \
  -H "Authorization: Bearer YOUR_TOKEN"

Response

{ "id": 42, "email": "you@example.com", "balance": "1500.00", "currency": "RUB", "is_admin": false }
GET/me/loyaltytoken

Loyalty

Total spent, current permanent discount, progress to the next tier, top-up bonus and discount ladders, and the minimum top-up amount.

Request

curl https://smmglide.site/api/me/loyalty \
  -H "Authorization: Bearer YOUR_TOKEN"

Response

{
  "total_spent": "0",
  "discount_pct": "0",
  "next_threshold": "10000",
  "next_discount_pct": "3",
  "remaining_to_next": "10000",
  "loyalty_tiers": [{ "threshold": "10000", "pct": "3" }],
  "deposit_bonus_tiers": [{ "threshold": "1000", "pct": "5" }],
  "min_deposit": "20"
}
GET/me/referraltoken

Referral program

Referral link, number of invited users and the bonus earned.

Request

curl https://smmglide.site/api/me/referral \
  -H "Authorization: Bearer YOUR_TOKEN"

Response

{ "code": "42", "link": "https://smmglide.site/register?ref=42", "invited": 3, "earned": "120.00", "bonus_percent": 3 }

Orders

POST/orderstoken

Create an order

Charges the retail price to your balance (your discount applied) and places the order with the provider. For Custom Comments pass comments (one per line, quantity = number of lines), for Poll pass answer_number, for Mentions pass usernames.

Request body (JSON)

service_id*integerService id from /services
link*stringLink to a profile/post (3–512 chars)
quantity*integerAmount within min_qty…max_qty
expected_ratenumberTechnical retail_rate field from /services; prevents an unconfirmed increase. Without it, the server snapshots the current rate
commentsstringComment list, one per line (Custom Comments)
answer_numberstringPoll answer number (Poll)
usernamesstringUsernames to mention (Mentions)

Request

curl -X POST https://smmglide.site/api/orders \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"service_id":465,"link":"https://t.me/durov/123","quantity":1000,"expected_rate":4.30}'

Response

{
  "id": 1024, "status": "pending", "quantity": 1000, "charge_rub": "115.00",
  "external_order_id": "778812", "link": "https://t.me/durov/123",
  "service_name": "Telegram Просмотры...", "remains": null, "start_count": null,
  "created_at": "2026-07-23T12:00:00Z", "refill": true, "refunded_rub": null
}
GET/orderstoken

My orders

Order history with current status, remains, charged and refunded amounts. Statuses: pending, in_progress, completed, partial, canceled, failed.

Request

curl https://smmglide.site/api/orders \
  -H "Authorization: Bearer YOUR_TOKEN"

Response

[
  { "id": 1024, "status": "completed", "quantity": 1000, "charge_rub": "115.00",
    "remains": 0, "service_name": "Telegram Просмотры...", "refill": true, "refunded_rub": null }
]
POST/orders/{id}/refilltoken

Refill an order

Requests compensation of dropped units for an order (if the service supports refill).

Request

curl -X POST https://smmglide.site/api/orders/1024/refill \
  -H "Authorization: Bearer YOUR_TOKEN"

Response

{ "ok": true, "detail": "Refill requested — the provider will top the drop back up." }

Tickets

GET/ticketstoken

My tickets

Lightweight dialogue list without full message histories.

Request

curl https://smmglide.site/api/tickets \
  -H "Authorization: Bearer YOUR_TOKEN"

Response

[{ "id": 42, "subject": "Заказ не запускается", "category": "order_problem", "status": "awaiting_admin", "priority": "high", "order_id": 1024, "order_status": "in_progress", "service_name": "Telegram Просмотры", "created_at": "2026-08-11T12:00:00Z", "updated_at": "2026-08-11T12:00:00Z" }]
POST/ticketstoken

Create a ticket

Creates a private dialogue and automatically attaches context for an order you own.

Request body (JSON)

category*stringorder_problem, refill, payment, account or other
subject*stringSubject, 4–160 characters
body*stringInitial message, 5–4000 characters
order_idintegerAn owned order; required for order_problem and refill

Request

curl -X POST https://smmglide.site/api/tickets \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"category":"order_problem","subject":"Order is not starting","body":"No progress for several hours","order_id":1024}'

Response

{ "id": 42, "subject": "Заказ не запускается", "category": "order_problem", "status": "awaiting_admin", "priority": "high", "order_id": 1024, "order_status": "in_progress", "service_name": "Telegram Просмотры", "created_at": "2026-08-11T12:00:00Z", "updated_at": "2026-08-11T12:00:00Z", "messages": [{ "id": 1, "from_admin": false, "body": "Нет старта несколько часов", "created_at": "2026-08-11T12:00:00Z" }] }
GET/tickets/{id}token

Ticket dialogue

Full dialogue. Another user's ticket is never accessible.

Request

curl https://smmglide.site/api/tickets/42 \
  -H "Authorization: Bearer YOUR_TOKEN"

Response

{ "id": 42, "subject": "Заказ не запускается", "category": "order_problem", "status": "awaiting_admin", "priority": "high", "order_id": 1024, "order_status": "in_progress", "service_name": "Telegram Просмотры", "created_at": "2026-08-11T12:00:00Z", "updated_at": "2026-08-11T12:00:00Z", "messages": [{ "id": 1, "from_admin": false, "body": "Нет старта несколько часов", "created_at": "2026-08-11T12:00:00Z" }] }
POST/tickets/{id}/messagestoken

Reply

Adds a message and returns the ticket to the admin queue.

Request body (JSON)

body*stringMessage, 2–4000 characters

Request

curl -X POST https://smmglide.site/api/tickets/42/messages \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"body":"Additional details"}'

Response

{ "id": 42, "subject": "Заказ не запускается", "category": "order_problem", "status": "awaiting_admin", "priority": "high", "order_id": 1024, "order_status": "in_progress", "service_name": "Telegram Просмотры", "created_at": "2026-08-11T12:00:00Z", "updated_at": "2026-08-11T12:00:00Z", "messages": [{ "id": 1, "from_admin": false, "body": "Нет старта несколько часов", "created_at": "2026-08-11T12:00:00Z" }] }
POST/tickets/{id}/closetoken

Close a ticket

Closes the dialogue; a later reply reopens it.

Request

curl -X POST https://smmglide.site/api/tickets/42/close \
  -H "Authorization: Bearer YOUR_TOKEN"

Response

{ "id": 42, "subject": "Заказ не запускается", "category": "order_problem", "status": "awaiting_admin", "priority": "high", "order_id": 1024, "order_status": "in_progress", "service_name": "Telegram Просмотры", "created_at": "2026-08-11T12:00:00Z", "updated_at": "2026-08-11T12:00:00Z", "messages": [{ "id": 1, "from_admin": false, "body": "Нет старта несколько часов", "created_at": "2026-08-11T12:00:00Z" }] }

Balance

POST/balance/deposittoken

Top up balance

Creates a payment and returns a payment link (pay_url). After payment the balance is credited automatically, plus the volume bonus. Minimum ₽20. Gateway: platega (default for the website).

Request body (JSON)

gateway*stringplatega (the only active gateway; others are disabled)
amount*numberAmount in roubles, ≥ 20

Request

curl -X POST https://smmglide.site/api/balance/deposit \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"gateway":"platega","amount":1000}'

Response

{ "payment_id": 55, "external_id": "3c9f020b-...", "pay_url": "https://pay.platega.io?id=...", "status": "pending" }

No registration

POST/guest/orderspublic

Order without an account

Pay-first checkout without an account: creates the order and the payment, returns a payment link. After payment the order goes into delivery automatically.

Request body (JSON)

service_id*integerService id
link*stringLink to a profile/post
quantity*integerAmount
expected_ratenumberTechnical retail_rate field from /services; the invoice cannot become more expensive. Without it, the server snapshots the current rate
gatewaystringPayment gateway (platega by default)

Request

curl -X POST https://smmglide.site/api/guest/orders \
  -H "Content-Type: application/json" \
  -d '{"service_id":465,"link":"https://t.me/durov/123","quantity":1000,"expected_rate":4.30}'

Response

{ "order_id": 2048, "amount": "115.00", "external_id": "...", "pay_url": "https://pay.platega.io?id=...", "status": "awaiting_payment" }

Error codes

  • 400invalid parameters (for example, an amount below the minimum).
  • 401missing or invalid token.
  • 402insufficient balance.
  • 404service or order not found.
  • 502provider error (order not placed, funds not charged).

Error body: { "detail": "..." } Tickets