Latest facts for specific series keys
const url = 'https://api.stockalloy.com/api/b2b/facts/latest/by-series';const options = { method: 'POST', headers: {'X-API-Key': '<X-API-Key>', 'Content-Type': 'application/json'}, body: '{"ticker":"DECK","series_keys":["91b2c4d6e8f0a2b4c6d8e0f2a4b6c8d0e2f4a6b8c0d2e4f6a8b0c2d4e6f8a0b2"]}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request POST \ --url https://api.stockalloy.com/api/b2b/facts/latest/by-series \ --header 'Content-Type: application/json' \ --header 'X-API-Key: <X-API-Key>' \ --data '{ "ticker": "DECK", "series_keys": [ "91b2c4d6e8f0a2b4c6d8e0f2a4b6c8d0e2f4a6b8c0d2e4f6a8b0c2d4e6f8a0b2" ] }'Authorizations
Section titled “Authorizations”Request Bodyrequired
Section titled “Request Bodyrequired”object
Stock ticker, e.g. DECK.
Zero-padded 10-digit SEC CIK, e.g. 0001011570.
Company set (search endpoints only).
Company set (search endpoints only).
Optional XBRL metric ID filter, e.g. us-gaap#Revenues. Facts endpoints require a single-company scope (ticker or cik).
A single stable series key (sha256 hex).
Up to 100 stable series keys.
Example
{ "ticker": "DECK", "series_keys": [ "91b2c4d6e8f0a2b4c6d8e0f2a4b6c8d0e2f4a6b8c0d2e4f6a8b0c2d4e6f8a0b2" ]}Responses
Section titled “Responses”Latest fact rows for the requested series.
object
Echoes the request filter.
object
Stable public key for this fact (sha256 hex).
Stable public key for the series this fact belongs to (company × metric × dimension slice × unit).
XBRL concept ID, e.g. us-gaap#Revenues.
Human-readable metric name.
duration:START..END for flows or instant:DATE for balances.
Calendar quarter (1-4) in which the period ends.
E.g. monetary:USD, shares, pure.
E.g. monetary, shares, pure.
Exact decimal value as a string (full units, not thousands). Equal to value_scaled_int × 10^scale.
Exact integer significand as a string.
Power-of-ten exponent applied to value_scaled_int.
SEC accession number of the winning filing.
E.g. 10-K, 10-Q, 10-K/A.
True when the fact’s period matches the filing’s own reporting period (as opposed to a restated prior period).
Opens the SEC filing with this figure highlighted (https://stockalloy.com/api/evidence/{id}/open?...).
Example
{ "scope": "company", "rows": [ { "period_kind": "instant", "is_consolidated": true } ]}Headers
Section titled “Headers”Requests allowed per minute for this key.
Requests remaining in the current minute window.
Unix timestamp (seconds) when the window resets.
Invalid request — missing/invalid fields, malformed JSON, or an unsupported scope combination.
object
Human-readable error message.
Example
{ "error": "query is required"}Missing or invalid API key.
object
Human-readable error message.
Example
{ "error": "API key required"}Key revoked/disabled/expired, account disabled, key not entitled for this product, or cross-company search not enabled for this key.
object
Human-readable error message.
Example
{ "error": "API key has expired"}Company not found (unknown ticker or CIK).
object
Human-readable error message.
Example
{ "error": "Unknown ticker: ZZZZ"}Rate limit exceeded (per-minute) or quota exceeded (daily/monthly, account-level or per-key). Distinguish by body shape.
object
Seconds until the window resets.
Requests allowed per minute for this key.
object
daily quota exceeded or monthly quota exceeded.
account sums usage across all keys on the account; api_key is a per-key cap.
Examples
Per-minute rate limit
{ "error": "Rate limit exceeded", "retryAfter": 31, "limit": 60, "windowMs": 60000}Monthly quota
{ "error": "monthly quota exceeded", "quota": "monthly", "scope": "account", "limit": 5000, "used": 5000}Headers
Section titled “Headers”Requests allowed per minute for this key.
Requests remaining in the current minute window.
Unix timestamp (seconds) when the window resets.
Seconds to wait before retrying (429 only).
Unexpected server error.
object
Human-readable error message.
Example
{ "error": "Facts lookup failed"}The verified-facts backend is temporarily unavailable. Transient — retry with backoff. This is an infrastructure condition, not a data gap.
object
Human-readable error message.
Example
{ "error": "Facts backend unavailable"}