Catálogo avançado de serviços
Devolve um instantâneo paginado dos serviços ativos com tarifas da conta e metadados estruturados de descoberta. Use a ação services legada quando um SDK de revenda exigir o formato de array original em cache.
https://notpanel.com/api/v3action=catalogapplication/x-www-form-urlencodedaction=catalog é um instantâneo de descoberta. catalog_updated_at indica a atualização de metadados mais recente no resultado filtrado, não um timestamp de preço garantido nem uma cotação. O valor devolvido pela resposta confirmada de action=add é autoritativo.Parâmetros
| Nome | Tipo | Descrição |
|---|---|---|
| keyObrigatório | string | Sua chave de API. |
| actionObrigatório | string | Deve ser a string literal "catalog". |
| page | integer | Número da página de 1 a 100000. O padrão é 1. |
| limit | integer | Linhas por página de 1 a 200. O padrão é 100. |
| language | language code | Idioma opcional do nome: en, es, pt, ru, tr, ar, hi, id, fr ou zh. pt é português do Brasil e zh é chinês simplificado. Omita para manter o formato legado em inglês. Os administradores podem revisar ou ajustar cada nome. |
| search | string | Pesquisa sem distinção de maiúsculas no nome do serviço, ou ID numérico exato. Máximo de 100 caracteres. |
| platform | integer | slug | ID numérico ou slug da plataforma. |
| category | integer | slug | ID numérico ou slug da categoria. Um slug exige platform; um ID numérico pode ser usado sem platform. |
| type | string | Tipo de serviço suportado exato, como default, custom_comments, package ou web_traffic. |
| sort | string | Um de popular, price_asc, price_desc, time_asc, time_desc, name_asc ou newest. O padrão é popular. |
| refill | boolean | Filtra pela capacidade de refill. Aceita 1, 0, true ou false. |
| dripfeed | boolean | Filtra pela capacidade de drip-feed. Aceita 1, 0, true ou false. |
| available | boolean | Filtra pela disponibilidade atual para pedidos. Aceita 1, 0, true ou false; action=add volta a verificar a disponibilidade ao confirmar o pedido. |
| min_rate | USD decimal | Tarifa mínima não negativa da conta em USD por 1.000 unidades. Use um decimal canónico de 0 a 999999999999.99999999, com no máximo 12 dígitos inteiros e 8 decimais; sinais e expoentes são rejeitados. |
| max_rate | USD decimal | Tarifa máxima não negativa da conta em USD por 1.000 unidades. Não pode ser menor que min_rate. Use um decimal canónico de 0 a 999999999999.99999999, com no máximo 12 dígitos inteiros e 8 decimais; sinais e expoentes são rejeitados. |
Exemplo de requisição
Substitua YOUR_API_KEY pela chave gerada na página de API do seu painel.
curl -X POST https://notpanel.com/api/v3 \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "key=YOUR_API_KEY&action=catalog&platform=instagram&available=true&sort=price_asc&limit=2&language=hi"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: "catalog",
platform: "instagram",
available: "true",
sort: "price_asc",
limit: "2",
language: "hi",
}),
});
const data = await res.json();
console.log(data);import requests
res = requests.post(
"https://notpanel.com/api/v3",
data={
"key": "YOUR_API_KEY",
"action": "catalog",
"platform": "instagram",
"available": "true",
"sort": "price_asc",
"limit": "2",
"language": "hi",
},
)
print(res.json())<?php
$body = http_build_query([
'key' => 'YOUR_API_KEY',
'action' => 'catalog',
'platform' => 'instagram',
'available' => 'true',
'sort' => 'price_asc',
'limit' => '2',
'language' => 'hi',
]);
$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));
Exemplo de resposta
{
"as_of": "2026-08-25T10:30:00.000Z",
"requested_language": "hi",
"catalog_updated_at": "2026-08-25T09:45:12.000Z",
"total": 1,
"page": 1,
"per_page": 2,
"total_pages": 1,
"lowest_rate_per_1000": "0.50",
"currency": "USD",
"items": [
{
"service": "42547",
"name": "Instagram कस्टम कमेंट्स",
"canonical_name": "Instagram Custom Comments",
"name_language": "hi",
"description": "Custom comments for a public post",
"type": "custom_comments",
"rate": "0.50",
"min": "10",
"max": "5000",
"platform": {
"id": 1,
"slug": "instagram",
"name": "Instagram"
},
"category": {
"id": 12,
"slug": "comments",
"name": "Comments"
},
"refill": true,
"dripfeed": false,
"available": true,
"cancel": true,
"cancel_mode": "grace_window",
"cancel_window_seconds": 15,
"average_time": "0-30 minutes",
"average_time_minutes": 18,
"average_time_sample_size": 24,
"average_time_basis": "measured",
"input_fields": [
{
"key": "comments",
"label": "Comments",
"type": "textarea",
"required": true,
"placeholder": "One comment per line. Each line is a separate comment."
}
],
"updated_at": "2026-08-25T09:45:12.000Z"
}
]
}Erros comuns
| Status | Corpo | Causa |
|---|---|---|
| 400 | {"error":"A platform is required when category is a slug"} | Um slug de categoria é ambíguo sem slug ou ID de plataforma. Envie platform ou use o ID numérico da categoria. |
| 400 | {"error":"Invalid catalog sort"} | O valor de sort não é um dos modos de ordenação documentados. |
| 400 | {"error":"language must be one of en, es, pt, ru, tr, ar, hi, id, fr, zh","error_code":"INVALID_LANGUAGE"} | O valor de idioma não é compatível. Use um dos dez códigos de idioma documentados para nomes de serviços. |