Open a project, then an endpoint — parameters, examples, and response shape.
Economic series ingested from third parties (including FRED) are subject to source Terms of Use. FRED API access does not imply rights to commercially redistribute series.
DataNexusAI provides derived analytics calculated from multiple public data sources, including selected FRED API data used at request time. Raw FRED series are not exposed as DataNexusAI endpoints and are not archived to MySQL for redistribution.
Paid FRED-backed analytics require license_status=APPROVED per series (Django admin).
See project docs: docs/fred-licensing.md, docs/data-sources.md.
This product uses the FRED® API but is not endorsed or certified by the Federal Reserve Bank of St. Louis.
FRED content is used as a runtime economic data source for calculations, not as an AI/ML training corpus and not as a FRED data mirror.
Data endpoints require x402 micropayments (USDC). Buyers (wallets, Coinbase Wallet, AI agents) can pay on any accepted network. Documentation stays free.
| Path / who | Access |
|---|---|
/api/, /api/docs, /api/docs.md |
Free (everyone) |
/docs, /openapi.json, /llms.txt, /.well-known/x402, /robots.txt, /sitemap.xml |
Free (everyone) |
Direct localhost / 127.0.0.1 runserver |
Free (X402_SKIP_LOCAL) |
IPs in X402_FREE_IPS |
Free (owner allowlist) |
Everyone else on paid /api/... routes |
Paid |
Accepted networks (default): Base (eip155:8453), Polygon (eip155:137), Arbitrum One (eip155:42161). Configure via X402_NETWORKS=base,polygon,arbitrum. Same EVM X402_PAY_TO address receives USDC on each chain — switch network in MetaMask/Coinbase Wallet to see balances.
402 Payment Required with a PAYMENT-REQUIRED header (price, network, pay-to address).PAYMENT-SIGNATURE header.200 with data and a PAYMENT-RESPONSE header.curl -i "https://api.datanexusai.org/api/"
curl -i "https://api.datanexusai.org/api/v1/datasets"
| Variable | Example | Notes |
|---|---|---|
X402_ENABLED |
True |
Turn on gating |
X402_PAY_TO |
0xYourAddress |
EVM wallet that receives USDC (same address on Base/Polygon/Arbitrum) |
X402_NETWORKS |
base,polygon,arbitrum |
Comma-separated networks (aliases or CAIP-2 ids) |
X402_PRICE |
0.01 |
Per request (becomes $0.01; avoid $ in .env) |
X402_FACILITATOR_URL |
https://facilitator.payai.network |
Multi-network facilitator. Coinbase CDP: https://api.cdp.coinbase.com/platform/v2/x402 |
X402_FREE_IPS |
1.2.3.4 |
Optional owner allowlist |
Install: pip install "x402[evm,httpx]==2.24.0"
Cash-out path: USDC on Base → Coinbase → EUR → Revolut.
Compatible clients: any x402 buyer (AI agents, @x402/fetch, Python x402 client). See https://docs.x402.org
Data source: egovbg_sebra_days (days with status = HAS_PAYMENTS). Amounts are sums, not zero-filled empty days.
Which calendar slots have the largest payment sums (and how many payments).
Period (required, one of):
| Value | Meaning |
|---|---|
days |
Day of month 1–31 |
months |
Calendar month + year |
weekdays |
Weekday (Monday=0 … Sunday=6) |
Pass as ?period=days or as a flag: ?days / ?months / ?weekdays.
Optional query params:
| Param | Example | Description |
|---|---|---|
from / to |
see below | Inclusive date window. If from is set and to is omitted, to is today. |
currency |
EUR |
BGN or EUR. If omitted, rows are grouped by currency. |
year |
2024 |
Restrict to one calendar year. |
limit |
10 |
Max rows after sorting by amount descending. |
Date window (from / to):
period |
Format | Example | Meaning |
|---|---|---|---|
days, weekdays |
DD-MM-YYYY |
from=01-10-2020&to=01-11-2020 |
1 Oct 2020 through 1 Nov 2020 |
months |
MM-YYYY |
from=01-2020&to=05-2020 |
January 2020 through May 2020 (whole months) |
months also accepts DD-MM-YYYY if you need an exact calendar cut. days / weekdays also accept MM-YYYY as the first/last day of that month.
If from is given without to, the window is from that date through today. Only to (no from) still means everything up to that date. With neither bound, the full history is used.
Examples:
GET /api/sebra/getPeriodsWithMostPayments?period=days
GET /api/sebra/getPeriodsWithMostPayments?period=days&from=01-10-2020&to=01-11-2020
GET /api/sebra/getPeriodsWithMostPayments?period=days&from=01-10-2020
GET /api/sebra/getPeriodsWithMostPayments?period=months&from=01-2020&to=05-2020¤cy=EUR
GET /api/sebra/getPeriodsWithMostPayments?period=weekdays&year=2025&limit=5
GET /api/sebra/getPeriodsWithMostPayments?days¤cy=EUR
curl "https://api.datanexusai.org/api/sebra/getPeriodsWithMostPayments?period=days&from=01-10-2020&to=01-11-2020"
curl "https://api.datanexusai.org/api/sebra/getPeriodsWithMostPayments?period=months&from=01-2020&to=05-2020¤cy=EUR"
200 response (shape):
{
"endpoint": "getPeriodsWithMostPayments",
"period": "days",
"period_key": "day_of_month",
"description": "Days of the month (1–31) with the largest payment sums",
"ordered_by": "total_amount",
"filters": { "currency": "EUR", "year": null, "from": "2020-10-01", "to": "2020-11-01", "limit": null },
"count": 31,
"items": [
{
"day_of_month": 28,
"label": "28",
"currency": "EUR",
"total_amount": "1234567.89",
"payment_count": 42,
"observed_days": 12,
"rank": 1
}
]
}
For months, items use month, then year, plus a Bulgarian month label (e.g. януари). Each calendar month is a separate row (August 2020 ≠ August 2024).
For weekdays, items use weekday plus a Bulgarian weekday label (e.g. понеделник).
400: missing/invalid period, invalid currency, invalid from/to, from after to, or limit < 1.
Sample: https://api.datanexusai.org/api/sebra/getTaxonomyForYear/2019
Where the money went in that calendar year: SEBRA economic accounts grouped as Salaries (Заплати), Maintenance (Издръжка), Capital expenditure (Капиталови разходи) (plus social payments, transfers, taxes, other), ordered by amount descending.
Also: GET /api/sebra/getTaxonomyForYear?year=2019
Params:
| Param | Example | Description |
|---|---|---|
year |
2019 |
Required unless given in the path. |
currency |
BGN |
BGN or EUR. If omitted, groups are split by currency. |
Examples:
GET /api/sebra/getTaxonomyForYear/2019
GET /api/sebra/getTaxonomyForYear?year=2019
GET /api/sebra/getTaxonomyForYear/2019?currency=BGN
curl "https://api.datanexusai.org/api/sebra/getTaxonomyForYear/2019"
200 response (shape):
{
"endpoint": "getTaxonomyForYear",
"year": 2019,
"ordered_by": "total_amount",
"filters": { "year": 2019, "currency": null },
"year_totals": [{ "currency": "BGN", "total_amount": "1000000.00" }],
"count": 3,
"items": [
{
"category": "Заплати",
"category_key": "salaries",
"currency": "BGN",
"total_amount": "500000.00",
"share_percent": "50.00",
"payment_count": 120,
"account_count": 2,
"rank": 1,
"accounts": [
{
"code": "01 xxxx",
"description": "Заплати, възнаграждения и други плащания за персонала - нетна сума за изплащане",
"total_amount": "490000.00",
"payment_count": 100,
"rank": 1
}
]
}
]
}
Salaries (Заплати), Maintenance (Издръжка) and Capital expenditure (Капиталови разходи) are always present (amount 0 if that year had none). Other buckets appear only when there is spend.
400: missing/invalid year, or invalid currency.
Sample: https://api.datanexusai.org/api/sebra/getTaxonomyForPeriod?from=01-10-2020&to=01-11-2020
Same account buckets as getTaxonomyForYear (Salaries, Maintenance, Capital expenditure, …), but for a date window.
Params:
| Param | Example | Description |
|---|---|---|
from |
01-10-2020 or 01-2020 |
Required. DD-MM-YYYY or MM-YYYY (month starts on day 1). |
to |
01-11-2020 or 05-2020 |
Inclusive end. If omitted, today. MM-YYYY means the last day of that month. |
currency |
BGN |
BGN or EUR. If omitted, groups are split by currency. |
Examples:
GET /api/sebra/getTaxonomyForPeriod?from=01-10-2020&to=01-11-2020
GET /api/sebra/getTaxonomyForPeriod?from=01-10-2020
GET /api/sebra/getTaxonomyForPeriod?from=01-2020&to=05-2020
GET /api/sebra/getTaxonomyForPeriod?from=01-2020¤cy=BGN
curl "https://api.datanexusai.org/api/sebra/getTaxonomyForPeriod?from=01-10-2020&to=01-11-2020"
curl "https://api.datanexusai.org/api/sebra/getTaxonomyForPeriod?from=01-2020"
200 response (shape): same items as getTaxonomyForYear. Totals are in period_totals. filters.from / filters.to are ISO dates.
400: missing/invalid from/to, from after to, or invalid currency.
Sample: https://api.datanexusai.org/api/sebra/getMostSponsoredProgramme/2019
Programmes ranked by total amount (then payment count): programme → payment count → total amount.
Filter with a year or a from/to window (not both). Without either, the full history is used.
Params:
| Param | Example | Description |
|---|---|---|
year |
2019 |
Calendar year. Also: /getMostSponsoredProgramme/2019. |
from / to |
01-10-2020, 01-2020 |
Same date window as getTaxonomyForPeriod. If from is set and to is omitted, to is today. |
currency |
EUR |
BGN or EUR. If omitted, rows are grouped by currency. |
limit |
10 |
Max programmes after ranking. |
Examples:
GET /api/sebra/getMostSponsoredProgramme/2019
GET /api/sebra/getMostSponsoredProgramme?year=2019
GET /api/sebra/getMostSponsoredProgramme?from=01-10-2020&to=01-11-2020
GET /api/sebra/getMostSponsoredProgramme?from=01-2020&to=05-2020&limit=10
GET /api/sebra/getMostSponsoredProgramme?from=01-2020¤cy=BGN
curl "https://api.datanexusai.org/api/sebra/getMostSponsoredProgramme/2019"
curl "https://api.datanexusai.org/api/sebra/getMostSponsoredProgramme?from=01-10-2020&to=01-11-2020&limit=10"
200 response (shape):
{
"endpoint": "getMostSponsoredProgramme",
"ordered_by": "total_amount",
"filters": { "year": 2019, "from": null, "to": null, "currency": null, "limit": null },
"count": 1,
"items": [
{
"programme": "Оперативна програма …",
"payment_count": 42,
"total_amount": "1234567.89",
"currency": "BGN",
"rank": 1
}
]
}
400: invalid year, year together with from/to, invalid from/to, invalid currency, or limit < 1.
Sample: https://api.datanexusai.org/api/sebra/getUnusualPayments/2019
Four unusual-activity lists for the same year or from/to window. limit (default 5) is applied to each list.
unusual_days — days whose total amount is unusually high (z-score ≥ 2 vs other days in the window).unusual_programmes — days when a programme paid unusually much vs that programme’s own days in the window (needs ≥ 5 days for the programme).expense_spikes — expense type (Salaries, Maintenance, Capital expenditure, …) whose monthly total is at least 2× the previous month in the window.unusual_payment_counts — days with an unusually high number of payments (z-score ≥ 2).Params: same as getMostSponsoredProgramme (year or from/to, currency, limit).
Examples:
GET /api/sebra/getUnusualPayments/2019
GET /api/sebra/getUnusualPayments?year=2019&limit=5
GET /api/sebra/getUnusualPayments?from=01-10-2020&to=01-11-2020
GET /api/sebra/getUnusualPayments?from=01-2020&to=05-2020&limit=5
curl "https://api.datanexusai.org/api/sebra/getUnusualPayments/2019?limit=5"
200 response (shape):
{
"endpoint": "getUnusualPayments",
"method": "zscore >= 2 vs the mean in the same window; expense spikes are month-over-month ratio >= 2",
"filters": { "year": 2019, "from": null, "to": null, "currency": null, "limit": 5 },
"unusual_days": [
{
"payment_date": "2019-12-20",
"currency": "BGN",
"total_amount": "9000000.00",
"mean_amount": "1000000.00",
"zscore": "3.20",
"payment_count": 400,
"rank": 1
}
],
"unusual_programmes": [
{
"programme": "Оперативна програма …",
"payment_date": "2019-06-15",
"currency": "BGN",
"total_amount": "2000000.00",
"mean_amount": "200000.00",
"zscore": "4.10",
"observed_days": 40,
"rank": 1
}
],
"expense_spikes": [
{
"category": "Капиталови разходи",
"category_key": "capital",
"currency": "BGN",
"month": "2019-11",
"total_amount": "800000.00",
"previous_amount": "200000.00",
"increase_ratio": "4.00",
"rank": 1
}
],
"unusual_payment_counts": [
{
"payment_date": "2019-03-25",
"currency": "BGN",
"payment_count": 2000,
"mean_count": "400.00",
"zscore": "2.80",
"total_amount": "1500000.00",
"rank": 1
}
]
}
A list can be empty if nothing in the window crosses the threshold.
400: invalid year, year together with from/to, invalid from/to, invalid currency, or limit < 1.
Card snapshots from hearthstone_cards_en and hearthstone_cards_bg (same schema; BG holds translated text fields). Class filters use the English enum in hearthstone_cards_en.card_class (e.g. SHAMAN).
Sample: https://api.datanexusai.org/api/hearthstone/getTranslatedCardInBG?name=Fireball
Look up an English card name in hearthstone_cards_en, resolve dbf_id / id, return matching rows from hearthstone_cards_bg.
| Param | Example | Description |
|---|---|---|
name |
Fireball |
Required unless given in the path. Exact match, case-insensitive. |
Examples:
GET /api/hearthstone/getTranslatedCardInBG?name=Fireball
GET /api/hearthstone/getTranslatedCardInBG/Fireball
200 response (shape): query, matched_en (id/dbf_id/name), count, items (BG card objects). Multiple EN variants with the same name return multiple BG items when present.
404: name not found in English table. 400: missing name.
Sample: https://api.datanexusai.org/api/hearthstone/getCardsByClass?class=Shaman
All cards with hearthstone_cards_en.card_class = SHAMAN (accepts Shaman, SHAMAN, шаман, …). Each item is { "en": {...}, "bg": {...} } (bg may be null).
| Param | Example | Description |
|---|---|---|
class |
Shaman |
Required unless given in the path. |
collectible |
true |
Optional. true / false to filter collectible cards. |
limit |
200 |
Max rows (default 200, max 2000). |
Examples:
GET /api/hearthstone/getCardsByClass?class=Shaman
GET /api/hearthstone/getCardsByClass/Mage?collectible=true&limit=50
400: missing/unknown class, or invalid limit.
Sample: https://api.datanexusai.org/api/hearthstone/getCard?name=Fireball
Bilingual lookup from both tables. Provide name and/or dbf_id.
| Param | Example | Description |
|---|---|---|
name |
Fireball |
English name, case-insensitive. |
dbf_id |
315 |
Numeric Hearthstone dbf id. |
Examples:
GET /api/hearthstone/getCard?name=Fireball
GET /api/hearthstone/getCard?dbf_id=315
GET /api/hearthstone/getCard?name=Fireball&dbf_id=315
200: items as { "en": {...}, "bg": {...} }. 404: no EN match. 400: neither param given.
Road accidents from egovbg_ptp_reports (Bulgarian MoI / МВР snapshot). location is usually ГР.ВАРНА, ГР.СОФИЯ, etc.
Sample: https://api.datanexusai.org/api/ptp/getPtpPerCity?city=Sofia&year=2025
All crashes for a city. Works with Latin or Cyrillic names (Sofia, София, Varna, Пловдив, …).
Params:
| Param | Example | Description |
|---|---|---|
city |
Sofia |
Required unless given in the path. |
year |
2025 |
Calendar year. |
from / to |
01-01-2025, 01-2025 |
Same window as SEBRA. If from is set and to is omitted, to is today. |
limit |
100 |
Optional max rows (newest first). Omit to return all matches. |
Use either year or from/to, not both.
Examples:
GET /api/ptp/getPtpPerCity?city=Sofia
GET /api/ptp/getPtpPerCity/Sofia?year=2025
GET /api/ptp/getPtpPerCity?city=Варна&from=01-01-2025&to=31-12-2025
GET /api/ptp/getPtpPerCity?city=Plovdiv&from=01-2025
curl "https://api.datanexusai.org/api/ptp/getPtpPerCity?city=Sofia"
curl "https://api.datanexusai.org/api/ptp/getPtpPerCity/Sofia?year=2025"
200 response (shape):
{
"endpoint": "getPtpPerCity",
"filters": { "city": "Sofia", "matched_as": ["СОФИЯ", "СТОЛИЧНА"], "year": 2025, "from": null, "to": null, "limit": null },
"count": 2,
"items": [
{
"crash_datetime": "2025-12-20T13:10:00",
"crash_type": "сблъскване между МПС странично",
"ptp_place": "в населено място",
"region": "СОФИЯ",
"municipality": "СТОЛИЧНА",
"location": "ГР.СОФИЯ",
"latitude": "42.69770000",
"longitude": "23.32190000",
"died_count": 0,
"injured_count": 1,
"participant_count": 2,
"is_major": false
}
]
}
400: missing city, invalid year, year together with from/to, invalid from/to, or limit < 1.
Sample: https://api.datanexusai.org/api/ptp/getPtpPerRegion?region=Sofia&year=2025
All crashes in a district/oblast (region column). Sofia maps to СОФИЯ (СТОЛИЦА) (Sofia city), not Sofia district. For the district use region=Софийска.
Same time params as getPtpPerCity: year or from/to, optional limit.
Examples:
GET /api/ptp/getPtpPerRegion?region=Sofia
GET /api/ptp/getPtpPerRegion/Sofia?year=2025
GET /api/ptp/getPtpPerRegion?region=Варна&from=01-2025
GET /api/ptp/getPtpPerRegion?region=Софийска
curl "https://api.datanexusai.org/api/ptp/getPtpPerRegion?region=Sofia"
Response shape matches getPtpPerCity (endpoint is getPtpPerRegion, filter key is region).
400: missing region, invalid year, year together with from/to, invalid from/to, or limit < 1.
Sample: https://api.datanexusai.org/api/ptp/getMostDeadlyLocations?year=2020
Deadliest 2 km crash clusters for a year. Centroids come from the monthly table egovbg_ptp_dedly_locations. Counts (crash_count, died_count, injured_count) are summed only from linked rows in egovbg_ptp_reports for that year — crash details are not duplicated.
Locations with 0 deaths in the window are omitted. Sorted by deaths, then crash count.
Params:
| Param | Example | Description |
|---|---|---|
year |
2020 |
Required unless given in the path, or use from/to instead. |
from / to |
01-01-2020, 01-2020 |
Same window as other PTP calls. If from is set and to is omitted, to is today. |
limit |
20 |
Max clusters. Default 20, max 200. |
Use either year or from/to, not both.
Examples:
GET /api/ptp/getMostDeadlyLocations?year=2020
GET /api/ptp/getMostDeadlyLocations/2020
GET /api/ptp/getMostDeadlyLocations?year=2020&limit=10
GET /api/ptp/getMostDeadlyLocations?from=01-01-2020&to=31-12-2020
curl "https://api.datanexusai.org/api/ptp/getMostDeadlyLocations?year=2020"
curl "https://api.datanexusai.org/api/ptp/getMostDeadlyLocations/2020?limit=10"
200 response (shape):
{
"endpoint": "getMostDeadlyLocations",
"filters": { "year": 2020, "from": null, "to": null, "limit": 20 },
"count": 2,
"items": [
{
"location_id": 12,
"latitude": "42.69770000",
"longitude": "23.32190000",
"radius_m": 2000,
"region": "СОФИЯ (СТОЛИЦА)",
"location": "ГР.СОФИЯ",
"crash_count": 18,
"died_count": 7,
"injured_count": 21
}
]
}
400: missing year (and no from/to), invalid year, year together with from/to, invalid from/to, or invalid limit.
JSON API over the loaded tables (agrifood_import, agrifood_member_state,
agrifood_cereals_*, agrifood_oilseeds_*, agrifood_pigmeat_*). One interface
across the three price datasets. Facts are taken from the latest agrifood_import
row per dataset.
Pagination on every list: limit (default 100, max 500) and offset.
Commodity ids are built from real keys:
cereals_prices:{product_name}oilseeds_prices:{product_name}|{product_type}pigmeat_prices:{pig_class}Sample: https://api.datanexusai.org/api/v1/datasets
Latest import per dataset (dataset, source, source_file, source_url, file_hash, import_date, row_count).
Sample: https://api.datanexusai.org/api/v1/datasets/cereals_prices
id is agrifood_import.dataset (cereals_prices, oilseeds_prices, pigmeat_prices). results are import versions.
Sample: https://api.datanexusai.org/api/v1/commodities?dataset=cereals_prices&limit=20
Catalog from agrifood_cereals_product, agrifood_oilseeds_product, agrifood_pigmeat_class.
| Param | Column |
|---|---|
dataset |
tagged dataset id |
q / commodity / product |
product_name or pig_class |
Sample: https://api.datanexusai.org/api/v1/countries
From agrifood_member_state (code, name). Optional dataset keeps countries that appear in that fact table.
Union of agrifood_cereals_price, agrifood_oilseeds_price, agrifood_pigmeat_price.
| Param | Maps to |
|---|---|
dataset |
dataset |
commodity / product |
product_name / pig_class |
country |
member_state_code or member_state_name |
market |
market_name |
date |
begin_date |
date_from / date_to |
begin_date range |
period |
week_number or marketing_year |
unit |
unit |
stage |
stage_name / market_stage |
product_type |
product_type |
pig_class |
pig_class |
Same filters, restricted to one commodity id. Ordered by begin_date descending.
Time series for that commodity (begin_date ascending), same filters.
Period-to-period changes for price, imports, exports, trade_balance. Filters: country, commodity, date_from, date_to, metric. Each row has previous_value, current_value, absolute_change, percentage_change, period. Missing values are skipped (not filled with 0).
Weekly Agri-food price LAG remains available as https://api.datanexusai.org/api/v1/prices/changes?dataset=pigmeat_prices&country=BG&limit=20 (also if dataset= is passed to /api/v1/changes).
Sample: https://api.datanexusai.org/api/v1/anomalies?min_percent=40&limit=20
Rows with |percent_change| >= min_percent (default 25) or |zscore| >= z (default 3) within the same series.
Sample: https://api.datanexusai.org/api/v1/latest?dataset=oilseeds_prices&limit=20
Newest begin_date per series.
GET /api/v1/datasets
GET /api/v1/prices?dataset=cereals_prices&country=BG&date_from=2024-01-01&limit=20
GET /api/v1/commodities/cereals_prices:Milling%20rye/history?country=AT
GET /api/v1/changes?country=BG&commodity=1001&metric=imports
GET /api/v1/prices/changes?dataset=pigmeat_prices&country=BG
GET /api/v1/anomalies?min_percent=40
GET /api/v1/latest?dataset=oilseeds_prices
curl "https://api.datanexusai.org/api/v1/datasets"
curl "https://api.datanexusai.org/api/v1/prices?country=BG&limit=5"
JSON over eurostat_comext_trade plus Agri-food cereal prices. No production series is loaded, so production is omitted. Comext partner in the current extract is WORLD (world total). Flow 1/2 are CXT_EU_FLUX IMPORT/EXPORT. Product codes 1001/1003/1005 are wheat / barley / maize from the crawled DS-045409 labels.
Pagination: limit (default 100, max 500), offset.
Sample: https://api.datanexusai.org/api/v1/trade?reporter=BG&product=1001&date_from=2020
Filters: reporter/country, partner, product/commodity, flow (1,2,import,export), date_from, date_to. Rows pivot VALUE_IN_EUROS → value and QUANTITY_IN_100KG → quantity.
Sample: https://api.datanexusai.org/api/v1/trade/balance?country=BG&commodity=1001
Requires reporter and product. trade_balance = exports - imports on VALUE_IN_EUROS.
Sample: https://api.datanexusai.org/api/v1/trade/partners?reporter=BG&product=1001&period=2025
Requires reporter and product. Optional flow (import/export/both, default both), period, date_from, date_to, limit (default 20), sort (value/quantity/share). WORLD and other aggregate partner codes are excluded from the ranking; WORLD totals are used as share denominators and reported in data_quality.
Sample: https://api.datanexusai.org/api/v1/markets/BG/1001
Combines Agri-food average annual price with Comext trade (imports, exports, trade_balance = exports - imports). Missing values stay null. Optional: year, date_from, date_to, partner (default WORLD), flow.
Sample: https://api.datanexusai.org/api/v1/markets/BG/1001/history?date_from=2020&date_to=2025
Annual series from Agri-food prices + Comext trade: period, price, imports, exports, trade_balance. Optional date_from, date_to. Missing indicators are null.
Sample: https://api.datanexusai.org/api/v1/markets/BG/1001/insights
YoY percent changes and z-score anomalies (z default 3). Deterministic SQL/Python, no LLM.
Sample: https://api.datanexusai.org/api/v1/markets/changes?countries=BG&commodities=1001&min_percent=10
YoY moves with |percent| >= min_percent (default 10). Optional countries, commodities.
Sample: https://api.datanexusai.org/api/v1/markets/anomalies?countries=BG&commodities=1001
|yoy| >= min_percent (default 40) or |zscore| >= z on price/imports.
Sample: https://api.datanexusai.org/api/v1/markets/compare?countries=BG,RO,GR,DE&commodity=1001
Compare 2+ countries for one commodity and one period. Filters: countries, commodity, date_from, date_to. Each country: price, imports, exports, trade_balance, price_change, imports_change, exports_change. Missing values are null. Without dates, uses the latest common period.
GET /api/v1/trade?reporter=BG&product=1001&date_from=2020
GET /api/v1/trade/balance?country=BG&commodity=1001
GET /api/v1/markets/BG/1001
GET /api/v1/markets/BG/1001/history
GET /api/v1/markets/compare?countries=BG,RO,GR,DE&commodity=1001
These endpoints expose derived analytics, not raw series dumps.
economy_* tables.license_status=APPROVED. Not raw FRED proxies.| Endpoint | Derived output |
|---|---|
GET /api/analytics/us/yield-curve |
US_10Y_2Y_SPREAD = DGS10 − DGS2 |
GET /api/analytics/us-eu/inflation |
US CPI YoY − EU HICP YoY |
GET /api/analytics/us/macro |
inflation/UE/rate changes + macro regime |
GET /api/analytics/market/volatility-regime |
VIX regime / percentile / z-score |
GET /api/analytics/us/yield-curve
GET /api/analytics/us-eu/inflation
GET /api/analytics/us/macro
GET /api/analytics/market/volatility-regime?lookback_days=252
This product uses the FRED® API but is not endorsed or certified by the Federal Reserve Bank of St. Louis.
Sample: https://api.datanexusai.org/api/v1/macro/eu-inflation-divergence
Member-state HICP YoY vs EA20/EU27 benchmark + MoM from HICP index. Ranked by absolute gap.
| Param | Notes |
|---|---|
period |
Optional (e.g. 2024-08); default = latest |
Sample: https://api.datanexusai.org/api/v1/rates/ecb-stance
DFR / MRO / MLFR corridor + €STR−DFR spread + liquidity stance label.
Sample: https://api.datanexusai.org/api/v1/rates/eu-curve-slope
Euro-area AAA curve levels + 10Y−2Y / 30Y−10Y slopes, butterfly, steep/flat/inverted regime.
Sample: https://api.datanexusai.org/api/v1/fx/eurusd-analytics?lookback_days=252
EURUSD multi-horizon returns, annualized vol, percentile, z-score, max drawdown.
| Param | Notes |
|---|---|
lookback_days |
History window (default 252, max 2000) |
GET /api/v1/macro/eu-inflation-divergence
GET /api/v1/rates/ecb-stance
GET /api/v1/rates/eu-curve-slope
GET /api/v1/fx/eurusd-analytics?lookback_days=252