Quant Dashboard for Traders, MCP for Agents.
Reference
Failures return a stable code your agent can branch on, plus a human-readable message. Rate limits are per-IP with an explicit retry signal.
Every failure shares one shape:
{ "error": "<code>", "message": "<human-readable>" }The error code is stable — branch on it, not the message:
| Code | Meaning |
|---|---|
unauthenticated | No credential on a gated route. |
invalid_token | PAT malformed, revoked, or unknown. |
premium_required | Valid PAT, but tier is free. |
invalid_credentials | Email / password mismatch. |
email_not_verified | Confirm your email first. |
email_taken | Account already exists. |
weak_password | Under the minimum length. |
bad_request | Malformed query or body. |
not_found | No such article / slug. |
rate_limited | Over the IP cap — see Retry-After. |
upstream_unavailable | A backend is temporarily down. |
The public ingress caps requests at 120 req/min/IP. Over the cap returns 429 rate_limited with both a retry_after_seconds field and a standard Retry-After header.
HTTP/1.1 429 Too Many Requests
Retry-After: 12
{ "error": "rate_limited",
"message": "Slow down — limit 120/min. Retry in 12s.",
"retry_after_seconds": 12 }429, sleep for retry_after_seconds before retrying. Per-PAT limits are on the roadmap; budgeting your own request rate now keeps you well clear of the cap.