Queber API

Запускайте автоматизації Queber через REST API

Використовуйте HTTPS endpoints, OpenAPI-документацію та scoped credentials, щоб створювати, планувати, редагувати й відстежувати завдання автоматизації в Queber Desktop

REST API

Підключити API-клієнт

Створіть scoped credential в особистому кабінеті, тримайте Queber Desktop онлайн і викликайте API endpoints з Authorization Bearer header.

Schema і docs

Спочатку Swagger UI, schema — коли знадобиться

Використовуйте Swagger для тестових викликів у браузері, потім імпортуйте OpenAPI JSON schema у свій client або tooling.

Авторизація

Використовуйте personal API token для простих автоматизацій

Створіть scoped token в особистому кабінеті, збережіть його як secret у зовнішньому інструменті й надсилайте як Authorization Bearer header. OAuth залишається доступним для інтерактивних клієнтів і hosted apps, яким потрібен user consent.

Як це працює

REST-клієнт не звертається напряму до локального застосунку.

1

Клієнт надсилає HTTPS-запит

Ваш клієнт викликає endpoint /actions у Queber REST API з персональним API-токеном або OAuth access token.

2

Сервер перевіряє доступ

Queber перевіряє токен, платний план і scopes, потрібні цьому endpoint.

3

Desktop виконує локально

Сервер передає команду в авторизований Queber Desktop-застосунок через захищене фонове з'єднання.

4

Відповідь повертається у JSON

Endpoint повертає структурований JSON зі статусом, профілями, завданнями або результатом автоматизації.

Доступні інструменти

Що може робити авторизований клієнт.

Перевіряти статус Desktop

Зрозуміти, чи підключений desktop relay і які можливості доступні.

Читати браузерні профілі

Переглядати список профілів, деталі профілю, відкривати профіль вручну або закривати локальні сесії.

Переглядати завдання

Отримувати список завдань посторінково, читати завдання з результатом, логами й прогресом, редагувати, скасовувати, архівувати, видаляти й повторювати завдання.

Запускати підтримувану автоматизацію

Створювати публікації в Reddit і перевірки постів Reddit одразу або за розкладом.

Доступ контролюється OAuth-токенами, запитаними scopes, перевіркою платного плану та активним підключенням Queber Desktop. Відкличте клієнт, якщо більше йому не довіряєте.

Приклад: перевірка постів Reddit

Стежте за постами Reddit після публікації

Завдання перевірки відкриває кожне посилання у фоновій вкладці браузерного профілю й повертає те, що показує сторінка поста: чи живий пост, видалений чи його вже немає, рейтинг, частку апвоутів, коментарі й перегляди ваших власних постів. Створіть одне завдання й опитуйте його, доки воно не завершиться.

Створіть перевірку

Надішліть POST /actions/jobs/run з automationType post_read і посиланнями в platformData.reddit.post_read.links: підійдуть повні посилання на пости, old.reddit, redd.it, пости в профілях і посилання «Поділитися». Додайте Idempotency-Key; у відповідь прийде завдання зі статусом pending.

Опитуйте завдання

Викликайте GET /actions/jobs/{jobId} раз на кілька секунд, доки статус не стане completed або failed. Посилання перевіряються по черзі з людською паузою, тому довгий список перевіряється довше.

Прочитайте результати

У resultData.reddit.post_read.items по одному елементу на посилання зі статусом ok, removed, not_found або failed, а summary їх рахує. У видаленого поста повідомлення Reddit про видалення лежить у removalMessage; значення, яке Reddit не показав, дорівнює null, а warnings пояснює чому.

Перегляди власних постів

Reddit показує перегляди лише автору поста, тому вони приходять лише для постів профілю, який перевіряє, у тому округленому вигляді, у якому їх показує Reddit, наприклад 5.2K. Кожна перевірка власного поста додає на Reddit один перегляд.

Завдання завершується помилкою, лише якщо не вдалося перевірити жодного посилання; невдале посилання отримує статус failed, і перевірка триває. Запуск оплачується, якщо перевірено хоча б один пост, а скільки посилань можна взяти в один запуск, визначає ваш тариф.

POST https://mcp.queber.app/actions/jobs/run
Authorization: Bearer <token>
Idempotency-Key: post-read-2026-08-12-01

{
  "profileId": "3f1a2b4c-5d6e-4f70-8a91-b2c3d4e5f607",
  "platform": "reddit",
  "automationType": "post_read",
  "platformData": { "reddit": { "post_read": { "links": [
    "https://www.reddit.com/r/SideProject/comments/1abc234/queber_desktop_116_queue_view/",
    "https://old.reddit.com/r/webdev/comments/1abd345/how_do_you_schedule_reddit_posts/",
    "https://redd.it/1abe456"
  ] } } }
}

HTTP/1.1 201 Created
{ "job": { "id": "e2d4f6a8-1b3c-4d5e-8f70-9a1b2c3d4e5f", "automationType": "post_read", "status": "pending", … } }

GET https://mcp.queber.app/actions/jobs/e2d4f6a8-1b3c-4d5e-8f70-9a1b2c3d4e5f
Authorization: Bearer <token>

HTTP/1.1 200 OK
{ "job": { "status": "completed", "resultData": { "reddit": { "post_read": {
  "items": [
    { "url": "https://www.reddit.com/r/SideProject/comments/1abc234/", "status": "ok", "readAs": "author",
      "score": 13, "upvoteRatio": 0.93, "comments": 8, "views": 5200, "shares": 4, "reposts": 1,
      "topCountries": [{ "country": "US", "name": "United States", "percent": 41.2 }, …], "authorRank": 2,
      "warnings": [{ "field": "views", "code": "rounded", "message": "Reddit shows views rounded: 5.2K views" }], … },
    { "url": "https://www.reddit.com/r/webdev/comments/1abd345/", "status": "ok", "readAs": "other",
      "score": 1001, "upvoteRatio": 0.96, "comments": 5348, "views": null,
      "warnings": [{ "field": "views", "code": "author_only", "message": "Reddit shows views only to the post author" }], … },
    { "url": "https://www.reddit.com/comments/1abe456/", "status": "removed", "readAs": "author",
      "removalMessage": "Sorry, this post has been removed by the moderators of r/example.", … }
  ],
  "summary": { "total": 3, "read": 3, "removed": 1, "notFound": 0, "failed": 0 }
} } }, … } }
Приклад: коментар у Reddit

Коментарі та відповіді в Reddit

Завдання на коментар залишає один коментар під постом або відповіддю на один з його коментарів, у фоновій вкладці браузерного профілю. Спершу безкоштовно перевірте пост, виберіть, куди відповісти, створіть завдання й опитуйте його до завершення.

Перевірте пост

Надішліть POST /actions/reddit/comments/check з profileId і link. Він відкриє пост цим профілем, безкоштовно й поза чергою, і поверне blocked (чому коментувати не можна, або null), медіа, які приймає поле коментаря, і до 300 коментарів у thread. Якщо профіль треба запустити, це може зайняти до 3 хвилин.

Виберіть, куди відповісти

Передайте id коментаря з thread у replyToCommentId або не передавайте його, щоб прокоментувати сам пост. Кожен коментар у thread має автора, тож відповідь конкретному користувачу — це фільтр за author. Посилання на коментар у link працює так само, як його id.

Створіть коментар

Надішліть POST /actions/jobs/run з automationType comment і platformData.reddit.comment: link, body (текст або HTML) і не більше одного зображення, GIF чи відео з importMedia. Додайте Idempotency-Key; у відповідь прийде завдання зі статусом pending.

Прочитайте результат

Опитуйте завдання до завершення. resultUrl — сторінка нового коментаря, а resultData.reddit.comment містить його id, коментар, на який він відповідає, і alreadyPosted, якщо його залишив попередній запуск і повторно нічого не надсилалося. Завдання, що впало, називає причину, наприклад rate_limited з хвилинами, які Reddit просить зачекати.

Перевірка безкоштовна. Коментар списується, коли Reddit його показав; невдалий запуск і запуск, що знайшов той самий коментар на місці, нічого не коштують. З тим самим Idempotency-Key друге завдання не створюється.

POST https://mcp.queber.app/actions/reddit/comments/check
Authorization: Bearer <token>

{
  "profileId": "3f1a2b4c-5d6e-4f70-8a91-b2c3d4e5f607",
  "link": "https://www.reddit.com/r/SideProject/comments/1abc234/queber_desktop_116_queue_view/"
}

HTTP/1.1 200 OK
{ "ok": true, "check": {
  "post": { "postId": "1abc234", "community": "r/SideProject", "comments": 8, … },
  "blocked": null,
  "media": { "images": true, "animatedImages": true, "videos": false, "maxMedia": 1 },
  "thread": { "loaded": 8, "complete": true, "comments": [
    { "id": "ohd7k2m", "author": "quiet_reader", "body": "Does it keep the profile logged in?", … },
    …
  ] }
} }

POST https://mcp.queber.app/actions/jobs/run
Authorization: Bearer <token>
Idempotency-Key: comment-2026-08-12-01

{
  "profileId": "3f1a2b4c-5d6e-4f70-8a91-b2c3d4e5f607",
  "platform": "reddit",
  "automationType": "comment",
  "platformData": { "reddit": { "comment": {
    "link": "https://www.reddit.com/r/SideProject/comments/1abc234/queber_desktop_116_queue_view/",
    "replyToCommentId": "ohd7k2m",
    "body": "Yes, every profile keeps its own session."
  } } }
}

HTTP/1.1 201 Created
{ "job": { "id": "b7c9d1e3-5f7a-4b9c-8d1e-3f5a7b9c1d2e", "automationType": "comment", "status": "pending", … } }

GET https://mcp.queber.app/actions/jobs/b7c9d1e3-5f7a-4b9c-8d1e-3f5a7b9c1d2e
→ { "job": { "status": "completed", "resultUrl": "https://www.reddit.com/r/SideProject/comments/1abc234/comment/ohe2p4q/",
  "resultData": { "reddit": { "comment": {
    "commentId": "ohe2p4q", "parentId": "ohd7k2m",
    "repliedTo": { "commentId": "ohd7k2m", "author": "quiet_reader" }, …
  } } }, … } }
Надійність

Повтори та обриви зв'язку

Queber Desktop працює на вашому комп'ютері, тому запит може застати сплячий ноутбук, зміну мережі або повільну відповідь. З цими правилами повтор запиту ніколи не опублікує пост двічі.

Один Idempotency-Key на завдання

Передавайте заголовок Idempotency-Key, наприклад UUID, у кожному запиті, який щось створює або змінює. Повтор із тим самим ключем поверне перший результат, а не опублікує пост удруге, тому після таймауту або відповіді 503 повторюйте запит із тим самим ключем. Для кожного завдання й кожного зміненого запиту потрібен новий ключ, а не один ключ на весь пакет.

Чекайте Retry-After

Відповіді 429 і 503 містять заголовок Retry-After і retryAfterSeconds у тілі помилки, коли час очікування відомий. Зачекайте стільки, потім повторіть той самий запит із тим самим ключем. error.retryable показує, чи може той самий запит пройти пізніше; після desktop_offline спершу потрібно відкрити застосунок.

Перевіряйте relayState перед пакетом

Перед надсиланням пакета викличте GET /actions/status. connected — надсилайте. reconnecting — застосунок від'єднався й скоро повернеться, зачекайте retryAfterSeconds. offline — відкрийте Queber Desktop і увійдіть в акаунт. conflict — закрийте всі старі desktop-застосунки, крім одного.

Виберіть, скільки чекати

Поки застосунок перепідключається, запит чекає до 25 секунд, потім відповідає 503 desktop_reconnecting. Заголовок X-Queber-Desktop-Wait-Ms від 0 до 60000 змінює цей час; таймаут вашого HTTP-клієнта має бути більшим за це очікування плюс 30 секунд (150 для імпорту медіа).

POST https://mcp.queber.app/actions/jobs/schedule
Authorization: Bearer <token>
Idempotency-Key: post-2026-08-13-r-webdev-01
X-Queber-Desktop-Wait-Ms: 20000

{ "profileId": "3f1a2b4c-5d6e-4f70-8a91-b2c3d4e5f607", "platform": "reddit", … }

HTTP/1.1 503 Service Unavailable
Retry-After: 12

{
  "error": {
    "code": "desktop_reconnecting",
    "message": "Queber Desktop lost its connection and is reconnecting. Retry the request shortly; you do not need to restart the app.",
    "retryable": true,
    "retryAfterSeconds": 12
  }
}
Потрібна допомога?

Питання щодо інтеграції REST API

Якщо налаштування токена, імпорт схеми, API-виклики або виконання через Queber Desktop працюють не так, як очікується, напишіть у підтримку Queber або в Telegram.