Skip to main content

REST statuses

A 403 can come from a missing scope or from an account restriction, so read the error code before you act. A new key with the right scopes does not fix a suspended account. Contact support@centaur.io. Webhook routes also return 403 PARTNER_REQUIRED for accounts that are not partners. Missing or inaccessible stats IDs do not return 404. They appear in the response metadata. The generated endpoint pages show each read’s error examples. Log the requestId from every failure and include it when you contact support. Set explicit time bounds and limits when exploring large result sets. When a response is narrower than you expected, check the applied time bounds, and remember that rows outside your access are left out without a warning.

Ambiguous identifiers

AMBIGUOUS_IDENTIFIER means a value in traderRefs or assetRefs matches more than one entity. REST returns error.details.entity, error.details.ref, and error.details.candidates. Each candidate has a numeric id, a name, and a nullable slug. Asset candidates also have a nullable assetClass. MCP returns isError: true with the candidates’ IDs, names, and slugs in the error text. To retry, replace the *Refs field with its *Ids field and the intended candidate’s numeric ID. Do not send both fields. Retrying with a returned slug can fail again if the slug is shared. Unknown references do not cause this error. They match nothing, and other references in the same filter still apply. See identifier rules.

MCP failures

MCP calls fail for missing credentials, an invalid OAuth token or wrong audience, a token without a Centaur MCP scope, invalid tool arguments, or a used-up quota. OAuth failures include WWW-Authenticate metadata that points to the protected-resource metadata URL. Scope failures can include insufficient_scope. Invalid or wrong-audience tokens can include invalid_token.

Limits

Guidance on current positioning, performance, and questions no single read answers is in Which read answers which question. Partial pages are covered in Pagination.

Rate limits

Each API key has a request allowance. The default is 1000 requests, refilled in full one hour after the previous refill. Limits vary by account and environment. A used-up allowance returns 429 RATE_LIMITED, with Retry-After when available. Treat it as a normal back-off-and-retry condition.

MCP quota

MCP has one usage quota per Centaur user, shared by every connected client. The default is 1000 operations per hour. Active partners get their Partner Tier quota, initially 10000 operations per hour. A schema-valid tools/call or resources/read uses one operation before it runs. Discovery, listing, authentication failures, validation failures, and quota rejections use none. A tool that hits the quota returns isError: true with details under io.centaur/mcp-quota. A resource read returns the equivalent JSON-RPC error. Both include the reset time when available.
Last modified on November 7, 2026