SMMFollowsAPI Docs Get your API key

SMMFollows API v2

Connect your website, app or reseller panel to SMMFollows. The API lets you load the service list, place orders, track them, request refills and cancels, and check your balance.

API URLhttps://smmfollows.com/api/v2
HTTP methodPOST
Response formatJSON

Every request is a POST to the same URL. The action parameter selects what the request does. Send parameters as form fields (application/x-www-form-urlencoded).

Authentication

Every request needs your API key in the key parameter. You find it in the account settings of your smmfollows.com account.

Keep your API key on your server. Do not put it in browser JavaScript or a mobile app, because anyone who reads it can place orders with your balance.

Quick start

Check that your key works by reading your balance.

curl -X POST https://smmfollows.com/api/v2 \
  -d key=YOUR_API_KEY \
  -d action=balance

POSTService list

Returns every service you can order, with its ID, type, price per 1000 and limits.

ParameterDescription
keyYour API key
actionservices

Example response

[
    {
        "service": 1,
        "name": "Followers",
        "type": "Default",
        "category": "First Category",
        "rate": "0.90",
        "min": "50",
        "max": "10000",
        "refill": true,
        "cancel": true
    },
    {
        "service": 2,
        "name": "Comments",
        "type": "Custom Comments",
        "category": "Second Category",
        "rate": "8",
        "min": "10",
        "max": "1500",
        "refill": false,
        "cancel": true
    }
]
  • rate is the price per 1000 units in your account currency.
  • type tells you which parameters Add order needs.
  • refill and cancel tell you whether the service supports those actions.

POSTAdd order

Creates an order. Always send key, action=add and service. The other parameters depend on the service type from the service list.

Service typeParameters (besides key, action, service)
Defaultlink, quantity, runs (optional, runs to deliver), interval (optional, minutes between runs)
Packagelink
SEOlink, quantity, keywords (one per line)
Custom Commentslink, comments (one per line)
Mentions Hashtaglink, quantity, hashtag (hashtag to scrape usernames from)
Mentions User Followerslink, quantity, username (URL to scrape followers from)
Custom Comments Packagelink, comments (one per line)
Comment Likeslink, quantity, username (username of the comment owner)
Polllink, quantity, answer_number
Comment Replieslink, username, comments (one per line)
Invites from Groupslink, quantity, groups (one per line)
Subscriptionsusername, min, max, delay, posts (optional), old_posts (optional), expiry (optional, d/m/Y)

Lists (keywords, comments, groups) are separated by \n or \r\n.

Subscriptions

  • delay: minutes to wait before each new post is processed. Allowed values: 0, 5, 10, 15, 20, 30, 40, 50, 60, 90, 120, 150, 180, 210, 240, 270, 300, 360, 420, 480, 540, 600.
  • posts: limits how many new (future) posts get an order. Without it, the subscription has no post limit.
  • old_posts: how many existing posts also get an order, where the service supports it.

Example request

curl -X POST https://smmfollows.com/api/v2 \
  -d key=YOUR_API_KEY \
  -d action=add \
  -d service=1 \
  -d link=https://www.instagram.com/yourprofile/ \
  -d quantity=1000

Example response

{
    "order": 23501
}

Store the returned order ID. You need it for status, refill and cancel requests.

POSTOrder status

ParameterDescription
keyYour API key
actionstatus
orderOrder ID

Example response

{
    "charge": "0.27819",
    "start_count": "3572",
    "status": "Partial",
    "remains": "157",
    "currency": "USD"
}
  • charge: what the order cost.
  • start_count: the counter on the link when the order started.
  • remains: units not delivered yet.

POSTMultiple orders status

ParameterDescription
keyYour API key
actionstatus
ordersOrder IDs separated by a comma, up to 100 IDs

Example response

{
    "1": {
        "charge": "0.27819",
        "start_count": "3572",
        "status": "Partial",
        "remains": "157",
        "currency": "USD"
    },
    "10": {
        "error": "Incorrect order ID"
    },
    "100": {
        "charge": "1.44219",
        "start_count": "234",
        "status": "In progress",
        "remains": "10",
        "currency": "USD"
    }
}

The response is keyed by order ID. An invalid ID returns an error for that ID only, and the rest of the batch still works.

POSTCreate refill

Requests a refill for an order whose service supports refills ("refill": true in the service list).

ParameterDescription
keyYour API key
actionrefill
orderOrder ID

Example response

{
    "refill": "1"
}

Multiple refills

Send orders (comma separated, up to 100) in place of order.

[
    {
        "order": 1,
        "refill": 1
    },
    {
        "order": 2,
        "refill": 2
    },
    {
        "order": 3,
        "refill": {
            "error": "Incorrect order ID"
        }
    }
]

POSTRefill status

ParameterDescription
keyYour API key
actionrefill_status
refillRefill ID

Example response

{
    "status": "Completed"
}

Multiple refill status

Send refills (comma separated, up to 100) in place of refill.

[
    {
        "refill": 1,
        "status": "Completed"
    },
    {
        "refill": 2,
        "status": "Rejected"
    },
    {
        "refill": 3,
        "status": {
            "error": "Refill not found"
        }
    }
]

POSTCreate cancel

Requests cancellation for orders whose service supports it ("cancel": true in the service list).

ParameterDescription
keyYour API key
actioncancel
ordersOrder IDs separated by a comma, up to 100 IDs

Example response

[
    {
        "order": 9,
        "cancel": {
            "error": "Incorrect order ID"
        }
    },
    {
        "order": 2,
        "cancel": 1
    }
]

POSTUser balance

ParameterDescription
keyYour API key
actionbalance

Example response

{
    "balance": "100.84292",
    "currency": "USD"
}

Errors

When a request fails, the response contains an error field with a readable message, for example:

{
    "error": "Incorrect order ID"
}

In batch requests (multiple status, refills, cancels) the error appears per item, so check each entry instead of the whole response.

Best practices

  • Cache the service list. Load services once and refresh it every few hours instead of on every page view.
  • Check status in batches. Use orders with up to 100 IDs per request instead of one request per order.
  • Poll at a calm pace. Every few minutes is enough for most services. Stop polling orders that are Completed, Partial or Canceled.
  • Save the order ID right away. Write it to your database before you show anything to your customer, so a timeout never leaves you with an unknown order.
  • Validate before ordering. Check min and max from the service list and the link format on your side.
  • Watch your balance. Call balance before large or mass orders.

Child panels

Don't want to write code? A SMMFollows child panel gives you a ready-made SMM panel on your own domain, already connected to SMMFollows. You add the provider in /admin/settings/providers with your API key, and orders from your customers are forwarded automatically.

Learn about the child panel reseller program →

PHP class

The official PHP class wraps every action: services(), order(), status(), multiStatus(), refill(), multiRefill(), refillStatus(), multiRefillStatus(), cancel() and balance(), with an example for each service type.

Download the PHP class

$api = new Api();
$api->api_key = 'YOUR_API_KEY';

$services = $api->services();
$order    = $api->order(['service' => 1, 'link' => 'http://example.com/test', 'quantity' => 100]);
$status   = $api->status($order->order);
$balance  = $api->balance();

Ready to connect?

Create an account on smmfollows.com and copy your API key from the account settings.

Open smmfollows.com