Revoye API Documentation
- Updated
- Reading time
- 3 min
The Revoye API takes a prompt and returns an answer from one of the AI accounts you are already
signed into. You send a request to https://revoyeapi.degird.com/v1/completions with a bearer token; Revoye puts
the job in your own queue, dispatches it to a free agent in the browser on your own machine, and
returns the answer the agent read back. There are no provider API keys anywhere in the path, and no
per-token charge.
Before the API will do anything
The API is one end of an ecosystem. The other end is your own machine, and it has to be set up before a prompt has anywhere to go:
- A Revoye account, with a verified email.
- Revoye Desk installed and paired — the desktop app that gives your machine a signed identity and an authenticated connection. Windows or macOS. Download
- The Revoye extension installed in the Chromium browser profile where you are signed into your AI accounts, with at least one agent created. Download
- An API key, created in the dashboard.
If you have not done this yet, start here. If you have, the quickstart is four commands long.
Looking for the chat instead? Revoye's other half — sending one prompt to several of your AI accounts at once and comparing the answers — needs only the browser extension, with no account, no desktop app and no API key. These docs do not cover it; the chat page does. Both halves drive the same agents, so anything you set up here works for both.
Start here
| Quickstart | Key, status check, first prompt. About five minutes |
| How the API executes a prompt | What happens between send and the answer, and why it takes as long as it does |
| Authentication | Creating keys, scopes, rotation, what a key cannot do |
API reference
POST /v1/completions | The native endpoint. Everything Revoye can do is expressible here |
POST /v1/chat/completions | OpenAI-shaped, for existing SDKs |
GET /v1/models | Your enabled providers, in the shape a model picker expects |
GET /v1/status | Can anything answer right now? |
| OpenAPI specification | The machine-readable contract |
Guides
| Retrying safely | Idempotency keys, and why a lost response is not a lost job |
| Webhooks | Signature verification and at-least-once delivery |
| Errors | Every code, whether to retry, and what it says about your fleet |
| Rate limits and capacity | Your limits, our limits, and the difference |
| Using an OpenAI SDK | One base URL change, and the three things that differ |
| Best practices | Getting the most out of a browser-backed router |
Three things to know before you build
wait: true is a long poll, not a synchronous call. The job is durable the moment it is
accepted. A dropped connection loses nothing — the result is at GET /v1/completions/{id} or on its
way to your webhook.
Prompts take 20 to 90 seconds. A browser is typing and a model is generating into a page. You get throughput by running more agents, not by waiting less. Design for it: queue work, take webhooks, and do not put Revoye behind a spinner someone is watching.
Your machine has to be on. If no paired device is connected, work queues until one returns. That is a feature for batch work and a constraint for everything else.
Everything is versioned under /v1
/v1 is a stable contract. Additive changes — a new optional field, a new error code — may ship at
any time. Anything that would break a working integration ships as /v2 alongside it.