订单
下单
一步完成下单并扣款。响应立即返回:订单处于待处理状态,在最初 15 秒内可免费取消。发送你自己的 request_id,这样重试永远不会产生第二个订单。
https://notpanel.com/api/v3action=add- 需要 API key
- 请求过于频繁
- 请求体:
application/x-www-form-urlencoded
参数
始终发送
keystring必需- 你的 API key。
actionstring必需add必须是字面字符串 “add”。
订单
serviceinteger必需- 服务列表中的服务 ID。
linkstring必需- 交付目标链接。何种链接有效取决于服务。
quantityinteger取决于服务类型- 总数量。配合
runs和interval时,它是每次运行的数量。列表和精确反应自行计算数量,套餐则有固定数量。
重试
request_idstring可选- 你为此订单设置的自有 ID,最多 128 个字符。用相同参数重复发送会返回原订单;与不同参数一起使用则返回
REQUEST_ID_CONFLICT。 idempotency_keystring可选request_id的别名。两者都发送时,以request_id为准。
细水长流
runsinteger可选- 经典细水长流:运行次数,范围为 2 到 100。
runs=1是普通订单。 intervalinteger可选- 经典细水长流:每次运行之间的分钟数,范围为 1 到 1440。
drip_feed_total_minutesinteger可选- 简单细水长流:在这么多分钟内完成全部
quantity,范围为 1 到 2880。不要与runs和interval同时使用。
来自服务的字段
reactionsstring可选- Telegram 反应,例如
👍,❤️,🔥或👍:60,❤️:40。 comments, usernames, answer_number, …取决于服务类型- 其他额外字段,使用其字段名,例如
comments、usernames或answer_number。服务的fields列表会说明它接受哪些。
curl -X POST https://notpanel.com/api/v3 \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "key=YOUR_API_KEY&action=add&service=7&link=https://instagram.com/example&quantity=1000&request_id=550e8400-e29b-41d4-a716-446655440000"const res = await fetch("https://notpanel.com/api/v3", {
method: "POST",
headers: { "Content-Type": "application/x-www-form-urlencoded" },
body: new URLSearchParams({
key: "YOUR_API_KEY",
action: "add",
service: "7",
link: "https://instagram.com/example",
quantity: "1000",
request_id: "550e8400-e29b-41d4-a716-446655440000",
}),
});
const data = await res.json();
console.log(data);import requests
res = requests.post(
"https://notpanel.com/api/v3",
data={
"key": "YOUR_API_KEY",
"action": "add",
"service": "7",
"link": "https://instagram.com/example",
"quantity": "1000",
"request_id": "550e8400-e29b-41d4-a716-446655440000",
},
)
print(res.json())<?php
$body = http_build_query([
'key' => 'YOUR_API_KEY',
'action' => 'add',
'service' => '7',
'link' => 'https://instagram.com/example',
'quantity' => '1000',
'request_id' => '550e8400-e29b-41d4-a716-446655440000',
]);
$response = file_get_contents('https://notpanel.com/api/v3', 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));
将 YOUR_API_KEY 替换为 API 页面中的密钥。
{
"order": 1234567,
"status": "Pending",
"status_key": "pending",
"charge": "1.20",
"currency": "USD",
"instant_cancel_until": "2026-10-03T10:00:15Z",
"cancel_available": true,
"cancel_window_seconds": 15,
"cancel_before": "2026-10-03T10:00:15Z"
}错误
- 400
{"error":"Minimum quantity is 100","error_code":"MINIMUM_QUANTITY","retryable":false,"details":{"n":100}}数量低于服务的最小值。最大值、步长和其他检查采用相同的结构。
- 402
{"error":"Insufficient balance","error_code":"INSUFFICIENT_BALANCE","retryable":false}钱包余额不足以支付费用。未扣款,也没有订单。请在
/dashboard/wallet充值。 - 409
{"error":"request_id was already used with different parameters","error_code":"REQUEST_ID_CONFLICT","retryable":false}该
request_id已经用不同的参数下过单。其他订单请使用新的request_id。
响应
每次成功的 add 都会立即返回新订单。不会出现交付的内部细节;之后的变化会体现在 status 和 webhook 中。
响应字段
orderinteger- 订单编号。在控制面板、客服和其他所有操作中都是同一个编号。
statusstring- 新订单为
Pending。重复的request_id会返回订单的当前状态。 status_keystring- 新订单为
pending,否则为当前状态的键。 chargestring- 向你收取的金额,以美元计,字符串形式。
currencystring- 始终为
USD。 instant_cancel_untilstring (UTC time)- 免费取消窗口的结束时间:下单后 15 秒。
cancel_availableboolean- 订单仍可全额退款取消时为
true。为兼容旧脚本而保留。 cancel_window_secondsinteger- 免费取消窗口的秒数:15。为兼容旧脚本而保留。
cancel_beforestring (UTC time)- 与
instant_cancel_until相同的时间。为兼容旧脚本而保留。 replayedboolean- 仅当这是重复
request_id的原订单时才会出现,且为 true。
重试与 request_id
系统首先查找 request_id(或其别名 idempotency_key,最多 128 个字符)。相同的请求返回原订单,且不会重复扣款。使用相同 ID 的不同请求返回 REQUEST_ID_CONFLICT。如果两份副本同时到达,其中一份生效,另一份得到同一个订单。
key=YOUR_API_KEY&action=add&service=7&link=https://instagram.com/example&quantity=1000&request_id=550e8400-e29b-41d4-a716-446655440000{
"order": 1234567,
"status": "In progress",
"status_key": "in_progress",
"charge": "1.20",
"currency": "USD",
"instant_cancel_until": "2026-10-03T10:00:15Z",
"cancel_available": false,
"cancel_window_seconds": 15,
"cancel_before": "2026-10-03T10:00:15Z",
"replayed": true
}key=YOUR_API_KEY&action=add&service=7&link=https://instagram.com/example&quantity=2000&request_id=550e8400-e29b-41d4-a716-446655440000{
"error": "request_id was already used with different parameters",
"error_code": "REQUEST_ID_CONFLICT",
"retryable": false
}下单之后
按顺序检查的内容
返回发现的第一个问题,且不会扣款。
- 服务存在并且可以接受订单:
SERVICE_NOT_FOUND、SERVICE_DISCONTINUED、SERVICE_PAUSED。 - 数量在最小值和最大值之间:
MINIMUM_QUANTITY、MAXIMUM_QUANTITY。 - 数量符合步长:
QUANTITY_STEP。 - 列表和精确反应:数量与项目数一致,
QUANTITY_MISMATCH。 - 额外字段已提供且有效:
OPTION_NOT_SUPPORTED、MISSING_PARAMETER、INVALID_OPTION。 - 细水长流的值合适:
DRIP_FEED_NOT_AVAILABLE、DRIP_FEED_CONFLICT、DRIP_FEED_INVALID。 - 链接适用于该服务:
INVALID_LINK、LINK_BLOCKED。 - 服务有此规则时,每个链接只能有一个进行中的订单:
LINK_BUSY。 - 余额足以支付费用:
INSUFFICIENT_BALANCE。
add 的错误
它们都使用通用的错误结构。请根据 error_code 分支处理;消息文本是给人看的。
- 400
MISSING_PARAMETER
Missing required parameter: {param}缺少必填参数。details.param 指明了它。 请先修正请求。
- 400
INVALID_PARAMETER
Invalid {param}: {rule}某个参数的值无效。details.param 和 details.rule 说明是哪个以及原因。 请先修正请求。
- 404
SERVICE_NOT_FOUND
Service not found没有此 ID 的服务,或该服务对你不可用。 请先修正请求。
- 410
SERVICE_DISCONTINUED
Service has been discontinued该服务已停用。 请先修正请求。
- 409
SERVICE_PAUSED
Service is temporarily unavailable该服务暂时暂停。请稍后重试。 重试可能有帮助。
- 503
ORDER_PLACEMENT_PAUSED
Ordering is temporarily paused下单功能对所有人暂时暂停。Retry-After 会说明何时重试。 重试可能有帮助。
- 400
MINIMUM_QUANTITY
Minimum quantity is {n}数量低于服务的最小值。 请先修正请求。
- 400
MAXIMUM_QUANTITY
Maximum quantity is {n}数量高于服务的最大值。 请先修正请求。
- 400
QUANTITY_STEP
Quantity must be a multiple of {step}数量不是服务步长的倍数。 请先修正请求。
- 400
QUANTITY_MISMATCH
quantity must equal the number of items in {param} ({count})数量与列表或反应字段中的项目数不一致。 请先修正请求。
- 400
MINIMUM_ORDER_AMOUNT
Minimum order amount is ${amount}订单金额低于最低订单金额。 请先修正请求。
- 400
OPTION_NOT_SUPPORTED
This service does not accept {param}该服务不接受你发送的某个字段。 请先修正请求。
- 400
INVALID_OPTION
Invalid {param}: {rule}某个额外字段的值无效。details.param 和 details.rule 说明是哪个以及原因。 请先修正请求。
- 400
DRIP_FEED_NOT_AVAILABLE
Drip-feed is not available for this service该服务没有细水长流,或不支持此数量。 请先修正请求。
- 400
DRIP_FEED_CONFLICT
Send runs and interval, or drip_feed_total_minutes, not both同一请求中发送了两种细水长流形式。 请先修正请求。
- 400
DRIP_FEED_INVALID
{rule}细水长流的值不符合限制。消息会说明是哪项限制。 请先修正请求。
- 400
INVALID_LINK
Link is invalid for this service该链接不适用于此服务。 请先修正请求。
- 400
LINK_BLOCKED
This link is blocked. Contact support if this is a mistake.该链接已被封锁。如果你认为这是误判,请联系客服。 请先修正请求。
- 409
LINK_BUSY
An order for this link is still running. Wait until it finishes.此链接之前的订单仍在进行中。请等待其完成。 重试可能有帮助。
- 402
INSUFFICIENT_BALANCE
Insufficient balance钱包余额低于应扣费用。 请先修正请求。
- 429
ORDER_LIMIT_REACHED
Too many orders. Try again later.同时下单或处于开启状态的订单过多。请稍后重试。 重试可能有帮助。
- 409
SERVICE_CHANGED
Service settings changed while placing the order. Retry.下单期间服务设置发生了变化。请重新发送请求。 重试可能有帮助。
- 409
REQUEST_ID_CONFLICT
request_id was already used with different parameters该 request_id 已经用不同的参数下过单。 请先修正请求。
- 500
INTERNAL_ERROR
Internal server error我们这边出了问题。用相同的 request_id 重复 add 是安全的。 重试可能有帮助。