CloutPanel

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 account

Quick 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=1000

Limits and formats

Rate limit120 requests a minute per key
CurrencyKenyan shillings (KES). Money fields are strings with 4 decimals, e.g. "13.0000"
RatesPrice per 1,000 units. Packages are a fixed price
Bulkstatus, refill, refill_status and cancel accept up to 100 IDs, comma-separated
ErrorsReturned as {"error": "message"} with HTTP 200, the v2 convention
DatesISO 8601 in UTC

Services

POST

List services

action=services

Every service you can order, with your price per 1,000 in KES and the allowed quantity range.

Parameters

keyRequiredYour API key
actionRequiredservices

Request

cURL
curl -X POST https://cloutpanel.co.ke/api/v2 \
  -d key=YOUR_API_KEY \
  -d action=services

Response

JSON
[
  {
    "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
  }
]
POST

Get one service

action=service

Full details for a single service, including its platform and description.

Parameters

keyRequiredYour API key
actionRequiredservice
serviceRequiredService ID

Request

cURL
curl -X POST https://cloutpanel.co.ke/api/v2 \
  -d key=YOUR_API_KEY \
  -d action=service \
  -d service=1034

Response

JSON
{
  "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": ""
}
POST

List categories

action=categories

Categories with how many services each has and the lowest price per 1,000.

Parameters

keyRequiredYour API key
actionRequiredcategories

Request

cURL
curl -X POST https://cloutpanel.co.ke/api/v2 \
  -d key=YOUR_API_KEY \
  -d action=categories

Response

JSON
[
  { "category": "Instagram Followers", "platform": "instagram", "services": 12, "from_rate": "194.9300" }
]
POST

Get a price quote

action=quote

Calculates the exact charge for a quantity and whether your balance covers it. Nothing is ordered or charged.

Parameters

keyRequiredYour API key
actionRequiredquote
serviceRequiredService ID
quantityRequiredQuantity you want to order (ignored for packages)

Request

cURL
curl -X POST https://cloutpanel.co.ke/api/v2 \
  -d key=YOUR_API_KEY \
  -d action=quote \
  -d service=1034 \
  -d quantity=1000

Response

JSON
{
  "service": "1034",
  "quantity": "1000",
  "charge": "13.0000",
  "balance": "250.0000",
  "enough_balance": true,
  "currency": "KES"
}

Orders

POST

Add order

action=add

Places an order and charges your balance. The order starts delivering automatically.

Parameters

keyRequiredYour API key
actionRequiredadd
serviceRequiredService ID
linkRequiredProfile or post link (or username for profile services)
quantityRequiredQuantity, within the service's min and max
commentsOptionalCustom comments services only: one comment per line. Quantity is taken from the number of lines

Request

cURL
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=1000

Response

JSON
{ "order": 23501 }
POST

Order status

action=status

Live status of one order, or up to 100 orders at once.

Parameters

keyRequiredYour API key
actionRequiredstatus
orderOptionalOne order ID
ordersOptionalComma-separated order IDs, up to 100. Send order or orders

Request

cURL
curl -X POST https://cloutpanel.co.ke/api/v2 \
  -d key=YOUR_API_KEY \
  -d action=status \
  -d order=23501

Response

JSON
{
  "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" }
}
POST

List orders

action=orders

Your recent orders, newest first, with service name, link and status.

Parameters

keyRequiredYour API key
actionRequiredorders
limitOptionalHow many to return, 1 to 100 (default 20)
offsetOptionalSkip this many for paging (default 0)
statusOptionalFilter: pending, in_progress, completed, partial or canceled

Request

cURL
curl -X POST https://cloutpanel.co.ke/api/v2 \
  -d key=YOUR_API_KEY \
  -d action=orders \
  -d limit=20

Response

JSON
[
  {
    "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"
  }
]
POST

Order details

action=order

One order with its service, link, quantity, refunded amount and status.

Parameters

keyRequiredYour API key
actionRequiredorder
orderRequiredOrder ID

Request

cURL
curl -X POST https://cloutpanel.co.ke/api/v2 \
  -d key=YOUR_API_KEY \
  -d action=order \
  -d order=23501

Response

JSON
{
  "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"
}
POST

Cancel orders

action=cancel

Asks to cancel orders whose service supports it. Refunds go back to your balance once the cancel is confirmed.

Parameters

keyRequiredYour API key
actionRequiredcancel
ordersRequiredComma-separated order IDs, up to 100 (order also works for one)

Request

cURL
curl -X POST https://cloutpanel.co.ke/api/v2 \
  -d key=YOUR_API_KEY \
  -d action=cancel \
  -d orders=23501,23502

Response

JSON
[
  { "order": 9, "cancel": 1 },
  { "order": 10, "cancel": { "error": "This service can't be cancelled" } }
]

Refills

POST

Request refill

action=refill

Requests a free refill on a completed order from a refill service.

Parameters

keyRequiredYour API key
actionRequiredrefill
orderOptionalOne order ID
ordersOptionalComma-separated order IDs, up to 100

Request

cURL
curl -X POST https://cloutpanel.co.ke/api/v2 \
  -d key=YOUR_API_KEY \
  -d action=refill \
  -d order=23501

Response

JSON
{ "refill": "1" }

// With orders=1,2
[
  { "order": 1, "refill": 1 },
  { "order": 2, "refill": { "error": "This service has no refill" } }
]
POST

Refill status

action=refill_status

Status of one refill, or several at once.

Parameters

keyRequiredYour API key
actionRequiredrefill_status
refillOptionalOne refill ID
refillsOptionalComma-separated refill IDs, up to 100

Request

cURL
curl -X POST https://cloutpanel.co.ke/api/v2 \
  -d key=YOUR_API_KEY \
  -d action=refill_status

Response

JSON
{ "status": "Pending" }

// With refills=1,2
[
  { "refill": 1, "status": "Completed" },
  { "refill": 2, "status": { "error": "Incorrect refill ID" } }
]

Account

POST

Balance

action=balance

Your current wallet balance.

Parameters

keyRequiredYour API key
actionRequiredbalance

Request

cURL
curl -X POST https://cloutpanel.co.ke/api/v2 \
  -d key=YOUR_API_KEY \
  -d action=balance

Response

JSON
{ "balance": "100.8400", "currency": "KES" }
POST

Account summary

action=account

Balance, order counts and total spent, handy for a dashboard.

Parameters

keyRequiredYour API key
actionRequiredaccount

Request

cURL
curl -X POST https://cloutpanel.co.ke/api/v2 \
  -d key=YOUR_API_KEY \
  -d action=account

Response

JSON
{
  "balance": "100.8400",
  "currency": "KES",
  "orders": 42,
  "active_orders": 3,
  "total_spent": "1250.5000",
  "member_since": "2026-11-05T10:00:00.000Z"
}
POST

Top-up history

action=payments

Your recent M-Pesa top-ups with the fee and the amount added to your wallet.

Parameters

keyRequiredYour API key
actionRequiredpayments
limitOptionalHow many to return, 1 to 100 (default 20)

Request

cURL
curl -X POST https://cloutpanel.co.ke/api/v2 \
  -d key=YOUR_API_KEY \
  -d action=payments \
  -d limit=20

Response

JSON
[
  {
    "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

PendingReceived, waiting to start
In progressDelivering now
CompletedFully delivered
PartialPart delivered, the rest refunded to your balance
CanceledNot delivered, refunded to your balance

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.