API reference
Revisions
Restatement history: every period and line item whose value changed after we first recorded it, with each earlier value and when we recorded it. recorded_at is when our sync saw the value, not the filing date. The filing that restated a value can be found through the company's SEC filings link.
GET /api/v1/companies/{symbol}/financials/revisions
Requires an API key in the X-Api-Key header.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
symbol |
path | string | yes | Ticker symbol of a listed company, for example CSCO. Case-insensitive. |
items |
query | string | no | Comma-separated line items to check. Default: all. One of: revenue, net_income, eps_basic, dividends_per_share, free_cash_flow, shares_basic, shares_diluted, total_debt, cash_and_equivalents, roic, debt_to_fcf. |
from |
query | string | no | Only revisions with a period end on or after this date (YYYY-MM-DD). |
to |
query | string | no | Only revisions with a period end on or before this date (YYYY-MM-DD). |
limit |
query | integer | no | Number of revised period and item pairs. Default 50, maximum 200. |
Request
curl
curl "https://studyingstocks.com/api/v1/companies/CSCO/financials/revisions?items=revenue" \
-H "X-Api-Key: $STUDYING_STOCKS_API_KEY"
Python
import os
import requests
response = requests.get("https://studyingstocks.com/api/v1/companies/CSCO/financials/revisions", params={"items": "revenue"}, headers={"X-Api-Key": os.environ["STUDYING_STOCKS_API_KEY"]})
response.raise_for_status()
print(response.json())
JavaScript
const response = await fetch("https://studyingstocks.com/api/v1/companies/CSCO/financials/revisions?items=revenue", {
headers: { "X-Api-Key": process.env.STUDYING_STOCKS_API_KEY },
});
if (!response.ok) throw new Error(await response.text());
console.log(await response.json());
Response
Revised values, newest period first. Empty when nothing was revised.
{
"data": [
{
"period": "2026Q3",
"period_end": "2026-04-25",
"item": "revenue",
"current_value": 61500000000,
"versions": [
{
"version": 1,
"value": 61200000000,
"current": false,
"recorded_at": "2026-05-20T02:00:00Z"
},
{
"version": 2,
"value": 61500000000,
"current": true,
"recorded_at": "2026-08-14T02:00:00Z"
}
]
}
],
"meta": {
"symbol": "CSCO",
"currency": "USD",
"items": [
"revenue"
],
"count": 1,
"source": "SEC EDGAR",
"api_version": "v1",
"generated_at": "2026-10-16T02:00:00Z"
}
}
Response fields
| Field | Type | Description |
|---|---|---|
data[].period |
string | |
data[].period_end |
string | |
data[].item |
string | |
data[].current_value |
number or null | |
data[].versions[].version |
integer | |
data[].versions[].value |
number | |
data[].versions[].current |
boolean | |
data[].versions[].recorded_at |
string or null | When our sync recorded this value. |
meta.source |
string | Where the data comes from: always SEC EDGAR (calculated items are derived from it). |
meta.api_version |
string | |
meta.generated_at |
string | When this response was generated (responses are cached for a few hours). |
meta.symbol |
string | |
meta.currency |
string | |
meta.items |
array of string | |
meta.count |
integer |
Errors
| Status | Code | When |
|---|---|---|
| 401 | unauthenticated |
Missing or invalid API key. |
| 403 | subscription_inactive |
The Premium subscription behind the key is not active. |
| 404 | not_found |
The company is not covered. |
| 422 | invalid_parameter |
A query parameter is invalid. |
| 429 | rate_limited |
Rate limit reached. |
| 500 | server_error |
Something went wrong on our side. |
All errors have the same shape.