Check Desktop status
See whether your desktop relay is connected and which capabilities are available.
Use HTTPS endpoints, OpenAPI documentation, and scoped credentials to create, schedule, edit, and monitor supported automation jobs in Queber Desktop
Create a scoped credential in the member area, keep Queber Desktop online, and call the API endpoints with an Authorization Bearer header.
Open Swagger UI and run requests against your own Queber account.
Import the schema to create, schedule, update, inspect, cancel, and retry Queber jobs from your own tools.
Recommended for Airtable, Make, n8n, Zapier, scripts, cron, and CI.
API calls run through the signed-in desktop relay.
Use Swagger to test calls in the browser, then import the OpenAPI JSON schema into your client or tooling.
Create a scoped token in the member area, store it as a secret in your external tool, and send it as an Authorization Bearer header. OAuth is still available for interactive clients and hosted apps that need user consent.
Your client calls an /actions endpoint of the Queber REST API with a personal API token or an OAuth access token.
Queber validates the token, paid-plan access, and the scopes that endpoint requires.
The server relays the command to your signed-in Queber Desktop app over its secure background connection.
The endpoint returns a structured JSON response with status, profile, job, or automation output.
See whether your desktop relay is connected and which capabilities are available.
List profiles, inspect one profile, open it manually, or close local sessions.
List jobs page by page, read one job with its result, logs, and progress, and edit, cancel, archive, delete, or retry jobs.
Create Reddit posts and Reddit post checks that run now or on a schedule.
Access is controlled by OAuth tokens, requested scopes, paid-plan checks, and the live Queber Desktop connection. Revoke a client if you no longer trust it.
A post check job opens each link in a background tab of a browser profile and returns what the post page shows: whether the post is live, removed, or gone, its score, upvote ratio, comments, and the views of your own posts. Create one job, then poll it until it completes.
Send POST /actions/jobs/run with automationType post_read and the links in platformData.reddit.post_read.links: full post links, old.reddit, redd.it, profile posts, and share links all work. Add an Idempotency-Key; the answer is the job with status pending.
Call GET /actions/jobs/{jobId} every few seconds until status is completed or failed. Links are checked one after another with a human pause, so a longer list takes longer.
resultData.reddit.post_read.items holds one item per link with status ok, removed, not_found, or failed, and summary counts them. A removed post keeps Reddit's removal message in removalMessage; a value Reddit did not show is null, and warnings says why.
Reddit shows views only to the post's author, so they come only for posts of the profile that checks, rounded the way Reddit shows them, like 5.2K. Each check of your own post adds one view on Reddit.
The job fails only when no link could be checked; a link that fails gets status failed and the check goes on. A run is charged when it checked at least one post, and your plan sets how many links one run may take.
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 }
} } }, … } }Queber Desktop runs on your computer, so a request can meet a sleeping laptop, a network switch, or a slow answer. With these rules a retry never posts twice.
Send an Idempotency-Key header, for example a UUID, with every request that creates or changes something. Repeating the request with the same key returns the first result instead of posting twice, so after a timeout or a 503 retry with the same key. Use a new key for every job and every changed request, never one key for a whole batch.
429 and 503 answers carry a Retry-After header and retryAfterSeconds in the error body when the wait is known. Wait that long, then repeat the same request with the same key. error.retryable tells whether the same request can succeed later; after desktop_offline the app has to be opened first.
Call GET /actions/status before sending a batch. connected: send it. reconnecting: the app dropped and is expected back, wait retryAfterSeconds. offline: open Queber Desktop and sign in. conflict: close all but one older desktop app.
While the app reconnects, a request waits up to 25 seconds, then answers 503 desktop_reconnecting. The X-Queber-Desktop-Wait-Ms header, from 0 to 60000, changes that wait; keep your HTTP timeout longer than the wait plus 30 seconds (150 for media import).
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
}
}If token setup, schema import, API calls or desktop execution does not work as expected, contact Queber support or write to us on Telegram.
Comment and reply on Reddit
A comment job leaves one comment under a post or as a reply to one of its comments, in a background tab of a browser profile. Check the post first for free, pick where to answer, create the job, then poll it until it completes.
Check the post
Send POST /actions/reddit/comments/check with profileId and link. It opens the post with that profile, free and outside the queue, and returns blocked (why commenting is not possible, or null), the media the comment box takes, and up to 300 comments in thread. It can take up to 3 minutes when the profile has to start.
Pick where to answer
Pass one comment id from thread as replyToCommentId, or leave it out to comment on the post. Every comment in thread carries its author, so a reply to a given user is a filter on author. A link to a comment in link works the same as its id.
Create the comment
Send POST /actions/jobs/run with automationType comment and platformData.reddit.comment: link, body (text or HTML), and at most one image, GIF, or video from importMedia. Add an Idempotency-Key; the answer is the job with status pending.
Read the result
Poll the job until it completes. resultUrl is the new comment's page, and resultData.reddit.comment holds its id, the comment it answered, and alreadyPosted when an earlier run had left it and nothing was sent again. A failed job names the reason, such as rate_limited with the minutes Reddit asks to wait.
The check is free. A comment is charged when Reddit shows it; a failed run and a run that finds the same comment already there cost nothing. The same Idempotency-Key never creates a second job.