Skip to main content
Instanizer

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.

openapi.yaml specificationGitHub repository

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

An API key gives full access to order with your balance. Do not put it in frontend code or a public repository. If it leaks, create a new key: the old key stops working immediately.

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.

ParameterRequiredDescription
keyYesYour API key.
actionYesservices
Example response
[
  {
    "service": 1,
    "name": "Instagram Followers | Real | Refill 30 Hari",
    "type": "Default",
    "category": "Instagram Followers",
    "rate": "12375",
    "min": "10",
    "max": "100000",
    "refill": true,
    "cancel": false
  }
]
  • service is 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.

ParameterRequiredDescription
keyYesYour API key.
actionYesadd
serviceYesThe service ID from the services action.
linkUsuallyThe target link (profile, post, video).
quantityUsuallyThe number of units, between the service min and max.
runsNoDrip-feed: number of runs. Total charge = quantity x runs.
intervalNoDrip-feed: interval between runs in minutes.
commentsNoCustom Comments / Comment Replies: one comment per line.
usernamesNoMentions Custom List / with Hashtags: one username per line.
usernameNoMentions User Followers, Comment Likes, Comment Replies, Subscriptions.
hashtag, hashtagsNoMentions Hashtag / Mentions with Hashtags.
keywordsNoSEO: keywords.
mediaNoMentions Media Likers: media link.
answer_numberNoPoll: answer number.
groupsNoInvites from Groups: list of groups.
country, device, type_of_traffic, google_keywordNoWeb Traffic.
min, max, posts, old_posts, delay, expiryNoSubscriptions.
idempotency_keyNoOptional, 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.
Example response
{ "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.

ParameterRequiredDescription
keyYesYour API key.
actionYesstatus
orderOne ofThe order ID.
ordersOne ofSeveral IDs separated by commas, maximum 100.
Example response
// 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.
  • charge already 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).

ParameterRequiredDescription
keyYesYour API key.
actionYesrefill
orderOne ofThe order ID.
ordersOne ofSeveral IDs separated by commas, maximum 100.
Example response
// 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).

ParameterRequiredDescription
keyYesYour API key.
actionYesrefill_status
refillOne ofThe refill ID (= the order ID).
refillsOne ofSeveral IDs separated by commas, maximum 100.
Example response
// 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.

ParameterRequiredDescription
keyYesYour API key.
actionYescancel
ordersYesIDs separated by commas, maximum 100 (or a single ID through order).
Example response
[
  { "order": 23501, "cancel": 1 },
  { "order": 99, "cancel": { "error": "Incorrect order ID" } }
]

Balance (action=balance)

Your account balance in Rupiah.

ParameterRequiredDescription
keyYesYour API key.
actionYesbalance
Example response
{ "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.

Example error
{ "error": "Not enough funds on balance" }
MessageMeaning
Invalid API keyThe key is wrong, has been revoked, or the account is deactivated.
Incorrect requestThe action parameter is empty or not recognized.
Incorrect service IDThe service is not in the catalog.
Incorrect order IDThe order was not found or does not belong to you.
Incorrect refill IDThe order was not found or has never had a refill requested.
Not enough funds on balanceThe balance is not enough for this order.
Maximum 100 IDs per requestToo many IDs in a single request.
Too many requests, please slow downThe 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

cURL
# 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,23502

Adding Instanizer to your panel

In a PerfectPanel-based SMM panel or a compatible one:

  1. Open the settings page where your panel lets you add an external API connection.
  2. Enter https://api.instanizer.com/api/v2 as the API URL, and the key from the API Access page as the API key.
  3. Save, then import the services. Prices are read in Rupiah per 1,000 units; adjust the currency and markup in your panel.
  4. 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.

Reseller API Documentation - Instanizer