Документация API для клиентов
API-эндпоинт и аутентификация
Все вызовы клиентского API используют один HTTP POST эндпоинт. Аутентификация с помощью key или apikey (со страницы API-ключа вашего профиля) плюс action для выбора операции. Путь находится в корне сайта как /api/v2 — без языкового префикса (например, без /en/ перед /api).
Отправляйте параметры как 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
Получить категории
Возвращает все категории верхнего уровня и названия их подкатегорий. Используйте эти точные названия для фильтрации Списка услуг по 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": []
}
]
}
Список магазинов
Возвращает все публичные магазины поставщиков, у которых есть хотя бы один активный одобренный товар. Каждый элемент включает идентификатор shop (24-символьный ObjectId поставщика) — передайте его в Список услуг как shop, чтобы вывести товары только из этого магазина. Необязательные параметры page и limit работают как в Списке услуг (размер страницы по умолчанию 50, максимум 500).
Параметры запроса
| Параметр | Тип | Описание | Обязательный |
|---|---|---|---|
key / apikey | Строка | Ваш API-ключ | Да |
action | Строка | shops | Да |
page | Число | Номер страницы (по умолчанию 1), когда limit > 0 | No |
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
}
Список услуг
Returns sellable products (services) with stock, pricing, sales metrics, review stats, timestamps, and an available flag for whether each item can be ordered now (stock meets minimum purchase quantity). Each item includes sales_count, rating, review_count, created_at, and updated_at. Filter by category / subcategory names from Get Categories, by shop from Shops List, or pass service to fetch one item by its service ID (the service value from list responses). Use language to localize name, description, category, and subcategory (see table below). Optional entityType limits the product type; optional sort orders results before pagination. Set limit=0 to return all matching items in one response.
Параметры запроса
| Параметр | Тип | Описание | Обязательный |
|---|---|---|---|
key / apikey | Строка | Ваш API-ключ | Да |
action | Строка | services | Да |
page | Число | Номер страницы (по умолчанию 1), когда limit > 0 | No |
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, rating | No |
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 — the service identifier in each list item: a numeric catalog ID when assigned, otherwise a system-generated string. Use the same value for Check Inventory (comma-separated for multiple IDs) and Add Order. rate is the unit price you pay for that service (includes any supplier-specific buyer discount configured for your account; otherwise the list price). available — whether the service can be ordered now (sellable and stock meets the minimum purchase quantity). Same meaning as in Check Inventory; wallet balance and coupon codes are still validated when you call Add Order. category / subcategory match names from Get Categories (subcategory is empty when the product belongs to a top-level category only). description may contain rich text or HTML from the product listing. sales_count — total units sold (cumulative). rating — average score from visible reviews (0.00 when there are no reviews). review_count — number of visible reviews. created_at / updated_at — product creation and last update time (ISO 8601).
Проверить инвентарь
Returns current stock for one or more services. Pass a single service ID, or several IDs comma-separated (e.g. 10054,0665,13541). Use the same service values as in Services List. The available field uses the same rules as in Services List (sellable and stock meets minimum purchase quantity). A single ID returns one object; multiple IDs return an inventory array.
Параметры запроса
| Параметр | Тип | Описание | Обязательный |
|---|---|---|---|
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"
}
]
}
Добавить заказ
Создаёт заказ и списывает средства с вашего баланса счёта. Требуется действительный ID service и quantity.
Параметры запроса
| Параметр | Тип | Описание | Обязательный |
|---|---|---|---|
key / apikey | Строка | Ваш API-ключ | Да |
action | Строка | add | Да |
service | Строка | ID услуги из списка услуг (поле service) | Да |
quantity | Число | Количество (по умолчанию 1) | No |
link | Строка | Необязательное поле URL (принимается для совместимости; не сохраняется) | No |
coupon_code / coupon | Строка | Optional coupon code (alias: 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"
}
The order field is the unique order identifier (string). charge is the total amount debited from your wallet (after buyer discount, login discount, and coupon, when applicable). currency is always USD. Pass order to Order Status (action=status).
Статус заказа
Возвращает прогресс выполнения, статус доставки и доставленные учётные данные (если применимо) для размещённого вами заказа. Требуется идентификатор 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"]
}
Баланс
Возвращает текущий баланс вашего клиентского кошелька и валюту. Дополнительные параметры, кроме аутентификации, не требуются.
Параметры запроса
| Параметр | Тип | Описание | Обязательный |
|---|---|---|---|
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"
}
Возвращает доступный баланс в вашем клиентском кошельке (используется для оплаты заказов).
Ответы с ошибками
Ошибки используют одну строку 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"}