API v2
CloutPanel Reseller API
Place and track orders from your own panel, bot or app. It follows the standard SMM Panel v2 API, so most panel scripts connect by pasting the URL and your key.
Base URL
https://cloutpanel.co.ke/api/v2
Method
POST (GET also works)
Body
Form-encoded or JSON
Authentication
Every request needs two fields: key, your API key, and action, what you want to do.
Create or regenerate your key under Dashboard → API. Keep it secret: anyone with it can spend your balance.
Create a free accountQuick start
Place an order for 1,000 TikTok views. Replace the key, service ID and link with your own.
curl -X POST https://cloutpanel.co.ke/api/v2 \
-d key=YOUR_API_KEY \
-d action=add \
-d service=1034 \
-d link=https://www.tiktok.com/@you/video/123 \
-d quantity=1000Limits and formats
Services
List services
action=servicesEvery service you can order, with your price per 1,000 in KES and the allowed quantity range.
Parameters
keyRequiredYour API keyactionRequiredservicesRequest
curl -X POST https://cloutpanel.co.ke/api/v2 \
-d key=YOUR_API_KEY \
-d action=servicesResponse
[
{
"service": "1034",
"name": "TikTok Views [No Refill] [Budget]",
"type": "Default",
"category": "TikTok Views",
"rate": "13.0000",
"min": "100",
"max": "1000000",
"refill": false,
"cancel": true,
"dripfeed": false
}
]Get one service
action=serviceFull details for a single service, including its platform and description.
Parameters
keyRequiredYour API keyactionRequiredserviceserviceRequiredService IDRequest
curl -X POST https://cloutpanel.co.ke/api/v2 \
-d key=YOUR_API_KEY \
-d action=service \
-d service=1034Response
{
"service": "1034",
"name": "TikTok Views [No Refill] [Budget]",
"type": "Default",
"category": "TikTok Views",
"platform": "tiktok",
"rate": "13.0000",
"min": "100",
"max": "1000000",
"refill": false,
"cancel": true,
"dripfeed": false,
"description": ""
}List categories
action=categoriesCategories with how many services each has and the lowest price per 1,000.
Parameters
keyRequiredYour API keyactionRequiredcategoriesRequest
curl -X POST https://cloutpanel.co.ke/api/v2 \
-d key=YOUR_API_KEY \
-d action=categoriesResponse
[
{ "category": "Instagram Followers", "platform": "instagram", "services": 12, "from_rate": "194.9300" }
]Get a price quote
action=quoteCalculates the exact charge for a quantity and whether your balance covers it. Nothing is ordered or charged.
Parameters
keyRequiredYour API keyactionRequiredquoteserviceRequiredService IDquantityRequiredQuantity you want to order (ignored for packages)Request
curl -X POST https://cloutpanel.co.ke/api/v2 \
-d key=YOUR_API_KEY \
-d action=quote \
-d service=1034 \
-d quantity=1000Response
{
"service": "1034",
"quantity": "1000",
"charge": "13.0000",
"balance": "250.0000",
"enough_balance": true,
"currency": "KES"
}Orders
Add order
action=addPlaces an order and charges your balance. The order starts delivering automatically.
Parameters
keyRequiredYour API keyactionRequiredaddserviceRequiredService IDlinkRequiredProfile or post link (or username for profile services)quantityRequiredQuantity, within the service's min and maxcommentsOptionalCustom comments services only: one comment per line. Quantity is taken from the number of linesRequest
curl -X POST https://cloutpanel.co.ke/api/v2 \
-d key=YOUR_API_KEY \
-d action=add \
-d service=1034 \
-d link=https://www.tiktok.com/@you/video/123 \
-d quantity=1000Response
{ "order": 23501 }Order status
action=statusLive status of one order, or up to 100 orders at once.
Parameters
keyRequiredYour API keyactionRequiredstatusorderOptionalOne order IDordersOptionalComma-separated order IDs, up to 100. Send order or ordersRequest
curl -X POST https://cloutpanel.co.ke/api/v2 \
-d key=YOUR_API_KEY \
-d action=status \
-d order=23501Response
{
"charge": "13.0000",
"start_count": "3572",
"status": "In progress",
"remains": "157",
"currency": "KES"
}
// With orders=1,2
{
"1": { "charge": "13.0000", "start_count": "3572", "status": "Completed", "remains": "0", "currency": "KES" },
"2": { "error": "Incorrect order ID" }
}List orders
action=ordersYour recent orders, newest first, with service name, link and status.
Parameters
keyRequiredYour API keyactionRequiredorderslimitOptionalHow many to return, 1 to 100 (default 20)offsetOptionalSkip this many for paging (default 0)statusOptionalFilter: pending, in_progress, completed, partial or canceledRequest
curl -X POST https://cloutpanel.co.ke/api/v2 \
-d key=YOUR_API_KEY \
-d action=orders \
-d limit=20Response
[
{
"order": 23501,
"service": "1034",
"name": "TikTok Views [No Refill] [Budget]",
"link": "https://www.tiktok.com/@you/video/123",
"quantity": "1000",
"created": "2026-11-08T09:30:00.000Z",
"charge": "13.0000",
"start_count": "3572",
"status": "Completed",
"remains": "0",
"currency": "KES"
}
]Order details
action=orderOne order with its service, link, quantity, refunded amount and status.
Parameters
keyRequiredYour API keyactionRequiredorderorderRequiredOrder IDRequest
curl -X POST https://cloutpanel.co.ke/api/v2 \
-d key=YOUR_API_KEY \
-d action=order \
-d order=23501Response
{
"order": 23501,
"service": "1034",
"name": "TikTok Views [No Refill] [Budget]",
"link": "https://www.tiktok.com/@you/video/123",
"quantity": "1000",
"created": "2026-11-08T09:30:00.000Z",
"refunded": "0.0000",
"charge": "13.0000",
"start_count": "3572",
"status": "Completed",
"remains": "0",
"currency": "KES"
}Cancel orders
action=cancelAsks to cancel orders whose service supports it. Refunds go back to your balance once the cancel is confirmed.
Parameters
keyRequiredYour API keyactionRequiredcancelordersRequiredComma-separated order IDs, up to 100 (order also works for one)Request
curl -X POST https://cloutpanel.co.ke/api/v2 \
-d key=YOUR_API_KEY \
-d action=cancel \
-d orders=23501,23502Response
[
{ "order": 9, "cancel": 1 },
{ "order": 10, "cancel": { "error": "This service can't be cancelled" } }
]Refills
Request refill
action=refillRequests a free refill on a completed order from a refill service.
Parameters
keyRequiredYour API keyactionRequiredrefillorderOptionalOne order IDordersOptionalComma-separated order IDs, up to 100Request
curl -X POST https://cloutpanel.co.ke/api/v2 \
-d key=YOUR_API_KEY \
-d action=refill \
-d order=23501Response
{ "refill": "1" }
// With orders=1,2
[
{ "order": 1, "refill": 1 },
{ "order": 2, "refill": { "error": "This service has no refill" } }
]Refill status
action=refill_statusStatus of one refill, or several at once.
Parameters
keyRequiredYour API keyactionRequiredrefill_statusrefillOptionalOne refill IDrefillsOptionalComma-separated refill IDs, up to 100Request
curl -X POST https://cloutpanel.co.ke/api/v2 \
-d key=YOUR_API_KEY \
-d action=refill_statusResponse
{ "status": "Pending" }
// With refills=1,2
[
{ "refill": 1, "status": "Completed" },
{ "refill": 2, "status": { "error": "Incorrect refill ID" } }
]Account
Balance
action=balanceYour current wallet balance.
Parameters
keyRequiredYour API keyactionRequiredbalanceRequest
curl -X POST https://cloutpanel.co.ke/api/v2 \
-d key=YOUR_API_KEY \
-d action=balanceResponse
{ "balance": "100.8400", "currency": "KES" }Account summary
action=accountBalance, order counts and total spent, handy for a dashboard.
Parameters
keyRequiredYour API keyactionRequiredaccountRequest
curl -X POST https://cloutpanel.co.ke/api/v2 \
-d key=YOUR_API_KEY \
-d action=accountResponse
{
"balance": "100.8400",
"currency": "KES",
"orders": 42,
"active_orders": 3,
"total_spent": "1250.5000",
"member_since": "2026-11-05T10:00:00.000Z"
}Top-up history
action=paymentsYour recent M-Pesa top-ups with the fee and the amount added to your wallet.
Parameters
keyRequiredYour API keyactionRequiredpaymentslimitOptionalHow many to return, 1 to 100 (default 20)Request
curl -X POST https://cloutpanel.co.ke/api/v2 \
-d key=YOUR_API_KEY \
-d action=payments \
-d limit=20Response
[
{
"payment": 812,
"amount": "258.0000",
"fee": "8.0000",
"credit": "250.0000",
"status": "Completed",
"method": "M-Pesa",
"receipt": "UK7MU1LBZ2",
"created": "2026-11-07T07:53:00.000Z",
"currency": "KES"
}
]Order statuses
Errors
Every error looks like {"error": "message"}. The most common ones:
Missing API keyNo key was sent.Invalid API keyThe key is wrong, was regenerated, or the account is suspended.Accept the terms in your dashboard firstSign in once and accept the terms.Unknown actionThe action name is misspelled or not supported.Incorrect order ID / Incorrect service IDThe ID doesn't exist or belongs to another account.Your balance is too low for this. Add funds and try again.Top up with M-Pesa from your dashboard, or check the cost first with action=quote.Too many requests. Limit is 120 a minute.Slow down and retry after a minute.Need help connecting? Open a support ticket.