Catalogue avancé des services
Renvoie un instantané paginé des services actifs avec les tarifs du compte et des métadonnées de découverte structurées. Utilisez l’action services historique lorsqu’un SDK revendeur exige le tableau en cache d’origine.
https://notpanel.com/api/v3action=catalogapplication/x-www-form-urlencodedaction=catalog est un instantané de découverte. catalog_updated_at indique la mise à jour de métadonnées la plus récente du résultat filtré, pas un horodatage de prix garanti ni un devis. Le montant renvoyé par la réponse validée de action=add fait foi.Paramètres
| Nom | Type | Description |
|---|---|---|
| keyRequis | string | Votre clé API. |
| actionRequis | string | Doit être la chaîne littérale "catalog". |
| page | integer | Numéro de page de 1 à 100000. Valeur par défaut : 1. |
| limit | integer | Lignes par page de 1 à 200. Valeur par défaut : 100. |
| language | language code | Langue facultative du nom : en, es, pt, ru, tr, ar, hi, id, fr ou zh. pt désigne le portugais brésilien et zh le chinois simplifié. Omettez-la pour garder la structure historique en anglais. Les administrateurs peuvent vérifier ou affiner chaque nom. |
| search | string | Recherche sans distinction de casse dans le nom du service, ou ID numérique exact. Maximum 100 caractères. |
| platform | integer | slug | ID numérique ou slug de plateforme. |
| category | integer | slug | ID numérique ou slug de catégorie. Un slug exige platform ; un ID numérique peut être utilisé sans platform. |
| type | string | Type de service pris en charge exact, tel que default, custom_comments, package ou web_traffic. |
| sort | string | popular, price_asc, price_desc, time_asc, time_desc, name_asc ou newest. Valeur par défaut : popular. |
| refill | boolean | Filtre selon la capacité de refill. Accepte 1, 0, true ou false. |
| dripfeed | boolean | Filtre selon la capacité drip-feed. Accepte 1, 0, true ou false. |
| available | boolean | Filtre selon la disponibilité actuelle. Accepte 1, 0, true ou false ; action=add revérifie la disponibilité lors de la validation. |
| min_rate | USD decimal | Tarif USD minimum non négatif du compte par 1 000 unités. Utilisez un nombre décimal canonique de 0 à 999999999999.99999999, avec au plus 12 chiffres entiers et 8 décimales ; les signes et exposants sont refusés. |
| max_rate | USD decimal | Tarif USD maximum non négatif du compte par 1 000 unités. Il ne peut pas être inférieur à min_rate. Utilisez un nombre décimal canonique de 0 à 999999999999.99999999, avec au plus 12 chiffres entiers et 8 décimales ; les signes et exposants sont refusés. |
Exemple de requête
Remplacez YOUR_API_KEY par la clé générée sur la page API de votre tableau de bord.
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));
Exemple de réponse
{
"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"
}
]
}Erreurs courantes
| Statut | Corps | Cause |
|---|---|---|
| 400 | {"error":"A platform is required when category is a slug"} | Un slug de catégorie est ambigu sans slug ou ID de plateforme. Fournissez platform ou utilisez l’ID numérique de la catégorie. |
| 400 | {"error":"Invalid catalog sort"} | La valeur sort ne correspond à aucun mode de tri documenté. |
| 400 | {"error":"language must be one of en, es, pt, ru, tr, ar, hi, id, fr, zh","error_code":"INVALID_LANGUAGE"} | La valeur de langue n’est pas prise en charge. Utilisez l’un des dix codes de langue documentés pour les noms de services. |