Документация API для клиентов
API-эндпоинт и аутентификация
Все вызовы клиентского API используют <strong>один HTTP POST</strong> эндпоинт. Аутентификация с помощью <code>key</code> или <code>apikey</code> (со страницы API-ключа вашего профиля) плюс <code>action</code> для выбора операции. Путь находится в <strong>корне сайта</strong> как <code>/api/v2</code> — без языкового префикса (например, без <code>/en/</code> перед <code>/api</code>).
Отправляйте параметры как <code>application/x-www-form-urlencoded</code> (например, <code>curl -d</code>) или как JSON с <code>Content-Type: application/json</code>.
{
"key": "YOUR_API_KEY",
"action": "categories"
}
<strong>Примечание:</strong> Замените <code>YOUR_API_KEY</code> на свой собственный ключ. Никогда не помещайте API-ключи в URL, клиентский код или публичные репозитории. Поддерживаемые значения <code>action</code>: <code>categories</code>, <code>services</code>, <code>inventory</code>, <code>add</code>, <code>status</code>, <code>balance</code>.
Тестовый API
Выберите действие, введите необходимые параметры, затем нажмите <strong>Отправить запрос</strong>, чтобы вызвать реальный API. Если вы вошли с API-ключом, он будет заполнен ниже (скрыт).
Ответ
Клиентский API v2
Получить категории
Все родительские категории и названия их подкатегорий (для фильтрации <strong>Списка услуг</strong>).
Параметры запроса
| Параметр | Тип | Описание | Обязательный |
|---|---|---|---|
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": []
}
]
}
Список услуг
Доступные продукты (услуги) с остатками. Необязательные фильтры используют <strong>названия категорий/подкатегорий</strong>, возвращаемые методом Get Categories, или передайте <code>service</code> для получения одного продукта по id (<code>business_id</code> или MongoDB id). Параметр <code>language</code> управляет локализацией полей <code>name</code>, <code>description</code>, <code>category</code> и <code>subcategory</code> (см. таблицу ниже). <code>limit=0</code> возвращает все элементы в одном ответе.
Параметры запроса
| Параметр | Тип | Описание | Обязательный |
|---|---|---|---|
key / apikey | Строка | Ваш API-ключ | Да |
action | Строка | services | Да |
page | Число | Номер страницы (по умолчанию <code>1</code>), когда <code>limit</code> > 0 | No |
limit | Число | Элементов на странице; <code>0</code> = вернуть все (по умолчанию <code>0</code>) | No |
category | Строка | Название родительской категории (из Get Categories) | No |
subcategory | Строка | Название подкатегории (из Get Categories) | No |
service | Строка | Вернуть только этот идентификатор услуги/продукта (тот же идентификатор, что и в элементах списка) | No |
language | Строка | Язык ответа — используйте код из списка поддерживаемых языков ниже (по умолчанию <code>en</code>) | No |
Поддерживаемые языковые коды (language)
Передайте одно из этих значений (регистронезависимо для сопоставления). Если опущено или указано <code>en</code>, поля остаются на <strong>английском</strong> (исходный сохранённый текст). Любой другой код из списка ниже разрешает переводы через Aitranslator, если настроен <code>AITRANSLATOR_BASE_URL</code>; отсутствующие переводы возвращаются к английскому, пока не завершатся поставленные в очередь переводы.
| Код | Язык | Родное название |
|---|---|---|
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 |
<strong>Не поддерживается:</strong> любое другое значение <code>language</code> обрабатывается как английский (без перевода). Используйте точные основные коды или псевдонимы, перечисленные здесь.
Пример запроса
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 "category=Instagram"
curl -X POST https://accplanet.com/api/v2 \
-d "key=YOUR_API_KEY" \
-d "action=services" \
-d "service=10042" \
-d "language=zh"
Пример ответа
<strong>По умолчанию</strong> (<code>limit</code> опущен или равен <code>0</code>): все услуги в одном ответе.
{
"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,
"entityType": "product",
"autoDelivery": true
}
],
"total": 2,
"page": 1,
"limit": 0,
"total_pages": 1
}
<strong>service</strong> — это числовой <code>business_id</code> продукта, если он задан; в противном случае — идентификатор MongoDB в виде строки. Используйте то же значение для <strong>Check Inventory</strong> и <strong>Add Order</strong>. <strong>category</strong> / <strong>subcategory</strong> соответствуют названиям из <strong>Get Categories</strong> (пустое <code>subcategory</code>, если продукт прикреплён только к категории верхнего уровня). <strong>description</strong> — это полное описание продукта (может содержать HTML от редактора поставщика).
Проверить инвентарь
Запас для одной услуги (тот же идентификатор <code>service</code>, что и в списке услуг).
Параметры запроса
| Параметр | Тип | Описание | Обязательный |
|---|---|---|---|
key / apikey | Строка | Ваш API-ключ | Да |
action | Строка | inventory | Да |
service | Строка | Идентификатор услуги/продукта из списка услуг | Да |
Пример запроса
curl -X POST https://accplanet.com/api/v2 \
-d "key=YOUR_API_KEY" \
-d "action=inventory" \
-d "service=10042"
Пример ответа
{
"service": 10042,
"stock": 42,
"available": true,
"entityType": "product",
"autoDelivery": true
}
Добавить заказ
Создаёт заказ и оплачивает его с <strong>баланса счёта</strong>. Необязательный <code>link</code> принимается для совместимости, но не сохраняется в заказе.
Параметры запроса
| Параметр | Тип | Описание | Обязательный |
|---|---|---|---|
key / apikey | Строка | Ваш API-ключ | Да |
action | Строка | add | Да |
service | Строка | Идентификатор услуги/продукта из списка услуг | Да |
quantity | Число | Количество (по умолчанию <code>1</code>) | No |
link | Строка | Необязательно (зарезервировано / для будущего использования) | No |
Пример запроса
curl -X POST https://accplanet.com/api/v2 \
-d "key=YOUR_API_KEY" \
-d "action=add" \
-d "service=10042" \
-d "quantity=1"
Пример ответа
HTTP статус <code>201 Created</code>.
{
"order": "000000000000000000000001"
}
Значение <code>order</code> — это <code>ObjectId</code> MongoDB (строка). Используйте его с <strong>Order Status</strong> (<code>action=status</code>).
Статус заказа
Параметры запроса
| Параметр | Тип | Описание | Обязательный |
|---|---|---|---|
key / apikey | Строка | Ваш API-ключ | Да |
action | Строка | status | Да |
order | Строка | Идентификатор заказа, возвращённый <code>add</code> | Да |
Пример запроса
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"
}
Баланс — это ваш <strong>пользовательский</strong> кошелёк (используется для покупок).
Ответы с ошибками
Ошибки используют одну строку <code>error</code>. Неверные или отсутствующие учётные данные API обычно возвращают HTTP <code>401</code> с <code>{"error": "Invalid API key"}</code>; проблемы с валидацией обычно возвращают <code>400</code>.
{"error": "Invalid API key"}
{"error": "Invalid action"}
{"error": "Service ID is required"}
{"error": "Service 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"}