Reseller API
API Documentation
Resell Instanizer services from your own panel or app. Add Instanizer to your own SMM panel through its API connection settings, or call the API directly from scripts.
Get an API key
API keys are created from the API Access page after you sign in. It is free, with no monthly fee: you only pay for orders.
OpenAPI & code samples (GitHub)
The public repository contains the OpenAPI specification and code samples in 11 languages: cURL, Python, Node.js, TypeScript, PHP, Java, C#, Go, Ruby, Rust, and Kotlin.
Overview
The Instanizer API follows the standard SMM panel API v2 format used by panels such as PerfectPanel, so existing reseller scripts and panels can connect right away.
- URL
- https://api.instanizer.com/api/v2
- Method
- POST
- Body format
application/x-www-form-urlencoded(recommended), JSON, or multipart/form-data- Response
- JSON, always HTTP 200
- Currency
- IDR (Rupiah) for prices, charges, and balance
Every request must include the key parameter (your API key) and action. Send the key in the body, not in the URL: query string parameters are ignored so that the key is not recorded in logs.
Keep your API key secret
Service list (action=services)
The curated service catalog, the same as the one shown on Instanizer. rate is the price per 1,000 units in Rupiah, exactly as billed.
| Parameter | Required | Description |
|---|---|---|
| key | Yes | Your API key. |
| action | Yes | services |
[
{
"service": 1,
"name": "Instagram Followers | Real | Refill 30 Hari",
"type": "Default",
"category": "Instagram Followers",
"rate": "12375",
"min": "10",
"max": "100000",
"refill": true,
"cancel": false
}
]serviceis a stable numeric ID; use this ID in the add action.- Services can be added to or removed from the catalog. Fetch this list again periodically (for example once a day).
Create an order (action=add)
Creates a new order. The balance is deducted when the order is created, with the same pricing, min/max limits, and refund rules as ordering through the site.
| Parameter | Required | Description |
|---|---|---|
| key | Yes | Your API key. |
| action | Yes | add |
| service | Yes | The service ID from the services action. |
| link | Usually | The target link (profile, post, video). |
| quantity | Usually | The number of units, between the service min and max. |
| runs | No | Drip-feed: number of runs. Total charge = quantity x runs. |
| interval | No | Drip-feed: interval between runs in minutes. |
| comments | No | Custom Comments / Comment Replies: one comment per line. |
| usernames | No | Mentions Custom List / with Hashtags: one username per line. |
| username | No | Mentions User Followers, Comment Likes, Comment Replies, Subscriptions. |
| hashtag, hashtags | No | Mentions Hashtag / Mentions with Hashtags. |
| keywords | No | SEO: keywords. |
| media | No | Mentions Media Likers: media link. |
| answer_number | No | Poll: answer number. |
| groups | No | Invites from Groups: list of groups. |
| country, device, type_of_traffic, google_keyword | No | Web Traffic. |
| min, max, posts, old_posts, delay, expiry | No | Subscriptions. |
| idempotency_key | No | Optional, 1-64 characters (letters, digits, . _ : -). Repeating a request with the same key does not create a second order and returns the ID of the first order. |
{ "order": 23501 }- Which parameters are required depends on the service
type; for Default, service, link, and quantity are enough. - For list-based types (comments/usernames), the charge is calculated from the number of lines.
- If the connection drops before the response is received, resend with the same idempotency_key so you are not charged twice.
Order status (action=status)
The status of one order (order) or up to 100 orders at once (orders, comma-separated). Only orders that belong to your account.
| Parameter | Required | Description |
|---|---|---|
| key | Yes | Your API key. |
| action | Yes | status |
| order | One of | The order ID. |
| orders | One of | Several IDs separated by commas, maximum 100. |
// order=23501
{
"charge": "12375.00",
"start_count": "3572",
"status": "In progress",
"remains": "157",
"currency": "IDR"
}
// orders=23501,23502,99
{
"23501": { "charge": "12375.00", "start_count": "3572", "status": "Partial", "remains": "157", "currency": "IDR" },
"23502": { "charge": "0.00", "start_count": "0", "status": "Canceled", "remains": "1000", "currency": "IDR" },
"99": { "error": "Incorrect order ID" }
}- Status values: Pending, Processing, In progress, Completed, Partial, Canceled.
chargealready accounts for refunds: Canceled = 0, Partial = the price minus the refund for units not delivered.- Status is updated periodically (about every 10 minutes), so there is no need to check more often.
Refill (action=refill)
Requests a refill for an order that is already Completed on a service that supports refill. An order can be refilled only once per interval (default 24 hours).
| Parameter | Required | Description |
|---|---|---|
| key | Yes | Your API key. |
| action | Yes | refill |
| order | One of | The order ID. |
| orders | One of | Several IDs separated by commas, maximum 100. |
// order=23501
{ "refill": 23501 }
// orders=23501,23502
[
{ "order": 23501, "refill": 23501 },
{ "order": 23502, "refill": { "error": "Layanan ini tidak mendukung refill" } }
]- The refill ID is the same as the order ID. Use this ID in the refill_status action.
Refill status (action=refill_status)
The latest refill status of one order (refill) or several at once (refills).
| Parameter | Required | Description |
|---|---|---|
| key | Yes | Your API key. |
| action | Yes | refill_status |
| refill | One of | The refill ID (= the order ID). |
| refills | One of | Several IDs separated by commas, maximum 100. |
// refill=23501
{ "status": "Completed" }
// refills=23501,99
[
{ "refill": 23501, "status": "Completed" },
{ "refill": 99, "status": { "error": "Incorrect refill ID" } }
]Cancel an order (action=cancel)
Requests a cancellation. If accepted, the balance is refunded in full. Cancellation depends on the order status and can be rejected for orders that are already in progress.
| Parameter | Required | Description |
|---|---|---|
| key | Yes | Your API key. |
| action | Yes | cancel |
| orders | Yes | IDs separated by commas, maximum 100 (or a single ID through order). |
[
{ "order": 23501, "cancel": 1 },
{ "order": 99, "cancel": { "error": "Incorrect order ID" } }
]Balance (action=balance)
Your account balance in Rupiah.
| Parameter | Required | Description |
|---|---|---|
| key | Yes | Your API key. |
| action | Yes | balance |
{ "balance": "250000.00", "currency": "IDR" }Error format
Errors are returned as HTTP 200 with a single error field. Check this field in every response. For requests with many IDs, errors are reported per entry.
{ "error": "Not enough funds on balance" }| Message | Meaning |
|---|---|
| Invalid API key | The key is wrong, has been revoked, or the account is deactivated. |
| Incorrect request | The action parameter is empty or not recognized. |
| Incorrect service ID | The service is not in the catalog. |
| Incorrect order ID | The order was not found or does not belong to you. |
| Incorrect refill ID | The order was not found or has never had a refill requested. |
| Not enough funds on balance | The balance is not enough for this order. |
| Maximum 100 IDs per request | Too many IDs in a single request. |
| Too many requests, please slow down | The request limit was exceeded. Wait and try again. |
Validation or fulfillment rejections (for example a quantity below the minimum) are returned with a message in Indonesian. If an order is rejected after the balance was deducted, the balance is refunded automatically and the message says so.
Request limits
- 300 requests per minute per API key, across all actions.
- 60 new orders (add action) per minute per API key.
- 30 attempts with a wrong key per 15 minutes per IP address; after that the IP is blocked temporarily.
- A maximum of 100 IDs per request for status, refill, refill_status, and cancel.
When the limit is exceeded, the response contains {"error":"Too many requests, please slow down"}. Wait until the next minute and try again. Use multi status (orders) instead of checking orders one by one.
Code samples
# Balance
curl -X POST https://api.instanizer.com/api/v2 \
-d key=YOUR_API_KEY \
-d action=balance
# Create an order
curl -X POST https://api.instanizer.com/api/v2 \
-d key=YOUR_API_KEY \
-d action=add \
-d service=1 \
--data-urlencode link=https://instagram.com/username \
-d quantity=1000 \
-d idempotency_key=order-0001
# Status of several orders
curl -X POST https://api.instanizer.com/api/v2 \
-d key=YOUR_API_KEY \
-d action=status \
-d orders=23501,23502Adding Instanizer to your panel
In a PerfectPanel-based SMM panel or a compatible one:
- Open the settings page where your panel lets you add an external API connection.
- Enter
https://api.instanizer.com/api/v2as the API URL, and the key from the API Access page as the API key. - Save, then import the services. Prices are read in Rupiah per 1,000 units; adjust the currency and markup in your panel.
- Orders and status updates are then passed on automatically by your panel.
Get an API key
API keys are created from the API Access page after you sign in. It is free, with no monthly fee: you only pay for orders.