Partner API v2
PR.SOCIAL works as a provider for SMM panels. The API follows the standard panel provider protocol (key + action). If your panel supports standard v2 providers, enter the endpoint URL and API key in the provider settings. No custom code is needed.
All methods use this single endpoint. Parameters are accepted as application/x-www-form-urlencoded or application/json. All responses are JSON. Currency is USD.
Authentication
Every request must include the key parameter with your API key.
Keep the key secret and use it server-side only. Anyone who has the key can spend your balance. If a key leaks, contact support for immediate rotation.
Rate limits
| Limit | Value | On exceed |
|---|---|---|
| Requests per key, sustained | 600 per minute | HTTP 429, Retry-After header |
| Burst allowance | 500 requests instantly | Same, refills at 10 per second |
| Orders per bulk status request | 100 | Error Too many orders requested |
Every response includes X-RateLimit-Remaining and X-RateLimit-Reset headers.
Service list
Returns all services available for your key, with your prices. service is the ID you pass to Add order. rate is the price per 1000 in USD.
Body parameters
| Parameter | Type | Description | |
|---|---|---|---|
| key | string | required | Your API key |
| action | string | required | services |
Add order
Creates an order. The balance is charged immediately: charge = rate × quantity / 1000. If any parameter is invalid, no order is created and nothing is charged.
Body parameters
| Parameter | Type | Description | |
|---|---|---|---|
| key | string | required | Your API key |
| action | string | required | add |
| service | int | required | Service ID from Service list |
| link | string | required | Target link. Profile or post URL, format depends on the service |
| quantity | int | required | Amount, within the service min and max |
| comments | string | optional | Comment services only. Your comment texts, one per line. The number of lines defines the order quantity, quantity may be omitted |
Store the returned order ID. It is used for all status queries.
Order status
Body parameters
| Parameter | Type | Description | |
|---|---|---|---|
| key | string | required | Your API key |
| action | string | required | status |
| order | int | required | Order ID |
Response fields
| Field | Description |
|---|---|
| charge | Final amount kept for this order. Running or completed orders show the full order cost. After a refund the value is updated: Partial shows the delivered part only, Canceled with full refund shows 0.0000. Panel spend reports stay accurate |
| start_count | Counter value on the target at the moment the order started |
| status | One of the values listed in Order statuses |
| remains | Amount left to deliver |
| currency | Always USD |
| fail_reason | Present for Canceled, Partial, Fail and Error orders. Short English text explaining what happened and whether money was refunded. Full list in Errors |
Multiple status
Checks up to 100 orders in one request. Invalid IDs return a per-order error object, the rest of the batch is processed normally.
Body parameters
| Parameter | Type | Description | |
|---|---|---|---|
| key | string | required | Your API key |
| action | string | required | status |
| orders | string | required | Comma-separated order IDs, max 100 |
Cancel orders
Cancels any order that is not finished. Up to 100 IDs per request. You pay only for the actions delivered; the rest of the charge comes back to your balance.
Cancellation rules
| Rule | Detail |
|---|---|
| Not started | An order in Pending ends as Canceled at once, the full charge returns to the balance |
| In progress | The order stops at once. Actions already under review are accepted. Actions already taken by users may still be completed within their time, up to 30 minutes. Then the order ends as Partial and the undelivered part returns to the balance, or as Canceled with the full charge back if nothing was delivered. Until then its status is Processing |
| 5 minute hold | Cancellation becomes available 5 minutes after the order was created |
Body parameters
| Parameter | Type | Description | |
|---|---|---|---|
| key | string | required | Your API key |
| action | string | required | cancel |
| orders | string | required | Comma-separated order IDs, max 100 |
Per-order result: "cancel": 1 means the cancellation is accepted, an error object explains why a specific order could not be canceled. The rest of the batch is processed normally.
Balance
Body parameters
| Parameter | Type | Description | |
|---|---|---|---|
| key | string | required | Your API key |
| action | string | required | balance |
The balance is topped up in the partner cabinet: crypto, or a transfer from a PRM4U balance.
Order statuses
The status field takes one of the eight values below. The first six match the standard panel provider set. Fail and Error add precise diagnostics: if your panel only supports the basic set, map both to Canceled, refunds work the same way.
| Status | Meaning | Final |
|---|---|---|
| Pending | Order accepted and queued: link validation and start count capture. During traffic spikes orders wait here and start automatically | No |
| In progress | Delivery is running, remains decreases over time | No |
| Processing | Temporary system state. Delivery continues, no action needed | No |
| Completed | Fully delivered, remains is 0 | Yes |
| Partial | Partially delivered. The undelivered remainder is refunded to your balance automatically. See fail_reason for the cause | Yes |
| Canceled | Order was canceled before completion. The unused charge is refunded | Yes |
| Fail | The order could not start: the link is dead or the start count could not be captured. The charge is fully refunded. See fail_reason | Yes |
| Error | A problem occurred while the order was running. The undelivered amount is refunded, our team is alerted automatically. See fail_reason | Yes |
Errors
Errors are returned as {"error": "message"}. The table lists every error the API produces.
| Error | HTTP | When / what to do |
|---|---|---|
| Invalid API key | 401 | Key missing, unknown or disabled. Check the key parameter. Contact support if the key worked before |
| Incorrect request | 400 | Missing or unknown action. Use: services, add, status, cancel, balance |
| Incorrect service ID | 400 | Service does not exist or is not available for your key. Refresh the service list |
| Link is not valid | 400 | The link is empty or does not match the expected format for this service. No charge made |
| Quantity is less than minimal <N> | 400 | Raise quantity to at least the service minimum |
| Quantity is more than maximum <N> | 400 | Lower quantity to the service maximum or split into several orders |
| Not enough funds | 400 | Balance is below the order charge. No order created. Top up in the partner cabinet |
| Incorrect order ID | 400 | Order does not exist or belongs to another key |
| Order cannot be canceled | 400 | The order is finished, or was created less than 5 minutes ago. Check the order status |
| Too many orders requested | 400 | Bulk status accepts max 100 IDs, split the batch |
| Rate limit exceeded | 429 | Request rate exceeded. Retry after the number of seconds in the Retry-After header. The order was not created and nothing was charged, a retry is always safe |
| Server error, try again later | 500 | Transient error on our side. Safe to retry in 30-60 seconds. If persistent, contact support |
| Service temporarily unavailable | 503 | Short maintenance window. Retry with backoff. Accepted orders are not affected |
fail_reason values
Orders that end as Canceled, Partial, Fail or Error carry a fail_reason in the status response:
| fail_reason | When |
|---|---|
| Link is dead or does not exist, full charge refunded | Order ends Fail. Pre-start link check found the target deleted or private |
| Start count could not be captured, full charge refunded | Order ends Fail. The target counter could not be read after several attempts |
| Delivery stalled, undelivered amount refunded | Order ends Partial or Error. Delivery stopped before completion |
| Internal error, undelivered amount refunded | Order ends Error. Unexpected problem on our side while the order was running |
Client examples
A minimal client in each language: fetch services, place an order, check its status.
Refill and drip-feed are planned. The refill and dripfeed flags in the service list already report per-service support, so integrations are forward-compatible.
Need a key? Sign in on PR.SOCIAL and open the Partner area: the key is on its API page. Questions: Support · API home