Wisesheets

Wisesheets

API Dashboard

REST API reference

Wisesheets Financial Data API

Standardized income statements, balance sheets, cash flow, and financial metrics for US stocks, sourced from SEC filings and built so every number can be traced back to XBRL.

SourceSEC EDGAR XBRL filings
TraceabilityCitation on every value
FreshnessSynced within 15 minutes
Coverage10,412 US stocks

Create a free account to get your API key.

Get your API key

Use with AI agents

Wisesheets ships a hosted MCP (Model Context Protocol) server, so AI agents and code editors that support MCP can pull financial data directly, no code required. Add the URL below as a custom connector or MCP server, then ask for company financials, prices, or metrics in plain language.

https://mcp.wisesheets.io/v1/mcp?apikey=your_api_key

Replace your_api_key with your Wisesheets API key. Sign in to have it filled in automatically.


Every app calls this feature something slightly different, but the flow is the same: add a custom connector or MCP server that points at the URL above.

In Claude, look for Settings → Connectors.

  1. 1Open Settings → Connectors in Claude (web or desktop).
  2. 2Scroll to the bottom and click "Add custom connector".
  3. 3Enter Wisesheets as the name and paste the MCP server URL above (with your API key) as the Remote MCP server URL, then click Add.
  4. 4Click Connect on the connector, then enable it in a chat from the tools (+) menu.

Custom connectors are in beta and available on Free, Pro, Max, Team, and Enterprise (Free is limited to one). On Team and Enterprise, an Owner must first add the connector under Organization settings → Connectors before members can connect.

Custom connector and MCP support varies by app and plan. If your agent doesn't support remote MCP servers yet, use the REST API instead.

Quick Start

The Wisesheets API is a standard REST API that authenticates with a Bearer token. The base URL is https://api.wisesheets.io/v1/. Every response follows the same envelope structure with a data array and a meta object, so you write your parsing logic once and reuse it across every endpoint. The examples below cover Python, JavaScript, cURL, and Google Sheets Apps Script.

1. Set your environment variable

Terminal
export WISESHEETS_API_KEY="wsh_live_your_key_here"

2. Make your first call

1import requests, os23api_key = os.environ["WISESHEETS_API_KEY"]4resp = requests.get(5    "https://api.wisesheets.io/v1/financials/?tickers=AAPL&metrics=revenue&period=latest",6    headers={"Authorization": f"Bearer {api_key}"},7)8data = resp.json()["data"][0]9print(f"{data['companyName']} revenue: {data['value']{"}"}")

Authentication

Every request to the Wisesheets API requires a Bearer token passed in the Authorization header. Your API key is a secret, so store it in an environment variable or a secrets manager and read it at runtime. Keys are scoped to your account and plan, and you can inspect your current quota and capabilities at any time via the /v1/me/ endpoint.

Terminal
# Good: key in an environment variable
curl "https://api.wisesheets.io/v1/financials/?tickers=AAPL&metrics=revenue" \
  -H "Authorization: Bearer $WISESHEETS_API_KEY"

# Bad: key hardcoded in source
curl "https://api.wisesheets.io/v1/financials/?tickers=AAPL&metrics=revenue" \
  -H "Authorization: Bearer wsh_live_abc123..."

Ask your AI Assistant

Store my Wisesheets API key in a .env file and read it from there in my script, don't paste the key directly into the code.

Company Profile

GET

Returns a reference profile for a single company. Pass a ticker symbol like AAPL or a 10-digit CIK. The API treats all-digit tokens as CIKs (left-padded to 10 digits) and everything else as a case-insensitive ticker. The response tells you which datasets are available for that company, which is useful for checking coverage before you build a workflow around a specific ticker.

GEThttps://api.wisesheets.io/v1/companies/AAPL
Name
Type
Description
ticker_or_cikRequired
stringpath
Ticker or CIK in the URL path. Tickers are case-insensitive; numeric values are treated as CIKs.
1import requests, os23api_key = os.environ["WISESHEETS_API_KEY"]4resp = requests.get(5    "https://api.wisesheets.io/v1/companies/AAPL",6    headers={"Authorization": f"Bearer {api_key}"},7)8print(resp.json())
Try It Live

Start with the common fields. Advanced parameters use API defaults until you open and edit them.

Common parameters

Required · path

Ticker or CIK in the URL path. Tickers are case-insensitive; numeric values are treated as CIKs.

GET /v1/companies/{ticker_or_cik}

Get an API key to run live requests

You can still review the example response below. Create a free key when you're ready to try this endpoint with real data.

Create free API key
Example response
{
  "data": {
    "name": "Apple Inc.",
    "ticker": "AAPL",
    "cik": "0000320193",
    "exchange": "Nasdaq",
    "sic": "3571",
    "sicDescription": "Electronic Computers",
    "fiscalYearEnd": "0926",
    "availableDatasets": ["financials", "filings"]
  }
}

Ask your AI Assistant

Using the Wisesheets API with my key in .env, call the Company Profile endpoint and summarize the result for me.

EOD Prices

GET

Returns persisted end-of-day price rows from the Wisesheets historical price store. Use period=latest for one row per ticker, period=last252d for a trailing trading-day window, period=2024-01-03 for a single date, or period=2024-01-01..2024-03-31 for a paginated date range. Values come back as strings to preserve DECIMAL/BIGINT precision, so parse them client-side. The GET variant resolves up to 25 tickers and 10,000 rows per request; for larger batches use the POST variant below. Date and date-range periods paginate via meta.nextCursor, while latest and trailing-day periods set meta.truncated when more rows exist than the limit.

GEThttps://api.wisesheets.io/v1/prices/eod?tickers=AAPL,MSFT&period=latest&fields=close,adjClose,volume
Name
Type
Description
tickersRequired
stringquery
Ticker symbols to query, such as AAPL,MSFT. Separate multiple tickers with commas. Symbols are uppercased and de-duplicated; up to 25 per request.
periodRequired
stringquery
Time selector. One of latest (most recent row per ticker), lastNd such as last252d (trailing N trading days, N up to 25,000), YYYY-MM-DD (a single date), or YYYY-MM-DD..YYYY-MM-DD (an inclusive date range). Future dates are rejected for exact-date and range periods.
fieldsOptional
stringquery
Price fields to return, comma-separated. Allowed: open, low, high, close, adjClose, volume, unadjustedVolume, change, changePercent, vwap, changeOverTime, label, lastUpdated. Defaults to close,adjClose,volume. symbol and date are always included.
orderOptional
enumquery
Sort direction, asc or desc. Defaults to asc for trailing-day periods and desc for all others. An explicit value always wins.
limitOptional
integerquery
Maximum rows to return, between 1 and 10,000. Defaults to 10,000 when omitted.
cursorOptional
stringquery
Opaque pagination token from meta.nextCursor. Only valid for single-date and date-range periods. Keep the same parameters when paging.
includeLiveOptional
booleanquery
Reserved for merging the current live quote. Not yet supported; passing true returns a 400.
1import requests, os23api_key = os.environ["WISESHEETS_API_KEY"]4resp = requests.get(5    "https://api.wisesheets.io/v1/prices/eod?tickers=AAPL,MSFT&period=latest&fields=close,adjClose,volume",6    headers={"Authorization": f"Bearer {api_key}"},7)8print(resp.json())
Try It Live

Start with the common fields. Advanced parameters use API defaults until you open and edit them.

Common parameters

Required · query

Ticker symbols to query, such as AAPL,MSFT. Separate multiple tickers with commas. Symbols are uppercased and de-duplicated; up to 25 per request.

Required · query

Time selector. One of latest (most recent row per ticker), lastNd such as last252d (trailing N trading days, N up to 25,000), YYYY-MM-DD (a single date), or YYYY-MM-DD..YYYY-MM-DD (an inclusive date range). Future dates are rejected for exact-date and range periods.

Optional · query

Price fields to return, comma-separated. Allowed: open, low, high, close, adjClose, volume, unadjustedVolume, change, changePercent, vwap, changeOverTime, label, lastUpdated. Defaults to close,adjClose,volume. symbol and date are always included.

GET /v1/prices/eod

Get an API key to run live requests

You can still review the example response below. Create a free key when you're ready to try this endpoint with real data.

Create free API key
Example response
{
  "data": [
    { "symbol": "AAPL", "date": "2024-03-28", "close": "171.48", "adjClose": "170.94", "volume": "65672690" }
  ],
  "meta": {
    "requested": {
      "tickers": ["AAPL", "MSFT"],
      "period": "2024-01-01..2024-03-31",
      "fields": ["close", "adjClose", "volume"],
      "order": "desc",
      "includeLive": false
    },
    "returned": 1,
    "nextCursor": "eyJ2IjoxLCJzIjoiQUFQTCIsImQiOiIyMDI0LTAzLTI3In0",
    "truncated": false,
    "missingSymbols": ["MSFT"]
  }
}

Ask your AI Assistant

Using the Wisesheets API with my key in .env, call the EOD Prices endpoint and summarize the result for me.

Batch EOD Prices

POST

The same end-of-day price endpoint as the GET, with parameters sent in a JSON body. Use this for batch workflows: it resolves up to 250 tickers and 50,000 rows per request. The batch endpoint requires the bulk_access plan feature in addition to price_data. Pagination, period grammar, field selection, and the string-typed response values all behave exactly as in the GET variant.

POSThttps://api.wisesheets.io/v1/prices/eod
Name
Type
Description
tickersRequired
string[]body
Ticker symbols to query, such as ["AAPL", "MSFT"]. Symbols are uppercased and de-duplicated; up to 250 per request.
periodRequired
stringbody
Time selector. One of latest, lastNd such as last252d (trailing N trading days, N up to 25,000), YYYY-MM-DD, or YYYY-MM-DD..YYYY-MM-DD. Future dates are rejected for exact-date and range periods.
fieldsOptional
string[]body
Price fields to return, such as ["open", "high", "low", "close", "volume"]. Allowed: open, low, high, close, adjClose, volume, unadjustedVolume, change, changePercent, vwap, changeOverTime, label, lastUpdated. Defaults to ["close", "adjClose", "volume"]. symbol and date are always included.
orderOptional
enumbody
Sort direction, asc or desc. Defaults to asc for trailing-day periods and desc for all others. An explicit value always wins.
limitOptional
integerbody
Maximum rows to return, between 1 and 50,000. Defaults to 50,000 when omitted.
cursorOptional
stringbody
Opaque pagination token from meta.nextCursor. Only valid for single-date and date-range periods. Keep the same parameters when paging.
includeLiveOptional
booleanbody
Reserved for merging the current live quote. Not yet supported; passing true returns a 400.
1import requests, os23api_key = os.environ["WISESHEETS_API_KEY"]4resp = requests.post(5    "https://api.wisesheets.io/v1/prices/eod",6    headers={"Authorization": f"Bearer {api_key}"},7    json={"tickers": ["AAPL", "MSFT", "GOOGL"], "period": "last252d", "fields": ["close", "adjClose", "volume"]},8)9print(resp.json())
Try It Live

Start with the common fields. Advanced parameters use API defaults until you open and edit them.

Body parameters

Required · body

Ticker symbols to query, such as ["AAPL", "MSFT"]. Symbols are uppercased and de-duplicated; up to 250 per request.

Required · body

Time selector. One of latest, lastNd such as last252d (trailing N trading days, N up to 25,000), YYYY-MM-DD, or YYYY-MM-DD..YYYY-MM-DD. Future dates are rejected for exact-date and range periods.

Optional · body

Price fields to return, such as ["open", "high", "low", "close", "volume"]. Allowed: open, low, high, close, adjClose, volume, unadjustedVolume, change, changePercent, vwap, changeOverTime, label, lastUpdated. Defaults to ["close", "adjClose", "volume"]. symbol and date are always included.

JSON body preview
{
  "tickers": [
    "AAPL",
    "MSFT",
    "GOOGL"
  ],
  "period": "last252d",
  "fields": [
    "close",
    "adjClose",
    "volume"
  ]
}
POST /v1/prices/eod

Get an API key to run live requests

You can still review the example response below. Create a free key when you're ready to try this endpoint with real data.

Create free API key
Example response
{
  "data": [
    { "symbol": "AAPL", "date": "2024-03-28", "close": "171.48", "adjClose": "170.94", "volume": "65672690" }
  ],
  "meta": {
    "requested": {
      "tickers": ["AAPL", "MSFT"],
      "period": "2024-01-01..2024-03-31",
      "fields": ["close", "adjClose", "volume"],
      "order": "desc",
      "includeLive": false
    },
    "returned": 1,
    "nextCursor": "eyJ2IjoxLCJzIjoiQUFQTCIsImQiOiIyMDI0LTAzLTI3In0",
    "truncated": false,
    "missingSymbols": ["MSFT"]
  }
}

Ask your AI Assistant

Using the Wisesheets API with my key in .env, call the Batch EOD Prices endpoint and summarize the result for me.

Query Financials

GET

The core endpoint. Returns standardized financial observations for one or more companies as (company, metric, period) tuples. Every value comes back as a decimal string with a source object that includes the XBRL tag, accession number, and filing date, so your application always knows exactly where a number came from. The GET variant resolves up to 100 tickers; for batch workflows across larger universes, use the POST variant below. Choose layout=long for time-series analysis, layout=wide to get a company per row with metrics as columns, or layout=grouped to get statements organized by period. The asReported flag lets you read raw XBRL facts before standardization.

GEThttps://api.wisesheets.io/v1/financials/?tickers=AAPL&metrics=revenue&period=latest
Name
Type
Description
tickersOne required
stringquery
Ticker symbols to query, such as AAPL or MSFT. Separate multiple tickers with commas. Required unless you provide ciks or sic.
ciksOne required
stringquery
SEC CIKs to query, such as 320193. Separate multiple CIKs with commas. Required unless you provide tickers or sic.
sicOne required
stringquery
SIC industry codes to query, such as 3571. Returns all covered companies in that industry. Required unless you provide tickers or ciks.
metricsRequired
stringquery
Metric keys to return, such as revenue,net_income,gross_margin. Use /v1/metrics to discover valid keys.
periodOptional
stringquery
Periods to return. Examples: latest, last5y, last8q, FY2024, Q3-2025, 2021..2025, 2024-09-30, or asof:2024-12-31. Default is latest.
frequencyOptional
enumquery
Use annual or quarterly when the period is ambiguous, such as latest or an exact date. Fiscal-year and fiscal-quarter selectors choose automatically.
layoutOptional
enumquery
Response shape. long is one observation per row (default), wide puts metrics in columns, grouped nests results by company and period.
includeOptional
stringquery
Optional response extras. Use source for XBRL provenance, quality for completeness flags, links for related resources, or none for smaller responses.
formatOptional
enumquery
Response format. json is the default; csv returns pipe-delimited long-form rows.
asReportedOptional
booleanquery
Set true to read raw as-reported XBRL facts instead of standardized metrics. Rolling selectors like last5y are not supported with asReported=true.
1import requests, os23api_key = os.environ["WISESHEETS_API_KEY"]4resp = requests.get(5    "https://api.wisesheets.io/v1/financials/?tickers=AAPL&metrics=revenue&period=latest",6    headers={"Authorization": f"Bearer {api_key}"},7)8print(resp.json())
Try It Live

Start with the common fields. Advanced parameters use API defaults until you open and edit them.

Common parameters

One required · query

Ticker symbols to query, such as AAPL or MSFT. Separate multiple tickers with commas. Required unless you provide ciks or sic.

Required · query

Metric keys to return, such as revenue,net_income,gross_margin. Use /v1/metrics to discover valid keys.

Optional · query

Periods to return. Examples: latest, last5y, last8q, FY2024, Q3-2025, 2021..2025, 2024-09-30, or asof:2024-12-31. Default is latest.

GET /v1/financials/

Get an API key to run live requests

You can still review the example response below. Create a free key when you're ready to try this endpoint with real data.

Create free API key
Example response
{
  "data": [
    {
      "cik": "0000320193",
      "ticker": "AAPL",
      "companyName": "Apple Inc.",
      "metric": "revenue",
      "periodEnd": "2025-09-27",
      "fiscalYear": 2025,
      "fiscalPeriod": "FY",
      "value": "416161000000",
      "unit": "USD",
      "source": {
        "kind": "reported",
        "tag": "RevenueFromContractWithCustomerExcludingAssessedTax",
        "taxonomy": "us-gaap",
        "accession": "0000320193-25-000079",
        "filingDate": "2025-10-31"
      }
    }
  ],
  "meta": {
    "requested": {
      "tickers": ["AAPL"],
      "metrics": ["revenue"],
      "period": "latest",
      "layout": "long",
      "frequency": "annual",
      "asReported": false
    },
    "returned": 1,
    "missing": [],
    "layout": "long",
    "period": { "selector": "latest", "frequency": "annual" }
  }
}

Ask your AI Assistant

Using the Wisesheets API with my key in .env, call the Query Financials endpoint and summarize the result for me.

Batch Financials

POST

The same canonical observation endpoint as the GET, with parameters sent in a JSON body. Use this when you're working with more than 100 tickers or when URL length would otherwise be a constraint. The batch endpoint resolves up to 1,000 tickers per request, making it the right choice for full-universe screeners, sector-wide pulls, or any workflow that touches a large equity universe in one shot.

POSThttps://api.wisesheets.io/v1/financials/
Name
Type
Description
tickersOne required
string[]body
Ticker symbols to query, such as ["AAPL", "MSFT"]. Batch requests support up to 1,000 resolved companies. Required unless you provide ciks or sic.
ciksOne required
string[]body
SEC CIKs to query, such as ["320193"]. Required unless you provide tickers or sic.
sicOne required
string[]body
SIC industry codes to query, such as ["3571"]. Returns all covered companies in each industry. Required unless you provide tickers or ciks.
metricsRequired
string[]body
Metric keys to return, such as ["revenue", "net_income"]. Use /v1/metrics to discover valid keys.
periodOptional
stringbody
Periods to return. Examples: latest, last5y, last8q, FY2024, Q3-2025, 2021..2025, 2024-09-30, or asof:2024-12-31. Default is latest.
frequencyOptional
enumbody
Use annual or quarterly when the period is ambiguous, such as latest or an exact date. Fiscal-year and fiscal-quarter selectors choose automatically.
layoutOptional
enumbody
Response shape. long is one observation per row (default), wide puts metrics in columns, grouped nests results by company and period.
includeOptional
stringbody
Optional response extras. Use source for XBRL provenance, quality for completeness flags, links for related resources, or none for smaller responses.
formatOptional
enumbody
Response format. json is the default; csv returns pipe-delimited long-form rows.
asReportedOptional
booleanbody
Set true to read raw as-reported XBRL facts instead of standardized metrics. Rolling selectors like last5y are not supported with asReported=true.
1import requests, os23api_key = os.environ["WISESHEETS_API_KEY"]4resp = requests.post(5    "https://api.wisesheets.io/v1/financials/",6    headers={"Authorization": f"Bearer {api_key}"},7    json={"tickers": ["AAPL", "MSFT"], "metrics": ["revenue", "net_income"], "period": "last5y"},8)9print(resp.json())
Try It Live

Start with the common fields. Advanced parameters use API defaults until you open and edit them.

Body parameters

One required · body

Ticker symbols to query, such as ["AAPL", "MSFT"]. Batch requests support up to 1,000 resolved companies. Required unless you provide ciks or sic.

Required · body

Metric keys to return, such as ["revenue", "net_income"]. Use /v1/metrics to discover valid keys.

Optional · body

Periods to return. Examples: latest, last5y, last8q, FY2024, Q3-2025, 2021..2025, 2024-09-30, or asof:2024-12-31. Default is latest.

JSON body preview
{
  "tickers": [
    "AAPL",
    "MSFT"
  ],
  "metrics": [
    "revenue",
    "net_income"
  ],
  "period": "last5y",
  "layout": "long"
}
POST /v1/financials/

Get an API key to run live requests

You can still review the example response below. Create a free key when you're ready to try this endpoint with real data.

Create free API key
Example response
{
  "data": [
    {
      "cik": "0000320193",
      "ticker": "AAPL",
      "companyName": "Apple Inc.",
      "metric": "revenue",
      "periodEnd": "2025-09-27",
      "fiscalYear": 2025,
      "fiscalPeriod": "FY",
      "value": "416161000000",
      "unit": "USD",
      "source": {
        "kind": "reported",
        "tag": "RevenueFromContractWithCustomerExcludingAssessedTax",
        "taxonomy": "us-gaap",
        "accession": "0000320193-25-000079",
        "filingDate": "2025-10-31"
      }
    }
  ],
  "meta": {
    "requested": {
      "tickers": ["AAPL"],
      "metrics": ["revenue"],
      "period": "latest",
      "layout": "long",
      "frequency": "annual",
      "asReported": false
    },
    "returned": 1,
    "missing": [],
    "layout": "long",
    "period": { "selector": "latest", "frequency": "annual" }
  }
}

Ask your AI Assistant

Using the Wisesheets API with my key in .env, call the Batch Financials endpoint and summarize the result for me.

Financial Statements

GET

A convenience endpoint for the standard three-statement model. Pass a ticker and get back the income statement, balance sheet, and cash flow statement grouped by period, with line items ordered as they appear in the filing. Useful when you want the full statement structure rather than individual metrics, for example when building a financial model, populating a research template, or generating a company writeup. Missing line items are omitted rather than returned as nulls.

GEThttps://api.wisesheets.io/v1/statements/AAPL?frequency=annual&period=latest&statements=income_statement
Name
Type
Description
ticker_or_cikRequired
stringpath
Ticker or CIK in the URL path. Tickers are case-insensitive; numeric values are treated as CIKs.
frequencyOptional
enumquery
Statement frequency. annual is the default; use quarterly for quarterly filings.
periodOptional
stringquery
Periods to include. Examples: last5y (default), latest, FY2024, Q3-2025, or 2021..2025.
statementsOptional
stringquery
Which statement sections to return. Use income_statement, balance_sheet, cash_flow, or comma-separated combinations. Omit to return all three.
includeOptional
stringquery
Optional response extras, such as source for filing provenance or quality for completeness flags.
asReportedOptional
booleanquery
Set true to read raw as-reported XBRL facts instead of standardized statement rows.
1import requests, os23api_key = os.environ["WISESHEETS_API_KEY"]4resp = requests.get(5    "https://api.wisesheets.io/v1/statements/AAPL?frequency=annual&period=latest&statements=income_statement",6    headers={"Authorization": f"Bearer {api_key}"},7)8print(resp.json())
Try It Live

Start with the common fields. Advanced parameters use API defaults until you open and edit them.

Common parameters

Required · path

Ticker or CIK in the URL path. Tickers are case-insensitive; numeric values are treated as CIKs.

Optional · query

Which statement sections to return. Use income_statement, balance_sheet, cash_flow, or comma-separated combinations. Omit to return all three.

GET /v1/statements/{ticker_or_cik}

Get an API key to run live requests

You can still review the example response below. Create a free key when you're ready to try this endpoint with real data.

Create free API key
Example response
{
  "company": { "ticker": "AAPL", "cik": "0000320193", "name": "Apple Inc." },
  "frequency": "annual",
  "data": [
    {
      "period": { "label": "FY2025", "end": "2025-09-27" },
      "filing": { "accessionNumber": "0000320193-25-000079", "filingDate": "2025-10-31" },
      "statements": {
        "income_statement": {
          "lines": [
            { "metric": "revenue", "label": "Revenue", "value": "416161000000", "unit": "USD" },
            { "metric": "cost_of_revenue", "label": "Cost Of Revenue", "value": "220960000000", "unit": "USD" }
          ]
        }
      }
    }
  ]
}

Ask your AI Assistant

Using the Wisesheets API with my key in .env, call the Financial Statements endpoint and summarize the result for me.

Metric Catalog

GET

The Wisesheets API standardizes 231 financial metrics across every company it covers, from revenue and net income to niche ratios like tangible book value per share and unlevered free cash flow. The /v1/metrics/ endpoint is the authoritative list of every metric key the API understands. Use it to discover available metrics, filter by statement type or unit type, populate a UI picker, or generate typed enums in your SDK. Pass ?metric=<key> to get a single entry with its full definition.

GEThttps://api.wisesheets.io/v1/metrics/?q=revenue
Name
Type
Description
metricOptional
stringquery
Return one metric definition by exact key, such as revenue or gross_margin.
statementOptional
stringquery
Filter metrics by statement: income_statement, balance_sheet, or cash_flow.
unitTypeOptional
stringquery
Filter metrics by value type: monetary, shares, ratio, per_share, or count.
qOptional
stringquery
Search metric keys and labels by text, such as revenue or margin.
1import requests, os23api_key = os.environ["WISESHEETS_API_KEY"]4resp = requests.get(5    "https://api.wisesheets.io/v1/metrics/?q=revenue",6    headers={"Authorization": f"Bearer {api_key}"},7)8print(resp.json())
Try It Live

Start with the common fields. Advanced parameters use API defaults until you open and edit them.

Common parameters

Optional · query

Search metric keys and labels by text, such as revenue or margin.

GET /v1/metrics/

Get an API key to run live requests

You can still review the example response below. Create a free key when you're ready to try this endpoint with real data.

Create free API key
Example response
{
  "data": [
    {
      "metric": "revenue",
      "label": "Revenue",
      "description": "Top-line revenue recognized in the period, after returns and allowances.",
      "statements": ["income_statement"],
      "unitType": "monetary",
      "isCalculated": false,
      "supportedFrequencies": ["annual", "quarterly"]
    },
    {
      "metric": "net_income",
      "label": "Net income",
      "description": null,
      "statements": ["income_statement"],
      "unitType": "monetary",
      "isCalculated": false,
      "supportedFrequencies": ["annual", "quarterly"]
    }
  ]
}

Ask your AI Assistant

Using the Wisesheets API with my key in .env, call the Metric Catalog endpoint and summarize the result for me.

Inspect API Key

GET

Returns the authenticated caller's identity, key metadata, subscription status, effective plan (features, limits, capabilities), and current quota windows. Use it to confirm your key is valid, surface plan capabilities in a UI, and monitor remaining requests for the current minute and month before a reset. The quota counters are non-consuming, so calling this endpoint does not count against your limit.

GEThttps://api.wisesheets.io/v1/me/
1import requests, os23api_key = os.environ["WISESHEETS_API_KEY"]4resp = requests.get(5    "https://api.wisesheets.io/v1/me/",6    headers={"Authorization": f"Bearer {api_key}"},7)8print(resp.json())
Try It Live

Start with the common fields. Advanced parameters use API defaults until you open and edit them.

This endpoint takes no parameters.

GET /v1/me/

Get an API key to run live requests

You can still review the example response below. Create a free key when you're ready to try this endpoint with real data.

Create free API key
Example response
{
  "user": {
    "userId": "5f1c2c1e-3f8f-4f9a-9c0a-7c2b1d4e1f00",
    "email": "you@example.com",
    "stripeCustomerId": "cus_QzExampleCustomer"
  },
  "key": {
    "apiKeyId": "b6c8a9d2-1e4f-4a3b-9c11-8d5e2a0fbc77",
    "name": "Production key",
    "status": "active",
    "displayPrefix": "wsh_live_4f2",
    "displaySuffix": "8f2a",
    "expiresAt": null
  },
  "subscription": {
    "status": "active",
    "stripeSubscriptionId": "sub_1QzExampleSubscription"
  },
  "plan": {
    "planCode": "pro",
    "displayName": "Pro",
    "stripeProductId": "prod_QzExamplePro",
    "stripePriceId": "price_1QzExamplePro",
    "features": {
      "price_data": { "enabled": true, "value": null },
      "dividends_data": { "enabled": true, "value": null },
      "fundamentals": { "enabled": true, "value": null },
      "key_metrics": { "enabled": true, "value": null },
      "history_years": { "enabled": true, "value": 15 },
      "bulk_access": { "enabled": true, "value": null }
    },
    "limits": {
      "monthlyRequests": 80000,
      "requestsPerMinute": 600,
      "historyYears": 15
    },
    "capabilities": {
      "bulkAccess": true,
      "fullHistory": false,
      "prioritySupport": false,
      "commercialUse": false
    }
  },
  "quota": {
    "available": true,
    "minute": { "limit": 600, "remaining": 598, "resetSeconds": 42 },
    "month": { "limit": 80000, "remaining": 78760, "resetSeconds": 1247400 }
  }
}

Ask your AI Assistant

Using the Wisesheets API with my key in .env, call the Inspect API Key endpoint and summarize the result for me.

Health Check

GET

A liveness and data-freshness probe. Returns 200 when the API can reach its database and 503 otherwise. The dataFreshness field is the most recent filing date available across the dataset; data syncs within 15 minutes of a new filing. It's a useful signal for applications that care about data recency, like earnings reaction systems or filing monitors.

GEThttps://api.wisesheets.io/v1/health/
1import requests, os23api_key = os.environ["WISESHEETS_API_KEY"]4resp = requests.get(5    "https://api.wisesheets.io/v1/health/",6    headers={"Authorization": f"Bearer {api_key}"},7)8print(resp.json())
Try It Live

Start with the common fields. Advanced parameters use API defaults until you open and edit them.

This endpoint takes no parameters.

GET /v1/health/

Get an API key to run live requests

You can still review the example response below. Create a free key when you're ready to try this endpoint with real data.

Create free API key
Example response
{
  "status": "ok",
  "db": "ok",
  "dataFreshness": "2026-06-08"
}

Ask your AI Assistant

Using the Wisesheets API with my key in .env, call the Health Check endpoint and summarize the result for me.