A complete reference for integrating with Panel.
| HTTP Method | POST |
| API URL | https://your-domain/api/v2 |
| API Key | Get your key from your account |
| Response format | JSON |
Send every request as application/x-www-form-urlencoded.
The key and action parameters are always required.
Example PHP code · Generate API key
| Parameters | Description |
|---|---|
| key | Your API key |
| action | balance |
Example response
{
"balance": "100.84292",
"currency": "USD"
}
| Parameters | Description |
|---|---|
| key | Your API key |
| action | services |
Example response
[
{
"service": "1",
"name": "Followers",
"type": "Default",
"rate": "0.90",
"min": "50",
"max": "10000",
"category": "First Category"
},
{
"service": "2",
"name": "Comments",
"type": "Custom Comments",
"rate": "8",
"min": "10",
"max": "1500",
"category": "Second Category"
}
]
The add action accepts different parameter sets depending on the service type. Inspect type in the service catalog to pick the right payload.
| Parameters | Description |
|---|---|
| key | Your API key |
| action | add |
| service | Service ID |
| link | Link to page |
| quantity | Needed quantity |
| runs optional | Runs to deliver |
| interval optional | Interval in minutes |
Example response
{ "order": 23501 }
| Parameters | Description |
|---|---|
| key | Your API key |
| action | add |
| service | Service ID |
| link | Link to page |
| keywords | Comma-separated keywords list, one keyword per line also works |
| quantity | Needed quantity |
Example response
{ "order": 23502 }
| Parameters | Description |
|---|---|
| key | Your API key |
| action | add |
| service | Service ID |
| link | Link to page |
| comments | One comment per line · quantity is inferred from the number of non-empty lines |
Example response
{ "order": 23503 }
| Parameters | Description |
|---|---|
| key | Your API key |
| action | add |
| service | Service ID |
| username | Target username (e.g. mychannel) |
| min | Minimum comments per post |
| max | Maximum comments per post |
| delay | Delay between posts in minutes |
| posts optional | Total posts to deliver to (defaults to 1) |
| old_posts optional | Amount of already-published posts to also process |
| expiry optional | Expiry date YYYY-MM-DD |
Total quantity is computed server-side as posts × max; charge is billed at the upper bound and the undelivered slice is pro-rata refunded at completion.
Example response
{ "order": 23504 }
| Parameters | Description |
|---|---|
| key | Your API key |
| action | add |
| service | Service ID |
| link | Link to the poll post |
| quantity | Needed quantity |
| answer_number | The answer number to vote for (1, 2, 3 …) |
Example response
{ "order": 23505 }
Subscription orders must be created from the customer site;
API creation is not yet supported. Sending action=add
with a subscription service ID returns HTTP 400 with a clear
error message. Status / cancel / refill on an existing
subscription still work normally through the API.
| Parameters | Description |
|---|---|
| key | Your API key |
| action | add |
| service | Service ID |
| link | Target channel / group |
| groups | Source groups · one username per line |
| quantity | Needed quantity |
Example response
{ "order": 23507 }
| Parameters | Description |
|---|---|
| key | Your API key |
| action | add |
| service | Service ID |
| link | Link to page |
Package services have a fixed delivered quantity defined by the service itself — you only need to send the link.
{ "order": 23508 }
| Parameters | Description |
|---|---|
| key | Your API key |
| action | status |
| order | Order ID |
Example response
{
"charge": "0.27819",
"start_count": "3572",
"status": "Partial",
"remains": "157",
"currency": "USD"
}
Possible status values: Pending In progress Partial Completed Done Canceled Failed
| Parameters | Description |
|---|---|
| key | Your API key |
| action | multiStatus |
| orders | Comma-separated order IDs (up to 100) |
Example response
{
"1": { "charge": "0.27819", "start_count": "3572", "status": "Partial", "remains": "157", "currency": "USD" },
"2": { "error": "Incorrect order ID" },
"3": { "charge": "1.44219", "start_count": "234", "status": "In progress", "remains": "10", "currency": "USD" }
}
| Parameters | Description |
|---|---|
| key | Your API key |
| action | cancel |
| orders | Comma-separated order IDs |
Example response
[
{ "order": 9, "cancel": { "status": "success" } },
{ "order": 2, "error": "Incorrect order ID" }
]
| HTTP | Meaning |
|---|---|
400 | Request shape invalid (missing fields, unsupported action). |
401 | Missing or wrong key. |
402 | Insufficient balance for the order. |
404 | Unknown order / service. |
429 | Rate limit exceeded (1000 req/min per IP). |
502 | Upstream provider returned an error. |
Errors inside a 200 response always use {"error":"…"}.
Optional — configure a webhook URL on your account and we'll POST every order status change:
POST https://your-site.com/webhooks/order-update
Content-Type: application/json
{
"order_id": 1487,
"status": "Completed",
"remains": 0,
"start_count": 8421,
"charge": 4.5
}