🛒

Документация API для клиентов

🔌
Всего действий
7
👤
Тип пользователя
Клиент

API-эндпоинт и аутентификация

Все вызовы клиентского API используют один HTTP POST эндпоинт. Аутентификация с помощью key или apikey (со страницы API-ключа вашего профиля) плюс action для выбора операции. Путь находится в корне сайта как /api/v2 — без языкового префикса (например, без /en/ перед /api).

POST
https://accplanet.com/api/v2

Отправляйте параметры как application/x-www-form-urlencoded (например, curl -d) или как JSON с Content-Type: application/json.

{
  "key": "YOUR_API_KEY",
  "action": "categories"
}

Примечание: Замените YOUR_API_KEY на свой собственный ключ. Никогда не помещайте API-ключи в URL, клиентский код или публичные репозитории. Поддерживаемые значения action: categories, shops, services, inventory, add, status, balance.

Запросы ограничены по частоте на каждый API-ключ. При превышении лимита API возвращает HTTP 429 с заголовком Retry-After. Используйте пагинацию для больших списков сервисов (размер страницы по умолчанию: 50).

Тестовый API

Выберите действие, введите необходимые параметры, затем нажмите Отправить запрос, чтобы вызвать реальный API. Если вы вошли с API-ключом, он будет заполнен ниже (скрыт).

Клиентский API v2

POST
https://accplanet.com/api/v2

Получить категории

Возвращает все категории верхнего уровня и названия их подкатегорий. Используйте эти точные названия для фильтрации Списка услуг по category и subcategory.

Параметры запроса
ПараметрТипОписаниеОбязательный
key / apikeyСтрокаВаш API-ключДа
actionСтрокаcategoriesДа
Пример запроса
curl -X POST https://accplanet.com/api/v2 \
  -d "key=YOUR_API_KEY" \
  -d "action=categories"
Пример ответа
{
  "categories": [
    {
      "category": "Social",
      "subcategories": ["Premium", "Standard"]
    },
    {
      "category": "Digital goods",
      "subcategories": []
    }
  ]
}
POST
https://accplanet.com/api/v2

Список магазинов

Возвращает все публичные магазины поставщиков, у которых есть хотя бы один активный одобренный товар. Каждый элемент включает идентификатор shop (24-символьный ObjectId поставщика) — передайте его в Список услуг как shop, чтобы вывести товары только из этого магазина. Необязательные параметры page и limit работают как в Списке услуг (размер страницы по умолчанию 50, максимум 500).

Параметры запроса
ПараметрТипОписаниеОбязательный
key / apikeyСтрокаВаш API-ключДа
actionСтрокаshopsДа
pageЧислоНомер страницы (по умолчанию 1), когда limit > 0No
limitЧислоЭлементов на странице; 0 = вернуть все (по умолчанию 0)No
Пример запроса
curl -X POST https://accplanet.com/api/v2 \
  -d "key=YOUR_API_KEY" \
  -d "action=shops"
Пример ответа
{
  "shops": [
    {
      "shop": "507f1f77bcf86cd799439011",
      "name": "Example Shop",
      "description": "Shop description",
      "logo": "https://example.com/logo.webp",
      "banner": "https://example.com/banner.webp",
      "shopUrl": "example-shop",
      "productCount": 42,
      "featured": true
    }
  ],
  "total": 1,
  "page": 1,
  "limit": 50,
  "total_pages": 1
}
POST
https://accplanet.com/api/v2

Список услуг

Возвращает продаваемые товары (услуги) с остатками, ценами, показателями продаж, статистикой отзывов, временными метками и флагом available, указывающим, можно ли заказать каждый товар сейчас (остаток соответствует минимальному количеству для покупки). Каждый товар включает sales_count, rating, review_count, created_at и updated_at. Фильтруйте по названиям категории / подкатегории из Get Categories, по shop из Shops List или передайте service для получения одного товара по его идентификатору услуги (значение service из ответов списка). Используйте language для локализации name, description, category и subcategory (см. таблицу ниже). Необязательный entityType ограничивает тип товара; необязательный sort упорядочивает результаты перед пагинацией. Установите limit=0, чтобы вернуть все подходящие товары в одном ответе.

Параметры запроса
ПараметрТипОписаниеОбязательный
key / apikeyСтрокаВаш API-ключДа
actionСтрокаservicesДа
pageЧислоНомер страницы (по умолчанию 1), когда limit > 0No
limitЧислоЭлементов на странице; 0 = вернуть все (по умолчанию 0)No
shopСтрокаID магазина из Списка магазинов (поле shop — 24-символьный ObjectId поставщика). Псевдоним: shop_id. Опустите, чтобы вернуть товары из всех магазинов.No
categoryСтрокаНазвание родительской категории (из Get Categories)No
subcategoryСтрокаНазвание подкатегории (из Get Categories)No
entityTypeСтрокаФильтр типа товара: product (по умолчанию, стандартные позиции каталога) или smm (услуги по продвижению в соцсетях)No
sortСтрокаПорядок сортировки: created_at (по умолчанию, сначала новые), price_asc, price_desc, sales, ratingNo
serviceСтрокаВернуть одну услугу по ID (то же значение service, что и в ответах списка)No
languageСтрокаЯзык ответа — используйте код из списка поддерживаемых языков ниже (по умолчанию en)No
Поддерживаемые языковые коды (language)

Передайте одно из этих значений (без учёта регистра). Если опущено или указано en, текстовые поля остаются на английском (исходный язык, хранящийся в каталоге). Другие поддерживаемые коды возвращают переведённые name, description, category и subcategory, если переводы доступны; в противном случае используется английский.

КодЯзыкРодное название
en English English
zh Chinese 中文
es Spanish Español
fr French Français
de German Deutsch
ja Japanese 日本語
ko Korean 한국어
pt Portuguese Português
pt-BR Portuguese (Brazil) Português (Brasil)
ru Russian Русский
ar Arabic العربية
hi Hindi हिन्दी
vi Vietnamese Tiếng Việt
ur Urdu اردو
th Thai ไทย
tr Turkish Türkçe
bn-BD Bengali (Bangladesh) বাংলা
Также принимается (псевдонимы)

Эти строки нормализуются до основного кода выше (один и тот же переводческий блок):

Вы можете отправитьПреобразуется в
zh-hans zh
zh-cn zh
zh-sg zh
zh-hant zh
zh-tw zh
zh-hk zh
zh-mo zh
pt-br pt-BR
pt_br pt-BR
ptbr pt-BR
bn-bd bn-BD
bd bn-BD
en-us en
en-gb en

Не поддерживается: любое другое значение language обрабатывается как английский (без перевода). Используйте точные основные коды или псевдонимы, перечисленные здесь.

Пример запроса
curl -X POST https://accplanet.com/api/v2 \
  -d "key=YOUR_API_KEY" \
  -d "action=services"
curl -X POST https://accplanet.com/api/v2 \
  -d "key=YOUR_API_KEY" \
  -d "action=services" \
  -d "page=1" \
  -d "limit=50"
curl -X POST https://accplanet.com/api/v2 \
  -d "key=YOUR_API_KEY" \
  -d "action=services" \
  -d "entityType=product" \
  -d "sort=price_asc" \
  -d "page=1" \
  -d "limit=50"
curl -X POST https://accplanet.com/api/v2 \
  -d "key=YOUR_API_KEY" \
  -d "action=services" \
  -d "category=Instagram"
curl -X POST https://accplanet.com/api/v2 \
  -d "key=YOUR_API_KEY" \
  -d "action=services" \
  -d "shop=507f1f77bcf86cd799439011"
curl -X POST https://accplanet.com/api/v2 \
  -d "key=YOUR_API_KEY" \
  -d "action=services" \
  -d "service=10042" \
  -d "limit=1" \
  -d "language=zh"

Hot-sync single lookup: use action=services with service (business_id or product_id) and limit=1. Products that exist but are inactive, pending approval, or blacklisted return HTTP 200 with available=false and the actual stock; only missing IDs or deleted products return 404. rate is required; price is an optional alias with the same value.

Пример ответа

По умолчанию (limit опущен или равен 0): все услуги в одном ответе.

{
  "services": [
    {
      "service": 10042,
      "name": "Example product A",
      "description": "Product description (may be HTML)",
      "type": "Default",
      "category": "Social",
      "subcategory": "Instagram",
      "rate": "9.99",
      "min": 1,
      "max": 100,
      "refill": false,
      "cancel": false,
      "stock": 100,
      "available": true,
      "entityType": "product",
      "autoDelivery": true,
      "sales_count": 128,
      "rating": "4.50",
      "review_count": 23,
      "created_at": "2024-03-01T12:00:00",
      "updated_at": "2025-07-10T08:30:00"
    }
  ],
  "total": 2,
  "page": 1,
  "limit": 0,
  "total_pages": 1
}

service — идентификатор услуги в каждом элементе списка: числовой идентификатор каталога, если он назначен, в противном случае — строка, сгенерированная системой. Используйте то же значение для Check Inventory (через запятую для нескольких идентификаторов) и Add Order. rate — цена за единицу, которую вы платите за эту услугу (включает любую скидку покупателя, настроенную для вашей учетной записи; в противном случае — цена из прайс-листа). available — можно ли заказать услугу сейчас (продается и остаток соответствует минимальному количеству для покупки). То же значение, что и в Check Inventory; баланс кошелька и коды купонов все равно проверяются при вызове Add Order. category / subcategory соответствуют названиям из Get Categories (subcategory пусто, если товар принадлежит только категории верхнего уровня). description может содержать форматированный текст или HTML из списка товаров. sales_count — общее количество проданных единиц (накопительно). rating — средняя оценка на основе видимых отзывов (0.00, если отзывов нет). review_count — количество видимых отзывов. created_at / updated_at — время создания и последнего обновления товара (ISO 8601).

POST
https://accplanet.com/api/v2

Проверить инвентарь

Возвращает текущий остаток для одной или нескольких услуг. Передайте один идентификатор service или несколько идентификаторов через запятую (например, 10054,0665,13541). Используйте те же значения service, что и в Services List. Поле available использует те же правила, что и в Services List (продается и остаток соответствует минимальному количеству для покупки). Один идентификатор возвращает один объект; несколько идентификаторов возвращают массив inventory.

Параметры запроса
ПараметрТипОписаниеОбязательный
key / apikeyСтрокаВаш API-ключДа
actionСтрокаinventoryДа
serviceСтрокаОдин или несколько ID услуг из списка услуг, разделённых запятыми (например, 10054,0665,13541; не более 50 на запрос)Да
Пример запроса
curl -X POST https://accplanet.com/api/v2 \
  -d "key=YOUR_API_KEY" \
  -d "action=inventory" \
  -d "service=10054,0665,13541"
Пример ответа

Если указан один ID service, ответ представляет собой один объект (HTTP 404, если не найден):

{
  "service": 10042,
  "stock": 42,
  "available": true,
  "entityType": "product",
  "autoDelivery": true
}

Если указано несколько ID через запятую, ответ оборачивает элементы в массив inventory (HTTP 200; отсутствующие услуги включают поле error):

{
  "inventory": [
    {
      "service": 10054,
      "stock": 10,
      "available": true,
      "entityType": "product",
      "autoDelivery": true
    },
    {
      "service": 665,
      "stock": 0,
      "available": false,
      "entityType": "product",
      "autoDelivery": true
    },
    {
      "service": 13541,
      "error": "Service not found"
    }
  ]
}
POST
https://accplanet.com/api/v2

Добавить заказ

Создаёт заказ и списывает средства с вашего баланса счёта. Требуется действительный ID service и quantity.

Параметры запроса
ПараметрТипОписаниеОбязательный
key / apikeyСтрокаВаш API-ключДа
actionСтрокаaddДа
serviceСтрокаID услуги из списка услуг (поле service)Да
quantityЧислоКоличество (по умолчанию 1)No
linkСтрокаНеобязательное поле URL (принимается для совместимости; не сохраняется)No
coupon_code / couponСтрокаНеобязательный код купона (псевдоним: coupon)No
Пример запроса
curl -X POST https://accplanet.com/api/v2 \
  -d "key=YOUR_API_KEY" \
  -d "action=add" \
  -d "service=10042" \
  -d "quantity=1"
Пример ответа

HTTP статус 201 Created.

{
  "order": "000000000000000000000001",
  "charge": "9.99",
  "currency": "USD"
}

Поле order — это уникальный идентификатор заказа (строка). charge — общая сумма, списанная с вашего кошелька (после скидки покупателя, скидки при входе и купона, если применимо). currency всегда равно USD. Передайте order в Order Status (action=status).

POST
https://accplanet.com/api/v2

Статус заказа

Возвращает прогресс выполнения, статус доставки и доставленные учётные данные (если применимо) для размещённого вами заказа. Требуется идентификатор order из Добавления заказа.

Параметры запроса
ПараметрТипОписаниеОбязательный
key / apikeyСтрокаВаш API-ключДа
actionСтрокаstatusДа
orderСтрокаИдентификатор заказа, возвращаемый методом addДа
Пример запроса
curl -X POST https://accplanet.com/api/v2 \
  -d "key=YOUR_API_KEY" \
  -d "action=status" \
  -d "order=000000000000000000000001"
Пример ответа
{
  "status": "In progress",
  "charge": "75.00",
  "start_count": 3,
  "remains": 1,
  "delivered_units": 2,
  "currency": "USD",
  "autoDelivery": true,
  "entityType": "product"
}
{
  "status": "Completed",
  "charge": "50.00",
  "start_count": 2,
  "remains": 0,
  "delivered_units": 2,
  "currency": "USD",
  "autoDelivery": true,
  "entityType": "product",
  "accounts": ["example_user:redacted", "example_user_2:redacted"]
}
POST
https://accplanet.com/api/v2

Баланс

Возвращает текущий баланс вашего клиентского кошелька и валюту. Дополнительные параметры, кроме аутентификации, не требуются.

Параметры запроса
ПараметрТипОписаниеОбязательный
key / apikeyСтрокаВаш API-ключДа
actionСтрокаbalanceДа
Пример запроса
curl -X POST https://accplanet.com/api/v2 \
  -d "key=YOUR_API_KEY" \
  -d "action=balance"
Пример ответа
{
  "balance": "100.00",
  "currency": "USD"
}

Возвращает доступный баланс в вашем клиентском кошельке (используется для оплаты заказов).

POST
https://accplanet.com/api/v2

Ответы с ошибками

Ошибки используют одну строку error. Неверные или отсутствующие учётные данные API обычно возвращают HTTP 401 с {"error": "Invalid API key"}; проблемы с валидацией обычно возвращают 400.

{"error": "Invalid API key"}
{"error": "Invalid action"}
{"error": "Service ID is required"}
{"error": "Service not found"}
{"error": "Shop not found"}
{"error": "Product not found."}
{"error": "This product is not available for purchase."}
{"error": "Invalid quantity."}
{"error": "Minimum quantity is 2."}
{"error": "Insufficient stock. Available: 10."}
{"error": "Insufficient balance. Please recharge your account."}
{"error": "Order not found"}
{"error": "Category not found"}
{"error": "Subcategory not found"}
{"error": "Subcategory not found in category"}
Telegram