Official API documentation and examples for PRM4U.com — Social Media Marketing Panel.
Use this API to automate orders, check balances, manage refills, and build your own SMM panel or application on top of PRM4U.
3 steps to get started:
- Get your API key — Log in to prm4u.com, go to Settings > API Key
- Pick a language — See the
examples/folder for ready-to-use code - Make your first request — Try the "Get Balance" example below
curl -X POST https://prm4u.com/api/v2 \
-d "key=YOUR_API_KEY" \
-d "action=balance"Response:
{
"balance": "100.84",
"currency": "USD"
}That's it! You just made your first API call.
- Base Information
- Authentication
- Error Handling
- Endpoints
- Order Types Explained
- Code Examples
- Rate Limits
- FAQ
- Support
| Property | Value |
|---|---|
| API URL | https://prm4u.com/api/v2 |
| HTTP Method | POST |
| Content-Type | application/x-www-form-urlencoded |
| Response | JSON |
| Encoding | UTF-8 |
Important: All requests must use the
POSTmethod.GETrequests will not work.
Every API request requires your API key. You can find it in your PRM4U dashboard under Settings > API Key.
Your API key is sent as the key parameter in every request:
key=YOUR_API_KEY&action=balance
Keep your API key secret! Anyone with your key can place orders and spend your balance. If you suspect your key is compromised, regenerate it in your dashboard immediately.
When something goes wrong, the API returns a JSON object with an error field:
{
"error": "Incorrect request"
}Common errors:
| Error Message | What It Means | How to Fix |
|---|---|---|
Incorrect request |
Missing or invalid parameters | Double-check all required parameters |
Invalid API key |
Your API key is wrong | Copy the key from your dashboard again |
Not enough funds |
Balance is too low | Top up your balance at prm4u.com |
Incorrect order ID |
Order doesn't exist | Verify the order ID |
Incorrect service ID |
Service doesn't exist | Call services to get valid IDs |
Quantity below minimum |
Order quantity too small | Check min from the service list |
Quantity above maximum |
Order quantity too large | Check max from the service list |
Returns all available services with prices, limits, and features.
This is usually the first endpoint you call — it gives you the service IDs you need for placing orders.
| Parameter | Type | Required | Description |
|---|---|---|---|
key |
string | Yes | Your API key |
action |
string | Yes | services |
Request:
curl -X POST https://prm4u.com/api/v2 \
-d "key=YOUR_API_KEY" \
-d "action=services"Response:
[
{
"service": 1,
"name": "Instagram Followers — Real & Active",
"type": "Default",
"category": "Instagram - Followers",
"rate": "0.90",
"min": "50",
"max": "10000",
"refill": true,
"cancel": true
},
{
"service": 2,
"name": "YouTube Views — High Retention",
"type": "Default",
"category": "YouTube - Views",
"rate": "1.50",
"min": "100",
"max": "100000",
"refill": false,
"cancel": true
}
]Response fields explained:
| Field | Type | Description |
|---|---|---|
service |
integer | Unique service ID — use this when placing orders |
name |
string | Human-readable service name |
type |
string | Service type: Default, Package, Custom Comments, Subscriptions, etc. |
category |
string | Service category (e.g., "Instagram - Followers") |
rate |
string | Price per 1000 units in USD |
min |
string | Minimum order quantity |
max |
string | Maximum order quantity |
refill |
boolean | true if the service supports free refills |
cancel |
boolean | true if you can cancel a pending order |
Tip: Cache this response locally and refresh it once a day. Services don't change frequently.
Place a new order. The parameters you need depend on the service type.
| Parameter | Type | Required | Description |
|---|---|---|---|
key |
string | Yes | Your API key |
action |
string | Yes | add |
service |
integer | Yes | Service ID (from the services list) |
link |
string | Yes | Target URL (e.g., Instagram post link) |
The most common order type. You specify a quantity and optionally set up recurring delivery.
| Parameter | Type | Required | Description |
|---|---|---|---|
quantity |
integer | Yes | How many units to order (between min and max) |
runs |
integer | No | Number of delivery runs (for drip-feed) |
interval |
integer | No | Minutes between each run |
Example — Order 1000 Instagram followers:
curl -X POST https://prm4u.com/api/v2 \
-d "key=YOUR_API_KEY" \
-d "action=add" \
-d "service=1" \
-d "link=https://instagram.com/username" \
-d "quantity=1000"Example — Drip-feed 500 followers over 5 runs, 60 min apart:
curl -X POST https://prm4u.com/api/v2 \
-d "key=YOUR_API_KEY" \
-d "action=add" \
-d "service=1" \
-d "link=https://instagram.com/username" \
-d "quantity=500" \
-d "runs=5" \
-d "interval=60"For SEO services that target specific keywords.
| Parameter | Type | Required | Description |
|---|---|---|---|
quantity |
integer | Yes | Number of units |
keywords |
string | Yes | Keywords, one per line (separated by \n) |
Example:
curl -X POST https://prm4u.com/api/v2 \
-d "key=YOUR_API_KEY" \
-d "action=add" \
-d "service=100" \
-d "link=https://example.com" \
-d "quantity=1000" \
-d "keywords=smm panel
best smm service
buy followers"You provide the exact comments to post.
| Parameter | Type | Required | Description |
|---|---|---|---|
comments |
string | Yes | Comments, one per line (separated by \n) |
Example:
curl -X POST https://prm4u.com/api/v2 \
-d "key=YOUR_API_KEY" \
-d "action=add" \
-d "service=50" \
-d "link=https://instagram.com/p/ABC123" \
-d "comments=Great post!
Love this content!
Amazing work 🔥"Note: The number of comments equals the number of lines you send. Each line = one comment.
Automatically delivers to new posts as they appear.
| Parameter | Type | Required | Description |
|---|---|---|---|
username |
string | Yes | Target username (without @) |
min |
integer | Yes | Minimum quantity per post |
max |
integer | Yes | Maximum quantity per post |
posts |
integer | No | How many future posts to deliver to (0 = unlimited) |
old_posts |
integer | No | Number of existing posts to process |
delay |
integer | Yes | Minutes to wait before delivering. Options: 0, 5, 10, 15, 20, 30, 40, 50, 60, 90, 120, 150, 180, 210, 240, 270, 300, 360, 420, 480, 540, 600 |
expiry |
string | No | Expiration date in d/m/Y format (e.g., 25/12/2026) |
Example — Auto-likes on new posts:
curl -X POST https://prm4u.com/api/v2 \
-d "key=YOUR_API_KEY" \
-d "action=add" \
-d "service=200" \
-d "link=https://instagram.com/username" \
-d "username=username" \
-d "min=100" \
-d "max=200" \
-d "delay=10" \
-d "posts=0" \
-d "expiry=31/12/2026"Targeted website traffic from search engines or referrers.
| Parameter | Type | Required | Description |
|---|---|---|---|
quantity |
integer | Yes | Number of visits |
country |
string | Yes | Country code (US) or full name (United States) |
device |
integer | Yes | 1 Desktop, 2 Android, 3 iOS, 4 Mixed Mobile, 5 Mixed All |
type_of_traffic |
integer | Yes | 1 Google Keyword, 2 Custom Referrer, 3 Blank Referrer |
google_keyword |
string | If type=1 | Search keyword (required when type_of_traffic=1) |
referring_url |
string | If type=2 | Referrer URL (required when type_of_traffic=2) |
runs |
integer | No | Number of delivery runs |
interval |
integer | No | Minutes between runs |
Example — 5000 visits from Google search:
curl -X POST https://prm4u.com/api/v2 \
-d "key=YOUR_API_KEY" \
-d "action=add" \
-d "service=300" \
-d "link=https://example.com" \
-d "quantity=5000" \
-d "country=US" \
-d "device=5" \
-d "type_of_traffic=1" \
-d "google_keyword=best smm panel"| Parameter | Type | Required | Description |
|---|---|---|---|
quantity |
integer | Yes | Number of votes |
answer_number |
integer | Yes | Which poll answer to vote for (starting from 1) |
| Parameter | Type | Required | Description |
|---|---|---|---|
quantity |
integer | Yes | Number of invites |
groups |
string | Yes | Group links, one per line (separated by \n) |
All successful orders return:
{
"order": 23501
}| Field | Type | Description |
|---|---|---|
order |
integer | Your order ID — save this to check status later |
Check the status of a single order.
| Parameter | Type | Required | Description |
|---|---|---|---|
key |
string | Yes | Your API key |
action |
string | Yes | status |
order |
integer | Yes | Order ID |
Request:
curl -X POST https://prm4u.com/api/v2 \
-d "key=YOUR_API_KEY" \
-d "action=status" \
-d "order=23501"Response:
{
"charge": "0.27819",
"start_count": "3572",
"status": "Partial",
"remains": "157",
"currency": "USD"
}Response fields:
| Field | Type | Description |
|---|---|---|
status |
string | Pending, In progress, Processing, Completed, Partial, Canceled, Refunding |
charge |
string | Amount charged for this order (in USD) |
start_count |
string | Counter value when the order started |
remains |
string | How many units are left to deliver |
currency |
string | Currency code |
Order status lifecycle:
Pending → In progress → Processing → Completed
→ Partial (partially delivered)
→ Canceled
Check up to 100 orders in a single request.
| Parameter | Type | Required | Description |
|---|---|---|---|
key |
string | Yes | Your API key |
action |
string | Yes | status |
orders |
string | Yes | Comma-separated order IDs (max 100) |
Request:
curl -X POST https://prm4u.com/api/v2 \
-d "key=YOUR_API_KEY" \
-d "action=status" \
-d "orders=23501,23502,23503"Response:
{
"23501": {
"charge": "0.27819",
"start_count": "3572",
"status": "Completed",
"remains": "0",
"currency": "USD"
},
"23502": {
"charge": "0.50000",
"start_count": "1000",
"status": "In progress",
"remains": "350",
"currency": "USD"
},
"23503": {
"error": "Incorrect order ID"
}
}Tip: Use this instead of checking orders one by one — it's faster and more efficient.
Request a free refill for a completed order (only if the service supports refills).
| Parameter | Type | Required | Description |
|---|---|---|---|
key |
string | Yes | Your API key |
action |
string | Yes | refill |
order |
integer | Yes | Order ID |
Request:
curl -X POST https://prm4u.com/api/v2 \
-d "key=YOUR_API_KEY" \
-d "action=refill" \
-d "order=23501"Response:
{
"refill": "1"
}| Field | Type | Description |
|---|---|---|
refill |
integer | Refill request ID — use this to check refill status |
Request refills for up to 100 orders at once.
| Parameter | Type | Required | Description |
|---|---|---|---|
key |
string | Yes | Your API key |
action |
string | Yes | refill |
orders |
string | Yes | Comma-separated order IDs (max 100) |
Request:
curl -X POST https://prm4u.com/api/v2 \
-d "key=YOUR_API_KEY" \
-d "action=refill" \
-d "orders=23501,23502"Response:
[
{ "order": 23501, "refill": 1 },
{ "order": 23502, "refill": 2 }
]| Parameter | Type | Required | Description |
|---|---|---|---|
key |
string | Yes | Your API key |
action |
string | Yes | refill_status |
refill |
integer | Yes | Refill ID |
Request:
curl -X POST https://prm4u.com/api/v2 \
-d "key=YOUR_API_KEY" \
-d "action=refill_status" \
-d "refill=1"Response:
{
"status": "Completed"
}Refill statuses: Pending, In progress, Completed, Rejected
| Parameter | Type | Required | Description |
|---|---|---|---|
key |
string | Yes | Your API key |
action |
string | Yes | refill_status |
refills |
string | Yes | Comma-separated refill IDs (max 100) |
Request:
curl -X POST https://prm4u.com/api/v2 \
-d "key=YOUR_API_KEY" \
-d "action=refill_status" \
-d "refills=1,2,3"Response:
[
{ "refill": 1, "status": "Completed" },
{ "refill": 2, "status": "Rejected" },
{ "refill": 3, "status": "Pending" }
]Cancel one or more pending orders. Only works for services with cancel: true.
| Parameter | Type | Required | Description |
|---|---|---|---|
key |
string | Yes | Your API key |
action |
string | Yes | cancel |
orders |
string | Yes | Comma-separated order IDs (max 100) |
Request:
curl -X POST https://prm4u.com/api/v2 \
-d "key=YOUR_API_KEY" \
-d "action=cancel" \
-d "orders=23501,23502"Response:
[
{ "order": 23501, "cancel": 1 },
{ "order": 23502, "cancel": { "error": "Incorrect order ID" } }
]Check your current account balance.
| Parameter | Type | Required | Description |
|---|---|---|---|
key |
string | Yes | Your API key |
action |
string | Yes | balance |
Request:
curl -X POST https://prm4u.com/api/v2 \
-d "key=YOUR_API_KEY" \
-d "action=balance"Response:
{
"balance": "100.84292",
"currency": "USD"
}| Type | What It Does | Key Parameters |
|---|---|---|
| Default | Standard delivery (followers, likes, views) | quantity |
| Package | Pre-configured package | quantity |
| SEO | SEO traffic with keywords | quantity, keywords |
| Custom Comments | Post specific comments you write | comments |
| Subscriptions | Auto-delivery to new posts | username, min, max, delay |
| Web Traffic | Website visits from specific sources | quantity, country, device, type_of_traffic |
| Poll Invites | Votes on a poll | quantity, answer_number |
| Groups Invites | Invite members to groups | quantity, groups |
Ready-to-use examples in popular languages:
| Language | File | Description |
|---|---|---|
| Python | examples/python/ | Full client with all methods + async version |
| JavaScript | examples/javascript/ | Node.js client + browser-ready fetch examples |
| PHP | examples/php/ | cURL-based client class |
| Go | examples/go/ | Typed client with error handling |
| Bash | examples/bash/ | Shell scripts using curl |
- There is no strict rate limit, but we recommend max 1 request per second
- Bulk endpoints (
statuswithorders,refillwithorders) accept up to 100 IDs per request — use them instead of individual requests - If you receive HTTP 429, wait 5 seconds before retrying
Q: How do I find the right service ID?
A: Call the services endpoint. Filter by category to find what you need, then use the service field as the ID.
Q: What's the difference between order and orders parameter?
A: Use order (singular) for a single order ID. Use orders (plural, comma-separated) to check/refill/cancel multiple orders at once.
Q: How do I calculate the price of an order?
A: price = (rate / 1000) * quantity. The rate is per 1000 units. So if rate is 0.90 and you order 500, the cost is (0.90 / 1000) * 500 = $0.45.
Q: What does "Partial" status mean? A: The order was only partially completed. For example, you ordered 1000 followers but only 843 were delivered. The remaining amount is refunded to your balance.
Q: Can I resend to a "Partial" order?
A: No. Create a new order for the remaining quantity, or use the refill endpoint if the service supports refills.
Q: How quickly do orders start? A: Most orders start within seconds to minutes. Some services may take up to a few hours depending on demand.
- Website: prm4u.com
- Telegram: @prsupport
- Email: support@prm4u.com
This documentation and examples are provided under the MIT License. Use them freely in your projects.