Skip to main content
This page is the single reference for the controlled vocabularies you pass to the v2 API: the event_family, category, subcategory, sort, group_by, confidence_profile, geography, and energy/maritime filters. Values are case-sensitive unless noted.
Most endpoints echo the values they actually applied back under applied_filters in the response. When in doubt, send a query and read applied_filters to confirm how your input resolved.

Event families

Pick one family per Events query with event_family. Stories carry both families and are filtered by story category instead.

Event categories & subcategories

category and subcategory accept either a Conflict event type or a CAMEO+ domain/code. They are an open vocabulary (the API also accepts close aliases and CAMEO+ code strings), so they render as free-text parameters in the playground — use the canonical values below.

Conflict event types

For event_family=conflict, category is one of six ACLED event types; subcategory is one of its sub-types.
Government regains territory · Non-state actor overtakes territory · Armed clash
Excessive force against protesters · Protest with intervention · Peaceful protest
Violent demonstration · Mob violence
Chemical weapon · Air/drone strike · Suicide bomb · Shelling/artillery/missile attack · Remote explosive/landmine/IED · Grenade
Sexual violence · Attack · Abduction/forced disappearance
Agreement · Arrests · Change to group/activity · Disrupted weapons use · Headquarters or base established · Looting/property destruction · Non-violent transfer of territory · Other

CAMEO+ domains

For event_family=cameoplus, category is one of ten domains. Each non-political domain uses a two-letter code prefix; POLITICAL uses standard CAMEO root codes.

CAMEO+ subcategory codes

Pass any of these as subcategory (the domain’s codes). Expand a domain to see its codes.
Roots 14, 18, 19, 20 (protest / assault / fight / unconventional violence) are ACLED-covered and routed to the Conflict family instead.The boundary between the two families is did it happen, or was it said? An act that occurred is a Conflict (ACLED) event; a threat, demand, warning, or ultimatum is a speech act and stays in CAMEO+ POLITICAL. So “Israel struck Iran” is Conflict, while “Israel threatened to strike Iran” is 1384 under root 13. Root 13 therefore covers every threat, including threats of military force (138, 13811385), repression (137), and ultimatums (139) — it is not limited to non-military threats. Coercion that has been actually imposed (e.g. sanctions in force) is root 17, not 13.

Story categories

For /api/v2/stories, filter with story_category (one per query). Each maps to one event family/domain.

Filtering, sorting & grouping

Event metric filters

Every metric below accepts _min and _max query parameters (e.g. significance_min=0.7).
Goldstein scale. Present for all Conflict Events and for CAMEO+ POLITICAL events where meaningful; null for non-political CAMEO+ domains. +5…+10 cooperative, −4…+4 neutral/mixed, −5…−10 conflictual or coercive. Use has_fatalities=true for fatal events rather than a fatality range filter.
magnitude, systemic_importance, propagation_potential and market_sensitivity are CAMEO+ only. Conflict events carry all four as null, so adding one of these filters to a Conflict query returns an empty 200 rather than an error — the filter can only match a scored CAMEO+ row. significance and confidence are the cross-family filters. Note also that roughly 6% of CAMEO+ events have no metrics row at all; treat an absent metric as unknown, never as 0.
How to read magnitude, systemic_importance, propagation_potential and market_sensitivity. These four are rubric scores, not measurements. Read this before using any of them in a threshold, a model feature, or a customer-facing claim.
Rubric scores, not measurements. For each metric, a model reads a handful of concrete sub-factors off the source text — a fatality count, how substitutable a supplier is, whether a barrier that was holding got breached, whether a traded claim is exposed — and states a reason for each one. Fixed, published formulas then turn those sub-factors into the score. Nothing is fitted, estimated from price history, or forecast, and nothing is a black box: any value is reconstructable by a third party from the sub-factors and the published formula. The frameworks give the rubric its structure — they do not make the values empirical. magnitude follows domain severity scales (Richardson log-deaths, anchored MEPV-style on 0–10; an EM-DAT-style realized-impact tier for hazards; the CAMEO coercion ladder for speech acts). systemic_importance follows the BCBS G-SIB / ECB O-SII equal-weight indicator practice. propagation_potential follows the ERCS barrier model and the ESRB systemic-risk shape. market_sensitivity follows the reasonable-investor materiality test. We adapt these frameworks for their vocabulary and structure. None of these institutions endorses, reviews, or is connected to this work, and their use does not make our values measured. Coverage — why “measured” is the wrong word. Over 42,099 events in a 45-day window: a hard registry attribute — the observable that would make systemic_importance measured rather than judged — resolves for about 2.2% of events, and a traded instrument, behind market_sensitivity’s exposure gate, resolves for about 1.5%. For everything else the score is a judged rubric reading. Treat all four as ordinal ranking signals: use them to sort, filter and triage, not to assert a quantity about a single event. Reliability — the smallest difference worth reading. The same 59 events, coded three times with identical prompts and formulas, so everything that moved is noise: Never read a single-event difference smaller than the last column. Distribution-level comparisons are far steadier than individual events, so aggregate claims hold well below these thresholds — but a claim that one event moved does not. magnitude is within-domain only. Each domain has its own anchored ladder, so a conflict magnitude of 8 and an economic magnitude of 8 are not the same “size.” Use significance — the family-scoped composite — whenever you rank events across domains. And magnitude is null when no severity observable was found: null means unknown, never zero. The four are not fully independent axes. Under the ESRB framing, market_sensitivity is a propagation channel — common exposure and confidence effects expressed in prices — so it is closer to a special case of propagation_potential than an orthogonal dimension. Both are served because market_sensitivity carries substantial independent variance and fires domain-appropriately, but do not treat the set as four independent dimensions in a model or a weighted score.

Geography

Country, region, and continent filters share one resolver across Events, Stories, Entities, and Energy.

Energy vocabularies

For /api/v2/energy/*.

Trackers & capacity units

Pass one or more tracker values (comma-separated).
Only MW-denominated trackers (coal_plants, oil_gas_plants, nuclear, geothermal, bioenergy, hydropower, solar, wind) are safe to sum across trackers in a single rollup.

Energy enums

Maritime chokepoints

Generally available — plan-gated on can_use_maritime; keys without it get a 403 PLAN_REQUIRED.
The Maritime API filters by chokepoint: hormuz · bab_el_mandeb · malacca · suez · panama · bosphorus · gibraltar · dover · kerch · taiwan · danish_straits Other maritime parameters:

Languages

Source-language filters (languages, comma-separated ISO 639-1 codes) on Events, Stories, Entity Tone, and Share of Voice. Any of the 62 recognized codes is accepted; these 24 are the most-covered (also the default filter options):
en English · ar Arabic · zh Chinese · es Spanish · fr French · de German · ru Russian · pt Portuguese · it Italian · tr Turkish · fa Persian · ja Japanese · ko Korean · hi Hindi · id Indonesian · uk Ukrainian · ro Romanian · pl Polish · nl Dutch · sv Swedish · el Greek · he Hebrew · th Thai · vi Vietnamese · sr Serbian · bg Bulgarian · hr Croatian · cs Czech · hu Hungarian · sk Slovak · bn Bengali · ur Urdu · ta Tamil · sq Albanian · az Azerbaijani · ka Georgian · hy Armenian · fi Finnish · da Danish · no Norwegian · bs Bosnian · sl Slovenian · mk Macedonian · sw Swahili · lt Lithuanian · lv Latvian · et Estonian · is Icelandic · mt Maltese · ga Irish · ml Malayalam · kn Kannada · te Telugu · mr Marathi · gu Gujarati · pa Punjabi · ne Nepali · si Sinhala · my Burmese · km Khmer · lo Lao · am Amharic

Entities

Media Intelligence

Generally available — plan-gated: Entity Tone on can_use_tone, Share of Voice on can_use_share_of_voice; keys without the flag get a 403 PLAN_REQUIRED. Social signal (/api/v2/social) is the one surface still in admin-only preview. Entity Tone & Share of Voice measure press coverage, not public opinion.

Briefs

Filings

Generally available — plan-gated on can_use_filings; keys without it get a 403 PLAN_REQUIRED. SEC EDGAR is public domain (cite the SEC); relation edges + entity resolution are GDELT Cloud derived.

Macro Finance

Generally available — plan-gated on can_use_macro; keys without it get a 403 PLAN_REQUIRED. Sourced from FRED / ALFRED; carry the FRED non-endorsement notice.

Reference & Screening

Generally available — plan-gated per surface: screening lists + counterparty match on can_use_screening, ownership-chain exposure on can_use_exposure, China development finance on can_use_china. Keys without the flag get a 403 PLAN_REQUIRED.

Putting it together