The standard SMM panel API, v2
Automate everything you can do from the dashboard: pull the service list, place orders, track status, refill and cancel — with your own key.
Quick facts
- Endpoint
- https://pharaohpanel.com/api/v2
- Method
- HTTP POST, form-encoded parameters, JSON response
- Auth
- Your API key, generated and regenerable in the dashboard's API view
- Actions
- balance, services, add (single or mass), status, refill, refill_status, cancel
- Batching
- status, refill_status and cancel accept up to 100 comma-separated IDs; mass add accepts up to 100 [service, link, quantity] rows
- Errors
- Invalid requests return an { "error": "message" } object instead of a result
The API follows the de-facto standard SMM panel format, so existing integrations that speak this format can be pointed at Pharaoh's endpoint without changing their request shape. Your key carries your balance and permissions — keep it secret and regenerate it from the dashboard if it leaks (regenerating invalidates the previous key immediately).
Every action, with examples
The same documentation is available inside the dashboard's API view, next to your key.
User balance
| Parameter | Description |
|---|---|
| key | Your API key |
| action | balance |
Example response
{
"balance": "9.98",
"currency": "USD"
}Example of PHP code
<?php
// One helper for every call: POST the params, get JSON back.
function api(array $post): array {
$ch = curl_init("https://pharaohpanel.com/api/v2");
curl_setopt_array($ch, [
CURLOPT_POST => 1,
CURLOPT_POSTFIELDS => http_build_query($post),
CURLOPT_RETURNTRANSFER => true,
]);
return json_decode(curl_exec($ch), true);
}
// User balance
print_r(api([
"key" => "YOUR_API_KEY",
"action" => "balance",
]));Services list
| Parameter | Description |
|---|---|
| key | Your API key |
| action | services |
Example response
[
{
"service": "PH-D2FB-35FB",
"name": "Instagram Views — 60KD",
"category": "Instagram Views",
"type": "Default",
"rate": 0.0015,
"min": 100,
"max": 217545811,
"refill": false,
"cancel": true
}
…
]Example of PHP code
<?php
// One helper for every call: POST the params, get JSON back.
function api(array $post): array {
$ch = curl_init("https://pharaohpanel.com/api/v2");
curl_setopt_array($ch, [
CURLOPT_POST => 1,
CURLOPT_POSTFIELDS => http_build_query($post),
CURLOPT_RETURNTRANSFER => true,
]);
return json_decode(curl_exec($ch), true);
}
// Services list — IDs are strings (PH-XXXX-XXXX); copy them from
// this list, they are stable across calls.
$services = api([
"key" => "YOUR_API_KEY",
"action" => "services",
]);
print_r($services);Add order
| Parameter | Description |
|---|---|
| key | Your API key |
| action | add |
| service | Service ID from the services list — a string like PH-D2FB-35FB |
| link | Public link to the profile or post |
| quantity | Quantity — must be between the service min and max |
| runs | Optional drip-feed: number of runs |
| interval | Optional drip-feed: minutes between runs |
Example response
{
"order": 3826085201
}Example of PHP code
<?php
// One helper for every call: POST the params, get JSON back.
function api(array $post): array {
$ch = curl_init("https://pharaohpanel.com/api/v2");
curl_setopt_array($ch, [
CURLOPT_POST => 1,
CURLOPT_POSTFIELDS => http_build_query($post),
CURLOPT_RETURNTRANSFER => true,
]);
return json_decode(curl_exec($ch), true);
}
// Add order — total cost = rate × quantity × runs ÷ 1000
$order = api([
"key" => "YOUR_API_KEY",
"action" => "add",
"service" => "PH-D2FB-35FB",
"link" => "https://instagram.com/your.profile",
"quantity" => 1000,
]);
print_r($order);Add mass orders
| Parameter | Description |
|---|---|
| key | Your API key |
| action | add |
| orders | JSON array of [service, link, quantity] rows — up to 100 rows per call; malformed rows are ignored, rejected rows answer with an error entry |
Example response
[
{
"order": 3826085201
},
{
"error": "Quantity must be between 100 and 217545811"
}
]Example of PHP code
<?php
// One helper for every call: POST the params, get JSON back.
function api(array $post): array {
$ch = curl_init("https://pharaohpanel.com/api/v2");
curl_setopt_array($ch, [
CURLOPT_POST => 1,
CURLOPT_POSTFIELDS => http_build_query($post),
CURLOPT_RETURNTRANSFER => true,
]);
return json_decode(curl_exec($ch), true);
}
// Mass orders — one call, up to 100 rows
$orders = api([
"key" => "YOUR_API_KEY",
"action" => "add",
"orders" => json_encode([
["PH-D2FB-35FB", "https://instagram.com/your.profile", 1000],
["PH-2553-347F", "https://your-site.com", 500],
]),
]);
print_r($orders);Order status
| Parameter | Description |
|---|---|
| key | Your API key |
| action | status |
| order | Order ID — or orders: comma-separated IDs, up to 100, for a batched status |
Example response
{
"charge": "0.02",
"currency": "USD",
"status": "In progress",
"start_count": "1050",
"remains": "950"
}Example of PHP code
<?php
// One helper for every call: POST the params, get JSON back.
function api(array $post): array {
$ch = curl_init("https://pharaohpanel.com/api/v2");
curl_setopt_array($ch, [
CURLOPT_POST => 1,
CURLOPT_POSTFIELDS => http_build_query($post),
CURLOPT_RETURNTRANSFER => true,
]);
return json_decode(curl_exec($ch), true);
}
// Order status — status is one of Pending, In progress,
// Completed, Partial, Canceled
print_r(api([
"key" => "YOUR_API_KEY",
"action" => "status",
"order" => 3826085201,
]));Refill
| Parameter | Description |
|---|---|
| key | Your API key |
| action | refill |
| order | Order ID — services flagged refill=true only |
Example response
{
"refill": "1"
}Example of PHP code
<?php
// One helper for every call: POST the params, get JSON back.
function api(array $post): array {
$ch = curl_init("https://pharaohpanel.com/api/v2");
curl_setopt_array($ch, [
CURLOPT_POST => 1,
CURLOPT_POSTFIELDS => http_build_query($post),
CURLOPT_RETURNTRANSFER => true,
]);
return json_decode(curl_exec($ch), true);
}
// Refill
print_r(api([
"key" => "YOUR_API_KEY",
"action" => "refill",
"order" => 3826085201,
]));Refill status
| Parameter | Description |
|---|---|
| key | Your API key |
| action | refill_status |
| refill | Refill ID — or refills: comma-separated, up to 100 |
Example response
{
"status": "Completed"
}Example of PHP code
<?php
// One helper for every call: POST the params, get JSON back.
function api(array $post): array {
$ch = curl_init("https://pharaohpanel.com/api/v2");
curl_setopt_array($ch, [
CURLOPT_POST => 1,
CURLOPT_POSTFIELDS => http_build_query($post),
CURLOPT_RETURNTRANSFER => true,
]);
return json_decode(curl_exec($ch), true);
}
// Refill status
print_r(api([
"key" => "YOUR_API_KEY",
"action" => "refill_status",
"refill" => 3826085201,
]));Cancel
| Parameter | Description |
|---|---|
| key | Your API key |
| action | cancel |
| orders | Comma-separated order IDs, up to 100 |
Example response
[
{
"order": 3826085201,
"cancel": 1
}
]Example of PHP code
<?php
// One helper for every call: POST the params, get JSON back.
function api(array $post): array {
$ch = curl_init("https://pharaohpanel.com/api/v2");
curl_setopt_array($ch, [
CURLOPT_POST => 1,
CURLOPT_POSTFIELDS => http_build_query($post),
CURLOPT_RETURNTRANSFER => true,
]);
return json_decode(curl_exec($ch), true);
}
// Cancel
print_r(api([
"key" => "YOUR_API_KEY",
"action" => "cancel",
"orders" => "3826085201,3826085202",
]));Drip-feed and good practice
Drip-feed. Add runs (2–1,000) and interval (5–43,200 minutes) to the add action to spread delivery over time. The total cost is rate × quantity × runs ÷ 1,000.
Poll sanely. The status action accepts up to 100 order IDs per call — batch them instead of polling one by one.
Check the flags. The services response tells you per service whether refill and cancel are supported before you promise them downstream.
Respect the link rules. Orders expect a public profile or post link; private pages cannot be fulfilled.
Generate your key and test the first call
The API view in the dashboard also offers a one-click PHP snippet for each action.
