API Poster
v1REST API для автопостинга: публикация постов и клипов, загрузка медиа, статистика и вебхуки для ВКонтакте, Одноклассников, Telegram и YouTube. Все ответы — в JSON.
Базовый URL
https://autoposter.digital/api/v1API доступен на тарифе «Бизнес». Ключ создаётся в кабинете: Настройки → API.
Авторизация
Каждый запрос передаёт API-ключ воркспейса в заголовке. Поддерживаются два варианта — используйте любой:
x-api-key: ВАШ_КЛЮЧ
# либо
Authorization: Bearer ВАШ_КЛЮЧБез ключа или с неверным — 401 UNAUTHORIZED. Если тариф не «Бизнес» — 403 PLAN_LIMIT. Ключ даёт доступ ко всему воркспейсу — храните его как пароль и не публикуйте в клиентском коде.
Формат ответов
Единая обёртка. Успех — ok: true и data; ошибка — ok: false и error с машинным code.
{ "ok": true, "data": { ... } }{ "ok": false, "error": { "code": "VALIDATION_ERROR", "message": "…", "details": [] } }200 / 201Успех. 201 — создан ресурс (медиа, вебхук).
400 VALIDATION_ERRORНеверные параметры (см. details).
401 UNAUTHORIZEDНет ключа или он неверный.
402 NO_BALANCEНедостаточно AI-баланса (при autogen).
403 PLAN_LIMITAPI доступен только на тарифе «Бизнес».
404 NOT_FOUNDРесурс не найден или чужой.
429 RATE_LIMITEDСлишком часто — см. retryAfter.
Лимиты
На запись (создание/перенос/удаление постов, загрузка медиа) — порядка 30 запросов в минуту на воркспейс. При превышении — 429 с полем retryAfter (секунды). Для массовых действий используйте POST /posts/bulk (до 100 постов за раз), а не цикл одиночных запросов.
Аккаунты
/api/v1/accountsid нужны как accountIds при создании поста.curl https://autoposter.digital/api/v1/accounts \
-H "x-api-key: ВАШ_КЛЮЧ"{ "ok": true, "data": [
{ "id": "acc_123", "platform": "VK", "displayName": "Мой паблик",
"isActive": true, "followers": 2545 }
] }Загрузка медиа
/api/v1/mediaPUT-запросом загрузить сам файл, (3) передать mediaId в пост. Альтернатива — передать mediaUrls прямо в пост (мы скачаем сами).filenamestringобязателенИмя файла с расширением.
mimeTypestringобязателенНапример image/jpeg, video/mp4.
sizenumberобязателенРазмер в байтах (должен совпасть при заливке).
curl -X POST https://autoposter.digital/api/v1/media \
-H "x-api-key: ВАШ_КЛЮЧ" -H "Content-Type: application/json" \
-d '{ "filename": "clip.mp4", "mimeType": "video/mp4", "size": 8482913 }'{ "ok": true, "data": {
"mediaId": "med_abc", "uploadUrl": "https://…", "method": "PUT",
"expiresInSec": 3600
} }curl -X PUT "URL_ИЗ_ОТВЕТА" \
-H "Content-Type: video/mp4" --data-binary @clip.mp4Создание поста
/api/v1/postspublishNow: true, по умолчанию) или ставит в расписание (scheduledAt). Текст можно задать общий (text) или свой на площадку (platformText). Медиа — через mediaIds или mediaUrls. Можно включить AI-генерацию текста (autogen).accountIdsstring[]обязателенКуда публиковать (1–50). Из GET /accounts.
textstringТекст поста (до 10000). Либо platformText.
platformTextobjectТекст под площадку: { "VK": "…", "TELEGRAM": "…" }.
titlestringЗаголовок (для видео/YouTube).
hashtagsstring[]До 30 тегов.
mediaIdsstring[]ID из POST /media (до 10).
mediaUrlsstring[]Прямые ссылки на медиа — скачаем сами (до 10).
asClipbooleanПубликовать видео как клип (VK Клипы, ОК, Shorts).
publishNowbooleanОпубликовать сразу. По умолчанию true.
scheduledAtstring (ISO)Время публикации в будущем (если не publishNow).
idempotencyKeystringЗащита от дублей: повтор с тем же ключом вернёт тот же пост.
autogenobjectAI-генерация: { topic, title, caption, hashtags, model }. Тратит AI-баланс.
curl -X POST https://autoposter.digital/api/v1/posts \
-H "x-api-key: ВАШ_КЛЮЧ" -H "Content-Type: application/json" \
-d '{
"accountIds": ["acc_123"],
"text": "Привет из API!",
"mediaIds": ["med_abc"],
"asClip": true,
"publishNow": true,
"idempotencyKey": "my-unique-key-001"
}'{ "ok": true, "data": {
"id": "post_777", "status": "QUEUED", "scheduledAt": null,
"mediaCount": 1,
"accounts": [{ "id": "acc_123", "platform": "VK", "displayName": "Мой паблик" }]
} }Список постов
/api/v1/postscurl "https://autoposter.digital/api/v1/posts" -H "x-api-key: ВАШ_КЛЮЧ"Пост: получить / перенести / удалить
/api/v1/posts/{id}curl https://autoposter.digital/api/v1/posts/post_777 -H "x-api-key: ВАШ_КЛЮЧ"/api/v1/posts/{id}curl -X PATCH https://autoposter.digital/api/v1/posts/post_777 \
-H "x-api-key: ВАШ_КЛЮЧ" -H "Content-Type: application/json" \
-d '{ "scheduledAt": "2026-08-01T10:00:00Z" }'/api/v1/posts/{id}curl -X DELETE https://autoposter.digital/api/v1/posts/post_777 -H "x-api-key: ВАШ_КЛЮЧ"Массовые операции
/api/v1/posts/bulkaction"cancel" | "reschedule"обязателенЧто сделать.
postIdsstring[]обязателенID постов (1–100).
scheduledAtstring (ISO)Обязателен для reschedule (будущее время).
curl -X POST https://autoposter.digital/api/v1/posts/bulk \
-H "x-api-key: ВАШ_КЛЮЧ" -H "Content-Type: application/json" \
-d '{ "action": "cancel", "postIds": ["post_1", "post_2"] }'Статистика
/api/v1/statscurl https://autoposter.digital/api/v1/stats -H "x-api-key: ВАШ_КЛЮЧ"/api/v1/stats/{postId}{ "ok": true, "data": {
"postId": "post_777", "status": "PUBLISHED",
"totals": { "likes": 42, "comments": 3, "reposts": 1, "views": 1980, "reach": 3120 },
"platforms": [
{ "platform": "VK", "url": "https://vk.com/wall-…",
"stats": { "likes": 42, "views": 1980, "reach": 3120, "fetchedAt": "…" } }
]
} }Вебхуки
/api/v1/webhooksPOST на ваш URL. GET /webhooks вернёт ваши подписки и полный список событий.POST_CREATEDПост создан.
POST_PUBLISHEDПост опубликован.
POST_FAILEDПубликация не удалась.
ACCOUNT_DISCONNECTEDКанал отвалился (нужно переподключить).
PAYMENT_SUCCESSУспешная оплата.
PAYMENT_REFUNDEDВозврат средств.
curl -X POST https://autoposter.digital/api/v1/webhooks \
-H "x-api-key: ВАШ_КЛЮЧ" -H "Content-Type: application/json" \
-d '{ "url": "https://ваш-сервер/hook", "events": ["POST_PUBLISHED", "POST_FAILED"] }'curl -X DELETE https://autoposter.digital/api/v1/webhooks \
-H "x-api-key: ВАШ_КЛЮЧ" -H "Content-Type: application/json" \
-d '{ "id": "wh_123" }'Типичный сценарий: клип из API
- 1.
GET /accounts— взятьidнужных каналов. - 2.
POST /media— получитьuploadUrl, затемPUTзалить видео. - 3.
POST /postsсmediaIds,asClip: trueиidempotencyKey. - 4. (опц.)
POST /webhooksнаPOST_PUBLISHED/POST_FAILED— узнать результат без опроса. - 5.
GET /stats/{postId}— собрать метрики позже.
Нужен ключ или помощь?
Ключ — в Настройках → API (тариф «Бизнес»). Вопросы — через кнопку «Помощь» в кабинете.