Olaa

Developers

Olaa Public API

Create threads, run tasks, and download result files from your own applications.

Base URL: https://api.olaa.com/api/public/v1 · Markdown version

Authentication

Create a key in Settings → API keys. Personal keys act as you; team keys act as the workspace (admin-only, required for audit:read). Send `Authorization: Bearer ol_live_sk_…` or `x-api-key`.

curl https://api.olaa.com/api/public/v1/me -H "Authorization: Bearer $OLAA_API_KEY"

Core workflow

Create a thread → post a message (starts a run, returns 202) → poll the run → fetch the result → download files with a short-lived URL.

POST /threads
POST /threads/{id}/messages  { "content": "Build the weekly recap as PDF", "speed": "balanced" }
GET  /runs/{id}                → status: queued | running | requires_action | completed | failed
GET  /runs/{id}/result         → { text, files: [{ token, filename }] }
GET  /files/{token}/download-url

Idempotency, pagination, limits

Send `Idempotency-Key` on POSTs (24h). Lists are keyset-paginated with `limit` and `starting_after`. Rate limits are per key with `X-RateLimit-*` headers and `Retry-After` on 429. 402 means the workspace is out of credits.

Errors

All errors use `{ "detail": { "error": "<code>", "message": "<human>" } }` with codes unauthorized, insufficient_scope, not_found, validation_error, rate_limit_exceeded, insufficient_credits, thread_busy, run_timed_out, internal.

Endpoints

MethodPathScopeNote
GET/meanyKey owner and workspace
POST/threadsthreads:create
GET/threadsthreads:read
GET/threads/{id}threads:read
POST/threads/{id}/messagesmessages:create + runs:create202 with run
GET/threads/{id}/messagesmessages:read
GET/threads/{id}/runsruns:read
GET/runs/{id}runs:read
GET/runs/{id}/resultruns:readterminal runs only
POST/runs/{id}/cancelruns:create
GET/files/{token}/download-urlfiles:read15-minute URL
GET/creditsusage:read
GET/usage/summaryusage:read
GET/usage/dailyusage:read
GET/audit/eventsaudit:read (team key)