Access Matrix

Every public route with the credential it needs, the plan that unlocks it, the rate bucket it is metered on, and the outcome per plan. Generated from the API route policy.

Generated by pnpm --filter @philidor/api access:matrix -- --mdx from apps/api/src/lib/route-policy.ts, the same table that drives the OpenAPI security declarations and the cache invariant. Do not hand-edit; regenerate.

What each plan gets

PlanAPI key tierDefault rate limitCapabilities
Datadata100/minData API
Decisioningdecisioning600/minoverhang, risk_graph_signed_decisions
Embeddedembedded10000/minoverhang, risk_graph_signed_decisions, webhooks

A key is issued with its plan's default rate limit unless a different limit was agreed (recorded on the key as contracted_rpm); GET /v1/me reports the effective limit.

Routes

ok means the call is served; 401 means a key is required; 403 means the plan is too low. Anonymous callers are metered per address on the bucket shown; keyed callers on the key's own budget.

MethodPathPlanAnonymousDataDecisioningEmbeddedRate bucket (anonymous)Keyed
GET/v1/address/:address/positionsokokokokportfolio (10/60s per IP)max(key rpm, 10)/min per key
GET/v1/assetsokokokokpublic (10/60s per IP)the key rpm (X-RateLimit-Limit)
GET/v1/assets/:chain_id/:addressokokokokpublic (10/60s per IP)the key rpm (X-RateLimit-Limit)
GET/v1/assets/:symbol/historyokokokokpublic (10/60s per IP)the key rpm (X-RateLimit-Limit)
GET/v1/assets/enrichedData403okokokpublic (10/60s per IP)the key rpm (X-RateLimit-Limit)
GET/v1/assets/enriched/facetsData403okokokpublic (10/60s per IP)the key rpm (X-RateLimit-Limit)
GET/v1/basketsData403okokokbasketsRead (60/60s per IP)max(key rpm, 60)/min per key
GET/v1/baskets/:idData403okokokbasketsRead (60/60s per IP)max(key rpm, 60)/min per key
GET/v1/baskets/:id/changesData403okokokbasketsRead (60/60s per IP)max(key rpm, 60)/min per key
GET/v1/baskets/:id/methodology/versionsData403okokokbasketsRead (60/60s per IP)max(key rpm, 60)/min per key
GET/v1/baskets/:id/version/:versionIdData403okokokbasketsRead (60/60s per IP)max(key rpm, 60)/min per key
GET/v1/baskets/:id/versionsData403okokokbasketsRead (60/60s per IP)max(key rpm, 60)/min per key
POST/v1/baskets/:id/webhooksDecisioning403403okokbasketsWebhookWrite (30/60s per IP)family cap 30/min per key
DELETE/v1/baskets/:id/webhooks/:whIdDecisioning403403okokbasketsWebhookWrite (30/60s per IP)family cap 30/min per key
POST/v1/baskets/:id/webhooks/:whId/enableDecisioning403403okokbasketsWebhookWrite (30/60s per IP)family cap 30/min per key
POST/v1/baskets/:id/webhooks/:whId/replayDecisioning403403okokbasketsWebhookWrite (30/60s per IP)family cap 30/min per key
GET/v1/chainsokokokokpublic (10/60s per IP)the key rpm (X-RateLimit-Limit)
POST/v1/chatokokokokuserChat (2/60s per IP)2/60s per IP
GET/v1/curatorsokokokokpublic (10/60s per IP)the key rpm (X-RateLimit-Limit)
GET/v1/curators/:idokokokokpublic (10/60s per IP)the key rpm (X-RateLimit-Limit)
GET/v1/curators/:id/eventsokokokokpublic (10/60s per IP)the key rpm (X-RateLimit-Limit)
GET/v1/docsokokokokpublic (10/60s per IP)the key rpm (X-RateLimit-Limit)
GET/v1/eventsokokokokpublic (10/60s per IP)the key rpm (X-RateLimit-Limit)
GET/v1/events/:idokokokokpublic (10/60s per IP)the key rpm (X-RateLimit-Limit)
GET/v1/events/group/:groupKeyokokokokpublic (10/60s per IP)the key rpm (X-RateLimit-Limit)
GET/v1/events/streamData403okokokpublic (10/60s per IP)the key rpm (X-RateLimit-Limit)
GET/v1/evidence/signersokokokokpublic (10/60s per IP)the key rpm (X-RateLimit-Limit)
GET/v1/graph/breachDecisioning401403okokgraph (600/60s per IP)max(key rpm, 600)/min per key
POST/v1/graph/checkDecisioning401403okokgraphCheck (60/60s per IP)family cap 60/min per key
GET/v1/graph/curator-exposureDecisioning401403okokgraph (600/60s per IP)max(key rpm, 600)/min per key
GET/v1/graph/decision/:id/verifyokokokokgraph (600/60s per IP)max(key rpm, 600)/min per key
GET/v1/graph/expected-dependency-lossDecisioning401403okokgraph (600/60s per IP)max(key rpm, 600)/min per key
GET/v1/graph/expected-dependency-loss/summaryDecisioning401403okokgraph (600/60s per IP)max(key rpm, 600)/min per key
GET/v1/graph/incident-exposureDecisioning401403okokgraph (600/60s per IP)max(key rpm, 600)/min per key
GET/v1/graph/incident-exposure/summaryDecisioning401403okokgraph (600/60s per IP)max(key rpm, 600)/min per key
GET/v1/graph/look-throughDecisioning401403okokgraph (600/60s per IP)max(key rpm, 600)/min per key
GET/v1/graph/snapshot/:idokokokokgraph (600/60s per IP)max(key rpm, 600)/min per key
GET/v1/healthokokokokhealth (120/60s per IP)120/60s per IP
GET/v1/indicesokokokokinternal (120/60s per IP)max(key rpm, 120)/min per key
GET/v1/indices/:idokokokokinternal (120/60s per IP)max(key rpm, 120)/min per key
GET/v1/indices/:id/censusokokokokinternal (120/60s per IP)max(key rpm, 120)/min per key
GET/v1/indices/:id/constituentsokokokokinternal (120/60s per IP)max(key rpm, 120)/min per key
GET/v1/indices/:id/levelsokokokokinternal (120/60s per IP)max(key rpm, 120)/min per key
GET/v1/indices/:id/methodologyokokokokinternal (120/60s per IP)max(key rpm, 120)/min per key
GET/v1/indices/:id/noticesokokokokinternal (120/60s per IP)max(key rpm, 120)/min per key
GET/v1/indices/:id/qualityokokokokinternal (120/60s per IP)max(key rpm, 120)/min per key
GET/v1/indices/:id/reconciliationsokokokokinternal (120/60s per IP)max(key rpm, 120)/min per key
GET/v1/indices/:id/runs/:valueDateokokokokinternal (120/60s per IP)max(key rpm, 120)/min per key
GET/v1/integrations/royco/markets/:slugokokokokpublic (10/60s per IP)the key rpm (X-RateLimit-Limit)
GET/v1/marketsokokokokpublic (10/60s per IP)the key rpm (X-RateLimit-Limit)
GET/v1/markets/:idokokokokpublic (10/60s per IP)the key rpm (X-RateLimit-Limit)
GET/v1/markets/:id/eventsokokokokpublic (10/60s per IP)the key rpm (X-RateLimit-Limit)
GET/v1/me401okokokpublic (10/60s per IP)the key rpm (X-RateLimit-Limit)
GET/v1/methodologyokokokokpublic (10/60s per IP)the key rpm (X-RateLimit-Limit)
GET/v1/methodology/vaultokokokokpublic (10/60s per IP)the key rpm (X-RateLimit-Limit)
GET/v1/newsletter/confirmokokokokpublic (10/60s per IP)the key rpm (X-RateLimit-Limit)
POST/v1/newsletter/subscribeokokokokpublic (10/60s per IP)the key rpm (X-RateLimit-Limit)
GET/v1/openapi.jsonokokokokpublic (10/60s per IP)the key rpm (X-RateLimit-Limit)
GET/v1/oracle-vector/freshnessData403okokokpublic (10/60s per IP)the key rpm (X-RateLimit-Limit)
GET/v1/porokokokokpublic (10/60s per IP)the key rpm (X-RateLimit-Limit)
GET/v1/por/:issuerokokokokpublic (10/60s per IP)the key rpm (X-RateLimit-Limit)
GET/v1/por/:issuer/historyokokokokpublic (10/60s per IP)the key rpm (X-RateLimit-Limit)
POST/v1/portfolio/overlapDecisioning401403okokpublic (10/60s per IP)the key rpm (X-RateLimit-Limit)
GET/v1/protocolsokokokokpublic (10/60s per IP)the key rpm (X-RateLimit-Limit)
GET/v1/protocols/:idokokokokpublic (10/60s per IP)the key rpm (X-RateLimit-Limit)
GET/v1/rates/:slugokokokokinternal (120/60s per IP)max(key rpm, 120)/min per key
GET/v1/rates/:slug/historyokokokokinternal (120/60s per IP)max(key rpm, 120)/min per key
GET/v1/research/backtestsokokokokpublic (10/60s per IP)the key rpm (X-RateLimit-Limit)
GET/v1/research/claimsokokokokpublic (10/60s per IP)the key rpm (X-RateLimit-Limit)
GET/v1/research/model-healthokokokokpublic (10/60s per IP)the key rpm (X-RateLimit-Limit)
GET/v1/research/predictionsokokokokpublic (10/60s per IP)the key rpm (X-RateLimit-Limit)
GET/v1/research/sourcesokokokokpublic (10/60s per IP)the key rpm (X-RateLimit-Limit)
GET/v1/research/validation-reportsokokokokpublic (10/60s per IP)the key rpm (X-RateLimit-Limit)
GET/v1/reviewersokokokokpublic (10/60s per IP)the key rpm (X-RateLimit-Limit)
GET/v1/rwaokokokokpublic (10/60s per IP)the key rpm (X-RateLimit-Limit)
GET/v1/rwa/:asset_idokokokokpublic (10/60s per IP)the key rpm (X-RateLimit-Limit)
GET/v1/rwa/coverageokokokokpublic (10/60s per IP)the key rpm (X-RateLimit-Limit)
GET/v1/rwa/facetsokokokokpublic (10/60s per IP)the key rpm (X-RateLimit-Limit)
GET/v1/rwa/stats/historyData403okokokpublic (10/60s per IP)the key rpm (X-RateLimit-Limit)
GET/v1/security-eventsokokokokpublic (10/60s per IP)the key rpm (X-RateLimit-Limit)
GET/v1/security-events/lossesokokokokpublic (10/60s per IP)the key rpm (X-RateLimit-Limit)
GET/v1/signalsokokokokpublic (10/60s per IP)the key rpm (X-RateLimit-Limit)
GET/v1/signals/:idokokokokpublic (10/60s per IP)the key rpm (X-RateLimit-Limit)
GET/v1/stablecoins/backingokokokokpublic (10/60s per IP)the key rpm (X-RateLimit-Limit)
GET/v1/statsokokokokpublic (10/60s per IP)the key rpm (X-RateLimit-Limit)
GET/v1/stats/historyData403okokokpublic (10/60s per IP)the key rpm (X-RateLimit-Limit)
GET/v1/stats/rating-dynamicsData403okokokpublic (10/60s per IP)the key rpm (X-RateLimit-Limit)
GET/v1/statusokokokokpublic (10/60s per IP)the key rpm (X-RateLimit-Limit)
GET/v1/users/:address/agentsokokokokpublic (10/60s per IP)the key rpm (X-RateLimit-Limit)
PUT/v1/users/:address/agentsokokokokuserWrite (10/60s per IP)10/60s per IP
GET/v1/users/:address/agents/auth-messageokokokokpublic (10/60s per IP)the key rpm (X-RateLimit-Limit)
GET/v1/vault/:network/:addressokokokokpublic (10/60s per IP)the key rpm (X-RateLimit-Limit)
GET/v1/vault/:network/:address/eventsokokokokpublic (10/60s per IP)the key rpm (X-RateLimit-Limit)
GET/v1/vault/:network/:address/holdersData403okokokpublic (10/60s per IP)the key rpm (X-RateLimit-Limit)
GET/v1/vault/:network/:address/holders/historyData403okokokpublic (10/60s per IP)the key rpm (X-RateLimit-Limit)
GET/v1/vault/:network/:address/marketsData403okokokpublic (10/60s per IP)the key rpm (X-RateLimit-Limit)
GET/v1/vault/:network/:address/score-historyokokokokpublic (10/60s per IP)the key rpm (X-RateLimit-Limit)
GET/v1/vault/:network/:address/snapshotsokokokokpublic (10/60s per IP)the key rpm (X-RateLimit-Limit)
GET/v1/vault/:network/:address/strategiesData403okokokpublic (10/60s per IP)the key rpm (X-RateLimit-Limit)
GET/v1/vault/:network/:address/strategyData403okokokpublic (10/60s per IP)the key rpm (X-RateLimit-Limit)
GET/v1/vaultsokokokokpublic (10/60s per IP)the key rpm (X-RateLimit-Limit)
GET/v1/vaults/:idokokokokpublic (10/60s per IP)the key rpm (X-RateLimit-Limit)
POST/v1/vaults/batchokokokokpublic (10/60s per IP)the key rpm (X-RateLimit-Limit)
GET/v1/vaults/changesData403okokokpublic (10/60s per IP)the key rpm (X-RateLimit-Limit)
GET/v1/vaults/scoresData403okokokpublic (10/60s per IP)the key rpm (X-RateLimit-Limit)
GET/v1/vaults/with-critical-incidentsokokokokpublic (10/60s per IP)the key rpm (X-RateLimit-Limit)

On this page

Raw