Product · Developers

Intelligence API

A versioned, least-privilege REST API over the governed Fortune.ML platform. Authenticate with a scoped key; every request is checked against your live entitlement, data rights, and each capability's real system availability. A scope is necessary but never sufficient — it cannot manufacture data or a model the platform cannot honestly deliver.

v1

API version

v1

Stable, additive-only

Scopes

9

Least-privilege

Endpoints

9

Governed surface

Live capabilities

15

of 19 available now

Authentication

Keys are minted from the session-gated developer surface and are shown in plaintext exactly once. The server stores only a hash — it can verify a key but can never reveal it. Keys are TEST-mode only until a billing path is configured. Send your key as a bearer token.

curl https://fortune.ml/api/v1/fortune/account \
  -H "Authorization: Bearer fml_test_..."

Scopes

Each scope maps to the capability it depends on. At request time the granted scope is intersected with your live account entitlement, so prediction:read on a valid key still returns no prediction until predictions are available.

ScopeDepends onDescription
reference:readAPI_ACCESS onlyRead global security reference identity (customer-safe, no market numbers).
markets:readglobal market dataRead governed market data (quotes, bars) for entitled markets only.
stocks:readstandard stock intelligenceRead customer-safe stock intelligence sections.
daily:readdaily fortuneRead governed Daily Fortune output.
discovery:readdiscoveryRun allowlisted descriptive discovery queries.
alerts:readalertsRead this account's own alert history.
account:readAPI_ACCESS onlyRead this account's plan, entitlements, usage and credit balance.
prediction:readadvanced predictionRead prediction outlook availability (predictions not yet available).
exports:readexportRead export job status (bulk export activation is governed).

Endpoints

Every data endpoint is governed: it returns only customer-safe, cleared content and never a fabricated number. When the underlying data plane has nothing cleared, the response reports freshness UNAVAILABLE rather than inventing a value.

MethodPathScopeNotes
GET/api/v1/fortune/openapipublicMachine-readable OpenAPI document.
GET/api/v1/fortune/accountaccount:readYour plan, entitlements and credit balance.
GET/api/v1/fortune/usageaccount:readYour own 30-day metered usage summary.
GET/api/v1/fortune/reference/{symbol}reference:readGlobal reference identity — no market numbers.
GET/api/v1/fortune/markets/quote/{symbol}markets:readGoverned quotes for entitled markets only.
GET/api/v1/fortune/stocks/{symbol}stocks:readCustomer-safe stock intelligence sections.
GET/api/v1/fortune/dailydaily:readGoverned Daily Fortune briefing.
GET/api/v1/fortune/discoverydiscovery:readAllowlisted descriptive discovery only.
GET/api/v1/fortune/prediction/outlook/{symbol}prediction:readPrediction availability — predictions not yet available.

Response envelope

Every response shares one stable envelope: a request id for support and idempotency, the API version, the resolved capability, freshness, and metered usage. Errors use the same envelope with a machine-readable code.

{
  "apiVersion": "v1",
  "requestId": "req_...",
  "ok": true,
  "data": { "...": "..." },
  "meta": { "capability": "reference.identity", "freshness": "FRESH", "usageUnits": 1 }
}