Turn an order into a connection.
A POST JSON or form-data interface for orders from your server. Verify your email, create a scoped key, and keep it on your server. Never put it in browser code or a URL.
POST https://smmegy.com/api/v2 Authorization: Bearer YOUR_API_KEY Content-Type: application/json
| action | Fields | Scope |
|---|---|---|
services | cursor (optional), limit (1–1000) | services |
balance | — | balance |
add | service, idempotency_key + order_form.fields; coupon optional | orders:write |
status | order OR orders (comma-separated, maximum 100) | orders:read |
refill | order, idempotency_key | orders:actions |
cancel | order, idempotency_key | orders:actions |
refill_status | order | orders:actions |
Choose the service-specific fields
Start with services. Each service includes order_form with ordering availability, required fields, limits and rate basis. Send those fields directly in the add body, such as comments or username; do not wrap them in options. A listed service may be unavailable for ordering: check order_form.orderable before sending.
{
"action": "services",
"cursor": 0,
"limit": 1000
}
// Example order_form for a Custom Comments service:
{
"type": "custom_comments",
"supported": true,
"orderable": true,
"blocked_reason": null,
"quantity_mode": "comments",
"rate_basis": "per_1000",
"target": "link",
"fields": {
"link": {"type": "text", "required": true, "max_length": 2048},
"comments": {"type": "textarea", "required": true, "max_length": 100000, "line_limit": 2000}
},
"drip": false
}
| Service type | add fields | Quantity and pricing |
|---|---|---|
| Default | link, quantity | Your requested quantity, priced per 1,000 |
| Package | link | One order at the full package price |
| Custom Comments | link, comments | Non-empty comment lines, priced per 1,000 |
| Custom Comments Package | link, comments | One order at the full comments package price |
| Comment Replies | link, username, comments | Non-empty reply lines, priced per 1,000 |
| Comment Likes | link, quantity, username | Your requested quantity, priced per 1,000 |
| Mentions Custom List | link, usernames | Non-empty username lines, priced per 1,000 |
| Mentions with Hashtags | link, quantity, usernames, hashtags | Your requested quantity, priced per 1,000 |
| Mentions Hashtag | link, quantity, hashtag | Your requested quantity, priced per 1,000 |
| Mentions User Followers | link, quantity, username | Your requested quantity, priced per 1,000 |
| Mentions Media Likers | link, quantity, media | Your requested quantity, priced per 1,000 |
| Invites from Groups | link, quantity, groups | Your requested quantity, priced per 1,000 |
| Poll | link, quantity, answer_number | Your requested quantity, priced per 1,000 |
| SEO | link, quantity, keywords | Your requested quantity, priced per 1,000 |
| Web Traffic | link, quantity, country, device, type_of_traffic | Your requested quantity, priced per 1,000 |
| Subscriptions | username, min, max, posts, delay; old_posts/expiry optional | Finite budget reservation: max × (posts + old_posts) |
Separate comments, usernames, hashtags, keywords and groups with newlines. Omit quantity for custom comments, custom mention lists and packages: the site derives the correct quantity. username identifies the comment owner or account specified by the service; media is the source post URL. The target must match the platform. IPTV services requesting a username accept it in link as stated in their description.
When order_form.drip is true, the service accepts runs and an interval in minutes; billable quantity is quantity × runs. Build your form from fields.required, required_when, choices, min and max rather than assuming a uniform form. rate_basis=package means a full package price; per_1000 means a price per thousand. rate uses the catalog currency; the final charge uses the wallet currency after applicable discounts and conversion.
Web traffic options
country accepts a country code or full name. device: 1 desktop, 2 Android, 3 iOS, 4 mixed mobile, 5 mobile and desktop. type_of_traffic: 1 Google search requires google_keyword; 2 custom referral requires an HTTPS referring_url; 3 no referral. Send only the extra field for your chosen traffic source.
Create an order safely
curl -X POST 'https://smmegy.com/api/v2' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{"action":"add","service":123,"link":"https://www.instagram.com/p/YOUR_POST/","quantity":100,"idempotency_key":"my-site-order-12345"}'
Retry the same reference and payload after a timeout to retrieve the same order. A changed payload with the same reference is rejected. Confirmation reserves funds; fulfillment starts after order acceptance. Money is returned as decimal strings with explicit currency.
Custom comments example
{
"action": "add",
"service": 123,
"link": "https://www.instagram.com/p/YOUR_POST/",
"comments": "First comment\nSecond comment",
"idempotency_key": "my-site-comments-12345"
}
Finite automatic subscription example
{
"action": "add",
"service": 456,
"username": "YOUR_USERNAME",
"min": 100,
"max": 200,
"posts": 10,
"old_posts": 2,
"delay": 5,
"idempotency_key": "my-site-subscription-12345"
}
Choose a service matching the example type and its min/max limits. posts is required from 1 to 365; posts + old_posts cannot exceed 365. Unbounded subscriptions are rejected. delay uses the minute choices in order_form. expiry optionally accepts YYYY-MM-DD or DD/MM/YYYY. This example reserves a 2,400-unit budget at the approved price, which does not imply all units were delivered. At subscription closure, settlement_review becomes true; status remains active and funds stay reserved until staff verify delivered quantity against fulfillment evidence. Delivered units are charged and the remainder released once. Post-tracking subscriptions differ from scheduled recurring orders in your account.
Limits & errors
Defaults are 60 calls/minute and 10,000/day per key. HTTP 401: invalid key; 403: scope; 422: validation; 429: quota; 503: maintenance. Refill/cancel depend on service capability and fulfillment status; requesting cancellation does not confirm a refund.
Services: use the last service ID as the next cursor. Status never exposes another account’s orders. Do not send payment details or customer passwords to this API.
Manage your keys