API Documentation

The Empirical Markets API is an all-in-one financial data platform for traders, researchers, and developers.

Access a comprehensive ecosystem of data through a consistent RESTful interface — spanning AI-powered predictions and signals, historical market prices, company fundamentals, SEC filings, macroeconomic indicators, insider trading activity, Federal Reserve operations, and more.

New to the API? Check out the in-depth API Tour on the Empirical Markets Research Blog for a guided walkthrough of our data ecosystem.
View API Tour
Base URL https://api.empiricalmarkets.com/v1

Authentication

All API requests require authentication using Bearer tokens. First, obtain an access token using your API key, then include it in the Authorization header for all subsequent requests.

API Keys are long-lived and can be managed from your dashboard. Access tokens are short-lived (~6 hours) and should be refreshed as needed.
Get Access Token
curl -X POST https://api.empiricalmarkets.com/v1/token \
  -H 'Content-Type: application/x-www-form-urlencoded' \
  -d 'api_key=YOUR_API_KEY'import requests

response = requests.post(
    'https://api.empiricalmarkets.com/v1/token',
    headers={"Content-Type": "application/x-www-form-urlencoded"},
    data={'api_key': 'YOUR_API_KEY'}
)
token = response.json()['access_token']
print(token)
Using the Token

Use the token in your request headers:

Authorization: Bearer YOUR_ACCESS_TOKEN

Quick Start

1

Create an Account

Sign up at empiricalmarkets.com to get started.

2

Generate an API Key

Navigate to your dashboard and create a new API key.

3

Get an Access Token

Exchange your API key for a short-lived access token.

4

Make Your First Request

Verify your token is working by querying the /me endpoint, which returns details about your access token and subscription.

curl https://api.empiricalmarkets.com/v1/me -H "Authorization: Bearer YOUR_ACCESS_TOKEN"

Error Handling

The API uses standard HTTP status codes to indicate success or failure. Error responses include a JSON body with details about the error.

Status Code Meaning Description
200OKRequest succeeded
400Bad RequestInvalid request parameters
401UnauthorizedAuthentication required or token expired
403ForbiddenValid authentication but insufficient permissions
404Not FoundRequested resource doesn't exist
429Too Many RequestsRate limit exceeded
500Server ErrorSomething went wrong on our end
Error Response Format
{
    "error": {
        "code": 429,
        "message": "Rate limit exceeded. Please try again later.",
        "details": {
            "reset_at": "2025-01-02T18:00:00Z",
            "limit": 1000,
            "remaining": 0
        }
    }
}

Rate Limits

Authenticated API access is governed by two plan-based controls:

  • A monthly request quota
  • A short-window burst rate limit policy

Burst limits apply to entitlement-governed API routes and vary by subscription tier. Monthly quotas are tied to your billing period.

Short-window rate limits are operational controls and may change as needed to maintain platform stability and fair usage.

Exceeding any limit will result in a 429 Too Many Requests response. You can monitor your monthly usage at any time from the API Dashboard.

Plan Monthly Quota Requests / Second Requests / Minute
Demo 200 1 60
Starter 5,000 3 180
Super 20,000 5 300

Pagination

Many endpoints that return timeseries data use date cursor pagination. Rather than page numbers, results are paginated by date. Each response includes a date_cursor object you can use to fetch the next page.

Cursor Response Object
Field Type Description
limit integer Maximum number of records requested.
count integer Number of records returned in this page.
has_more boolean Whether additional pages are available.
next_cursor string | null Pass this value as the date_cursor query parameter to retrieve the next page. null when no further pages exist.
Example Response
{
                "data": [...],
                "date_cursor": {
                    "limit": 756,
                    "count": 756,
                    "has_more": true,
                    "next_cursor": "2023-06-30"
                }
            }
Fetching the Next Page

Pass next_cursor as the date_cursor query parameter on your next request. Results are returned in reverse-chronological order. Continue until has_more is false.

curl "https://api.empiricalmarkets.com/v1/ohlc/AAPL?date_cursor=2023-06-30" \
            -H "Authorization: Bearer YOUR_ACCESS_TOKEN"

Other

POST /v1/token Access Token None
Description

Get an access token

Authentication

This endpoint does not require authentication.

Example Request
                                    curl -X POST "https://api.empiricalmarkets.com/v1/token"
                                    import requests
url = 'https://api.empiricalmarkets.com/v1/token'
response = requests.post(url, headers=headers)
print(response.json())
                                
Example Response

200 Access token.

{
  "access_token": "ded3e3ex01s...",
  "token_type": "Bearer"
}

GET /v1/me Get User Token Info demo
Description

Get information about the authenticated user's token.

Authentication

This endpoint requires a valid access token. Include your token in the Authorization: Bearer <token> header.

Example Request
                                    curl -X GET -H "Authorization: Bearer <your_access_token>" "https://api.empiricalmarkets.com/v1/me"
                                    import requests
url = 'https://api.empiricalmarkets.com/v1/me'
headers = {'Authorization': 'Bearer <your_access_token>'}
response = requests.get(url, headers=headers)
print(response.json())
                                
Example Response

200 Information about the current user's token.

{
  "expires_at": "2026-04-13T20:11:38",
  "ttl": 3600,
  "api_quota_limit": 5000,
  "api_quota_period_start": "2026-04-03T19:11:38",
  "api_quota_period_end": "2026-05-03T19:11:38",
  "api_rate_limit_per_second": 3,
  "api_rate_limit_per_minute": 180
}

Catalog

GET /v1/catalog/assets List Available Asset Classes demo
Description

Get available asset classes.

Authentication

This endpoint requires a valid access token. Include your token in the Authorization: Bearer <token> header.

Example Request
                                    curl -X GET -H "Authorization: Bearer <your_access_token>" "https://api.empiricalmarkets.com/v1/catalog/assets"
                                    import requests
url = 'https://api.empiricalmarkets.com/v1/catalog/assets'
headers = {'Authorization': 'Bearer <your_access_token>'}
response = requests.get(url, headers=headers)
print(response.json())
                                
Example Response

200 List of available asset classes.

{
  "asset_class": [
    "etfs",
    "equities"
  ]
}

GET /v1/catalog/assets/{asset_class}/tickers List Tickers By Asset Class demo
Description

Get tickers for specified asset class (etfs or equities).

Authentication

This endpoint requires a valid access token. Include your token in the Authorization: Bearer <token> header.

Parameters
Name Type In Required Description Example
asset_class string (enum) path Yes Asset class.
ENUM
sort boolean query No Whether to sort the tickers alphabetically. True
Example Request
                                    curl -X GET -H "Authorization: Bearer <your_access_token>" "https://api.empiricalmarkets.com/v1/catalog/assets/etfs/tickers?sort=True"
                                    import requests
url = 'https://api.empiricalmarkets.com/v1/catalog/assets/{asset_class}/tickers'
url = url.format(asset_class="etfs")
headers = {'Authorization': 'Bearer <your_access_token>'}
params = {'sort': True}
response = requests.get(url, headers=headers, params=params)
print(response.json())
                                
Example Response

200 List of ticker symbols for the specified asset class.

{
  "asset_class": "equities",
  "tickers": [
    "AAPL",
    "MSFT",
    "JPM",
    "GOOGL",
    "AMZN"
  ]
}

GET /v1/catalog/exchanges List Available Tracked Exchanges demo
Description

Get available tracked exchanges.

Authentication

This endpoint requires a valid access token. Include your token in the Authorization: Bearer <token> header.

Example Request
                                    curl -X GET -H "Authorization: Bearer <your_access_token>" "https://api.empiricalmarkets.com/v1/catalog/exchanges"
                                    import requests
url = 'https://api.empiricalmarkets.com/v1/catalog/exchanges'
headers = {'Authorization': 'Bearer <your_access_token>'}
response = requests.get(url, headers=headers)
print(response.json())
                                
Example Response

200 List of available tracked exchanges.

{
  "exchange": [
    "CBOE",
    "NASDAQ",
    "NYS",
    "NYSE",
    "OTC"
  ]
}

GET /v1/catalog/exchanges/{exchange}/tickers List Tickers By Exchange demo
Description

Get tickers for a specified exchange.

Authentication

This endpoint requires a valid access token. Include your token in the Authorization: Bearer <token> header.

Parameters
Name Type In Required Description Example
exchange string path Yes Exchange. NYS
sort boolean query No Whether to sort tickers alphabetically. True
Example Request
                                    curl -X GET -H "Authorization: Bearer <your_access_token>" "https://api.empiricalmarkets.com/v1/catalog/exchanges/NYS/tickers?sort=True"
                                    import requests
url = 'https://api.empiricalmarkets.com/v1/catalog/exchanges/{exchange}/tickers'
url = url.format(exchange="NYS")
headers = {'Authorization': 'Bearer <your_access_token>'}
params = {'sort': True}
response = requests.get(url, headers=headers, params=params)
print(response.json())
                                
Example Response

200 Mapping of exchange to its associated tickers.

{
  "exchange": "NASDAQ",
  "tickers": [
    "AAPL",
    "MSFT",
    "GOOGL",
    "AMZN",
    "TSLA"
  ]
}

GET /v1/catalog/sic List Standard Industrial Classification Codes demo
Description

Get all SIC (Standard Industrial Classification) codes.

Authentication

This endpoint requires a valid access token. Include your token in the Authorization: Bearer <token> header.

Example Request
                                    curl -X GET -H "Authorization: Bearer <your_access_token>" "https://api.empiricalmarkets.com/v1/catalog/sic"
                                    import requests
url = 'https://api.empiricalmarkets.com/v1/catalog/sic'
headers = {'Authorization': 'Bearer <your_access_token>'}
response = requests.get(url, headers=headers)
print(response.json())
                                
Example Response

200 List of SIC (Standard Industrial Classification) codes and their descriptions.

{
  "sic_codes": [
    {
      "code": 1311,
      "description": "Crude Petroleum & Natural Gas"
    },
    {
      "code": 3571,
      "description": "Electronic Computers"
    }
  ]
}

GET /v1/catalog/sic/{sic_code} Get Standard Industrial Classification Code Details... demo
Description

Get details for a specific SIC (Standard Industrial Classification) code.

Authentication

This endpoint requires a valid access token. Include your token in the Authorization: Bearer <token> header.

Parameters
Name Type In Required Description Example
sic_code integer path Yes SIC code. 3571
Example Request
                                    curl -X GET -H "Authorization: Bearer <your_access_token>" "https://api.empiricalmarkets.com/v1/catalog/sic/3571"
                                    import requests
url = 'https://api.empiricalmarkets.com/v1/catalog/sic/{sic_code}'
url = url.format(sic_code="3571")
headers = {'Authorization': 'Bearer <your_access_token>'}
response = requests.get(url, headers=headers)
print(response.json())
                                
Example Response

200 Details of the specified SIC (Standard Industrial Classification) code.

{
  "code": 3571,
  "description": "Electronic Computers"
}

GET /v1/catalog/sic/{sic_code}/tickers List Tickers By Standard Industrial Classification Code... demo
Description

Get equity tickers for a given SIC (Standard Industrial Classification) code.

Authentication

This endpoint requires a valid access token. Include your token in the Authorization: Bearer <token> header.

Parameters
Name Type In Required Description Example
sic_code integer path Yes SIC code. 3571
sort boolean query No Whether to sort tickers alphabetically. True
Example Request
                                    curl -X GET -H "Authorization: Bearer <your_access_token>" "https://api.empiricalmarkets.com/v1/catalog/sic/3571/tickers?sort=True"
                                    import requests
url = 'https://api.empiricalmarkets.com/v1/catalog/sic/{sic_code}/tickers'
url = url.format(sic_code="3571")
headers = {'Authorization': 'Bearer <your_access_token>'}
params = {'sort': True}
response = requests.get(url, headers=headers, params=params)
print(response.json())
                                
Example Response

200 Distinct list of tickers whose company has the given Standard Industrial Classification code.

{
  "sic": 3571,
  "tickers": [
    "AAPL",
    "DELL",
    "OMCL",
    "OSS",
    "SCKT",
    "SMCI",
    "ZEPP"
  ]
}

GET /v1/catalog/tickers/{ticker} Get Ticker Details demo
Description

Get details for a specific ticker symbol.

Authentication

This endpoint requires a valid access token. Include your token in the Authorization: Bearer <token> header.

Parameters
Name Type In Required Description Example
ticker string path Yes Ticker symbol. AAPL
Example Request
                                    curl -X GET -H "Authorization: Bearer <your_access_token>" "https://api.empiricalmarkets.com/v1/catalog/tickers/AAPL"
                                    import requests
url = 'https://api.empiricalmarkets.com/v1/catalog/tickers/{ticker}'
url = url.format(ticker="AAPL")
headers = {'Authorization': 'Bearer <your_access_token>'}
response = requests.get(url, headers=headers)
print(response.json())
                                
Example Response

200 Details of the specified ticker symbol.

{
  "ticker": "AAPL",
  "name": "Apple Inc.",
  "exchange": "NASDAQ",
  "asset_class": "Equities",
  "asset_class_underlying": "Equities",
  "sic_code": 3571,
  "sic_description": "Electronic Computers",
  "fiscal_year_end": "09-30",
  "state_of_incorporation": "CA",
  "last_close": 150.25,
  "pct_return": 0.0125,
  "as_of": "2025-09-30"
}

Company

GET /v1/company/{ticker} Get Company Metadata demo
Description

Get company metadata

Authentication

This endpoint requires a valid access token. Include your token in the Authorization: Bearer <token> header.

Parameters
Name Type In Required Description Example
ticker string path Yes Ticker symbol of the company. AAPL
Example Request
                                    curl -X GET -H "Authorization: Bearer <your_access_token>" "https://api.empiricalmarkets.com/v1/company/AAPL"
                                    import requests
url = 'https://api.empiricalmarkets.com/v1/company/{ticker}'
url = url.format(ticker="AAPL")
headers = {'Authorization': 'Bearer <your_access_token>'}
response = requests.get(url, headers=headers)
print(response.json())
                                
Example Response

200 Company metadata including name, SIC code, and fiscal year end.

{
  "ticker": "AAPL",
  "name": "Apple Inc.",
  "sic_code": "3571",
  "sic_description": "Electronic Computers",
  "fiscal_year_end": "09-30"
}

GET /v1/company/{ticker}/former Get Former Company Names demo
Description

Get former company names for a given ticker.

Authentication

This endpoint requires a valid access token. Include your token in the Authorization: Bearer <token> header.

Parameters
Name Type In Required Description Example
ticker string path Yes Ticker symbol of the company. AAPL
Example Request
                                    curl -X GET -H "Authorization: Bearer <your_access_token>" "https://api.empiricalmarkets.com/v1/company/AAPL/former"
                                    import requests
url = 'https://api.empiricalmarkets.com/v1/company/{ticker}/former'
url = url.format(ticker="AAPL")
headers = {'Authorization': 'Bearer <your_access_token>'}
response = requests.get(url, headers=headers)
print(response.json())
                                
Example Response

200 List of former company names with their respective date ranges.

{
  "ticker": "AAPL",
  "former_names": [
    {
      "ticker": "AAPL",
      "former_name": "APPLE COMPUTER INC",
      "from_date": "1994-01-26T00:00:00",
      "to_date": "2007-01-04T00:00:00"
    }
  ]
}

GET /v1/company/{ticker}/forms Get Sec Forms For A Company demo
Description

Get all unique SEC forms filed by a given ticker.

Authentication

This endpoint requires a valid access token. Include your token in the Authorization: Bearer <token> header.

Parameters
Name Type In Required Description Example
ticker string path Yes Ticker symbol of the company. AAPL
Example Request
                                    curl -X GET -H "Authorization: Bearer <your_access_token>" "https://api.empiricalmarkets.com/v1/company/AAPL/forms"
                                    import requests
url = 'https://api.empiricalmarkets.com/v1/company/{ticker}/forms'
url = url.format(ticker="AAPL")
headers = {'Authorization': 'Bearer <your_access_token>'}
response = requests.get(url, headers=headers)
print(response.json())
                                
Example Response

200 List of unique SEC form types filed by the company.

{
  "ticker": "AAPL",
  "forms": [
    "10-K",
    "10-Q",
    "8-K"
  ]
}

GET /v1/company/{ticker}/filings Get Company Sec Filings demo
Description

Get recent SEC filings for a given ticker.

Authentication

This endpoint requires a valid access token. Include your token in the Authorization: Bearer <token> header.

Parameters
Name Type In Required Description Example
ticker string path Yes Ticker symbol of the company. AAPL
start_date string query No Start date for filings (YYYY-MM-DD) 2023-01-01
end_date string query No End date (inclusive) for filings (YYYY-MM-DD) 2023-12-31
forms array query No Optional list of SEC form types to filter by. ['10-K', '10-Q']
date_cursor string query No Cursor for pagination (filed_date from previous response).
limit integer query No Maximum number of records to return. 100
order string query No Sort order for filings by filed_date. 'desc' returns newest first. desc
Example Request
                                    curl -X GET -H "Authorization: Bearer <your_access_token>" "https://api.empiricalmarkets.com/v1/company/AAPL/filings?start_date=2023-01-01&end_date=2023-12-31&forms=10-K&forms=10-Q&limit=100&order=desc"
                                    import requests
url = 'https://api.empiricalmarkets.com/v1/company/{ticker}/filings'
url = url.format(ticker="AAPL")
headers = {'Authorization': 'Bearer <your_access_token>'}
params = {'start_date': '2023-01-01', 'end_date': '2023-12-31', 'forms': ['10-K', '10-Q'], 'limit': 100, 'order': 'desc'}
response = requests.get(url, headers=headers, params=params)
print(response.json())
                                
Example Response

200 List of SEC filings including form type, filing date, and URL.

{
  "ticker": "AAPL",
  "date_cursor": {
    "limit": 756,
    "count": 756,
    "has_more": true,
    "next_cursor": "2023-01-01"
  },
  "filings": [
    {
      "ticker": "AAPL",
      "accession_number": "0000320193-24-000123",
      "form": "10-K",
      "filed_date": "2024-09-28T00:00:00",
      "report_date": "2024-09-30T00:00:00",
      "url": "https://www.sec.gov/Archives/edgar/data/320193/000032019324000123/aapl-20240928.htm",
      "primary_url": "https://www.sec.gov/Archives/edgar/data/320193/000032019324000123/aapl-20240928.htm",
      "items": "Annual report for fiscal year 2024"
    }
  ]
}

Ai

AI-powered predictions and forecasts including regime detection and reversal signals.

GET /v1/ai/signals Available Ai Signals starter
Description

Get available AI signals and associated metadata.

Authentication

This endpoint requires a valid access token. Include your token in the Authorization: Bearer <token> header.

Example Request
                                    curl -X GET -H "Authorization: Bearer <your_access_token>" "https://api.empiricalmarkets.com/v1/ai/signals"
                                    import requests
url = 'https://api.empiricalmarkets.com/v1/ai/signals'
headers = {'Authorization': 'Bearer <your_access_token>'}
response = requests.get(url, headers=headers)
print(response.json())
                                
Example Response

200 List of available AI signals.

{
  "signals": [
    {
      "signal": "high-reclaim",
      "description": "Probability of price reclaiming recent highs within the next N days",
      "value_type": "probability"
    }
  ]
}

GET /v1/ai/signals/{signal} Ai Signal Info starter
Description

Get metadata for a given AI signal.

Authentication

This endpoint requires a valid access token. Include your token in the Authorization: Bearer <token> header.

Parameters
Name Type In Required Description Example
signal string (enum) path Yes AI signal name
ENUM
Example Request
                                    curl -X GET -H "Authorization: Bearer <your_access_token>" "https://api.empiricalmarkets.com/v1/ai/signals/high-reclaim"
                                    import requests
url = 'https://api.empiricalmarkets.com/v1/ai/signals/{signal}'
url = url.format(signal="high-reclaim")
headers = {'Authorization': 'Bearer <your_access_token>'}
response = requests.get(url, headers=headers)
print(response.json())
                                
Example Response

200 Metadata for the given AI signal.

{
  "signal": "high-reclaim",
  "description": "Probability of price reclaiming recent highs within the next N days",
  "value_type": "probability"
}

GET /v1/ai/signals/{signal}/models Ai Signal Models starter
Description

Get associated models for a given AI signal.

Authentication

This endpoint requires a valid access token. Include your token in the Authorization: Bearer <token> header.

Parameters
Name Type In Required Description Example
signal string (enum) path Yes AI signal name
ENUM
latest boolean query No If true, return only the latest model version
Example Request
                                    curl -X GET -H "Authorization: Bearer <your_access_token>" "https://api.empiricalmarkets.com/v1/ai/signals/high-reclaim/models"
                                    import requests
url = 'https://api.empiricalmarkets.com/v1/ai/signals/{signal}/models'
url = url.format(signal="high-reclaim")
headers = {'Authorization': 'Bearer <your_access_token>'}
response = requests.get(url, headers=headers)
print(response.json())
                                
Example Response

200 List of available model versions that produce the given AI signal.

{
  "signal": "high-reclaim",
  "models": [
    {
      "model_id": 1,
      "model_name": "Taurus",
      "model_version": "v1.0.0",
      "signal_direction": "long",
      "age_days": 10
    }
  ]
}

GET /v1/ai/signals/{signal}/models/{model_id} Ai Signal Model... starter
Description

Get specific model that produces the given AI-generated signal.

Authentication

This endpoint requires a valid access token. Include your token in the Authorization: Bearer <token> header.

Parameters
Name Type In Required Description Example
signal string (enum) path Yes AI signal name
ENUM
model_id integer path Yes Model version ID 1
Example Request
                                    curl -X GET -H "Authorization: Bearer <your_access_token>" "https://api.empiricalmarkets.com/v1/ai/signals/high-reclaim/models/1"
                                    import requests
url = 'https://api.empiricalmarkets.com/v1/ai/signals/{signal}/models/{model_id}'
url = url.format(signal="high-reclaim", model_id="1")
headers = {'Authorization': 'Bearer <your_access_token>'}
response = requests.get(url, headers=headers)
print(response.json())
                                
Example Response

200 Model that produces the given AI-generated signal.

{
  "model_id": 1,
  "model_name": "Taurus",
  "model_version": "v1.0.0",
  "signal_direction": "long",
  "age_days": 10
}

GET /v1/ai/signals/{signal}/tickers Ai Signal Available Tickers starter
Description

Get available tickers for a given AI signal.

Authentication

This endpoint requires a valid access token. Include your token in the Authorization: Bearer <token> header.

Parameters
Name Type In Required Description Example
signal string (enum) path Yes AI signal name
ENUM
model_id integer query No Filter by specific Model ID 1
Example Request
                                    curl -X GET -H "Authorization: Bearer <your_access_token>" "https://api.empiricalmarkets.com/v1/ai/signals/high-reclaim/tickers?model_id=1"
                                    import requests
url = 'https://api.empiricalmarkets.com/v1/ai/signals/{signal}/tickers'
url = url.format(signal="high-reclaim")
headers = {'Authorization': 'Bearer <your_access_token>'}
params = {'model_id': 1}
response = requests.get(url, headers=headers, params=params)
print(response.json())
                                
Example Response

200 List of available tickers for the given AI signal.

{
  "signal": "high-reclaim",
  "model_id": 1,
  "tickers": [
    "AAPL",
    "MSFT",
    "TSLA"
  ]
}

GET /v1/ai/signals/{signal}/tickers/{ticker} Ai Signal Ticker Time Series starter
Description

Get time series data for a given AI signal and ticker.

Authentication

This endpoint requires a valid access token. Include your token in the Authorization: Bearer <token> header.

Parameters
Name Type In Required Description Example
signal string (enum) path Yes AI signal name
ENUM
ticker string path Yes Ticker symbol AAPL
model_id integer query No Filter by specific Model ID. If unspecified, the latest model version is used. 1
dataset string (enum) query No Dataset split to query for
ENUM
Example Request
                                    curl -X GET -H "Authorization: Bearer <your_access_token>" "https://api.empiricalmarkets.com/v1/ai/signals/high-reclaim/tickers/AAPL?model_id=1&dataset=test"
                                    import requests
url = 'https://api.empiricalmarkets.com/v1/ai/signals/{signal}/tickers/{ticker}'
url = url.format(signal="high-reclaim", ticker="AAPL")
headers = {'Authorization': 'Bearer <your_access_token>'}
params = {'model_id': 1, 'dataset': 'test'}
response = requests.get(url, headers=headers, params=params)
print(response.json())
                                
Example Response

200 Time series data points for the given AI signal and ticker.

{
  "ticker": "AAPL",
  "signal": "high-reclaim",
  "signal_description": "Probability of price reclaiming recent highs within the next N days",
  "model_id": 1,
  "model_name": "Taurus",
  "value_type": "probability",
  "data": [
    {
      "date": "2023-01-01",
      "ticker": "AAPL",
      "signal": "high-reclaim",
      "model_id": 1,
      "value": 0.94,
      "value_type": "probability"
    }
  ]
}

GET /v1/ai/events Ai Events... starter
Description

Get AI-generated events derived from a wide variety of models.

Authentication

This endpoint requires a valid access token. Include your token in the Authorization: Bearer <token> header.

Example Request
                                    curl -X GET -H "Authorization: Bearer <your_access_token>" "https://api.empiricalmarkets.com/v1/ai/events"
                                    import requests
url = 'https://api.empiricalmarkets.com/v1/ai/events'
headers = {'Authorization': 'Bearer <your_access_token>'}
response = requests.get(url, headers=headers)
print(response.json())
                                
Example Response

200 List of AI-generated event types and associated metadata.

{
  "events": [
    {
      "event": "",
      "description": "Price is predicted to recapture recent highs within the near future",
      "signal": "high-reclaim"
    }
  ]
}

GET /v1/ai/events/{event} Ai Event Info starter
Description

Get metadata for a given AI-generated event type.

Authentication

This endpoint requires a valid access token. Include your token in the Authorization: Bearer <token> header.

Parameters
Name Type In Required Description Example
event string (enum) path Yes AI-generated event type
ENUM
Example Request
                                    curl -X GET -H "Authorization: Bearer <your_access_token>" "https://api.empiricalmarkets.com/v1/ai/events/high-reclaimed"
                                    import requests
url = 'https://api.empiricalmarkets.com/v1/ai/events/{event}'
url = url.format(event="high-reclaimed")
headers = {'Authorization': 'Bearer <your_access_token>'}
response = requests.get(url, headers=headers)
print(response.json())
                                
Example Response

200 Metadata for the given AI-generated event type.

{
  "event": "",
  "description": "Price is predicted to recapture recent highs within the near future",
  "signal": "high-reclaim"
}

GET /v1/ai/events/{event}/latest Get Latest Events starter
Description

Get latest events for a given AI-generated event type.

Authentication

This endpoint requires a valid access token. Include your token in the Authorization: Bearer <token> header.

Parameters
Name Type In Required Description Example
event string (enum) path Yes AI-generated event type
ENUM
model_id integer query No Filter by specific Model ID 1
Example Request
                                    curl -X GET -H "Authorization: Bearer <your_access_token>" "https://api.empiricalmarkets.com/v1/ai/events/high-reclaimed/latest?model_id=1"
                                    import requests
url = 'https://api.empiricalmarkets.com/v1/ai/events/{event}/latest'
url = url.format(event="high-reclaimed")
headers = {'Authorization': 'Bearer <your_access_token>'}
params = {'model_id': 1}
response = requests.get(url, headers=headers, params=params)
print(response.json())
                                
Example Response

200 Latest events for the given AI-generated event type.

{
  "event": "",
  "data": [
    {
      "model_id": 1,
      "date": "2023-01-01",
      "ticker": "AAPL",
      "event": "",
      "value": 0.94,
      "value_type": ""
    }
  ]
}

GET /v1/ai/events/{event}/models Ai Event Models... starter
Description

Get model versions that produce the given AI-generated event type.

Authentication

This endpoint requires a valid access token. Include your token in the Authorization: Bearer <token> header.

Parameters
Name Type In Required Description Example
event string (enum) path Yes AI-generated event type
ENUM
latest boolean query No If true, return only the latest model version
Example Request
                                    curl -X GET -H "Authorization: Bearer <your_access_token>" "https://api.empiricalmarkets.com/v1/ai/events/high-reclaimed/models"
                                    import requests
url = 'https://api.empiricalmarkets.com/v1/ai/events/{event}/models'
url = url.format(event="high-reclaimed")
headers = {'Authorization': 'Bearer <your_access_token>'}
response = requests.get(url, headers=headers)
print(response.json())
                                
Example Response

200 List of model versions that produce the given AI-generated event type.

{
  "event": "",
  "models": [
    {
      "model_id": 1,
      "model_name": "Taurus",
      "model_version": "v1.0.0",
      "signal_direction": "long",
      "age_days": 10
    }
  ]
}

GET /v1/ai/events/{event}/models/{model_id} Ai Event Model... starter
Description

Get specific model that produces the given AI-generated event type.

Authentication

This endpoint requires a valid access token. Include your token in the Authorization: Bearer <token> header.

Parameters
Name Type In Required Description Example
event string (enum) path Yes AI-generated event type
ENUM
model_id integer path Yes Model version ID 1
Example Request
                                    curl -X GET -H "Authorization: Bearer <your_access_token>" "https://api.empiricalmarkets.com/v1/ai/events/high-reclaimed/models/1"
                                    import requests
url = 'https://api.empiricalmarkets.com/v1/ai/events/{event}/models/{model_id}'
url = url.format(event="high-reclaimed", model_id="1")
headers = {'Authorization': 'Bearer <your_access_token>'}
response = requests.get(url, headers=headers)
print(response.json())
                                
Example Response

200 Model that produces the given AI-generated event type.

{
  "model_id": 1,
  "model_name": "Taurus",
  "model_version": "v1.0.0",
  "signal_direction": "long",
  "age_days": 10
}

GET /v1/ai/events/{event}/models/{model_id}/metrics Ai Event Model Metrics... starter
Description

Get performance metrics for a specific model that produces the given AI-generated event type.

Authentication

This endpoint requires a valid access token. Include your token in the Authorization: Bearer <token> header.

Parameters
Name Type In Required Description Example
event string (enum) path Yes AI-generated event type
ENUM
model_id integer path Yes Model version ID 1
Example Request
                                    curl -X GET -H "Authorization: Bearer <your_access_token>" "https://api.empiricalmarkets.com/v1/ai/events/high-reclaimed/models/1/metrics"
                                    import requests
url = 'https://api.empiricalmarkets.com/v1/ai/events/{event}/models/{model_id}/metrics'
url = url.format(event="high-reclaimed", model_id="1")
headers = {'Authorization': 'Bearer <your_access_token>'}
response = requests.get(url, headers=headers)
print(response.json())
                                
Example Response

200 Performance metrics for a model that produces the given AI-generated event type.

{
  "model_id": 1,
  "model_name": "Taurus",
  "model_version": "v1.0.0",
  "signal_direction": "long",
  "metrics": [
    {
      "metric_name": "precision",
      "metric_value": 0.95,
      "direction": "long",
      "eval_horizon": 5
    }
  ]
}

GET /v1/ai/events/{event}/tickers Ai Event Available Tickers starter
Description

Get available tickers for a given AI-generated event type.

Authentication

This endpoint requires a valid access token. Include your token in the Authorization: Bearer <token> header.

Parameters
Name Type In Required Description Example
event string (enum) path Yes AI-generated event type
ENUM
model_id integer query No Filter by specific Model ID 1
Example Request
                                    curl -X GET -H "Authorization: Bearer <your_access_token>" "https://api.empiricalmarkets.com/v1/ai/events/high-reclaimed/tickers?model_id=1"
                                    import requests
url = 'https://api.empiricalmarkets.com/v1/ai/events/{event}/tickers'
url = url.format(event="high-reclaimed")
headers = {'Authorization': 'Bearer <your_access_token>'}
params = {'model_id': 1}
response = requests.get(url, headers=headers, params=params)
print(response.json())
                                
Example Response

200 Successful Response

{}

GET /v1/ai/events/{event}/tickers/{ticker} Ai Event Ticker Time Series... starter
Description

Get time series data for a given AI-generated event type and ticker.

Authentication

This endpoint requires a valid access token. Include your token in the Authorization: Bearer <token> header.

Parameters
Name Type In Required Description Example
event string (enum) path Yes AI-generated event type
ENUM
ticker string path Yes Ticker symbol AAPL
model_id integer query No Filter by specific Model ID 1
dataset string (enum) query No Dataset split to query for
ENUM
Example Request
                                    curl -X GET -H "Authorization: Bearer <your_access_token>" "https://api.empiricalmarkets.com/v1/ai/events/high-reclaimed/tickers/AAPL?model_id=1&dataset=test"
                                    import requests
url = 'https://api.empiricalmarkets.com/v1/ai/events/{event}/tickers/{ticker}'
url = url.format(event="high-reclaimed", ticker="AAPL")
headers = {'Authorization': 'Bearer <your_access_token>'}
params = {'model_id': 1, 'dataset': 'test'}
response = requests.get(url, headers=headers, params=params)
print(response.json())
                                
Example Response

200 Time series data for the given AI-generated event type and ticker.

{
  "ticker": "AAPL",
  "event": "",
  "event_description": "Price is predicted to recapture recent highs within the near future",
  "model_name": "Taurus",
  "data": [
    {
      "model_id": 1,
      "date": "2023-01-01",
      "ticker": "AAPL",
      "event": "",
      "value": 0.94,
      "value_type": "",
      "price": 150.25
    }
  ]
}

GET /v1/ai/sentiment Available Ai Sentiment Topics starter
Description

Get available AI sentiment topics and associated metadata.

Authentication

This endpoint requires a valid access token. Include your token in the Authorization: Bearer <token> header.

Example Request
                                    curl -X GET -H "Authorization: Bearer <your_access_token>" "https://api.empiricalmarkets.com/v1/ai/sentiment"
                                    import requests
url = 'https://api.empiricalmarkets.com/v1/ai/sentiment'
headers = {'Authorization': 'Bearer <your_access_token>'}
response = requests.get(url, headers=headers)
print(response.json())
                                
Example Response

200 List of available AI sentiment topics.

{
  "topics": [
    {
      "topic": "",
      "description": "Sector-level market sentiment derived from Federal Reserve publications.",
      "dimension_type": ""
    }
  ]
}

GET /v1/ai/sentiment/{topic} Ai Sentiment Topic Info starter
Description

Get metadata for a given AI sentiment topic.

Authentication

This endpoint requires a valid access token. Include your token in the Authorization: Bearer <token> header.

Parameters
Name Type In Required Description Example
topic string (enum) path Yes AI sentiment topic name
ENUM
Example Request
                                    curl -X GET -H "Authorization: Bearer <your_access_token>" "https://api.empiricalmarkets.com/v1/ai/sentiment/fed-market-sectors"
                                    import requests
url = 'https://api.empiricalmarkets.com/v1/ai/sentiment/{topic}'
url = url.format(topic="fed-market-sectors")
headers = {'Authorization': 'Bearer <your_access_token>'}
response = requests.get(url, headers=headers)
print(response.json())
                                
Example Response

200 Metadata for the given AI sentiment topic.

{
  "topic": "",
  "description": "Sector-level market sentiment derived from Federal Reserve publications.",
  "dimension_type": "",
  "dimensions": [
    "consumer-discretionary",
    "consumer-staples",
    "energy",
    "financials",
    "healthcare",
    "industrials",
    "materials",
    "overall",
    "real-estate",
    "technology",
    "utilities"
  ],
  "value_type": "score",
  "value_map": {
    "1": "Strongly Bearish",
    "2": "Slightly Bearish",
    "3": "Neutral",
    "4": "Slightly Bullish",
    "5": "Strongly Bullish"
  }
}

GET /v1/ai/sentiment/{topic}/latest Get Latest Topic Sentiment starter
Description

Get the latest sentiment for all dimensions in a topic.

Authentication

This endpoint requires a valid access token. Include your token in the Authorization: Bearer <token> header.

Parameters
Name Type In Required Description Example
topic string (enum) path Yes AI sentiment topic name
ENUM
model_name string query No
model_version string query No
Example Request
                                    curl -X GET -H "Authorization: Bearer <your_access_token>" "https://api.empiricalmarkets.com/v1/ai/sentiment/fed-market-sectors/latest"
                                    import requests
url = 'https://api.empiricalmarkets.com/v1/ai/sentiment/{topic}/latest'
url = url.format(topic="fed-market-sectors")
headers = {'Authorization': 'Bearer <your_access_token>'}
response = requests.get(url, headers=headers)
print(response.json())
                                
Example Response

200 Latest sentiment

{
  "topic": "",
  "description": "Sector-level market sentiment derived from Federal Reserve publications.",
  "dimension_type": "",
  "value_type": "score",
  "value_map": {
    "1": "Strongly Bearish",
    "2": "Slightly Bearish",
    "3": "Neutral",
    "4": "Slightly Bullish",
    "5": "Strongly Bullish"
  },
  "sentiment": [
    {
      "date": "2025-11-26",
      "model_name": "Newton",
      "model_version": "1.0.0",
      "dimension": "financials",
      "score": 5,
      "change": 1,
      "reasoning": "The economy is showing signs of growth."
    }
  ]
}

GET /v1/ai/sentiment/{topic}/models Ai Sentiment Topic Models... starter
Description

Get model versions that produce sentiment for the given topic.

Authentication

This endpoint requires a valid access token. Include your token in the Authorization: Bearer <token> header.

Parameters
Name Type In Required Description Example
topic string (enum) path Yes AI sentiment topic name
ENUM
Example Request
                                    curl -X GET -H "Authorization: Bearer <your_access_token>" "https://api.empiricalmarkets.com/v1/ai/sentiment/fed-market-sectors/models"
                                    import requests
url = 'https://api.empiricalmarkets.com/v1/ai/sentiment/{topic}/models'
url = url.format(topic="fed-market-sectors")
headers = {'Authorization': 'Bearer <your_access_token>'}
response = requests.get(url, headers=headers)
print(response.json())
                                
Example Response

200 List of model versions for the given sentiment topic.

{
  "topic": "fed-market-sectors",
  "description": "Sector-level market sentiment derived from Federal Reserve publications.",
  "models": [
    {
      "model_name": "Newton",
      "model_version": "1.0.0"
    }
  ]
}

GET /v1/ai/sentiment/{topic}/dimensions Ai Sentiment Topic Dimensions... starter
Description

Get available dimension values for a given AI sentiment topic.

Authentication

This endpoint requires a valid access token. Include your token in the Authorization: Bearer <token> header.

Parameters
Name Type In Required Description Example
topic string (enum) path Yes AI sentiment topic name
ENUM
Example Request
                                    curl -X GET -H "Authorization: Bearer <your_access_token>" "https://api.empiricalmarkets.com/v1/ai/sentiment/fed-market-sectors/dimensions"
                                    import requests
url = 'https://api.empiricalmarkets.com/v1/ai/sentiment/{topic}/dimensions'
url = url.format(topic="fed-market-sectors")
headers = {'Authorization': 'Bearer <your_access_token>'}
response = requests.get(url, headers=headers)
print(response.json())
                                
Example Response

200 List of available dimensions for the given topic.

{
  "topic": "",
  "dimension_type": "category",
  "dimensions": [
    "technology",
    "energy",
    "financials"
  ]
}

GET /v1/ai/sentiment/{topic}/dimensions/{dimension} Ai Sentiment Dimension Time Series... starter
Description

Get sentiment time series for a given topic and dimension value.

Authentication

This endpoint requires a valid access token. Include your token in the Authorization: Bearer <token> header.

Parameters
Name Type In Required Description Example
topic string (enum) path Yes AI sentiment topic name
ENUM
dimension string path Yes Dimension value to get sentiment for technology
model_name string query No Optional filter by model name
model_version string query No Optional filter by model version
Example Request
                                    curl -X GET -H "Authorization: Bearer <your_access_token>" "https://api.empiricalmarkets.com/v1/ai/sentiment/fed-market-sectors/dimensions/technology"
                                    import requests
url = 'https://api.empiricalmarkets.com/v1/ai/sentiment/{topic}/dimensions/{dimension}'
url = url.format(topic="fed-market-sectors", dimension="technology")
headers = {'Authorization': 'Bearer <your_access_token>'}
response = requests.get(url, headers=headers)
print(response.json())
                                
Example Response

200 AI sentiment values for the given topic and dimension.

{
  "topic": "",
  "description": "Sector-level market sentiment derived from Federal Reserve publications.",
  "dimension": "financials",
  "dimension_type": "",
  "model": "Newton",
  "value_type": "score",
  "value_map": {
    "1": "Strongly Bearish",
    "2": "Slightly Bearish",
    "3": "Neutral",
    "4": "Slightly Bullish",
    "5": "Strongly Bullish"
  },
  "sentiment": [
    {
      "date": "2025-11-26",
      "model_name": "Newton",
      "model_version": "1.0.0",
      "dimension": "financials",
      "score": 5,
      "reasoning": "The economy is showing signs of growth."
    }
  ]
}

Federal Reserve

Federal Reserve data including FOMC meetings, speeches, and economic projections.

GET /v1/fed/holdings Federal Reserve Holdings Securities starter
Description

Get list of all SOMA Securities.

Authentication

This endpoint requires a valid access token. Include your token in the Authorization: Bearer <token> header.

Example Request
                                    curl -X GET -H "Authorization: Bearer <your_access_token>" "https://api.empiricalmarkets.com/v1/fed/holdings"
                                    import requests
url = 'https://api.empiricalmarkets.com/v1/fed/holdings'
headers = {'Authorization': 'Bearer <your_access_token>'}
response = requests.get(url, headers=headers)
print(response.json())
                                
Example Response

200 List of all SOMA Securities.

{
  "securities": [
    {
      "description": "Agency-guaranteed residential mortgage-backed securities.",
      "name": "Mortgage-Backed Securities",
      "security": "mbs"
    },
    {
      "description": "Agency-guaranteed multifamily mortgage-backed securities.",
      "name": "Commercial Mortgage-Backed Securities",
      "security": "cmbs"
    },
    {
      "description": "Treasury securities whose principal adjusts with the Consumer Price Index.",
      "name": "Treasury Inflation-Protected Securities",
      "security": "tips"
    },
    {
      "description": "Treasury securities with a variable interest rate indexed to the 13-week T-bill.",
      "name": "Floating Rate Notes",
      "security": "frn"
    },
    {
      "description": "Fixed-rate Treasury securities with maturities between 2 years and 30 years.",
      "name": "Treasury Notes & Bonds",
      "security": "notes-bonds"
    },
    {
      "description": "Fixed-rate Treasury securities with maturities of one year or less.",
      "name": "Treasury Bills",
      "security": "bills"
    },
    {
      "description": "Debt securities issued by government-sponsored enterprises including Fannie Mae, Freddie Mac, and the Federal Home Loan Banks.",
      "name": "Agency Debt",
      "security": "agency"
    },
    {
      "description": "Aggregate of all Treasury securities (bills, notes, bonds, TIPS, and FRNs) held in SOMA.",
      "name": "Total Treasury Holdings",
      "security": "treasury-total"
    },
    {
      "description": "Aggregate of all mortgage-backed securities (MBS and CMBS) held in SOMA.",
      "name": "Total Mortgage Holdings",
      "security": "mortgage-total"
    },
    {
      "description": "Total par value of all securities held in the System Open Market Account.",
      "name": "Total SOMA Holdings",
      "security": "total"
    }
  ]
}

GET /v1/fed/holdings/latest Federal Reserve Holdings Latest Snapshot starter
Description

Get Federal Reserve Holdings Latest Snapshot

Authentication

This endpoint requires a valid access token. Include your token in the Authorization: Bearer <token> header.

Example Request
                                    curl -X GET -H "Authorization: Bearer <your_access_token>" "https://api.empiricalmarkets.com/v1/fed/holdings/latest"
                                    import requests
url = 'https://api.empiricalmarkets.com/v1/fed/holdings/latest'
headers = {'Authorization': 'Bearer <your_access_token>'}
response = requests.get(url, headers=headers)
print(response.json())
                                
Example Response

200 Federal Reserve Holdings Latest Snapshot

{
  "date": "2025-11-26",
  "latest": {
    "date": "2025-11-26",
    "mbs": 1500000.0,
    "cmbs": 300000.0,
    "tips": 500000.0,
    "frn": 200000.0,
    "notes_bonds": 2500000.0,
    "bills": 1000000.0,
    "agency": 800000.0,
    "treasury_total": 4000000.0,
    "mortgage_total": 1800000.0,
    "total": 5800000.0
  }
}

GET /v1/fed/holdings/historical Federal Reserve Holdings Historical Data starter
Description

Get Federal Reserve Holdings Historical Data

Authentication

This endpoint requires a valid access token. Include your token in the Authorization: Bearer <token> header.

Parameters
Name Type In Required Description Example
start_date string query No Start date 2024-01-01
end_date string query No End date 2024-01-31
date_cursor string query No Date pagination cursor from previous response's next_cursor 2024-06-01
limit integer query No Max rows to return (<= 1000) 500
Example Request
                                    curl -X GET -H "Authorization: Bearer <your_access_token>" "https://api.empiricalmarkets.com/v1/fed/holdings/historical?start_date=2024-01-01&end_date=2024-01-31&date_cursor=2024-06-01&limit=500"
                                    import requests
url = 'https://api.empiricalmarkets.com/v1/fed/holdings/historical'
headers = {'Authorization': 'Bearer <your_access_token>'}
params = {'start_date': '2024-01-01', 'end_date': '2024-01-31', 'date_cursor': '2024-06-01', 'limit': 500}
response = requests.get(url, headers=headers, params=params)
print(response.json())
                                
Example Response

200 Federal Reserve Holdings Historical Data

{
  "date_cursor": {
    "limit": 756,
    "count": 756,
    "has_more": true,
    "next_cursor": "2023-01-01"
  },
  "holdings": [
    {
      "date": "2025-11-26",
      "mbs": 1500000.0,
      "cmbs": 300000.0,
      "tips": 500000.0,
      "frn": 200000.0,
      "notes_bonds": 2500000.0,
      "bills": 1000000.0,
      "agency": 800000.0,
      "treasury_total": 4000000.0,
      "mortgage_total": 1800000.0,
      "total": 5800000.0
    }
  ]
}

GET /v1/fed/operations Federal Reserve Operations starter
Description

Get list of all Fed operations.

Authentication

This endpoint requires a valid access token. Include your token in the Authorization: Bearer <token> header.

Example Request
                                    curl -X GET -H "Authorization: Bearer <your_access_token>" "https://api.empiricalmarkets.com/v1/fed/operations"
                                    import requests
url = 'https://api.empiricalmarkets.com/v1/fed/operations'
headers = {'Authorization': 'Bearer <your_access_token>'}
response = requests.get(url, headers=headers)
print(response.json())
                                
Example Response

200 List of all Fed operations.

{
  "operations": [
    "repo",
    "reverse-repo"
  ]
}

GET /v1/fed/operations/{operation} Federal Reserve Operation Series starter
Description

Get time series data for a specific Fed operation type.

Authentication

This endpoint requires a valid access token. Include your token in the Authorization: Bearer <token> header.

Parameters
Name Type In Required Description Example
operation string (enum) path Yes Fed operation type
ENUM
start_date string query No Start date 2024-01-01
end_date string query No End date 2024-01-31
unit string (enum) query No Unit for total_amount field in the response.
ENUM
date_cursor string query No Date pagination cursor from previous response's next_cursor 2024-06-01
limit integer query No Max rows to return (<= 1260) 756
Example Request
                                    curl -X GET -H "Authorization: Bearer <your_access_token>" "https://api.empiricalmarkets.com/v1/fed/operations/repo?start_date=2024-01-01&end_date=2024-01-31&unit=millions&date_cursor=2024-06-01&limit=756"
                                    import requests
url = 'https://api.empiricalmarkets.com/v1/fed/operations/{operation}'
url = url.format(operation="repo")
headers = {'Authorization': 'Bearer <your_access_token>'}
params = {'start_date': '2024-01-01', 'end_date': '2024-01-31', 'unit': 'millions', 'date_cursor': '2024-06-01', 'limit': 756}
response = requests.get(url, headers=headers, params=params)
print(response.json())
                                
Example Response

200 Time series data for a specific Fed operation type.

{
  "operation": "repo",
  "date_cursor": {
    "limit": 756,
    "count": 756,
    "has_more": true,
    "next_cursor": "2023-01-01"
  },
  "series": [
    {
      "date": "2025-11-26",
      "operation_type": "Repo",
      "total_amount": 5000.0,
      "total_amount_unit": "millions",
      "num_counterparties": 7
    }
  ]
}

GET /v1/fed/publications Get Publications starter
Description

Get list of available Federal Reserve publications.

Authentication

This endpoint requires a valid access token. Include your token in the Authorization: Bearer <token> header.

Example Request
                                    curl -X GET -H "Authorization: Bearer <your_access_token>" "https://api.empiricalmarkets.com/v1/fed/publications"
                                    import requests
url = 'https://api.empiricalmarkets.com/v1/fed/publications'
headers = {'Authorization': 'Bearer <your_access_token>'}
response = requests.get(url, headers=headers)
print(response.json())
                                
Example Response

200 List of available Federal Reserve publications.

{
  "publications": [
    {
      "publication": "beige-book",
      "name": "Beige Book",
      "description": "The Beige Book is a report published by the Federal Reserve eight times a year, providing a snapshot of current economic conditions across the 12 Federal Reserve Districts."
    }
  ]
}

GET /v1/fed/publications/{publication} Publication Release Dates... starter
Description

Get release dates for a specific Federal Reserve publication.

Authentication

This endpoint requires a valid access token. Include your token in the Authorization: Bearer <token> header.

Parameters
Name Type In Required Description Example
publication string (enum) path Yes Publication name
ENUM
Example Request
                                    curl -X GET -H "Authorization: Bearer <your_access_token>" "https://api.empiricalmarkets.com/v1/fed/publications/beige-book"
                                    import requests
url = 'https://api.empiricalmarkets.com/v1/fed/publications/{publication}'
url = url.format(publication="beige-book")
headers = {'Authorization': 'Bearer <your_access_token>'}
response = requests.get(url, headers=headers)
print(response.json())
                                
Example Response

200 Release Dates for a specific Federal Reserve publication.

{
  "publication": "beige-book",
  "name": "Beige Book",
  "description": "The Beige Book is a report published by the Federal Reserve eight times a year, providing a snapshot of current economic conditions across the 12 Federal Reserve Districts.",
  "release_dates": [
    "2025-11-26",
    "2025-10-15",
    "2025-08-20"
  ]
}

GET /v1/fed/publications/{publication}/latest Get Publication starter
Description

Get details for a specific Federal Reserve publication.

Authentication

This endpoint requires a valid access token. Include your token in the Authorization: Bearer <token> header.

Parameters
Name Type In Required Description Example
publication string (enum) path Yes Publication name
ENUM
Example Request
                                    curl -X GET -H "Authorization: Bearer <your_access_token>" "https://api.empiricalmarkets.com/v1/fed/publications/beige-book/latest"
                                    import requests
url = 'https://api.empiricalmarkets.com/v1/fed/publications/{publication}/latest'
url = url.format(publication="beige-book")
headers = {'Authorization': 'Bearer <your_access_token>'}
response = requests.get(url, headers=headers)
print(response.json())
                                
Example Response

200 Successful Response

{}

GET /v1/fed/publications/{publication}/release/{date} Get Publication Release... starter
Description

Get Federal Reserve Publication details and content for a specific release date.

Authentication

This endpoint requires a valid access token. Include your token in the Authorization: Bearer <token> header.

Parameters
Name Type In Required Description Example
publication string (enum) path Yes Fed publication name
ENUM
date string path Yes Date of the publication release in YYYY-MM-DD format 2023-01-25
Example Request
                                    curl -X GET -H "Authorization: Bearer <your_access_token>" "https://api.empiricalmarkets.com/v1/fed/publications/beige-book/release/2023-01-25"
                                    import requests
url = 'https://api.empiricalmarkets.com/v1/fed/publications/{publication}/release/{date}'
url = url.format(publication="beige-book", date="2023-01-25")
headers = {'Authorization': 'Bearer <your_access_token>'}
response = requests.get(url, headers=headers)
print(response.json())
                                
Example Response

200 Successful Response

{}

Insiders

Insider trading data and SEC Form 4 filings.

GET /v1/insiders/tickers Available Insider Trading Tickers starter
Description

Get list of available tickers with insider trading data.

Authentication

This endpoint requires a valid access token. Include your token in the Authorization: Bearer <token> header.

Example Request
                                    curl -X GET -H "Authorization: Bearer <your_access_token>" "https://api.empiricalmarkets.com/v1/insiders/tickers"
                                    import requests
url = 'https://api.empiricalmarkets.com/v1/insiders/tickers'
headers = {'Authorization': 'Bearer <your_access_token>'}
response = requests.get(url, headers=headers)
print(response.json())
                                
Example Response

200 List of available tickers with insider trading data.

{
  "tickers": [
    "AAPL",
    "MSFT",
    "TSLA"
  ]
}

GET /v1/insiders/tickers/{ticker}/reports Insider Trading Transaction Reports starter
Description

Get insider trading transaction reports for a given ticker.

Authentication

This endpoint requires a valid access token. Include your token in the Authorization: Bearer <token> header.

Parameters
Name Type In Required Description Example
ticker string path Yes Stock ticker symbol AAPL
start_date string query No Start date for the date range filter (YYYY-MM-DD) 2023-01-01
end_date string query No Inclusive end date for the date range filter (YYYY-MM-DD) 2023-12-31
date_cursor string query No Cursor for pagination (filed_date from previous response).
limit integer query No Maximum number of records to return. 256
Example Request
                                    curl -X GET -H "Authorization: Bearer <your_access_token>" "https://api.empiricalmarkets.com/v1/insiders/tickers/AAPL/reports?start_date=2023-01-01&end_date=2023-12-31&limit=256"
                                    import requests
url = 'https://api.empiricalmarkets.com/v1/insiders/tickers/{ticker}/reports'
url = url.format(ticker="AAPL")
headers = {'Authorization': 'Bearer <your_access_token>'}
params = {'start_date': '2023-01-01', 'end_date': '2023-12-31', 'limit': 256}
response = requests.get(url, headers=headers, params=params)
print(response.json())
                                
Example Response

200 Successful Response

{
  "ticker": "TSLA",
  "date_cursor": {
    "limit": 756,
    "count": 756,
    "has_more": true,
    "next_cursor": "2023-01-01"
  },
  "reports": [
    {
      "ticker": "TSLA",
      "filed_date": "2024-12-31",
      "reporter": {
        "name": "Musk Elon",
        "title": "CEO"
      },
      "non_deriv_txs": {
        "code": "G",
        "description": "Bona fide gift",
        "ownership": "I",
        "price": 0.0,
        "shares": 268000.0
      },
      "deriv_txs": {
        "code": "S",
        "description": "Sale",
        "ownership": "D",
        "price": 800.0,
        "shares": 1000.0
      },
      "footnotes": {
        "1": "The transaction was reported late due to a delay in filing the Form 4."
      }
    }
  ]
}

GET /v1/insiders/tickers/{ticker}/reporters Get Insider Transaction Reporters For Ticker... starter
Description

Get list of insider transaction reporters for a given ticker.

Authentication

This endpoint requires a valid access token. Include your token in the Authorization: Bearer <token> header.

Parameters
Name Type In Required Description Example
ticker string path Yes Ticker symbol AAPL
Example Request
                                    curl -X GET -H "Authorization: Bearer <your_access_token>" "https://api.empiricalmarkets.com/v1/insiders/tickers/AAPL/reporters"
                                    import requests
url = 'https://api.empiricalmarkets.com/v1/insiders/tickers/{ticker}/reporters'
url = url.format(ticker="AAPL")
headers = {'Authorization': 'Bearer <your_access_token>'}
response = requests.get(url, headers=headers)
print(response.json())
                                
Example Response

200 List of insider transaction reporters for the given ticker.

{
  "reporters": [
    {
      "reporter_name": "Musk Elon",
      "reporter_title": "CEO"
    }
  ]
}

GET /v1/insiders/tickers/{ticker}/transactions/codes Available Insider Transaction Codes... starter
Description

Get list of insider transaction codes and their descriptions across all tickers.

Authentication

This endpoint requires a valid access token. Include your token in the Authorization: Bearer <token> header.

Parameters
Name Type In Required Description Example
ticker string path Yes Ticker symbol AAPL
Example Request
                                    curl -X GET -H "Authorization: Bearer <your_access_token>" "https://api.empiricalmarkets.com/v1/insiders/tickers/AAPL/transactions/codes"
                                    import requests
url = 'https://api.empiricalmarkets.com/v1/insiders/tickers/{ticker}/transactions/codes'
url = url.format(ticker="AAPL")
headers = {'Authorization': 'Bearer <your_access_token>'}
response = requests.get(url, headers=headers)
print(response.json())
                                
Example Response

200 List of insider transaction codes and their descriptions across all tickers.

{
  "codes": [
    {
      "code": "S",
      "description": "Open market or private sale"
    },
    {
      "code": "P",
      "description": "Open market or private purchase"
    }
  ]
}

GET /v1/insiders/tickers/{ticker}/transactions/codes/{code} Insider Transactions Time Series... starter
Description

Get time series of insider non-derivative transactions given a transaction code.

Authentication

This endpoint requires a valid access token. Include your token in the Authorization: Bearer <token> header.

Parameters
Name Type In Required Description Example
ticker string path Yes Ticker symbol AAPL
code string (enum) path Yes Transaction code.
ENUM
start_date string query No Start date for the date range filter (YYYY-MM-DD) 2023-01-01
end_date string query No Inclusive end date for the date range filter (YYYY-MM-DD) 2023-12-31
date_cursor string query No Cursor for pagination (filed_date from previous response).
limit integer query No Maximum number of records to return. 756
Example Request
                                    curl -X GET -H "Authorization: Bearer <your_access_token>" "https://api.empiricalmarkets.com/v1/insiders/tickers/AAPL/transactions/codes/P?start_date=2023-01-01&end_date=2023-12-31&limit=756"
                                    import requests
url = 'https://api.empiricalmarkets.com/v1/insiders/tickers/{ticker}/transactions/codes/{code}'
url = url.format(ticker="AAPL", code="P")
headers = {'Authorization': 'Bearer <your_access_token>'}
params = {'start_date': '2023-01-01', 'end_date': '2023-12-31', 'limit': 756}
response = requests.get(url, headers=headers, params=params)
print(response.json())
                                
Example Response

200 Time series of insider transactions for the given ticker and transaction code.

{
  "ticker": "TSLA",
  "code": "G",
  "code_description": "Bona fide gift",
  "date_cursor": {
    "limit": 756,
    "count": 756,
    "has_more": true,
    "next_cursor": "2023-01-01"
  },
  "transactions": [
    {
      "ticker": "TSLA",
      "filed_date": "2024-12-31",
      "tx_instrument": "Common Stock",
      "tx_code": "G",
      "tx_shares": 268000.0,
      "tx_price": 0.0,
      "tx_ownership": "I",
      "reporter_name": "Musk Elon",
      "reporter_title": "CEO"
    }
  ]
}

GET /v1/insiders/tickers/{ticker}/derivatives/codes Available Insider Derivative Transaction Codes... starter
Description

Get list of insider derivative transaction codes and their descriptions across all tickers.

Authentication

This endpoint requires a valid access token. Include your token in the Authorization: Bearer <token> header.

Parameters
Name Type In Required Description Example
ticker string path Yes Ticker symbol AAPL
Example Request
                                    curl -X GET -H "Authorization: Bearer <your_access_token>" "https://api.empiricalmarkets.com/v1/insiders/tickers/AAPL/derivatives/codes"
                                    import requests
url = 'https://api.empiricalmarkets.com/v1/insiders/tickers/{ticker}/derivatives/codes'
url = url.format(ticker="AAPL")
headers = {'Authorization': 'Bearer <your_access_token>'}
response = requests.get(url, headers=headers)
print(response.json())
                                
Example Response

200 List of insider derivative transaction codes and their descriptions across all tickers.

{
  "codes": [
    {
      "code": "S",
      "description": "Open market or private sale"
    },
    {
      "code": "P",
      "description": "Open market or private purchase"
    }
  ]
}

GET /v1/insiders/tickers/{ticker}/derivatives/codes/{code} Insider Derivative Transactions Time Series... starter
Description

Get time series of insider derivative transactions given a transaction code.

Authentication

This endpoint requires a valid access token. Include your token in the Authorization: Bearer <token> header.

Parameters
Name Type In Required Description Example
ticker string path Yes Ticker symbol AAPL
code string (enum) path Yes Transaction code.
ENUM
start_date string query No Start date for the date range filter (YYYY-MM-DD) 2023-01-01
end_date string query No Inclusive end date for the date range filter (YYYY-MM-DD) 2023-12-31
date_cursor string query No Cursor for pagination (filed_date from previous response).
limit integer query No Maximum number of records to return. 756
Example Request
                                    curl -X GET -H "Authorization: Bearer <your_access_token>" "https://api.empiricalmarkets.com/v1/insiders/tickers/AAPL/derivatives/codes/P?start_date=2023-01-01&end_date=2023-12-31&limit=756"
                                    import requests
url = 'https://api.empiricalmarkets.com/v1/insiders/tickers/{ticker}/derivatives/codes/{code}'
url = url.format(ticker="AAPL", code="P")
headers = {'Authorization': 'Bearer <your_access_token>'}
params = {'start_date': '2023-01-01', 'end_date': '2023-12-31', 'limit': 756}
response = requests.get(url, headers=headers, params=params)
print(response.json())
                                
Example Response

200 Successful Response

{
  "ticker": "TSLA",
  "date_cursor": {
    "limit": 756,
    "count": 756,
    "has_more": true,
    "next_cursor": "2023-01-01"
  },
  "transactions": [
    {
      "ticker": "TSLA",
      "filed_date": "2024-12-31",
      "tx_instrument": "Common Stock",
      "tx_code": "G",
      "tx_shares": 268000.0,
      "tx_price": 0.0,
      "tx_ownership": "I",
      "reporter_name": "Musk Elon",
      "reporter_title": "CEO"
    }
  ]
}

GET /v1/insiders/tickers/{ticker}/sales Insider Sale Volume Time Series starter
Description

Get time series of insider sales volume for a given ticker.

Authentication

This endpoint requires a valid access token. Include your token in the Authorization: Bearer <token> header.

Parameters
Name Type In Required Description Example
ticker string path Yes Ticker symbol AAPL
start_date string query No Start date for the date range filter (YYYY-MM-DD) 2023-01-01
end_date string query No Inclusive end date for the date range filter (YYYY-MM-DD) 2023-12-31
date_cursor string query No Cursor for pagination (filed_date from previous response).
limit integer query No Maximum number of records to return. 756
Example Request
                                    curl -X GET -H "Authorization: Bearer <your_access_token>" "https://api.empiricalmarkets.com/v1/insiders/tickers/AAPL/sales?start_date=2023-01-01&end_date=2023-12-31&limit=756"
                                    import requests
url = 'https://api.empiricalmarkets.com/v1/insiders/tickers/{ticker}/sales'
url = url.format(ticker="AAPL")
headers = {'Authorization': 'Bearer <your_access_token>'}
params = {'start_date': '2023-01-01', 'end_date': '2023-12-31', 'limit': 756}
response = requests.get(url, headers=headers, params=params)
print(response.json())
                                
Example Response

200 Time series of insider sales volume for the given ticker.

{
  "ticker": "TSLA",
  "date_cursor": {
    "limit": 756,
    "count": 756,
    "has_more": true,
    "next_cursor": "2023-01-01"
  },
  "data": [
    {
      "ticker": "TSLA",
      "report_date": "2025-12-05",
      "total_value": 132000
    }
  ]
}

GET /v1/insiders/tickers/{ticker}/sales/anomalies Ticker Insider Sale Anomalies starter
Description

Get insider sales anomalies for a given ticker.

Authentication

This endpoint requires a valid access token. Include your token in the Authorization: Bearer <token> header.

Parameters
Name Type In Required Description Example
ticker string path Yes Ticker symbol AAPL
Example Request
                                    curl -X GET -H "Authorization: Bearer <your_access_token>" "https://api.empiricalmarkets.com/v1/insiders/tickers/AAPL/sales/anomalies"
                                    import requests
url = 'https://api.empiricalmarkets.com/v1/insiders/tickers/{ticker}/sales/anomalies'
url = url.format(ticker="AAPL")
headers = {'Authorization': 'Bearer <your_access_token>'}
response = requests.get(url, headers=headers)
print(response.json())
                                
Example Response

200 Insider sales anomalies for the given ticker.

{
  "ticker": "TSLA",
  "anomalies": [
    {
      "ticker": "TSLA",
      "report_date": "2025-12-05",
      "total_value": 132000,
      "anomaly_type": "high"
    }
  ]
}

GET /v1/insiders/tickers/{ticker}/purchases Insider Purchase Volume Time Series... starter
Description

Get time series of insider purchase volume for a given ticker.

Authentication

This endpoint requires a valid access token. Include your token in the Authorization: Bearer <token> header.

Parameters
Name Type In Required Description Example
ticker string path Yes Ticker symbol AAPL
start_date string query No Start date for the date range filter (YYYY-MM-DD) 2023-01-01
end_date string query No Inclusive end date for the date range filter (YYYY-MM-DD) 2023-12-31
date_cursor string query No Cursor for pagination (filed_date from previous response).
limit integer query No Maximum number of records to return. 756
Example Request
                                    curl -X GET -H "Authorization: Bearer <your_access_token>" "https://api.empiricalmarkets.com/v1/insiders/tickers/AAPL/purchases?start_date=2023-01-01&end_date=2023-12-31&limit=756"
                                    import requests
url = 'https://api.empiricalmarkets.com/v1/insiders/tickers/{ticker}/purchases'
url = url.format(ticker="AAPL")
headers = {'Authorization': 'Bearer <your_access_token>'}
params = {'start_date': '2023-01-01', 'end_date': '2023-12-31', 'limit': 756}
response = requests.get(url, headers=headers, params=params)
print(response.json())
                                
Example Response

200 Time series of insider purchase volume for the given ticker.

{
  "ticker": "TSLA",
  "date_cursor": {
    "limit": 756,
    "count": 756,
    "has_more": true,
    "next_cursor": "2023-01-01"
  },
  "data": [
    {
      "ticker": "TSLA",
      "report_date": "2025-12-05",
      "total_value": 132000
    }
  ]
}

GET /v1/insiders/tickers/{ticker}/purchases/anomalies Ticker Insider Purchase Anomalies starter
Description

Get insider purchase anomalies for a given ticker.

Authentication

This endpoint requires a valid access token. Include your token in the Authorization: Bearer <token> header.

Parameters
Name Type In Required Description Example
ticker string path Yes Ticker symbol AAPL
Example Request
                                    curl -X GET -H "Authorization: Bearer <your_access_token>" "https://api.empiricalmarkets.com/v1/insiders/tickers/AAPL/purchases/anomalies"
                                    import requests
url = 'https://api.empiricalmarkets.com/v1/insiders/tickers/{ticker}/purchases/anomalies'
url = url.format(ticker="AAPL")
headers = {'Authorization': 'Bearer <your_access_token>'}
response = requests.get(url, headers=headers)
print(response.json())
                                
Example Response

200 Insider purchase anomalies for the given ticker.

{
  "ticker": "TSLA",
  "anomalies": [
    {
      "ticker": "TSLA",
      "report_date": "2025-12-05",
      "total_value": 132000,
      "anomaly_type": "high"
    }
  ]
}

GET /v1/insiders/aggregates/sales Market Insider Sale Volume Time Series... demo
Description

Get time series of insider sales volume for the entire market.

Authentication

This endpoint requires a valid access token. Include your token in the Authorization: Bearer <token> header.

Parameters
Name Type In Required Description Example
start_date string query No Start date for the date range filter (YYYY-MM-DD) 2023-01-01
end_date string query No Inclusive end date for the date range filter (YYYY-MM-DD) 2023-12-31
date_cursor string query No Date pagination cursor from previous response's next_cursor 2024-06-01
limit integer query No Max rows to return (<= 1260) 756
Example Request
                                    curl -X GET -H "Authorization: Bearer <your_access_token>" "https://api.empiricalmarkets.com/v1/insiders/aggregates/sales?start_date=2023-01-01&end_date=2023-12-31&date_cursor=2024-06-01&limit=756"
                                    import requests
url = 'https://api.empiricalmarkets.com/v1/insiders/aggregates/sales'
headers = {'Authorization': 'Bearer <your_access_token>'}
params = {'start_date': '2023-01-01', 'end_date': '2023-12-31', 'date_cursor': '2024-06-01', 'limit': 756}
response = requests.get(url, headers=headers, params=params)
print(response.json())
                                
Example Response

200 Time series of insider sales volume for the entire market.

{
  "date_cursor": {
    "limit": 756,
    "count": 756,
    "has_more": true,
    "next_cursor": "2023-01-01"
  },
  "data": [
    {
      "report_date": "2025-12-05",
      "ticker_count": 143,
      "total_value": 267000000
    }
  ]
}

GET /v1/insiders/aggregates/sales/anomalies Market Insider Sale Anomalies demo
Description

Get insider sales anomalies for the entire market.

Authentication

This endpoint requires a valid access token. Include your token in the Authorization: Bearer <token> header.

Example Request
                                    curl -X GET -H "Authorization: Bearer <your_access_token>" "https://api.empiricalmarkets.com/v1/insiders/aggregates/sales/anomalies"
                                    import requests
url = 'https://api.empiricalmarkets.com/v1/insiders/aggregates/sales/anomalies'
headers = {'Authorization': 'Bearer <your_access_token>'}
response = requests.get(url, headers=headers)
print(response.json())
                                
Example Response

200 Insider sales anomalies for the entire market.

{
  "anomalies": [
    {
      "report_date": "2025-12-05",
      "ticker_count": 143,
      "total_value": 267000000
    }
  ]
}

GET /v1/insiders/aggregates/purchases Market Insider Purchase Volume Time Series... demo
Description

Get time series of insider purchase volume for the entire market.

Authentication

This endpoint requires a valid access token. Include your token in the Authorization: Bearer <token> header.

Parameters
Name Type In Required Description Example
start_date string query No Start date for the date range filter (YYYY-MM-DD) 2023-01-01
end_date string query No Inclusive end date for the date range filter (YYYY-MM-DD) 2023-12-31
date_cursor string query No Date pagination cursor from previous response's next_cursor 2024-06-01
limit integer query No Max rows to return (<= 1260) 756
Example Request
                                    curl -X GET -H "Authorization: Bearer <your_access_token>" "https://api.empiricalmarkets.com/v1/insiders/aggregates/purchases?start_date=2023-01-01&end_date=2023-12-31&date_cursor=2024-06-01&limit=756"
                                    import requests
url = 'https://api.empiricalmarkets.com/v1/insiders/aggregates/purchases'
headers = {'Authorization': 'Bearer <your_access_token>'}
params = {'start_date': '2023-01-01', 'end_date': '2023-12-31', 'date_cursor': '2024-06-01', 'limit': 756}
response = requests.get(url, headers=headers, params=params)
print(response.json())
                                
Example Response

200 Time series of insider purchase volume for the entire market.

{
  "date_cursor": {
    "limit": 756,
    "count": 756,
    "has_more": true,
    "next_cursor": "2023-01-01"
  },
  "data": [
    {
      "report_date": "2025-12-05",
      "ticker_count": 143,
      "total_value": 267000000
    }
  ]
}

GET /v1/insiders/aggregates/purchases/anomalies Market Insider Purchase Anomalies demo
Description

Get insider purchase anomalies for the entire market.

Authentication

This endpoint requires a valid access token. Include your token in the Authorization: Bearer <token> header.

Example Request
                                    curl -X GET -H "Authorization: Bearer <your_access_token>" "https://api.empiricalmarkets.com/v1/insiders/aggregates/purchases/anomalies"
                                    import requests
url = 'https://api.empiricalmarkets.com/v1/insiders/aggregates/purchases/anomalies'
headers = {'Authorization': 'Bearer <your_access_token>'}
response = requests.get(url, headers=headers)
print(response.json())
                                
Example Response

200 Insider purchase anomalies for the entire market.

{
  "anomalies": [
    {
      "report_date": "2025-12-05",
      "ticker_count": 143,
      "total_value": 267000000
    }
  ]
}

Fundamentals

Company fundamentals including financial statements, ratios, and SEC filings.

GET /v1/fundamentals/tickers Get Available Fundamental Tickers demo
Description

Get all ticker symbols with fundamental data available.

Authentication

This endpoint requires a valid access token. Include your token in the Authorization: Bearer <token> header.

Example Request
                                    curl -X GET -H "Authorization: Bearer <your_access_token>" "https://api.empiricalmarkets.com/v1/fundamentals/tickers"
                                    import requests
url = 'https://api.empiricalmarkets.com/v1/fundamentals/tickers'
headers = {'Authorization': 'Bearer <your_access_token>'}
response = requests.get(url, headers=headers)
print(response.json())
                                
Example Response

200 List of ticker symbols with fundamental data available.

{
  "tickers": [
    "AAPL",
    "MSFT",
    "GOOGL"
  ]
}

GET /v1/fundamentals/tickers/{ticker}/duration/latest Get Latest Duration Fundamental Data For Ticker... demo
Description

Get the latest duration fundamental data for the given ticker.

Authentication

This endpoint requires a valid access token. Include your token in the Authorization: Bearer <token> header.

Parameters
Name Type In Required Description Example
ticker string path Yes Stock ticker symbol AAPL
Example Request
                                    curl -X GET -H "Authorization: Bearer <your_access_token>" "https://api.empiricalmarkets.com/v1/fundamentals/tickers/AAPL/duration/latest"
                                    import requests
url = 'https://api.empiricalmarkets.com/v1/fundamentals/tickers/{ticker}/duration/latest'
url = url.format(ticker="AAPL")
headers = {'Authorization': 'Bearer <your_access_token>'}
response = requests.get(url, headers=headers)
print(response.json())
                                
Example Response

200 Latest duration fundamental data for the ticker.

{
  "ticker": "MSFT",
  "data": [
    {
      "ticker": "MSFT",
      "entity_name": "Microsoft Corporation",
      "end_date": "2025-09-30T00:00:00",
      "filed_date": "2025-10-29T00:00:00",
      "tag": "LesseeOperatingLeaseLiabilityPaymentsDueYearThree",
      "value": 2641000000.0,
      "accession_number": "0001193125-25-256321",
      "fy": 2026,
      "fp": "Q1",
      "form": "10-Q",
      "unit": "USD",
      "taxonomy": "us_gaap",
      "label": "Lessee, Operating Lease, Liability, to be Paid, Year Three",
      "documentation": "Amount of lessee's undiscounted obligation for lease payment for operating lease to be paid in third fiscal year following current fiscal year. Excludes interim and annual periods when interim periods are reported from current statement of financial position date (rolling approach).",
      "period_type": "instant",
      "balance": "credit"
    }
  ]
}

GET /v1/fundamentals/tickers/{ticker}/duration/tags Get Duration Fundamental Tags For Ticker... demo
Description

Get all unique duration fundamental tags for the given ticker.

Authentication

This endpoint requires a valid access token. Include your token in the Authorization: Bearer <token> header.

Parameters
Name Type In Required Description Example
ticker string path Yes Stock ticker symbol, e.g. AAPL AAPL
taxonomy string (enum) query No Which taxonomy to use.
ENUM
Example Request
                                    curl -X GET -H "Authorization: Bearer <your_access_token>" "https://api.empiricalmarkets.com/v1/fundamentals/tickers/AAPL/duration/tags?taxonomy=all"
                                    import requests
url = 'https://api.empiricalmarkets.com/v1/fundamentals/tickers/{ticker}/duration/tags'
url = url.format(ticker="AAPL")
headers = {'Authorization': 'Bearer <your_access_token>'}
params = {'taxonomy': 'all'}
response = requests.get(url, headers=headers, params=params)
print(response.json())
                                
Example Response

200 All unique duration fundamental tags for the ticker.

{
  "ticker": "JPM",
  "tags": [
    {
      "tag": "Goodwill",
      "label": "Goodwill",
      "documentation": "Amount, after accumulated impairment loss, of asset...",
      "period_type": "instant",
      "balance": "debit"
    }
  ]
}

GET /v1/fundamentals/tickers/{ticker}/duration/tags/{tag} Get Duration Fundamental Time Series Data For Ticker... demo
Description

Get duration fundamental time series data for the given ticker.

Authentication

This endpoint requires a valid access token. Include your token in the Authorization: Bearer <token> header.

Parameters
Name Type In Required Description Example
ticker string path Yes Stock ticker symbol AAPL
tag string path Yes Specific tag to filter the results Revenue
start_date string query No Optional start date filter in YYYY-MM-DD format to filter results from that date onward 2020-01-01
end_date string query No Optional end date filter in YYYY-MM-DD format to filter results up to that date 2023-01-01
limit integer query No Limit the number of results returned. 100
Example Request
                                    curl -X GET -H "Authorization: Bearer <your_access_token>" "https://api.empiricalmarkets.com/v1/fundamentals/tickers/AAPL/duration/tags/Revenue?start_date=2020-01-01&end_date=2023-01-01&limit=100"
                                    import requests
url = 'https://api.empiricalmarkets.com/v1/fundamentals/tickers/{ticker}/duration/tags/{tag}'
url = url.format(ticker="AAPL", tag="Revenue")
headers = {'Authorization': 'Bearer <your_access_token>'}
params = {'start_date': '2020-01-01', 'end_date': '2023-01-01', 'limit': 100}
response = requests.get(url, headers=headers, params=params)
print(response.json())
                                
Example Response

200 Duration fundamental time series data for the ticker.

{
  "ticker": "MSFT",
  "data": [
    {
      "ticker": "MSFT",
      "entity_name": "Microsoft Corporation",
      "end_date": "2025-09-30T00:00:00",
      "filed_date": "2025-10-29T00:00:00",
      "tag": "LesseeOperatingLeaseLiabilityPaymentsDueYearThree",
      "value": 2641000000.0,
      "accession_number": "0001193125-25-256321",
      "fy": 2026,
      "fp": "Q1",
      "form": "10-Q",
      "unit": "USD",
      "taxonomy": "us_gaap",
      "label": "Lessee, Operating Lease, Liability, to be Paid, Year Three",
      "documentation": "Amount of lessee's undiscounted obligation for lease payment for operating lease to be paid in third fiscal year following current fiscal year. Excludes interim and annual periods when interim periods are reported from current statement of financial position date (rolling approach).",
      "period_type": "instant",
      "balance": "credit"
    }
  ]
}

GET /v1/fundamentals/tickers/{ticker}/instant/latest Get Latest Instant Fundamental Data For Ticker... demo
Description

Get the latest instant fundamental data for the given ticker.

Authentication

This endpoint requires a valid access token. Include your token in the Authorization: Bearer <token> header.

Parameters
Name Type In Required Description Example
ticker string path Yes Stock ticker symbol AAPL
Example Request
                                    curl -X GET -H "Authorization: Bearer <your_access_token>" "https://api.empiricalmarkets.com/v1/fundamentals/tickers/AAPL/instant/latest"
                                    import requests
url = 'https://api.empiricalmarkets.com/v1/fundamentals/tickers/{ticker}/instant/latest'
url = url.format(ticker="AAPL")
headers = {'Authorization': 'Bearer <your_access_token>'}
response = requests.get(url, headers=headers)
print(response.json())
                                
Example Response

200 Latest instant fundamental data for the ticker.

{
  "ticker": "MSFT",
  "data": [
    {
      "ticker": "MSFT",
      "entity_name": "Microsoft Corporation",
      "end_date": "2025-09-30T00:00:00",
      "filed_date": "2025-10-29T00:00:00",
      "tag": "LesseeOperatingLeaseLiabilityPaymentsDueYearThree",
      "value": 2641000000.0,
      "accession_number": "0001193125-25-256321",
      "fy": 2026,
      "fp": "Q1",
      "form": "10-Q",
      "unit": "USD",
      "taxonomy": "us_gaap",
      "label": "Lessee, Operating Lease, Liability, to be Paid, Year Three",
      "documentation": "Amount of lessee's undiscounted obligation for lease payment for operating lease to be paid in third fiscal year following current fiscal year. Excludes interim and annual periods when interim periods are reported from current statement of financial position date (rolling approach).",
      "period_type": "instant",
      "balance": "credit"
    }
  ]
}

GET /v1/fundamentals/tickers/{ticker}/instant/tags Get Instant Fundamental Tags For Ticker... demo
Description

Get all unique instant fundamental tags for the given ticker.

Authentication

This endpoint requires a valid access token. Include your token in the Authorization: Bearer <token> header.

Parameters
Name Type In Required Description Example
ticker string path Yes Stock ticker symbol, e.g. AAPL AAPL
taxonomy string (enum) query No Which taxonomy to use.
ENUM
Example Request
                                    curl -X GET -H "Authorization: Bearer <your_access_token>" "https://api.empiricalmarkets.com/v1/fundamentals/tickers/AAPL/instant/tags?taxonomy=all"
                                    import requests
url = 'https://api.empiricalmarkets.com/v1/fundamentals/tickers/{ticker}/instant/tags'
url = url.format(ticker="AAPL")
headers = {'Authorization': 'Bearer <your_access_token>'}
params = {'taxonomy': 'all'}
response = requests.get(url, headers=headers, params=params)
print(response.json())
                                
Example Response

200 All unique instant fundamental tags for the ticker.

{
  "ticker": "JPM",
  "tags": [
    {
      "tag": "Goodwill",
      "label": "Goodwill",
      "documentation": "Amount, after accumulated impairment loss, of asset...",
      "period_type": "instant",
      "balance": "debit"
    }
  ]
}

GET /v1/fundamentals/tickers/{ticker}/instant/tags/{tag} Get Instant Fundamental Time Series Data For Ticker... demo
Description

Get instant fundamental time series data for the given ticker.

Authentication

This endpoint requires a valid access token. Include your token in the Authorization: Bearer <token> header.

Parameters
Name Type In Required Description Example
ticker string path Yes Stock ticker symbol AAPL
tag string path Yes Fundamental tag to filter by, e.g. Assets Assets
revision string (enum) query No Which revision to use. 'first'=original filing, 'last'=most recent restatement, 'all'=every filing. The default is `last`.
ENUM
start_date string query No Optional start date filter in YYYY-MM-DD format 2020-01-01
end_date string query No Optional end date filter in YYYY-MM-DD format 2023-01-01
limit integer query No Limit the number of results returned. 100
Example Request
                                    curl -X GET -H "Authorization: Bearer <your_access_token>" "https://api.empiricalmarkets.com/v1/fundamentals/tickers/AAPL/instant/tags/Assets?revision=all&start_date=2020-01-01&end_date=2023-01-01&limit=100"
                                    import requests
url = 'https://api.empiricalmarkets.com/v1/fundamentals/tickers/{ticker}/instant/tags/{tag}'
url = url.format(ticker="AAPL", tag="Assets")
headers = {'Authorization': 'Bearer <your_access_token>'}
params = {'revision': 'all', 'start_date': '2020-01-01', 'end_date': '2023-01-01', 'limit': 100}
response = requests.get(url, headers=headers, params=params)
print(response.json())
                                
Example Response

200 Instant fundamental time series data for the ticker.

{
  "ticker": "MSFT",
  "data": [
    {
      "ticker": "MSFT",
      "entity_name": "Microsoft Corporation",
      "end_date": "2025-09-30T00:00:00",
      "filed_date": "2025-10-29T00:00:00",
      "tag": "LesseeOperatingLeaseLiabilityPaymentsDueYearThree",
      "value": 2641000000.0,
      "accession_number": "0001193125-25-256321",
      "fy": 2026,
      "fp": "Q1",
      "form": "10-Q",
      "unit": "USD",
      "taxonomy": "us_gaap",
      "label": "Lessee, Operating Lease, Liability, to be Paid, Year Three",
      "documentation": "Amount of lessee's undiscounted obligation for lease payment for operating lease to be paid in third fiscal year following current fiscal year. Excludes interim and annual periods when interim periods are reported from current statement of financial position date (rolling approach).",
      "period_type": "instant",
      "balance": "credit"
    }
  ]
}

Macro

Macroeconomic data from BLS, economic calendars, and indicators.

GET /v1/macro/collections Available Macro Collection Ids demo
Description

Get metadata for all macroeconomic collections.

Authentication

This endpoint requires a valid access token. Include your token in the Authorization: Bearer <token> header.

Example Request
                                    curl -X GET -H "Authorization: Bearer <your_access_token>" "https://api.empiricalmarkets.com/v1/macro/collections"
                                    import requests
url = 'https://api.empiricalmarkets.com/v1/macro/collections'
headers = {'Authorization': 'Bearer <your_access_token>'}
response = requests.get(url, headers=headers)
print(response.json())
                                
Example Response

200 Successful Response

{
  "collection_ids": {
    "description": "Percent Change From Preceding Period in Real Gross Domestic Product",
    "id": "gdp-pct-change",
    "topics": [
      "gdp"
    ]
  }
}

GET /v1/macro/collections/{collection_id} Collection Id Metadata demo
Description

Get metadata for a specific collection ID.

Authentication

This endpoint requires a valid access token. Include your token in the Authorization: Bearer <token> header.

Parameters
Name Type In Required Description Example
collection_id string path Yes The collection ID to retrieve metadata for.
Example Request
                                    curl -X GET -H "Authorization: Bearer <your_access_token>" "https://api.empiricalmarkets.com/v1/macro/collections/example_value"
                                    import requests
url = 'https://api.empiricalmarkets.com/v1/macro/collections/{collection_id}'
url = url.format(collection_id="example_value")
headers = {'Authorization': 'Bearer <your_access_token>'}
response = requests.get(url, headers=headers)
print(response.json())
                                
Example Response

200 Successful Response

{
  "id": "gdp-pct-change",
  "description": "Percent Change From Preceding Period in Real Gross Domestic Product",
  "topics": [
    "gdp"
  ]
}

GET /v1/macro/collections/{collection_id}/series Available Macro Collection Series Ids demo
Description

Get available Macro Series IDs for a specific collection ID.

Authentication

This endpoint requires a valid access token. Include your token in the Authorization: Bearer <token> header.

Parameters
Name Type In Required Description Example
collection_id string path Yes The collection ID to retrieve metadata for. gdp-nominal
frequency string query No Frequency: M (Monthly), Q (Quarterly)) M
Example Request
                                    curl -X GET -H "Authorization: Bearer <your_access_token>" "https://api.empiricalmarkets.com/v1/macro/collections/gdp-nominal/series?frequency=M"
                                    import requests
url = 'https://api.empiricalmarkets.com/v1/macro/collections/{collection_id}/series'
url = url.format(collection_id="gdp-nominal")
headers = {'Authorization': 'Bearer <your_access_token>'}
params = {'frequency': 'M'}
response = requests.get(url, headers=headers, params=params)
print(response.json())
                                
Example Response

200 Successful Response

{
  "collection_id": "gdp-pct-change",
  "series_ids": {
    "frequency": "Q",
    "series_id": "EMPLR600AAB",
    "series_name": "Gross private domestic investment"
  }
}

GET /v1/macro/collections/{collection_id}/series/{series_id} Macro Timeseries Data demo
Description

Get macroeconomic timeseries data for a specific Series ID.

Authentication

This endpoint requires a valid access token. Include your token in the Authorization: Bearer <token> header.

Parameters
Name Type In Required Description Example
collection_id string path Yes The collection ID to retrieve metadata for. gdp-nominal
series_id string path Yes The Series ID to retrieve data for.
Example Request
                                    curl -X GET -H "Authorization: Bearer <your_access_token>" "https://api.empiricalmarkets.com/v1/macro/collections/gdp-nominal/series/example_value"
                                    import requests
url = 'https://api.empiricalmarkets.com/v1/macro/collections/{collection_id}/series/{series_id}'
url = url.format(collection_id="gdp-nominal", series_id="example_value")
headers = {'Authorization': 'Bearer <your_access_token>'}
response = requests.get(url, headers=headers)
print(response.json())
                                
Example Response

200 Successful Response

{
  "collection_id": "gdp-pct-change",
  "series_id": "EMPLR600AAB",
  "data": {
    "collection_id": "gdp-pct-change",
    "frequency": "Q",
    "period_end": "2023-03-31T00:00:00",
    "revision": 1,
    "series_id": "EMPLR600AAB",
    "series_name": "Gross private domestic investment",
    "value": -7.1,
    "year": 2023
  }
}

GET /v1/macro/schedule/{year} Economic Release Calendar demo
Description

Get the economic release calendar for a specific year.

Authentication

This endpoint requires a valid access token. Include your token in the Authorization: Bearer <token> header.

Parameters
Name Type In Required Description Example
year integer path Yes Report Year 2023
Example Request
                                    curl -X GET -H "Authorization: Bearer <your_access_token>" "https://api.empiricalmarkets.com/v1/macro/schedule/2023"
                                    import requests
url = 'https://api.empiricalmarkets.com/v1/macro/schedule/{year}'
url = url.format(year="2023")
headers = {'Authorization': 'Bearer <your_access_token>'}
response = requests.get(url, headers=headers)
print(response.json())
                                
Example Response

200 Successful Response

{
  "year": 2024,
  "events": [
    {
      "date": "2024-01-03T00:00:00",
      "time": "10:00 AM",
      "release": "Metropolitan Area Employment and Unemployment",
      "target_year": 2023,
      "target_month": 11
    }
  ]
}

Ohlc

Open, High, Low, Close price data for stocks and other securities.

GET /v1/ohlc Ohlc Api Info... demo
Description

Returns available asset classes and time series frequencies supported by the OHLC API.

Authentication

This endpoint requires a valid access token. Include your token in the Authorization: Bearer <token> header.

Example Request
                                    curl -X GET -H "Authorization: Bearer <your_access_token>" "https://api.empiricalmarkets.com/v1/ohlc"
                                    import requests
url = 'https://api.empiricalmarkets.com/v1/ohlc'
headers = {'Authorization': 'Bearer <your_access_token>'}
response = requests.get(url, headers=headers)
print(response.json())
                                
Example Response

200 Available OHLC asset classes and time series frequencies.

{
  "asset_class": [
    "all",
    "etfs",
    "equities"
  ],
  "frequencies": [
    "D"
  ]
}

GET /v1/ohlc/latest Latest Ohlc Data demo
Description

Get the latest available OHLC data for all tickers.

Authentication

This endpoint requires a valid access token. Include your token in the Authorization: Bearer <token> header.

Parameters
Name Type In Required Description Example
asset_class string (enum) query No Asset class to filter by.
ENUM
tickers array query No Optional list of ticker symbols to filter by. ['AAPL', 'SPY']
Example Request
                                    curl -X GET -H "Authorization: Bearer <your_access_token>" "https://api.empiricalmarkets.com/v1/ohlc/latest?asset_class=all&tickers=AAPL&tickers=SPY"
                                    import requests
url = 'https://api.empiricalmarkets.com/v1/ohlc/latest'
headers = {'Authorization': 'Bearer <your_access_token>'}
params = {'asset_class': 'all', 'tickers': ['AAPL', 'SPY']}
response = requests.get(url, headers=headers, params=params)
print(response.json())
                                
Example Response

200 Successful Response

{
  "asset_class": "",
  "frequency": "",
  "data": [
    {
      "date": "2023-01-03",
      "ticker": "AAPL",
      "asset_class": "",
      "frequency": "",
      "open": 150.0,
      "high": 155.0,
      "low": 149.0,
      "close": 154.0,
      "volume": 31297500,
      "pct_change": 0.0152
    }
  ]
}

GET /v1/ohlc/tickers Available Ohlc Tickers demo
Description

Get all available OHLC tickers

Authentication

This endpoint requires a valid access token. Include your token in the Authorization: Bearer <token> header.

Parameters
Name Type In Required Description Example
asset_class string (enum) query No Asset class to filter by.
ENUM
Example Request
                                    curl -X GET -H "Authorization: Bearer <your_access_token>" "https://api.empiricalmarkets.com/v1/ohlc/tickers?asset_class=all"
                                    import requests
url = 'https://api.empiricalmarkets.com/v1/ohlc/tickers'
headers = {'Authorization': 'Bearer <your_access_token>'}
params = {'asset_class': 'all'}
response = requests.get(url, headers=headers, params=params)
print(response.json())
                                
Example Response

200 List of available tickers with OHLC data.

{
  "tickers": [
    "AAPL",
    "MSFT",
    "TSLA"
  ]
}

GET /v1/ohlc/tickers/{ticker} Ohlc Prices demo
Description

Get OHLC prices time series for a given ticker.

Authentication

This endpoint requires a valid access token. Include your token in the Authorization: Bearer <token> header.

Parameters
Name Type In Required Description Example
ticker string path Yes Ticker symbol to retrieve price data for. AAPL
start_date string query No Inclusive start date YYYY-MM-DD 2010-01-01
end_date string query No Inclusive end date YYYY-MM-DD 2025-12-31
date_cursor string query No Date Pagination cursor (date string from previous response's next_cursor) 2015-01-01
limit integer query No Max rows to return (<= 1260) 756
order string query No Order of the time series data, either 'asc' for ascending or 'desc' for descending by date. asc
Example Request
                                    curl -X GET -H "Authorization: Bearer <your_access_token>" "https://api.empiricalmarkets.com/v1/ohlc/tickers/AAPL?start_date=2010-01-01&end_date=2025-12-31&date_cursor=2015-01-01&limit=756&order=asc"
                                    import requests
url = 'https://api.empiricalmarkets.com/v1/ohlc/tickers/{ticker}'
url = url.format(ticker="AAPL")
headers = {'Authorization': 'Bearer <your_access_token>'}
params = {'start_date': '2010-01-01', 'end_date': '2025-12-31', 'date_cursor': '2015-01-01', 'limit': 756, 'order': 'asc'}
response = requests.get(url, headers=headers, params=params)
print(response.json())
                                
Example Response

200 OHLC prices time series for the given ticker.

{
  "ticker": "AAPL",
  "frequency": "",
  "date_cursor": {
    "limit": 756,
    "count": 756,
    "has_more": true,
    "next_cursor": "2023-01-01"
  },
  "data": [
    {
      "date": "2023-01-03",
      "ticker": "AAPL",
      "asset_class": "",
      "frequency": "",
      "open": 150.0,
      "high": 155.0,
      "low": 149.0,
      "close": 154.0,
      "volume": 31297500
    }
  ]
}

Technicals

GET /v1/technicals Available Technical Indicators... demo
Description

Get list of available technical indicators and associated metadata.

Authentication

This endpoint requires a valid access token. Include your token in the Authorization: Bearer <token> header.

Example Request
                                    curl -X GET -H "Authorization: Bearer <your_access_token>" "https://api.empiricalmarkets.com/v1/technicals"
                                    import requests
url = 'https://api.empiricalmarkets.com/v1/technicals'
headers = {'Authorization': 'Bearer <your_access_token>'}
response = requests.get(url, headers=headers)
print(response.json())
                                
Example Response

200 List of available technical indicators and associated metadata.

{
  "indicators": [
    {
      "indicator": "relative-strength-index",
      "kind": "bounded",
      "name": "Relative Strength Index",
      "short_name": "RSI",
      "description": "A momentum oscillator that measures the speed and change of price movements, typically used to identify overbought or oversold conditions in a security.",
      "default_window": 14
    }
  ]
}

GET /v1/technicals/{indicator} Technical Indicator Info demo
Description

Get metadata for a specific technical indicator.

Authentication

This endpoint requires a valid access token. Include your token in the Authorization: Bearer <token> header.

Parameters
Name Type In Required Description Example
indicator string (enum) path Yes Technical indicator
ENUM
Example Request
                                    curl -X GET -H "Authorization: Bearer <your_access_token>" "https://api.empiricalmarkets.com/v1/technicals/relative-strength-index"
                                    import requests
url = 'https://api.empiricalmarkets.com/v1/technicals/{indicator}'
url = url.format(indicator="relative-strength-index")
headers = {'Authorization': 'Bearer <your_access_token>'}
response = requests.get(url, headers=headers)
print(response.json())
                                
Example Response

200 Metadata for the specified technical indicator.

{
  "indicator": "relative-strength-index",
  "kind": "bounded",
  "name": "Relative Strength Index",
  "short_name": "RSI",
  "description": "A momentum oscillator that measures the speed and change of price movements, typically used to identify overbought or oversold conditions in a security.",
  "default_window": 14
}

GET /v1/technicals/{indicator}/tickers Technical Indicator Tickers... demo
Description

Get list of available tickers for a specific technical indicator.

Authentication

This endpoint requires a valid access token. Include your token in the Authorization: Bearer <token> header.

Parameters
Name Type In Required Description Example
indicator string (enum) path Yes Technical indicator
ENUM
Example Request
                                    curl -X GET -H "Authorization: Bearer <your_access_token>" "https://api.empiricalmarkets.com/v1/technicals/relative-strength-index/tickers"
                                    import requests
url = 'https://api.empiricalmarkets.com/v1/technicals/{indicator}/tickers'
url = url.format(indicator="relative-strength-index")
headers = {'Authorization': 'Bearer <your_access_token>'}
response = requests.get(url, headers=headers)
print(response.json())
                                
Example Response

200 List of available tickers for the specified technical indicator.

{
  "indicator": "relative-strength-index",
  "name": "Relative Strength Index",
  "description": "A momentum oscillator that measures the speed and change of price movements, typically used to identify overbought or oversold conditions in a security.",
  "tickers": [
    "AAPL",
    "MSFT",
    "TSLA"
  ]
}

GET /v1/technicals/{indicator}/tickers/{ticker} Ticker Technical Indicator Series... demo
Description

Get time series data for a specific technical indicator and ticker.

Authentication

This endpoint requires a valid access token. Include your token in the Authorization: Bearer <token> header.

Parameters
Name Type In Required Description Example
indicator string (enum) path Yes Technical indicator
ENUM
ticker string path Yes Ticker symbol AAPL
window integer query No Number of days to use for calculating the technical indicator 14
start_date string query No Inclusive start date YYYY-MM-DD 2014-01-01
end_date string query No Inclusive end date YYYY-MM-DD 2020-12-31
date_cursor string query No Date Pagination cursor (date string from previous response's next_cursor) 2015-01-01
limit integer query No Max rows to return (<= 1260) 756
Example Request
                                    curl -X GET -H "Authorization: Bearer <your_access_token>" "https://api.empiricalmarkets.com/v1/technicals/relative-strength-index/tickers/AAPL?window=14&start_date=2014-01-01&end_date=2020-12-31&date_cursor=2015-01-01&limit=756"
                                    import requests
url = 'https://api.empiricalmarkets.com/v1/technicals/{indicator}/tickers/{ticker}'
url = url.format(indicator="relative-strength-index", ticker="AAPL")
headers = {'Authorization': 'Bearer <your_access_token>'}
params = {'window': 14, 'start_date': '2014-01-01', 'end_date': '2020-12-31', 'date_cursor': '2015-01-01', 'limit': 756}
response = requests.get(url, headers=headers, params=params)
print(response.json())
                                
Example Response

200 Time series data for the specified technical indicator and ticker.

{
  "indicator": "relative-strength-index",
  "ticker": "MSFT",
  "window": 14,
  "date_cursor": {
    "limit": 756,
    "count": 756,
    "has_more": true,
    "next_cursor": "2023-01-01"
  },
  "data": [
    {
      "date": "2023-01-01",
      "ticker": "MSFT",
      "indicator": "relative-strength-index",
      "value": 45.67,
      "lower": null,
      "upper": null
    }
  ]
}

Quant

GET /v1/quant/signals Available Quant Signals starter
Description

Get list of available quant signals.

Authentication

This endpoint requires a valid access token. Include your token in the Authorization: Bearer <token> header.

Example Request
                                    curl -X GET -H "Authorization: Bearer <your_access_token>" "https://api.empiricalmarkets.com/v1/quant/signals"
                                    import requests
url = 'https://api.empiricalmarkets.com/v1/quant/signals'
headers = {'Authorization': 'Bearer <your_access_token>'}
response = requests.get(url, headers=headers)
print(response.json())
                                
Example Response

200 List of available quant signals.

{
  "signals": [
    {
      "description": "Drift Strength measures the persistence of a security's recent price trend relative to its own volatility, scored against a universe of other securities",
      "signal": "drift-strength"
    },
    {
      "description": "Flow Ratio measures the total monetary value of shares traded for a security relative to a universe of other securities. The value is expressed in deviations from the security's own typical level.",
      "signal": "flow-ratio"
    },
    {
      "description": "Relative Return measures how a security's return compares to the typical return of a universe of other securities.",
      "signal": "relative-return"
    },
    {
      "description": "Relative Gap measures how a security's overnight gap compares to the typical overnight gap of a universe of other securities.",
      "signal": "relative-gap"
    },
    {
      "description": "Relative Volatility measures how a security's recent volatility compares to the typical volatility of a universe of other securities.",
      "signal": "relative-volatility"
    }
  ]
}

GET /v1/quant/signals/{signal} Quant Signal Info starter
Description

Get information about a specific quant signal.

Authentication

This endpoint requires a valid access token. Include your token in the Authorization: Bearer <token> header.

Parameters
Name Type In Required Description Example
signal string (enum) path Yes Quant signal name
ENUM
Example Request
                                    curl -X GET -H "Authorization: Bearer <your_access_token>" "https://api.empiricalmarkets.com/v1/quant/signals/drift-strength"
                                    import requests
url = 'https://api.empiricalmarkets.com/v1/quant/signals/{signal}'
url = url.format(signal="drift-strength")
headers = {'Authorization': 'Bearer <your_access_token>'}
response = requests.get(url, headers=headers)
print(response.json())
                                
Example Response

200 Information about the given quant signal.

{
  "signal": "flow-ratio",
  "name": "Flow Ratio",
  "description": "Flow Ratio measures the total monetary value of shares traded for a security relative to a universe of other securities. The value is expressed in deviations from the security's own typical level.",
  "variants": [
    "default"
  ],
  "universes": [
    "all",
    "equities",
    "etfs"
  ],
  "value_type": "deviation"
}

GET /v1/quant/signals/{signal}/anomalies Get Quant Signal Anomalies... starter
Description

Get quant signal anomalies across all tickers for a given date.

Authentication

This endpoint requires a valid access token. Include your token in the Authorization: Bearer <token> header.

Parameters
Name Type In Required Description Example
signal string (enum) path Yes Quant signal name
ENUM
universe string (enum) query No Universe of the quant signal
ENUM
variant string query No Variant filter default
date string query No The date to retrieve anomalies for. Defaults to latest available date
Example Request
                                    curl -X GET -H "Authorization: Bearer <your_access_token>" "https://api.empiricalmarkets.com/v1/quant/signals/['drift-strength', 'flow-ratio', 'relative-return', 'relative-gap', 'relative-volatility']/anomalies?universe=all&variant=default"
                                    import requests
url = 'https://api.empiricalmarkets.com/v1/quant/signals/{signal}/anomalies'
url = url.format(signal="['drift-strength', 'flow-ratio', 'relative-return', 'relative-gap', 'relative-volatility']")
headers = {'Authorization': 'Bearer <your_access_token>'}
params = {'universe': 'all', 'variant': 'default'}
response = requests.get(url, headers=headers, params=params)
print(response.json())
                                
Example Response

200 Quant Signal anomalies across all tickers for the given date.

{
  "signal": "",
  "variant": "default",
  "universe": "equities",
  "value_type": "deviation",
  "anomalies": [
    {
      "date": "2023-01-01",
      "ticker": "AAPL",
      "signal": "flow-ratio",
      "value": 2.1
    }
  ]
}

GET /v1/quant/signals/{signal}/tickers Available Quant Signal Tickers starter
Description

Get list of available tickers for a given quant signal.

Authentication

This endpoint requires a valid access token. Include your token in the Authorization: Bearer <token> header.

Parameters
Name Type In Required Description Example
signal string (enum) path Yes Quant signal name
ENUM
Example Request
                                    curl -X GET -H "Authorization: Bearer <your_access_token>" "https://api.empiricalmarkets.com/v1/quant/signals/drift-strength/tickers"
                                    import requests
url = 'https://api.empiricalmarkets.com/v1/quant/signals/{signal}/tickers'
url = url.format(signal="drift-strength")
headers = {'Authorization': 'Bearer <your_access_token>'}
response = requests.get(url, headers=headers)
print(response.json())
                                
Example Response

200 List of available tickers for the given quant signal.

{
  "signal": "flow-ratio",
  "tickers": [
    "AAPL",
    "MSFT",
    "TSLA"
  ]
}

GET /v1/quant/signals/{signal}/tickers/{ticker} Quant Signal Time Series starter
Description

Get Quant Signal time series for a given ticker.

Authentication

This endpoint requires a valid access token. Include your token in the Authorization: Bearer <token> header.

Parameters
Name Type In Required Description Example
signal string (enum) path Yes Quant signal name
ENUM
ticker string path Yes Stock ticker symbol AAPL
variant string query No Variant of the quant signal default
universe string (enum) query No Universe of the quant signal
ENUM
start_date string query No Start date (YYYY-MM-DD) 2023-01-01
end_date string query No End date (YYYY-MM-DD) 2025-12-31
date_cursor string query No Date pagination cursor from previous response's next_cursor 2023-12-29
limit integer query No Max rows to return (<= 1260) 756
Example Request
                                    curl -X GET -H "Authorization: Bearer <your_access_token>" "https://api.empiricalmarkets.com/v1/quant/signals/drift-strength/tickers/AAPL?variant=default&universe=all&start_date=2023-01-01&end_date=2025-12-31&date_cursor=2023-12-29&limit=756"
                                    import requests
url = 'https://api.empiricalmarkets.com/v1/quant/signals/{signal}/tickers/{ticker}'
url = url.format(signal="drift-strength", ticker="AAPL")
headers = {'Authorization': 'Bearer <your_access_token>'}
params = {'variant': 'default', 'universe': 'all', 'start_date': '2023-01-01', 'end_date': '2025-12-31', 'date_cursor': '2023-12-29', 'limit': 756}
response = requests.get(url, headers=headers, params=params)
print(response.json())
                                
Example Response

200 Time series for the given ticker and quant signal.

{
  "signal": "flow-ratio",
  "ticker": "AAPL",
  "variant": "default",
  "universe": "equities",
  "date_cursor": {
    "limit": 756,
    "count": 756,
    "has_more": true,
    "next_cursor": "2023-01-01"
  },
  "data": [
    {
      "date": "2023-01-01",
      "ticker": "AAPL",
      "signal": "flow-ratio",
      "value": 2.1
    }
  ]
}

GET /v1/quant/signals/{signal}/tickers/{ticker}/anomalies Quant Signal Ticker Anomaly History... starter
Description

Get historical anomalies for a given ticker and quant signal.

Authentication

This endpoint requires a valid access token. Include your token in the Authorization: Bearer <token> header.

Parameters
Name Type In Required Description Example
signal string (enum) path Yes Quant signal name
ENUM
ticker string path Yes Stock ticker symbol AAPL
variant string query No Variant of the quant signal default
universe string (enum) query No Universe of the quant signal
ENUM
start_date string query No Start date (YYYY-MM-DD) 2023-01-01
end_date string query No End date (YYYY-MM-DD) 2025-12-31
Example Request
                                    curl -X GET -H "Authorization: Bearer <your_access_token>" "https://api.empiricalmarkets.com/v1/quant/signals/drift-strength/tickers/AAPL/anomalies?variant=default&universe=all&start_date=2023-01-01&end_date=2025-12-31"
                                    import requests
url = 'https://api.empiricalmarkets.com/v1/quant/signals/{signal}/tickers/{ticker}/anomalies'
url = url.format(signal="drift-strength", ticker="AAPL")
headers = {'Authorization': 'Bearer <your_access_token>'}
params = {'variant': 'default', 'universe': 'all', 'start_date': '2023-01-01', 'end_date': '2025-12-31'}
response = requests.get(url, headers=headers, params=params)
print(response.json())
                                
Example Response

200 Historical anomalies for the given ticker and quant signal.

{
  "ticker": "AAPL",
  "signal": "",
  "variant": "default",
  "universe": "equities",
  "value_type": "deviation",
  "anomalies": [
    {
      "date": "2023-01-01",
      "ticker": "AAPL",
      "signal": "flow-ratio",
      "value": 2.1
    }
  ]
}

GET /v1/quant/capm/latest Latest Capital Asset Pricing Model Data... starter
Description

Get the latest Capital Asset Pricing Model (CAPM) data for all tickers.

Authentication

This endpoint requires a valid access token. Include your token in the Authorization: Bearer <token> header.

Example Request
                                    curl -X GET -H "Authorization: Bearer <your_access_token>" "https://api.empiricalmarkets.com/v1/quant/capm/latest"
                                    import requests
url = 'https://api.empiricalmarkets.com/v1/quant/capm/latest'
headers = {'Authorization': 'Bearer <your_access_token>'}
response = requests.get(url, headers=headers)
print(response.json())
                                
Example Response

200 Latest Capital Asset Pricing Model (CAPM) data for all tickers.

{
  "data": [
    {
      "ticker": "AAPL",
      "date": "2023-01-01",
      "period": 22,
      "beta": 1.2,
      "alpha": 0.05
    }
  ]
}

GET /v1/quant/capm/tickers Available Capm Tickers... starter
Description

Get list of available tickers for Capital Asset Pricing Model (CAPM) data.

Authentication

This endpoint requires a valid access token. Include your token in the Authorization: Bearer <token> header.

Example Request
                                    curl -X GET -H "Authorization: Bearer <your_access_token>" "https://api.empiricalmarkets.com/v1/quant/capm/tickers"
                                    import requests
url = 'https://api.empiricalmarkets.com/v1/quant/capm/tickers'
headers = {'Authorization': 'Bearer <your_access_token>'}
response = requests.get(url, headers=headers)
print(response.json())
                                
Example Response

200 List of available tickers for Capital Asset Pricing Model (CAPM) data

{
  "tickers": [
    "AAPL",
    "MSFT",
    "TSLA"
  ]
}

GET /v1/quant/capm/tickers/{ticker} Capital Asset Pricing Model Series... starter
Description

Get Capital Asset Pricing Model (CAPM) time series for a given ticker.

Authentication

This endpoint requires a valid access token. Include your token in the Authorization: Bearer <token> header.

Parameters
Name Type In Required Description Example
ticker string path Yes Ticker symbol AAPL
start_date string query No Start date (YYYY-MM-DD) 2023-01-01
end_date string query No End date (YYYY-MM-DD) 2025-12-31
date_cursor string query No Date pagination cursor from previous response's next_cursor 2023-12-29
limit integer query No Max rows to return (<= 1260) 756
Example Request
                                    curl -X GET -H "Authorization: Bearer <your_access_token>" "https://api.empiricalmarkets.com/v1/quant/capm/tickers/AAPL?start_date=2023-01-01&end_date=2025-12-31&date_cursor=2023-12-29&limit=756"
                                    import requests
url = 'https://api.empiricalmarkets.com/v1/quant/capm/tickers/{ticker}'
url = url.format(ticker="AAPL")
headers = {'Authorization': 'Bearer <your_access_token>'}
params = {'start_date': '2023-01-01', 'end_date': '2025-12-31', 'date_cursor': '2023-12-29', 'limit': 756}
response = requests.get(url, headers=headers, params=params)
print(response.json())
                                
Example Response

200 Capital Asset Pricing Model (CAPM) time series data for the given ticker.

{
  "ticker": "AAPL",
  "date_cursor": {
    "limit": 756,
    "count": 756,
    "has_more": true,
    "next_cursor": "2023-01-01"
  },
  "data": [
    {
      "ticker": "AAPL",
      "date": "2023-01-01",
      "period": 22,
      "beta": 1.2,
      "alpha": 0.05
    }
  ]
}

GET /v1/quant/correlation/tickers Available Correlation Tickers starter
Description

Get list of available tickers for correlation data.

Authentication

This endpoint requires a valid access token. Include your token in the Authorization: Bearer <token> header.

Example Request
                                    curl -X GET -H "Authorization: Bearer <your_access_token>" "https://api.empiricalmarkets.com/v1/quant/correlation/tickers"
                                    import requests
url = 'https://api.empiricalmarkets.com/v1/quant/correlation/tickers'
headers = {'Authorization': 'Bearer <your_access_token>'}
response = requests.get(url, headers=headers)
print(response.json())
                                
Example Response

200 List of available tickers for correlation analysis.

{
  "tickers": [
    "AAPL",
    "MSFT",
    "TSLA"
  ]
}

GET /v1/quant/correlation/tickers/{ticker}/latest Latest Correlation Data For Ticker... starter
Description

Get the latest correlation data for a given ticker against all other tickers.

Authentication

This endpoint requires a valid access token. Include your token in the Authorization: Bearer <token> header.

Parameters
Name Type In Required Description Example
ticker string path Yes Ticker symbol AAPL
limit integer query Yes Limit the number of correlated tickers returned 10
Example Request
                                    curl -X GET -H "Authorization: Bearer <your_access_token>" "https://api.empiricalmarkets.com/v1/quant/correlation/tickers/AAPL/latest?limit=10"
                                    import requests
url = 'https://api.empiricalmarkets.com/v1/quant/correlation/tickers/{ticker}/latest'
url = url.format(ticker="AAPL")
headers = {'Authorization': 'Bearer <your_access_token>'}
params = {'limit': 10}
response = requests.get(url, headers=headers, params=params)
print(response.json())
                                
Example Response

200 Latest correlation data for the given ticker against all other tickers.

{
  "ticker": "AAPL",
  "date": "2023-01-01",
  "data": [
    {
      "ticker_a": "AAPL",
      "ticker_b": "MSFT",
      "period": 22,
      "date": "2023-01-01",
      "value": 0.85
    }
  ]
}

GET /v1/quant/correlation/tickers/{ticker}/peers Get Most Similar Stocks By Price Action... starter
Description

Get the most similar stocks to the given ticker based on price action.

Authentication

This endpoint requires a valid access token. Include your token in the Authorization: Bearer <token> header.

Parameters
Name Type In Required Description Example
ticker string path Yes Ticker symbol AAPL
threshold number query No Minimum correlation threshold 0.7
top_n integer query No Number of peers to return 10
Example Request
                                    curl -X GET -H "Authorization: Bearer <your_access_token>" "https://api.empiricalmarkets.com/v1/quant/correlation/tickers/AAPL/peers?threshold=0.7&top_n=10"
                                    import requests
url = 'https://api.empiricalmarkets.com/v1/quant/correlation/tickers/{ticker}/peers'
url = url.format(ticker="AAPL")
headers = {'Authorization': 'Bearer <your_access_token>'}
params = {'threshold': 0.7, 'top_n': 10}
response = requests.get(url, headers=headers, params=params)
print(response.json())
                                
Example Response

200 Normalized price series for the most similar stocks to the given ticker.

{
  "ticker": "AAPL",
  "threshold": 0.8,
  "top_n": 5,
  "peers": [
    "MSFT",
    "GOOGL",
    "AMZN"
  ],
  "date": "2025-01-01T00:00:00Z",
  "data": [
    {
      "ticker": "MSFT",
      "correlation": 0.92,
      "price_series": [
        {
          "date": "2023-01-01",
          "price_norm": 1.15
        }
      ]
    }
  ]
}

GET /v1/quant/correlation/tickers/{ticker}/pairwise/{ticker_b} Pairwise Correlation Time Series... starter
Description

Get pairwise correlation time series for a given pair of tickers.

Authentication

This endpoint requires a valid access token. Include your token in the Authorization: Bearer <token> header.

Parameters
Name Type In Required Description Example
ticker string path Yes Ticker symbol AAPL
ticker_b string path Yes Second stock ticker symbol AAPL
start_date string query No Start date (YYYY-MM-DD) 2023-01-01
end_date string query No End date (YYYY-MM-DD) 2025-12-31
date_cursor string query No Date pagination cursor from previous response's next_cursor 2023-12-29
limit integer query No Max rows to return (<= 1260) 756
Example Request
                                    curl -X GET -H "Authorization: Bearer <your_access_token>" "https://api.empiricalmarkets.com/v1/quant/correlation/tickers/AAPL/pairwise/AAPL?start_date=2023-01-01&end_date=2025-12-31&date_cursor=2023-12-29&limit=756"
                                    import requests
url = 'https://api.empiricalmarkets.com/v1/quant/correlation/tickers/{ticker}/pairwise/{ticker_b}'
url = url.format(ticker="AAPL", ticker_b="AAPL")
headers = {'Authorization': 'Bearer <your_access_token>'}
params = {'start_date': '2023-01-01', 'end_date': '2025-12-31', 'date_cursor': '2023-12-29', 'limit': 756}
response = requests.get(url, headers=headers, params=params)
print(response.json())
                                
Example Response

200 Pairwise correlation time series between two tickers.

{
  "ticker_a": "AAPL",
  "ticker_b": "MSFT",
  "date_cursor": {
    "limit": 756,
    "count": 756,
    "has_more": true,
    "next_cursor": "2023-01-01"
  },
  "data": [
    {
      "ticker_a": "AAPL",
      "ticker_b": "MSFT",
      "period": 22,
      "date": "2023-01-01",
      "value": 0.85
    }
  ]
}

Treasury

US Treasury yields, rates, and auction data.

GET /v1/treasury Available Yield Curve Maturities... demo
Description

List all available maturities in the treasury yield curve dataset.

Authentication

This endpoint requires a valid access token. Include your token in the Authorization: Bearer <token> header.

Example Request
                                    curl -X GET -H "Authorization: Bearer <your_access_token>" "https://api.empiricalmarkets.com/v1/treasury"
                                    import requests
url = 'https://api.empiricalmarkets.com/v1/treasury'
headers = {'Authorization': 'Bearer <your_access_token>'}
response = requests.get(url, headers=headers)
print(response.json())
                                
Example Response

200 List of available yield curve maturities.

{
  "maturities": [
    "1mo",
    "2mo",
    "3mo",
    "4mo",
    "6mo",
    "1yr",
    "2yr",
    "3yr",
    "5yr",
    "7yr",
    "10yr",
    "20yr",
    "30yr"
  ]
}

GET /v1/treasury/latest Latest Yield Curve Snapshot demo
Description

Get the latest full yield curve snapshot.

Authentication

This endpoint requires a valid access token. Include your token in the Authorization: Bearer <token> header.

Example Request
                                    curl -X GET -H "Authorization: Bearer <your_access_token>" "https://api.empiricalmarkets.com/v1/treasury/latest"
                                    import requests
url = 'https://api.empiricalmarkets.com/v1/treasury/latest'
headers = {'Authorization': 'Bearer <your_access_token>'}
response = requests.get(url, headers=headers)
print(response.json())
                                
Example Response

200 Latest full yield curve snapshot.

{
  "data": [
    {
      "date": "2025-12-15T00:00:00",
      "maturity": "2yr",
      "rate": 3.51
    },
    {
      "date": "2025-12-15T00:00:00",
      "maturity": "5yr",
      "rate": 3.73
    },
    {
      "date": "2025-12-15T00:00:00",
      "maturity": "10yr",
      "rate": 4.18
    }
  ]
}

GET /v1/treasury/maturity/{maturity} Treasury Yield Curve Maturity Data demo
Description

Get treasury yield curve data for a specific maturity.

Authentication

This endpoint requires a valid access token. Include your token in the Authorization: Bearer <token> header.

Parameters
Name Type In Required Description Example
maturity string (enum) path Yes Maturity to filter by (e.g., '1mo', '10yr')
ENUM
start_date string query No Start date (YYYY-MM-DD)
end_date string query No Inclusive end date (YYYY-MM-DD)
date_cursor string query No Date pagination cursor from previous response's next_cursor 2020-01-01
limit integer query No Max rows to return (<= 1260) 756
Example Request
                                    curl -X GET -H "Authorization: Bearer <your_access_token>" "https://api.empiricalmarkets.com/v1/treasury/maturity/1mo?date_cursor=2020-01-01&limit=756"
                                    import requests
url = 'https://api.empiricalmarkets.com/v1/treasury/maturity/{maturity}'
url = url.format(maturity="1mo")
headers = {'Authorization': 'Bearer <your_access_token>'}
params = {'date_cursor': '2020-01-01', 'limit': 756}
response = requests.get(url, headers=headers, params=params)
print(response.json())
                                
Example Response

200 Treasury yield curve data for the specified maturity.

{
  "maturity": "",
  "date_cursor": {
    "limit": 756,
    "count": 756,
    "has_more": true,
    "next_cursor": "2023-01-01"
  },
  "data": [
    {
      "date": "2025-12-09T00:00:00",
      "maturity": "10yr",
      "rate": 4.18
    },
    {
      "date": "2025-12-10T00:00:00",
      "maturity": "10yr",
      "rate": 4.13
    }
  ]
}

GET /v1/treasury/spread/{maturity_a}/{maturity_b} Treasury Yield Curve Spread Data demo
Description

Get treasury yield curve spread data between two maturities.

Authentication

This endpoint requires a valid access token. Include your token in the Authorization: Bearer <token> header.

Parameters
Name Type In Required Description Example
maturity_a string path Yes Minuend maturity 10yr
maturity_b string path Yes Subtrahend maturity 2yr
start_date string query No Start date (YYYY-MM-DD) 2023-01-01
end_date string query No Inclusive end date (YYYY-MM-DD) 2025-12-31
date_cursor string query No Date pagination cursor from previous response's next_cursor 2020-01-01
limit integer query No Max rows to return (<= 1260) 756
Example Request
                                    curl -X GET -H "Authorization: Bearer <your_access_token>" "https://api.empiricalmarkets.com/v1/treasury/spread/10yr/2yr?start_date=2023-01-01&end_date=2025-12-31&date_cursor=2020-01-01&limit=756"
                                    import requests
url = 'https://api.empiricalmarkets.com/v1/treasury/spread/{maturity_a}/{maturity_b}'
url = url.format(maturity_a="10yr", maturity_b="2yr")
headers = {'Authorization': 'Bearer <your_access_token>'}
params = {'start_date': '2023-01-01', 'end_date': '2025-12-31', 'date_cursor': '2020-01-01', 'limit': 756}
response = requests.get(url, headers=headers, params=params)
print(response.json())
                                
Example Response

200 Treasury yield curve spread data between the specified maturities.

{
  "maturity_a": "",
  "maturity_b": "",
  "date_cursor": {
    "limit": 756,
    "count": 756,
    "has_more": true,
    "next_cursor": "2023-01-01"
  },
  "data": [
    {
      "date": "2025-12-09T00:00:00",
      "maturity_a": "10yr",
      "maturity_b": "2yr",
      "spread": 0.57
    },
    {
      "date": "2025-12-10T00:00:00",
      "maturity_a": "10yr",
      "maturity_b": "2yr",
      "spread": 0.59
    }
  ]
}