/v3/access/*. Every operation is typed and mapped to one scope. There is no raw proxy in V3.
Headers
API keys are rejected. A request with
apikey or x-api-key, or without a bearer, returns 401 external_oauth_bearer_required.
x-request-id. Include it in support requests.
Scopes
Request only the scopes you need. The user sees each scope on the consent screen.offline_access is the only non-Access scope; it controls refresh tokens.
The full scope to operation table is generated from the API catalog. Each operation’s reference page shows its scope. The discovery document lists every supported scope in
scopes_supported.
Environments and quotas
When the Test quota is used up, calls return
429 quota_exhausted with Retry-After set to the seconds until the UTC reset.
Rate limiting
Each authorization can make 600 requests per minute across/v3/access, /v3/vault-plus, and /v3/linked-accounts, with short bursts allowed. Responses carry RateLimit-Limit, RateLimit-Remaining, and RateLimit-Reset. Above the limit, calls return 429 rate_limited with recovery.action retry. Back off until RateLimit-Reset and retry.
Media
Media URLs in responses are proxied throughmedia.ofauth.com and are safe to embed. They expire; re-read the parent resource to get a fresh URL. See Media for formats and the Vault+ page for persistent storage.
Error handling
Every error has the shape{ error, recovery: { action }, requestId }. Branch on recovery.action, not on HTTP status alone. See Errors for the full list.
Node.js