1. API
  2. Every status,

Errors

Every status,
and what to do.

Seven statuses cover the token surface. The body always says why, and where it can, what to do next.

StatusNameWhen, and what the body says
400Bad requestA parameter is out of bounds or malformed. Numeric query parameters are clamped to their documented range; a missing required field or an unparseable body returns 400 with the reason.
401UnauthorizedNo token, a revoked token, or a token for a subscription that is no longer valid. Create or rotate tokens under Account, then API Access.
403Plan requiredThe endpoint needs a higher plan than the token's subscription. The body carries upgrade_required: true, required_tier and your_tier; each endpoint page states its tier. The same 403 without upgrade_required means the account has no active paid or trial subscription.
404Not foundThe path does not exist. The JSON body carries did_you_mean with the nearest documented paths and their docs URLs, plus the index URL.
424Upstream unavailableThe data feed did not answer for this ticker or window. Retry after a few seconds; the platform never returns a 502 for this case because the edge would strip the body.
429Rate limitedPer-token limits of 60 requests a minute, 1,000 an hour and a monthly allowance by plan. Retry-After carries the seconds until the window opens; the X-RateLimit-* headers show the remaining budget on every response.
503Service unavailableOnly the flow endpoint uses this, when the intraday volume feed is down. Retry later.

Payload shapes

Every error is JSON,
and says what to do.

The envelope never changes: an error string, plus the fields below where they help a client recover.

Shapestoken surface, /api/mcp/data
// 401: no token, revoked, or expired
{"error": "Invalid or revoked token"}

// 403: the endpoint sits above the account's plan
{"error": "This endpoint requires the Premium plan (your plan: Basic). Upgrade at https://apexvol.com/pricing.",
 "upgrade_required": true, "required_tier": "premium", "your_tier": "basic"}

// 403: the account has no active paid or trial subscription
{"error": "API/MCP access requires an active subscription. Subscribe at https://apexvol.com/pricing.",
 "tier_required": "basic"}

// 404: unknown path, with the nearest real ones
{"error": "No endpoint at /api/mcp/data/iv_rank/AAPL",
 "did_you_mean": ["/api/mcp/data/iv-rank/{ticker}", "/api/mcp/data/iv-crush/{ticker}"],
 "docs": "https://apexvol.com/docs/api"}

// 424: the data feed did not answer for this ticker or window
{"error": "No two-sided quote to price the front straddle for XYZ", "upstream": true}

// 429: over the per-token limit; Retry-After header carries the seconds
{"error": "MCP rate limit exceeded: 60 per minute"}

// 429: monthly allowance spent
{"error": "Monthly limit reached (10,000 data requests). Resets on the 1st.",
 "budget_exceeded": true, "used": 10000, "limit": 10000, "unit": "data_requests"}

// 500: quote request_id to support
{"error": "Internal error processing this request. It has been logged.", "request_id": "ab12cd34"}

// 503: the intraday volume feed behind options flow is down
{"error": "Options flow data is temporarily unavailable", "data_unavailable": true}

Every response, success or error, carries X-RateLimit-Remaining-Minute, X-RateLimit-Remaining-Hour and the monthly budget header, so a client can pace itself before it ever sees a 429. Server errors carry a request_id that matches our logs; quote it to [email protected].

Included with
every paid plan.

From $55 a month, tier-matched: your token queries the data your plan includes and Pro unlocks the full surface.

Real market data, not a sandbox. See it live on AAPL.

7 days free, cancel anytime Card required · no charge for 7 days
Start trial →