Reference
Errors
Every response, success or failure, uses the same envelope. Failures set success to false and put a human-readable message in error.
{
"success": false,
"error": "criteria.priceMax: Number must be less than or equal to 1"
}400Validation failed
The body did not match the schema. The message names the offending field, e.g. criteria.priceMax. Unknown fields are rejected rather than ignored, so a typo fails loudly instead of silently matching everything.
401Missing or invalid key
No Authorization header, a malformed key, or a revoked one. Send Authorization: Bearer rivo_live_...
403No active subscription
The key is valid but the account behind it is not subscribed. Reactivate the subscription and the same key works again.
404Not found
The strategy does not exist or belongs to a different account. Ownership is checked on every strategy path.
429Rate limited
Too many requests this minute. The response carries a retry-after header with the seconds until the window resets.
Over MCP
The MCP server returns the same auth and rate-limit errors as HTTP status codes before the protocol handshake, so a bad key fails at connection time, not mid-session. Tool calls that fail validation surface the same field-level messages as REST. Rate limits are covered on the Rate limits page.