Skip to content
Seedingthucong.com
Show money in

USD is for display only — you always pay in coin.

Create account

API docs

Your API key

Sign in to create your API key, see the calls your script made and choose the API currency.

Sign in Create account

Quick start

Standard SMM API v2 — scripts written for other panels usually work here after changing the address and key.

  1. Send a request

    POST https://seedingthucong.com/api/v2

    The body can be a form (application/x-www-form-urlencoded) or JSON. Use POST with key and action in the body. GET also works, but GET puts your key into server logs. A key in the query string of a POST is treated as a wrong key.

  2. Read the result

    HTTP 200 with error and code fields for every API error; only transport errors keep their HTTP code: 404, 405, 413 and any other 4xx (code bad_request). No error field means success. Amounts and quantities come back as strings (e.g. "11900") — convert them before calculating.

  3. Currency and limits

    Amounts come back in VND unless the key is switched to USD after signing in. The coin/USD button at the top of the page only changes how the website shows money; it never affects the API. At most 300 requests a minute per API key.

  4. Retry without duplicate orders

    Every add call is a new order and a new charge. Send a unique ref_id with every order. If add times out or the network fails, wait longer than the maximum processing time of 60 seconds, then call status with that ref_id — only send add again if no order exists. Never retry after receiving {"order": …} or a business error.

More connection rules

  • status: at most 100 IDs per call, once a minute is enough. Statuses update every 2–30 minutes. Only ask for orders that are not final yet.
  • orders=",,," (only commas) returns [] for cancel and {} for status.
  • cancel answers per order; cancel can also answer Internal error for one order (safe to call again).
  • updates: without since_id, newest first. With since_id, items come oldest first, up to 100; an item shows up about 10 seconds after it is created.
  • Showing a hidden item again, or changing your own price or tier, is not sent again to a script that already passed that item.
  • JSON without a Content-Type header: at most 64 KB, nesting depth 8.

Actions

Pick an action to see its parameters, sample code and response.

action=servicesServer list

All servers you can use, with your own price per 1,000 units. Call once at start-up and keep it; no need before every order.

Parameters
NameRequiredValue typeMeaningExample
keyYesstringYour API keysk_live_…
actionYesstringAlways servicesservices

                

Shows sk_live_… — sign in and create your API key to get your own.

Response

                    
What each field means
service
Server ID used when ordering. It never changes and is never reused.
name
Server name, in your server name language
category
Group as "Platform - Group"
type
"Default" = link + quantity. "Custom Comments" / "Mentions Custom List" = send the list in comments (or usernames), one item per line; the quantity is the number of non-empty lines
rate
Your price per 1,000 units in your API currency. Order amount = rate × quantity ÷ 1000.
min · max
Smallest / largest quantity per order
cancel
true = can be cancelled with the cancel action
refund
true = the part not delivered is refunded; false = a "no cancel, no refund" server: once started, the order ends as Completed with no refund
refill
true = this server has a warranty: send refill for its Completed / Partial orders within the warranty period
dripfeed
Always false — not supported
country
2-letter country code of the audience (vn, th, us…), global = worldwide
average_time
Median minutes from placing an order to its start, over the last 24 hours; null until enough orders
speed_per_day
Median units delivered per day, over the last 24 hours; null until enough orders
promise_start_minutes · promise_per_day
The promise of this server: starts within this many minutes / delivers about this many units a day; null = no promise
promise_per_day_max · promise_speed_unit
The promised speed as a range: promise_per_day is the lower bound, promise_per_day_max the upper bound (both per day; null = no range). promise_speed_unit is how the promise was set — hour or day; per-hour promises are still given per day here (× 24)
refill_days · refill_unit
The warranty as numbers: refill_days is the warranty in days (whole number, null = no warranty — refill above is refill_days > 0); refill_unit is how it was set — day, week or month (a month counts as 30 days)
status
Speed status, refreshed every few minutes: fast (at or above the promise), normal, slow, very_slow, maintenance, paused (not taking orders right now)
status_note
A note from our team about this server, in your server name language; null when there is none

action=addPlace order

Creates a new order and charges your balance at once. Every call is a new order — the server does not block duplicates, so always send a ref_id.

Timeout or network error: do not resend straight away. Wait longer than the maximum processing time of 60 seconds, then call status with that order ref_id — only send again if no order exists.
Parameters
NameRequiredValue typeMeaningExample
keyYesstringYour API keysk_live_…
actionYesstringAlways addadd
serviceYesintegerServer ID from services1021
linkYesstring (URL)The link to grow, matching the server platformhttps://www.facebook.com/abc
quantityYesintegerQuantity, within the server min–max. Not needed for Custom Comments servers — ignored there1000
commentsNostringCustom Comments servers only: one comment per line. Quantity = number of non-empty lines (blank lines are not counted, repeated lines are kept and charged). usernames is accepted tooNice!\nLove it
ref_idNostring ≤ 64 charactersYour own order code — send it to find the order again after a network errororder-2291

                

Shows sk_live_… — sign in and create your API key to get your own.

Response

                    
What each field means
order
Our order ID — keep it to ask status or cancel

action=statusOrder status

Send exactly one of: order (one order), orders (several) or ref_id (find by your code). Only ask for orders that are not final yet.

Parameters
NameRequiredValue typeMeaningExample
keyYesstringYour API keysk_live_…
actionYesstringAlways statusstatus
orderOne ofintegerOne order ID → one object100245
ordersOne ofstringUp to 100 IDs separated by commas → an object keyed by order ID100245,100246
ref_idOne ofstringThe ref_id you sent → your orders with it (up to 100 newest; none → {})order-2291

                

Shows sk_live_… — sign in and create your API key to get your own.

Response

                    
Response with order (one order)
What each field means
(key)
With orders / ref_id: the key is the order ID as a string. A wrong ID gets its own error and does not break the call.
charge
Amount charged, in your API currency
start_count
Starting count when the order started; 0 until known
status
One of the 5 statuses in the table below
remains
Quantity not delivered yet
currency
Currency of charge
ref_id
The ref_id you sent; null if none

action=cancelCancel orders

Requests cancellation of one or more orders. The answer is per order; one failing does not affect the others.

Parameters
NameRequiredValue typeMeaningExample
keyYesstringYour API keysk_live_…
actionYesstringAlways cancelcancel
orderOne ofintegerOne order ID100245
ordersOne ofstringUp to 100 IDs separated by commas100245,100246

                

Shows sk_live_… — sign in and create your API key to get your own.

Response

                    
What each field means
order
Order ID
cancel
1 = request received. The part not delivered is refunded once the order stops — follow it with status (Canceled or Partial).
cancel.error
This order cannot be cancelled — see the error table

action=refillRequest a refill

Asks for a refill (warranty) of a Completed or Partial order whose server shows refill: true, within the warranty period counted from when the order finished. We record the request and our team handles it — nothing is charged or refunded; follow it with refill_status. One open request per order at a time.

Parameters
NameRequiredValue typeMeaningExample
keyYesstringYour API keysk_live_…
actionYesstringAlways refillrefill
orderOne ofintegerOne order ID → one object100245
ordersOne ofstringUp to 100 IDs separated by commas → a list, one item per order100245,100246

                

Shows sk_live_… — sign in and create your API key to get your own.

Response

                    
Response with order (one order)
What each field means
refill
ID of the warranty request — keep it to ask refill_status
refill.error
This order cannot be refilled now — see the error table

action=refill_statusRefill status

Status of your warranty requests. Only ask for requests that are not final yet.

Parameters
NameRequiredValue typeMeaningExample
keyYesstringYour API keysk_live_…
actionYesstringAlways refill_statusrefill_status
refillOne ofintegerOne refill ID → one object731
refillsOne ofstringUp to 100 refill IDs separated by commas → a list, one item per request731,732

                

Shows sk_live_… — sign in and create your API key to get your own.

Response

                    
Response with refill (one request)
What each field means
status
One of the four values below
Pending
Received, not handled yet
In progress
Our team is handling it
Completed
Refilled — final
Rejected
Not refilled — final; the note usually says why
note
A note from our team about this request, in the language it was written; left out when there is none
status.error
No such request, or it is not yours

action=balanceBalance

Your current balance in your API currency.

Parameters
NameRequiredValue typeMeaningExample
keyYesstringYour API keysk_live_…
actionYesstringAlways balancebalance

                

Shows sk_live_… — sign in and create your API key to get your own.

Response

                    
What each field means
balance
Current balance
currency
Your API currency

action=updatesServer updates

Specific to this panel (not in the standard SMM API v2): changes to servers you can use — new server, price change, maintenance, discontinued, min/max change, announcements.

Parameters
NameRequiredValue typeMeaningExample
keyYesstringYour API keysk_live_…
actionYesstringAlways updatesupdates
since_idNointegerOnly items with a larger id — send the largest id you received last time5119

                

Shows sk_live_… — sign in and create your API key to get your own.

Response

                    
What each field means
id
Item ID, increasing — store the largest and send it as since_id
type
One of: new · price_up · price_down · maintenance · resumed · discontinued · limits_changed · announcement
service
Related server ID; null for announcements
title · body
Title and text, in your server name language
old · new
Price items: price per 1,000 units before → after, in your API currency, always as strings. limits_changed: {"min", "max"}, always as strings; other types: null.
created_at
Time, ISO 8601 Vietnam time (+07:00)

Order statuses

Values of the status field. The first two are in progress; the last three are final — they never change, stop asking about that order.

In progressReceived and running — remains is what is still left.keep asking
CompletedDelivered in full, remains = 0.final
PartialUnder-delivered; the part not delivered (remains) has been refunded to your balance.final
CanceledCancelled; the part not delivered has been refunded (cancelled before starting = full refund).final

Error codes and what to do

code — a short machine code that never changes; have your script check this field. error — the English text of the standard SMM API, kept word for word so scripts that compare it keep working.

codeerrorMeaningWhat to do
invalid_keyInvalid API keyThe key is wrong or was replaced by a new one.Copy the key again on this page. More than 20 wrong keys a minute from one IP are refused for up to a minute.
account_disabledAccount disabledYour account is locked.Contact support; do not retry.
api_disabledAPI disabledAPI access is turned off for your account.Contact support to turn it on.
email_not_verifiedEmail not verifiedYour email address is not verified yet.Verify your email on the website, then call again.
rate_limitedToo many requestsMore than 300 requests a minute on your key, or too many wrong keys from your IP.Wait a few seconds; ask status for many IDs in one call.
maintenanceMaintenanceThe whole system is under maintenance; every action answers this.Retry in a few minutes.
action_not_supportedAction not supportedThis action does not exist (e.g. a drip-feed or subscription action).Use only the actions on this page.
drip_feed_not_supportedDrip-feed not supportedruns / interval were sent — drip-feed is not supported.Remove runs and interval.
order_not_foundIncorrect order IDNo such order, or it is not yours.Check the order ID.
incorrect_ref_idIncorrect ref_idref_id is not text or is longer than 64 characters.Send text of at most 64 characters.
incorrect_since_idIncorrect since_idsince_id is not a whole number of 0 or more.Send the largest id you received, or leave it out.
internal_errorInternal errorAn unexpected error on our side.Safe to retry the same call after a moment; for add, wait longer than the maximum processing time of 60 seconds and check status by ref_id before sending it again.
method_not_allowedMethod not allowedOnly GET and POST are accepted; this answer comes with HTTP 405.Use POST.
request_too_largeRequest too largeThe request body is too large; this answer comes with HTTP 413.Send fewer IDs or a shorter link.
not_foundNot foundWrong address under /api/v2; this answer comes with HTTP 404.Call exactly https://seedingthucong.com/api/v2.
timed_out_not_placedTimed out, order not placedadd could not finish in time (at most 60 seconds); no order was placed and nothing was charged — this is our side, not your request.Not a business error: send add again at once — the same ref_id is fine.
refill_not_availableRefill is not available for this serviceThe server of this order has no warranty (services shows refill: false).Do not retry — only servers with refill: true take warranty requests.
order_not_completedOrder is not completedThe order is still running or was cancelled — only Completed or Partial orders have a warranty.Wait until the order is Completed or Partial; a cancelled order cannot be refilled.
refill_expiredRefill period has expiredThe warranty period of this server, counted from when the order finished, is over.Do not retry.
refill_in_progressA refill request is already in progress for this orderThis order already has a warranty request that is not finished.Follow it with refill_status; send a new one once it is Completed or Rejected.
refill_not_foundIncorrect refill IDNo such warranty request, or it is not yours.Use the refill ID that refill returned.
cannot_cancelOrder can't be canceledThe server does not allow cancelling, or the order has finished.Do not retry.
cancel_already_requestedCancel already requestedA cancel request was already sent.Wait and follow it with status.
missing_parameterMissing parameter: XParameter X is missing.Add X to the request body.
too_many_idsToo many order IDs (max 100)More than 100 order IDs in one call.Split into several calls of at most 100 IDs.
too_many_idsToo many refill IDs (max 100)More than 100 refill IDs in one call.Split into several calls of at most 100 IDs.
bad_requestInternal errorThe request was refused at the HTTP level (for example HTTP 400); this answer keeps that HTTP code.Check the request method, headers and body against this page; do not resend it unchanged.
orders_pausedMaintenanceNew orders are paused; only add answers this — status, cancel, refill and balance keep working.Keep following your orders with status; send add again later.
incorrect_serviceIncorrect service IDNo such server, or you cannot use it.Call services to get the IDs again.
service_not_activeService not activeThe server is no longer sold.Choose another server (see the updates action).
service_maintenanceService under maintenanceThe server is under maintenance.Retry later or choose another server.
service_unavailableService temporarily unavailableThe server is temporarily not taking orders.Retry in a few minutes.
incorrect_quantityIncorrect quantityquantity is not a positive whole number.Send a whole number, e.g. 1000.
quantity_below_minQuantity less than minimal XQuantity is below the minimum.Raise the quantity to at least X.
quantity_above_maxQuantity more than maximal XQuantity is above the maximum.Lower the quantity or split the order.
incorrect_linkIncorrect linkThe link is malformed or not for this server platform.Check the link and the platform.
not_enough_fundsNot enough funds on balanceNot enough balance.Top up, then order again.
below_min_chargeOrder amount is below minimumThe order amount is below the minimum.Raise the quantity.
duplicate_linkYou have active order with this link. Please wait until order being completed.This server does not allow two running orders for the same link.Wait for the earlier order to finish.
incorrect_contentIncorrect commentsA “Custom Comments” server got no usable lines in comments / usernames (empty, only blank lines, not text).Send the list as text, one item per line.
incorrect_contentIncorrect usernamesA “Custom Comments” server got no usable lines in comments / usernames (empty, only blank lines, not text).Send the list as text, one item per line.
content_too_largeToo many commentscomments / usernames is too large to process (over 900 KB once encoded — Vietnamese and emoji count about 3 times).Split the list into several orders.
content_too_largeToo many usernamescomments / usernames is too large to process (over 900 KB once encoded — Vietnamese and emoji count about 3 times).Split the list into several orders.
content_line_too_longLine N is longer than X charactersLine N of comments / usernames is longer than this server allows (X characters).Shorten that line, then send again.