API overview.
Every wrxstack endpoint follows the same shape: bearer-token auth, JSON in, JSON out, idempotency on the side, predictable error envelopes. Read this page once; the per-resource pages assume you already know what's here.
Base URL
All endpoints live under one host:
https://api.wrxstack.com/v1
The version segment is part of the URL and is the only place we make breaking changes. v1 is stable; we'll publish a v2 when a breaking change is unavoidable and run v1 in parallel for at least twelve months after that.
Authentication
Every request needs a bearer token in the Authorization header. Tokens are workspace-scoped.
curl https://api.wrxstack.com/v1/tasks -H "Authorization: Bearer $WRX_API_KEY" Two token types:
- API keys (
sk_live_...) live in Settings → API keys. Recommended for server-to-server use. - OAuth access tokens are issued via the OAuth 2.0 authorization code flow. Recommended for end-user-facing apps that act on behalf of a user.
Idempotency
Every write endpoint accepts an Idempotency-Key header. Two requests with the same key within 24 hours return the same response and produce only one side effect. Highly recommended for anything you might retry.
curl -X POST https://api.wrxstack.com/v1/tasks -H "Authorization: Bearer $WRX_API_KEY" -H "Idempotency-Key: $(uuidgen)" -H "Content-Type: application/json" -d '{"title":"Review MSA"}'
Pagination
List endpoints return a cursor. Pass it back as cursor= to get the next page. Page size defaults to 50 and maxes at 200.
{
"data": [ ... ],
"cursor": "eyJpZCI6Inb...",
"has_more": true
} Rate limits
Per token, per minute. Limits rise on paid workspaces; the exact figures for your workspace are shown in the product.
| Workspace | Reads | Writes | Assistant runs |
|---|---|---|---|
| Free | 120 | 30 | 10 |
| Paid | up to 3,000 | up to 1,000 | up to 300 |
| Larger teams | Custom | Custom | Custom |
The current state of your token is in the response headers:
X-RateLimit-Limit: 600 X-RateLimit-Remaining: 542 X-RateLimit-Reset: 1716235200
Errors
Standard HTTP status codes plus a JSON body with a stable error shape:
{
"error": {
"code": "resource_not_found",
"message": "Task tsk_01HQ3K... does not exist",
"request_id": "req_01HQ3K...",
"docs": "https://wrxstack.com/docs/api/tasks.html"
}
} Common codes:
| HTTP | Code | Meaning |
|---|---|---|
| 400 | invalid_request | Body malformed or required field missing |
| 401 | unauthenticated | No token, expired token, or wrong token type |
| 403 | forbidden | Token valid but scope insufficient |
| 404 | resource_not_found | Resource missing or not visible to caller |
| 409 | conflict | Idempotency-key collision or stale write |
| 429 | rate_limited | Slow down; check the headers |
| 500 | internal_error | Our fault; include the request_id when you tell us |
Next steps
- Assistants API
- Tasks API
- Webhooks for push delivery instead of polling