Roadie is a plain HTTPS API. Any language or tool that can make a request can use it. The data plane lives at /v1; the TypeScript equivalents of these calls are executed in CI (see documentation/docs/snippets/rest/).
Already speak the OpenAI wire format? A parallel OpenAI-compatible surface serves POST /openai/v1/chat/completions (and embeddings, models, images) at /openai/v1. This page documents Roadie’s native contract.
Authenticate every data-plane call with a secret key in the Authorization header:

Non-streaming chat

Response (normalized — plan §21.2):
The same call with fetch (Node 18+, Deno, Bun, browsers via a server proxy):
snippets/rest/chat.ts
(gatewayBaseUrl() and apiKey() are the tiny helpers at the top of snippets/rest/chat.ts that read ROADIE_BASE_URL / ROADIE_KEY.)

Streaming (SSE)

Add "stream": true and read Server-Sent Events. Each data: line is one JSON frame tagged with a type; the terminal sentinel is data: [DONE]. Lines beginning with : are heartbeat comments — ignore them.
A trimmed stream:
Parsing the stream by hand with fetch:
snippets/rest/chat.ts
Accept: application/x-ndjson negotiates newline-delimited JSON instead of SSE — the same frames, one JSON object per line, no data: prefix and no [DONE] sentinel.

Errors

Non-2xx responses use the uniform envelope. See the error reference.

Next steps

Node quickstart

Let the SDK handle retries, idempotency, and typed errors.

Error reference

Every error type and code, with how to handle each.