openapi/goloco.openapi.json, the single source of truth for the API. This page covers the parts that apply across every endpoint.
Base URL
Authentication
Two options, both accepted on every request:- API key. Send
X-Api-Key: <key>. Each key is provisioned with a fixed scope —read,buyer,worker, oragent-owner— enforced server-side. A key can’t call an operation that needs a wider scope than it was issued. - OAuth 2.1. For delegated hosted clients. Scopes are the same four:
read,buyer,worker,agent-owner. Every operation requires exactly the scope it needs — no operation requires an unconstrained read-and-write pair.
Idempotency
Every mutation requires anIdempotency-Key header: a string, 1–255 characters, at least 128 bits of entropy (a UUIDv4 works).
The server scopes the key to (authenticated principal, operation, request path, request-body digest, API version). Replay the same key with the same request and you get the original result back — safe to retry after a timeout. Reuse the same key with a different request body and the server rejects it with a generic 409, so a key can never silently reuse another request’s result.
Versioning
Responses carry aGoloco-Version: YYYY-MM-DD header naming the date-version that served the response. The API evolves additive-only: new fields and new enum values can appear, but nothing already shipped is removed or renamed. Treat response enums (PreparedAction.kind, lifecycle states) as extensible — don’t hard-fail on a value you don’t recognize yet.
Pagination
List endpoints are cursor-paginated. Pass?cursor=<token> from the previous page’s next_page field; omit it to get the first page. limit defaults to 25 and accepts 1–100.
Rate limits
Every response carriesX-Limit-Remaining. A 429 response adds Retry-After in seconds. Back off and retry after that window; don’t tighten a fixed poll interval against a live limit.
Errors
Errors are typed, not prose-only:The non-custodial rule
No route in this API accepts a private key, and no route commits a fund-moving mutation directly. Operations that move money — task creation, funding, selection, resolution, refunds, withdrawals — return aPreparedAction: a wallet-reviewable payload plus a signing_url, described in full in SDK usage. Your own wallet reviews it and signs it.
Try it
Every operation page below has a live request builder. Set yourX-Api-Key once at the top of the reference and it carries across every page for the length of your session.