notpanel
ServicesPricingFAQGiveaway
notpanel

The fastest and most affordable SMM panel. Trusted by 1M+ users worldwide.

Product

  • Services
  • Pricing
  • Why NotPanel
  • About
  • Developers
  • Blog
  • FAQ

Legal

  • Terms of Service
  • Privacy Policy
  • Refund Policy

Connect

  • Contact Us
  • support@notpanel.com

© © 2026 NotPanel. All rights reserved.

API documentation
+
API Documentation

Introduction

  • Overview
  • Getting started
  • Authentication
  • Rate limits
  • Errors

Catalog

  • List services

Orders

  • Place order
  • Order status
  • Refill
  • Cancel

Account

  • Balance

Webhooks

  • Manage webhooks

Reference

  • Changelog
  • SDKs & libraries

Need help?

support@notpanel.com →

Request refill

Creates a refill request against a completed or partial order. Refills are subject to a per-order cap (3 by default) and a single in-flight constraint — only one pending refill per order at a time.

POSThttps://notpanel.com/api/v2action=refill
API key requiredRate limited (per-key + per-tier + per-IP)Body: application/x-www-form-urlencoded

Parameters

NameTypeDescription
keyRequiredstringYour API key.
actionRequiredstringMust be the literal string "refill".
orderstringSingle-order ID. Either order or orders is required, not both.
ordersstring (CSV)Up to 100 comma-separated order IDs for batch refill. Returns an array — each row carries either a refill ID or a per-order error.

Example request

Replace YOUR_API_KEYwith the key generated under your dashboard’s API page.

curl -X POST https://notpanel.com/api/v2 \
  -H "Content-Type: application/x-www-form-urlencoded" \
  -d "key=YOUR_API_KEY&action=refill&order=ord_01HG9X7KJP4N..."
const res = await fetch("https://notpanel.com/api/v2", {
  method: "POST",
  headers: { "Content-Type": "application/x-www-form-urlencoded" },
  body: new URLSearchParams({
    key: "YOUR_API_KEY",
    action: "refill",
    order: "ord_01HG9X7KJP4N...",
  }),
});

const data = await res.json();
console.log(data);
import requests

res = requests.post(
  "https://notpanel.com/api/v2",
  data={
    "key": "YOUR_API_KEY",
    "action": "refill",
    "order": "ord_01HG9X7KJP4N...",
},
)
print(res.json())
<?php
$body = http_build_query([
    'key' => 'YOUR_API_KEY',
    'action' => 'refill',
    'order' => 'ord_01HG9X7KJP4N...',
]);

$response = file_get_contents('https://notpanel.com/api/v2', false, stream_context_create([
    'http' => [
        'method'  => 'POST',
        'header'  => "Content-Type: application/x-www-form-urlencoded\r\n",
        'content' => $body,
        'ignore_errors' => true,
    ],
]));

print_r(json_decode($response, true));

Example response

{
  "refill": "ref_01HG9XAZQM..."
}

Common errors

StatusBodyCause
400{"error":"Order not found"}Order ID doesn't exist or doesn't belong to your account.
400{"error":"Refill only available for completed or partial orders"}The order is still pending, processing, in_progress, cancelled, or refunded.
400{"error":"Service does not support refills"}The underlying service has refill=false. Check the services catalog before submitting refill requests.
400{"error":"A refill request is already pending for this order"}Wait for the previous refill to settle before creating another.
400{"error":"Refill limit reached (3 per order)"}Per-order cap exhausted.

Multi-refill response

When orders is supplied, each item in the response is either {order, refill} on success or {order, error} per individual failure. Per-row failures don't fail the batch.

[
  { "order": "ord_01HG9X7K...", "refill": "ref_01HG9XAZ..." },
  { "order": "ord_01HG9X8M...", "error": "Refill only available for completed or partial orders" }
]

Refill status

Use action=refill_status to poll a refill's lifecycle. Single ID via refill; up to 100 IDs via refills (CSV).

{
  "status": "completed"
}