v1.0 — Beta

Developer documentation

Orevox aggregates sanctions lists, travel advisories, political stability, corruption, and conflict data from eleven sources into a single JSON response per country.

195 countries
Full global coverage
Every 6 hours
Travel advisories updated
11 data sources
Sanctions, travel, media, conflicts
<100ms
Average response time

Quick start

Send your first request in under a minute. Your API key is in your portal.

curl https://api.orevox.eu/api/v1/risk/IR \
  -H "X-Api-Key: or_live_your-api-key"

Response:

json
{
  "isoCode": "IR",
  "countryName": "Iran",
  "aggregatedRisk": 8.4,
  "travelAdvisoryScore": 9,
  "sanctionedEu": true,
  "sanctionedOfac": true,
  "stabilityScore": -1.80,
  "sources": {
    "buza":       "2026-03-18T06:00:00Z",
    "euSanctions": "2026-03-18T02:00:00Z",
    "ofac":       "2026-03-18T02:30:00Z",
    "worldBank":  "2026-03-01T03:00:00Z"
  }
}

Authentication

All API requests require authentication via the X-Api-Key header. Your API key can be found in your portal.

Warning: Never store your API key in client-side code or public repositories. Use environment variables.
bash
curl https://api.orevox.eu/api/v1/risk/NL \
  -H "X-Api-Key: or_live_your-api-key"

Key format

Keys always start with or_live_ followed by a unique hash. Keys are only visible once when created. Lost keys can be reset via the portal.

Tiers & limits

Calls are counted per calendar month. When you reach your limit, the API returns a 429 .

TierPriceCalls/monthBatchHistorySanctions & CSDDDPEP searchWebhooksExport
Free€0/mo100
Starter€99/mo500
Growth€299/mo5,000
Enterprise€799/moUnlimited

Custom weights

On risk endpoints you can override the weights of the four main components via query parameters. Weights do not need to sum to 100% — they are automatically normalized.

ParameterDefaultDescription
wTravel0.40Weight for travel advisory (0.0–1.0)
wSanctions0.35Weight for sanctions (0.0–1.0)
wStability0.25Weight for political stability (0.0–1.0)
wMedia0.05Weight for media signal (0.0–1.0, optional)

Example: heavy sanctions weight for financial due diligence:

bash
curl "https://api.orevox.eu/api/v1/risk/RU?wTravel=0.10&wSanctions=0.70&wStability=0.20" \
  -H "X-Api-Key: or_live_your-api-key"

Custom weights are supported on: GET /risk, GET /risk/{iso}, POST /risk/batch and GET /risk/{iso}/score.

Endpoints

GET/api/v1/risk

Returns risk profiles for all countries, sorted by risk (high to low). Supports optional filter query parameters.

Optional parameters: minScore, maxScore, sanctionedEu, sanctionedOfac, sanctionedUn, sanctionedUk, sanctionedCa, sanctionedAu, sort (risk_desc|risk_asc), sector

curl https://api.orevox.eu/api/v1/risk \
  -H "X-Api-Key: or_live_your-api-key"
GET/api/v1/risk/{isoCode}

Full risk profile for one country. Accepts ISO 3166-1 alpha-2 or alpha-3 codes. Optionally apply a sector preset or custom weights.

curl https://api.orevox.eu/api/v1/risk/RU \
  -H "X-Api-Key: or_live_your-api-key"
GET/api/v1/risk/{isoCode}/score

Only the aggregated score. Cheap endpoint for polling or monitoring.

bash
curl https://api.orevox.eu/api/v1/risk/SY/score \
  -H "X-Api-Key: or_live_your-api-key"

# Response:
# { "isoCode": "SY", "score": 9.5 }
GET/api/v1/risk/{isoCode}/breakdown

Detailed breakdown of the score per component — travel advisory, sanctions, stability, media, corruption, conflict — including the weights applied. Requires Starter tier or higher.

curl https://api.orevox.eu/api/v1/risk/RU/breakdown \
  -H "X-Api-Key: or_live_your-api-key"

Response:

json
{
  "isoCode": "RU",
  "aggregatedRisk": 9.1,
  "weightsUsed": { "travel": 0.40, "sanctions": 0.35, "stability": 0.25 },
  "components": {
    "travel":    { "raw": 9,    "contribution": 3.60 },
    "sanctions": { "base": 7.0, "contribution": 2.45 },
    "stability": { "raw": -1.2, "normalized": 7.42, "contribution": 3.08 }
  }
}
GET/api/v1/risk/{isoCode}/trendGrowth+

7-day trend analysis: direction (up/stable/down), delta and historical context. Requires Growth tier or higher.

bash
curl https://api.orevox.eu/api/v1/risk/UA/trend \
  -H "X-Api-Key: or_live_your-api-key"

# Response:
# {
#   "isoCode": "UA",
#   "direction": "up",
#   "delta7d": 0.4,
#   "previous7d": 7.8,
#   "current": 8.2
# }
GET/api/v1/risk/{isoCode}/historyGrowth+

Risk scores for the past 90 days. Requires Growth tier or higher.

curl https://api.orevox.eu/api/v1/risk/UA/history \
  -H "X-Api-Key: or_live_your-api-key"
GET/api/v1/risk/{isoCode}/csdddGrowth+

CSDDD compliance report per EU Directive 2024/1760 (Corporate Sustainability Due Diligence). Includes 6 indicators: human rights, labor, sanctions exposure, travel advisory, corruption, and conflict risk. Requires Growth tier.

curl https://api.orevox.eu/api/v1/risk/CN/csddd \
  -H "X-Api-Key: or_live_your-api-key"

Response:

json
{
  "isoCode": "CN",
  "countryName": "China",
  "standard": "EU CSDDD 2024/1760",
  "reportDate": "2026-03-25",
  "overallRisk": "HIGH",
  "indicators": {
    "humanRightsRisk":    { "value": "HIGH",   "rationale": "EU + OFAC sanctions active" },
    "laborRisk":          { "value": "MEDIUM", "rationale": "PV.EST: -0.44" },
    "sanctionsExposure":  { "value": "FULL",   "rationale": "6/6 lists active" },
    "travelAdvisoryLevel":{ "value": "HIGH",   "rationale": "Level 3 advisory" },
    "corruptionRisk":     { "value": "HIGH",   "rationale": "CC.EST: -0.28" },
    "conflictRisk":       { "value": "LOW",    "rationale": "Signal: 0.3/10" }
  }
}
POST/api/v1/risk/batchGrowth+

Fetch up to 50 countries at once. Requires Growth tier or higher.

curl -X POST https://api.orevox.eu/api/v1/risk/batch \
  -H "X-Api-Key: or_live_your-api-key" \
  -H "Content-Type: application/json" \
  -d '["IR", "RU", "SY", "KP", "UA"]'
POST/api/v1/risk/portfolioGrowth+

Calculate a weighted risk score for a portfolio of countries. Weights are optional and automatically normalized. Requires Growth tier.

curl -X POST https://api.orevox.eu/api/v1/risk/portfolio \
  -H "X-Api-Key: or_live_your-api-key" \
  -H "Content-Type: application/json" \
  -d '{"countries":[{"isoCode":"DE"},{"isoCode":"RU","weight":0.6},{"isoCode":"CN","weight":0.3}]}'

Response:

json
{
  "portfolioScore": 7.4,
  "countryCount": 3,
  "riskLevel": "HIGH",
  "countries": [
    { "isoCode": "DE", "countryName": "Germany", "score": 2.1, "weight": 0.10 },
    { "isoCode": "RU", "countryName": "Russia",  "score": 9.1, "weight": 0.60 },
    { "isoCode": "CN", "countryName": "China",   "score": 7.3, "weight": 0.30 }
  ]
}
GET/api/v1/risk/sectors

Returns the available sector presets with their weight configurations. Use the sector name as a ?sector= parameter on risk endpoints.

bash
curl https://api.orevox.eu/api/v1/risk/sectors \
  -H "X-Api-Key: or_live_your-api-key"

# Apply a sector:
# GET /api/v1/risk/RU?sector=Finance

Response:

json
[
  { "sector": "Finance",    "wTravel": 0.20, "wSanctions": 0.55, "wStability": 0.25 },
  { "sector": "Mining",     "wTravel": 0.30, "wSanctions": 0.35, "wStability": 0.35 },
  { "sector": "Technology", "wTravel": 0.15, "wSanctions": 0.50, "wStability": 0.35 },
  ...
]
GET/api/v1/risk/{isoCode}/sanctionsGrowth+

Returns a list of all sanctioned individuals, companies and vessels for a single country, sourced from EU FSF and/or OFAC SDN. Requires Growth tier or higher.

curl https://api.orevox.eu/api/v1/risk/RU/sanctions \
  -H "X-Api-Key: or_live_your-api-key"

Response:

json
{
  "isoCode": "RU",
  "total": 4658,
  "entities": [
    { "source": "OFAC", "name": "ALFA-BANK", "type": "entity", "programme": "RUSSIA-EO14024" },
    { "source": "EU",   "name": "Aleksandr Sergeevich KUZNETSOV", "type": "individual", "programme": "RUS" },
    ...
  ]
}
GET/api/v1/portal/me

Account info: tier, calls this month, quota and reset date.

bash
curl https://api.orevox.eu/api/v1/portal/me \
  -H "X-Api-Key: or_live_your-api-key"

# Response:
# {
#   "tier": "GROWTH",
#   "callsThisMonth": 1234,
#   "monthlyQuota": 5000,
#   "quotaResetAt": "2026-04-01T00:00:00Z"
# }
GET/api/v1/portal/usage

Detailed usage statistics: current month and daily usage for the past 30 days.

bash
curl https://api.orevox.eu/api/v1/portal/usage \
  -H "X-Api-Key: or_live_your-api-key"

# Response:
# {
#   "currentMonth": { "calls": 1234, "quota": 5000, "remaining": 3766, "percentUsed": 25 },
#   "last30Days": [
#     { "date": "2026-03-24", "calls": 47 },
#     { "date": "2026-03-25", "calls": 23 }
#   ]
# }
GET/api/v1/portal/watchlistGrowth+

Manage a watchlist of countries. Receive email alerts when the risk score crosses a threshold. Requires Growth tier.

# List watchlist
curl https://api.orevox.eu/api/v1/portal/watchlist \
  -H "X-Api-Key: or_live_your-api-key"

Response:

json
[
  {
    "isoCode": "RU",
    "countryName": "Russia",
    "threshold": 7.5,
    "emailAlert": true
  }
]
PUT/api/v1/portal/webhookGrowth+

Set up a webhook for risk score changes greater than 1.5 points. Requires Growth+.

bash
curl -X PUT https://api.orevox.eu/api/v1/portal/webhook \
  -H "X-Api-Key: or_live_your-api-key" \
  -H "Content-Type: application/json" \
  -d '{"url": "https://your-app.com/riskpulse-webhook"}'

Webhook payload

json
{
  "event": "risk.score_changed",
  "isoCode": "IR",
  "countryName": "Iran",
  "previousScore": 7.1,
  "newScore": 9.0,
  "delta": 1.9,
  "timestamp": "2026-03-18T06:00:00Z"
}

Response schema

All risk endpoints return a RiskProfile object.

FieldTypeDescription
isoCodestringISO 3166-1 alpha-2 country code (e.g. "IR")
countryNamestringFull English country name
aggregatedRiskfloatWeighted risk score 1.0–10.0 (1 decimal)
travelAdvisoryScoreintegerBlended travel advisory: 1=safe, 3=caution, 6=high risk, 9=do not travel
sanctionedEubooleanCountry is on EU FSF sanctions list
sanctionedOfacbooleanCountry is on US OFAC SDN list
sanctionedUnbooleanCountry is on UN Consolidated Sanctions list
sanctionedUkbooleanCountry is on UK FCDO Sanctions list (UKSL)
sanctionedCabooleanCountry is on Canada SEMA sanctions list
sanctionedAubooleanCountry is on Australia DFAT consolidated sanctions list
stabilityScorefloatWorld Bank PV.EST index: -2.5 (unstable) to +2.5 (stable)
mediaSignalfloat?GDELT adverse-media signal 0–2.5 (nullable, enabled via feature flag)
corruptionScorefloat?World Bank CC.EST: -2.5 (corrupt) to +2.5 (clean) (nullable)
conflictSignalfloat?GDELT armed conflict signal 0–10 (nullable, requires API key)
sectorUsedstring?Sector preset applied to this response (nullable)
regionalWarningstring?Regional travel advisory color code (nullable)
regionalWarningAreastring?Name of the region with elevated advisory (nullable)
sourcesobjectTimestamps of the last data refresh per source (buza, euSanctions, ofac, worldBank, stateDept, unSanctions, ukSanctions, caSanctions, auSanctions, fcdo, corruption, conflict)

SanctionList schema

The /sanctions endpoint returns a SanctionList object containing a list of entities.

FieldTypeDescription
isoCodestringISO 3166-1 alpha-2 country code
totalintegerTotal number of entities found
entitiesarrayList of sanctioned entities
entities[].sourcestring"EU", "OFAC", "UN", "UK", "CA" or "AU"
entities[].namestringName of the person, company or vessel
entities[].typestring?Entity type: individual, entity, vessel, aircraft, group (nullable)
entities[].programmestringSanction regime, e.g. "RUSSIA-EO14024" or "RUS"

Score calculation

The aggregatedRisk is a weighted average of three data sources, rounded to one decimal and clamped between 1.0 and 10.0.

How each component works

Travel Advisory (BuZa + US + FCDO)40%

Blended travel advisory from three government sources: BuZa (Dutch), US State Dept, and UK FCDO. When all three are available: BuZa 25% + US 50% + FCDO 25%. Adjusted ratios when fewer sources are available.

Safe → 1 · Caution → 3 · High risk → 6 · Do not travel → 9
Sanctions (EU, OFAC, UN, UK, CA, AU)35%

If a country appears on any of the six sanctions lists (EU FSF, OFAC SDN, UN, UK, Canada, Australia), the sanction base is set to 7.0. Non-sanctioned countries receive a base of 1.0.

Not sanctioned → base 1.0 · Sanctioned → base 7.0
Political Stability (World Bank)25%

The World Bank PV.EST indicator measures political instability and violence. Orevox normalizes this to a 1–9 scale so that a higher value always means higher risk.

+2.5 (stable) → risk score 1 · −2.5 (unstable) → risk score 9

Formula

score = clamp(1.0, 10.0,
travelAdvisory × 0.40 +
sanctionBase × 0.35 +
stabilityNorm × 0.25
)
// Where:
sanctionBase = 7.0 if sanctioned, else 1.0
stabilityNorm = ((-wb + 2.5) / 5.0) × 8.0 + 1.0
Risk levelScoreColor
Critical≥ 9.0● Dark red
High7.0 – 8.9● Red
Medium4.0 – 6.9● Orange
Low< 4.0● Green

Error codes

StatusMeaningSolution
401UnauthorizedMissing or invalid X-Api-Key headerCheck your API key in the portal
403ForbiddenEndpoint requires a higher tierUpgrade to Growth or Enterprise
404Not FoundCountry code not foundUse a valid ISO 3166-1 code
429Too Many RequestsMonthly quota reachedWait for quota reset or upgrade
502Bad GatewayUpstream error fetching dataTry again, we're monitoring this

Data sources

BuZa travel advisory

travelAdvisoryScore
Every 6 hours

Dutch travel advisories from the Ministry of Foreign Affairs. Color codes: green (1), yellow (3), orange (6), red (9).

US State Dept travel advisory

travelAdvisoryScore
Every 6 hours

US State Department advisory levels 1–4 (scores 2, 4, 7, 9). Combined with BuZa for the blended travel score.

UK FCDO travel advice

travelAdvisoryScore
Every 6 hours

UK FCDO travel advisories. Third travel source that refines the blended score.

EU FSF sanctions list

sanctionedEu
Every night 02:00

European Union Financial Sanctions Files. Countries subject to EU sanctions.

OFAC SDN list

sanctionedOfac
Every night 02:30

US Treasury OFAC Specially Designated Nationals list. Countries subject to American sanctions.

UN Consolidated Sanctions

sanctionedUn
Every night 01:30

UN Security Council consolidated sanctions list in XML format.

UK Sanctions List (UKSL)

sanctionedUk
Every night 01:45

UK FCDO sanctions list, independent from EU sanctions post-Brexit.

Canada SEMA

sanctionedCa
Every night 05:00

Canada's Special Economic Measures Act sanctions list.

Australia DFAT

sanctionedAu
Every night 05:30

Australia's DFAT consolidated sanctions list (XLSX format).

World Bank PV.EST

stabilityScore
1× per month

Political Stability and Absence of Violence/Terrorism indicator. Range: -2.5 to +2.5.

World Bank CC.EST (corruption)

corruptionScore
1× per month

Control of Corruption indicator. Range: -2.5 (high corruption) to +2.5 (low corruption). Optional scoring component.

GDELT v2 media

mediaSignal
Every night 04:15

Adverse media signal based on 7-day tone chart from GDELT v2 DOC API. Range: 0–2.5.

GDELT conflict data

conflictSignal
Every 15 minutes

Armed conflict signal derived from the GDELT 2.0 bulk export (QuadClass 3 & 4 events). Exponential decay with a half-life of ~5.5 hours so spikes fade naturally within 24 hours. Range: 0–10.

Changelog

v1.0.0

April 2026

  • Risk profile endpoint for 195 countries
  • Batch endpoint (Growth+)
  • History endpoint with 90 days of data (Growth+)
  • Webhook notifications for score changes (Growth+)
  • 13 data sources: BuZa, US State Dept, UK FCDO, EU FSF, OFAC SDN, UN, UK, Canada, Australia, World Bank PV.EST & CC.EST, GDELT media & conflict
  • PEP search via /pep/search API (OpenSanctions)
  • Sanctions entity search via /sanctions/search API
  • Watchlist with email alerts on threshold crossings
  • /risk/{isoCode}/breakdown, /trend, /csddd and /score endpoints
  • /risk/sectors for sector-specific scoring weight presets
  • FREE tier — self-service signup (100 calls/month)
  • Interactive world map with conflict markers and regional advisories

Questions or issues? Email support@orevox.eu

Download OpenAPI spec