Two entry points, same semantics: agentdata <domain> <command> or python -m agentdata <domain> <command>.
Global options may sit before or after the subcommand; when given in both places, the one after the subcommand wins. Environment variables and flags are equivalent.
| Flag | Meaning |
|---|---|
--base-url |
Hosted API base URL (env AGENTDATA_BASE_URL) |
--api-key |
Access credential PAT (env AGENTDATA_API_KEY) |
--cache-dir |
Local cache directory (env AGENTDATA_CACHE_DIR) |
--no-cache |
Bypass the cache for this call and go straight upstream |
--execution |
local|hosted|auto (default auto: realtime queries run local) |
ch_zefix_firmZefix single record: purpose full text, oldNames history, hasTakenOver/takenOverBy M&A edges with ehraid/uid/chid cross-references (precedessor/successor)
Jurisdiction: CH
| Flag | Required | Meaning |
|---|---|---|
--ehraid |
yes | The Swiss commercial-registry number ehraid (search rows carry it) |
ch_zefix_firm_searchZefix firm search: name contains-match (hits historical names too); three registry keys (ehraid/uid/chid) per row; maxEntries/offset honored upstream (echoed back)
Jurisdiction: CH
| Flag | Required | Meaning |
|---|---|---|
--name |
yes | Company name or fragment (contains match — historical names hit too) |
--max-entries |
no | Rows (upstream maxEntries, default 100) |
--offset |
no | Offset (upstream pagination, walk with --max-entries; cap is the upstream-echoed max_offset) |
co_rues_companiesRUES registro mercantil master, 9.4M rows: matricula registry key x NIT tax id x CIIU industry x legal form x representante_legal name edge; base filter keeps NIT-identified (tax entity) rows only — persona natural rows whose id columns are cedulas stay out of the face, and the RL cedula-number column is stripped (names kept)
Jurisdiction: CO
| Flag | Required | Meaning |
|---|---|---|
--where |
no | SoQL filter expression passed through verbatim (e.g. razon_social like '%BANCOL%', estado_matricula='ACTIVA'); a base filter keeping company (NIT) rows only is auto-appended |
--limit |
no | Rows per page, 1–500 (default 20) |
--offset |
no | Paging offset, 0-based |
--order |
no | Sort order (e.g. matricula ASC; the upstream rejects NULLS syntax) |
fdic_institutionsFDIC institutions: ES search × structured filters are combinable raw channels (search 'NAME:"…"' / filters 'CERT:n'); no upstream limit wall (10,000 verified)
Jurisdiction: US
| Flag | Required | Meaning |
|---|---|---|
--search |
no | Full-text expression, e.g. NAME:"First National" AND ST:TX |
--filters |
no | Structured filter, e.g. ST:TX AND CITY:Dallas (point-lookup by CERT: CERT:628) |
--limit |
no | Rows to return (default 5) |
fi_ytj_companiesYTJ v3 companies: name contains-match hits historical/branch names; businessId direct lookup; pagination params are silently ignored upstream — fixed ~63-row pages, totalResults is the real total
Jurisdiction: FI
| Flag | Required | Meaning |
|---|---|---|
--name |
no | Company name (substring semantics — "Nokia" also hits "Nokian Vuokrakodit"; historical and branch names hit too) |
--business-id |
no | Finnish business-id (e.g. 0205709-4; direct lookup) |
fr_recherche_searchetalab recherche-entreprises: one q for company name, officer name (cross-company mandate search) or SIREN direct lookup; rich rows with dirigeants (person + corporate slots), finances, tva; etat_administratif A=active/C=ceased true filter
Jurisdiction: FR
| Flag | Required | Meaning |
|---|---|---|
--q |
yes | One query, three uses: company name / officer name (cross-company mandate search) / direct SIREN lookup |
--page |
no | Page, 1-based (walk while page ≤ total_pages) |
--per-page |
no | Rows per page, 1–25 (default 10; above 25 fails locally without calling upstream) |
--etat-administratif |
no | True status filter: A=active / C=ceased (the upstream default does not filter; lowercase is normalized) |
gb_contracts_finder_published_noticesSub-threshold UK contracts: publishedFrom/publishedTo are bare dates (opposite of FTS); no window → our rolling 7-day default (upstream returns empty without one); --stages filters tender|award (upstream 400 self-validates); --name = client-side contains filter
Jurisdiction: GB
| Flag | Required | Meaning |
|---|---|---|
--name |
no | Company name, local contains filter (this upstream face has no name-search param — a full 100-row page is fetched, then filtered) |
--stages |
no | Stage filter: tender / award (absent = both stages mixed; a wrong value gets an upstream 400 naming the closed set) |
--published-from |
no | Window start, YYYY-MM-DD (default 7 days back) |
--published-to |
no | Window end (default today) |
--limit |
no | Rows, 1–100; with --name this caps matches (each page still fetches 100) |
--cursor |
no | Pagination cursor (pass the same window when walking) |
gb_fts_release_packagesWTO-line UK procurement releases: stages/limit/cursor/updatedFrom/updatedTo upstream-verbatim; --name is a client-side contains filter (forces fetch of the full 100-row page, matches buyer or suppliers)
Jurisdiction: GB
| Flag | Required | Meaning |
|---|---|---|
--name |
no | Company name, local contains filter (this upstream face has no name-search param — a full 100-row page is fetched, then filtered) |
--stages |
no | OCDS stage: award / tender (default award) |
--limit |
no | Rows, 1–100; with --name this caps matches (each page still fetches 100) |
--cursor |
no | Pagination cursor (feed next_cursor) |
--updated-from |
no | Window start, YYYY-MM-DD or full ISO datetime (bare dates get T00:00:00Z) |
--updated-to |
no | Window end (bare dates get T23:59:59Z) |
gleif_direct_parentDirect parent card; 404 = honestly no parent (not an error)
Jurisdiction: GLOBAL
| Flag | Required | Meaning |
|---|---|---|
--lei |
yes | The LEI to look up (20 chars) |
gleif_lei_recordsLegal Entity Identifier → entity card (legal name, status, jurisdiction, registration; + successor LEIs (M&A edge), expiration, legal form, BIC/MIC)
Jurisdiction: GLOBAL
| Flag | Required | Meaning |
|---|---|---|
--lei |
yes | The LEI to look up (20 chars, ISO 17442) |
gleif_lei_records_searchName → LEI candidates (non-authoritative; verify with gleif_lei_records before persisting); jurisdiction/status filters and page[number] walking upstream-verbatim; rows carry registered_as (cross-registry join key)
Jurisdiction: GLOBAL
| Flag | Required | Meaning |
|---|---|---|
--filter-entity-legal-name |
yes | Legal name or a fragment of it (contains match; official param filter\[entity.legalName\]) |
--filter-entity-jurisdiction |
no | Jurisdiction filter (official param filter\[entity.jurisdiction\]; ISO 3166 country or region code, e.g. CH, US-MO) |
--filter-entity-status |
no | Entity status filter (official param filter\[entity.status\]; ACTIVE/INACTIVE/NULL — entity lifecycle, not registration.status) |
--page-number |
no | Page, 1-based (official param page\[number\]; walk bound = result.page.lastPage) |
--page-size |
no | Candidates cap, 1–200 (default 10) |
gleif_ultimate_parentUltimate parent card (top of the control chain); 404 = honestly no parent (not an error)
Jurisdiction: GLOBAL
| Flag | Required | Meaning |
|---|---|---|
--lei |
yes | The LEI to look up (20 chars) |
kr_hometax_biz_statusNTS hometax anonymous single-BRN status: four states all legal answers — active (일반/간이/과세특례 taxpayer), closed (ISO closure date extracted), unregistered (result=S, not an error), error; txprNm is always null upstream (no owner-name leak)
Jurisdiction: KR
| Flag | Required | Meaning |
|---|---|---|
--biz-no |
yes | Korean business registration number, 10 digits, hyphens optional (124-81-00998 equals 1248100998) — required at runtime |
no_brreg_enheterBrønnøysund Enhetsregisteret: navn search with HAL pagination (page/size, 0-based) or orgnr single record; navn is the Norwegian upstream param (?name= 400s)
Jurisdiction: NO
| Flag | Required | Meaning |
|---|---|---|
--navn |
no | Company name (the upstream param really is navn — spelling it name gets a 400) |
--organisasjonsnummer |
no | 9-digit org number (direct single record; takes precedence over --navn) |
--page |
no | Page, 0-based (only with --navn search) |
--size |
no | Rows per page (default 20, cap 100) |
no_brreg_rollerRole groups (DAGL CEO / STYR board / REVI auditor): persons carry name+birth date (no national id in the public face), corporate roles (auditors) carry org number; avregistrert=true = retired
Jurisdiction: NO
| Flag | Required | Meaning |
|---|---|---|
--organisasjonsnummer |
yes | 9-digit org number (enheter rows carry it) |
nzco_companiesName substring over the register index — the canonical parameter set is required (a bare ?q= answers an empty match, pinned). Rows: company number + 16-digit NZBN + the register's own status word (Registered/Removed, not 'Active') + entity type + registered address. Paging = the pager's own start= + limit 5|15 (both observed live; other sizes unpinned, not shipped); has_next reads the pager offsets
Jurisdiction: NZ
| Flag | Required | Meaning |
|---|---|---|
--q |
yes | Name substring (required; company numbers also hit inside the name index) |
--entity-types |
no | The filter form's own checkbox codes: ALL (default) / LTD / UNLTD / COOP = NZ companies, ASIC / NON_ASIC = overseas |
--start |
no | Paging row offset, 0-based (omitted on the first page) |
--limit |
no | Page size, only 5 and 15 ever observed live (default 15; others unpinned upstream, refused locally) |
nzco_directorsCurrent appointments: full legal name + residential address (statutorily public in NZ, partially masked since the privacy-law change — captured verbatim) + appointment date in the register's wording. The page H1 confirms the company (name+number+status; a mismatch refuses to attribute rows). Ceased/former appointments render in a different section and stay out; find the number with nzco_companies (e.g. 104799 = Air New Zealand Limited)
Jurisdiction: NZ
| Flag | Required | Meaning |
|---|---|---|
--company-number |
yes | NZ company number, digits only (104799 = Air New Zealand Limited; find it with nzco_companies first) |
ror_organizationsResearch Organization Registry: query → candidates (fixed 20/page, --page walks), or ror_id → authoritative single record
Jurisdiction: GLOBAL
| Flag | Required | Meaning |
|---|---|---|
--query |
no | Organization name search (fixed 20 rows per page) |
--ror-id |
no | ROR id (0+8 chars; bare id or full URL) |
--page |
no | Page number (with --query) |
--all-status |
no | Include inactive / withdrawn organizations — the upstream default returns only active ones, silently hiding the other two states |
sec_fulltext_searchEDGAR full-text search: q/forms/startdt/enddt upstream-verbatim; a single date end is auto-completed (silently ignored upstream), dateRange=custom always two-ended; total_relation gte = capped at 10k
Jurisdiction: US
| Flag | Required | Meaning |
|---|---|---|
--q |
yes | Query term (EDGAR full-text search syntax; quote phrases) |
--forms |
no | Form-type filter, e.g. 8-K,10-K |
--startdt |
no | Start date YYYY-MM-DD (a single end auto-completes to 2001-01-01) |
--enddt |
no | End date YYYY-MM-DD (a single start auto-completes to today) |
--limit |
no | Rows, 1–100 (the upstream page is 100 hits, sliced locally beyond that) |
sec_submissionsRegistrant identity card: legal/former names, tickers·exchanges, EIN, SIC, filing totals (accepts bare/zero-padded/CIK-prefixed input)
Jurisdiction: US
| Flag | Required | Meaning |
|---|---|---|
--cik |
yes | CIK, 1–10 digits (search result rows carry it) |
ted_notices_searchTenders Electronic Daily: expert-syntax query via --query (e.g. 'organisation-name-buyer=Siemens* AND organisation-country-buyer=DEU' / classification-cpv=33100000); limit 1-250 is an upstream hard wall
Jurisdiction: EU
| Flag | Required | Meaning |
|---|---|---|
--query |
yes | TED query expression (required), e.g. organisation-name-buyer=Siemens* AND organisation-country-buyer=DEU (trailing * = prefix match) |
--fields |
no | eForms fields to return, comma-separated (wrong names get a 400 with the full field dump — copy the correct name from it) |
--limit |
no | Notices per page, 1–250 (default 10) |
--page |
no | Page number |
usaspending_spending_by_awardFederal contracts/grants: recipient name (array upstream, scalar auto-wrapped); award-type codes, time window (single end auto-completed), fields all upstream-verbatim
Jurisdiction: US
| Flag | Required | Meaning |
|---|---|---|
--recipient-search-text |
yes | Recipient name |
--award-type-codes |
no | Comma-separated award type codes (default A,B,C,D = contracts; grants are 02/03 etc.) |
--start-date |
no | Window start, YYYY-MM-DD (a single end auto-completes the other) |
--end-date |
no | Window end, YYYY-MM-DD |
--fields |
no | Columns to return, comma-separated (default 6) |
--limit |
no | Rows per page, 1–100 (default 10) |
--page |
no | Page number (keep walking while has_more) |
--subawards, --no-subawards |
no | Include subawards (default off) |
vies_vatOfficial EU VAT validation: member-state prefixed number; INVALID → ok:true with valid=false; '---' masking → null (not missing data)
Jurisdiction: EU
| Flag | Required | Meaning |
|---|---|---|
--vat |
yes | VAT number with member-state prefix, e.g. DE811907980 |
searchCorpus search (hosted, PAT required): filters/record_kind/level/pagination
| Flag | Required | Meaning |
|---|---|---|
--filter |
no | Filter K=V (repeatable; the filterable fields are listed on this page) |
--record-kind |
no | Record kind (closed set; values in the domain spec) |
--facets |
no | Comma-separated fields to return facet counts for |
--level |
no | Read-layer depth (default tier1; see the read layers on this page) |
--limit |
no | Rows per page (default 50, max 1000) |
--cursor |
no | Pagination cursor (feed next_cursor from the response) |
--mode |
no | Special mode: screen (batch screening; requires --input) |
--input |
no | Input JSONL file for batch screening (with --mode screen) |
readCorpus single-record read (hosted): id + T-layer depth
| Flag | Required | Meaning |
|---|---|---|
--id |
yes | Subject id (from search result rows) |
--level |
no | Read-layer depth (default tier1) |
bis_sdmx_seriesBIS SDMX series (realtime, local execution; /api/v1/data/{flow}/{key}/all, the SDMX 2.1 generic-CSV channel; key = the raw dot-separated series key with AT LEAST two segments — the segment order is flow-specific: WS_CBPOL FREQ.REF_AREA (M.US), WS_DSR FREQ.BORROWERS_CTY.DSR_BORROWERS (Q.US.N), WS_XRU FREQ.REF_AREA.CURRENCY.COLLECTION (M.CN.CNY.E); a one-segment key is every area at once — a multi-megabyte answer; a wrong key answers 404 with an SDMX error, which is not a block; --start / --end are the upstream startPeriod / endPeriod bounds)
Jurisdiction: GLOBAL
| Flag | Required | Meaning |
|---|---|---|
--flow |
yes | BIS dataflow id (WS_CBPOL policy rates / WS_DSR debt-service ratios / WS_XRU USD exchange rates) |
--key |
yes | SDMX series key, at least two dot-separated segments (the segment order is flow-specific: M.US for WS_CBPOL, Q.US.N for WS_DSR, M.CN.CNY.E for WS_XRU) — a one-segment key is every area at once and is refused locally |
--start |
no | Period window start (upstream startPeriod) |
--end |
no | Period window end (upstream endPeriod) |
bls_seriesBLS v2 series observations (realtime, local execution; POST /publicAPI/v2/timeseries/data/ with a JSON body; --series takes up to 25 comma-separated ids — the documented keyless caps are 25 series x 10 years x 500 queries/day; a window wider than 10 years is refused locally because the upstream clamp keeps the EARLIEST ten years (startyear-anchored: a 2010..2026 ask answered 2010..2019); a bogus id answers 200 and the id is listed under series_without_data; omitting both years answers the latest ~3 calendar years; catalog/calculations/annualaverage/aspects are key-gated options and are never sent)
Jurisdiction: US
| Flag | Required | Meaning |
|---|---|---|
--series |
yes | BLS series id(s), comma-separated, ≤ 25 (official codes: CUUR0000SA0 = CPI-U, LNS14000000 = unemployment rate, CES0000000001 = nonfarm payrolls; lower case normalizes locally) |
--start-year |
no | Window start year (upstream startyear; travels with --end-year; omitting both = the latest ~3 calendar years) |
--end-year |
no | Window end year (upstream endyear; travels with --start-year; ≤ 10-year window — wider windows are refused locally: the upstream clamp keeps the earliest ten years) |
comext_flowsEurostat Comext annual HS2-4-6 trade mirror since 2002 (realtime, local execution; the DEDICATED comext dissemination root /api/comext/dissemination/.../data/ds-059341 — the plain Eurostat root 404s the ds- datasets; at least one filter is required — the filterless mirror is a 413 "Full extraction forbidden" (31.3 billion cells, one query caps at 5 million); --flow 1 imports / 2 exports; --indicators defaults to VALUE_EUR; the reporter aggregates EU / EU27_2020 / EA / EA21 live alongside the country codes; the JSON-stat grid is decoded into flat rows; the monthly CN8 detail (DS-045409) travels the raw side, not this face)
Jurisdiction: EU
| Flag | Required | Meaning |
|---|---|---|
--reporter |
no | Reporter geo code (repeatable, e.g. DE; the aggregates EU / EU27_2020 / EA / EA21 live alongside country codes) |
--partner |
no | Partner geo code (repeatable, e.g. CN, WLD = the World) |
--product |
no | HS 2/4/6 product code (repeatable; 85 = electrical machinery) — a wrong shape answers zero cells silently; check dimensions.product.codes |
--flow |
no | Trade flow (repeatable: 1 imports / 2 exports) — omit it and each direction returns a row |
--indicators |
no | Value measure (default VALUE_EUR in euros; also QUANTITY_IN_100KG) |
--time |
no | Year filter (repeatable, e.g. 2024) |
--since |
no | Time-axis start (upstream sinceTimePeriod) |
--until |
no | Time-axis end (upstream untilTimePeriod) — at least one filter dimension is required; the filterless call is an upstream 413 |
ecb_fx_ratesECB euro reference rate for one currency (realtime, local execution; /EXR/D.{CCY}.EUR.SP00.A?format=csvdata; the value is units of {currency} per 1 EUR and the date travels with every row; --start / --end are the upstream startPeriod / endPeriod bounds and one of them is required; the historical eurofxref CSV is a stale 2010 snapshot and is not used)
Jurisdiction: EU
| Flag | Required | Meaning |
|---|---|---|
--currency |
yes | ISO 4217 three-letter currency code (USD / JPY / GBP) — the series key is EXR.D.{CCY}.EUR.SP00.A |
--start |
no | Window start (upstream startPeriod); give at least one of --start / --end, otherwise the full history (~8,000 rows) |
--end |
no | Window end (upstream endPeriod) |
eurostat_tableEurostat table query (realtime, local execution; /data/{table}; geo / time / --dim k=v are the upstream dimension filters — SEVERAL values are REPEATED parameters (the '+' form is a 400 and the comma form silently yields zero cells); --since / --until are the upstream sinceTimePeriod / untilTimePeriod bounds; the JSON-stat grid is decoded into flat rows; a geo outside the table yields zero cells and no upstream error)
Jurisdiction: EU
| Flag | Required | Meaning |
|---|---|---|
--table |
yes | Table code (e.g. tec00001 / demo_pjan / nama_10_a64) |
--geo |
no | Geography filter (repeatable, e.g. DE) — several values must be repeated; the comma form silently yields zero cells |
--time |
no | Time filter (repeatable, e.g. 2023) |
--dim |
no | Other dimension filters as k=v (repeatable, e.g. unit=CP_MEUR, nace_r2=TOTAL) — leave them out and you get the whole grid |
--since |
no | Time-axis start (upstream sinceTimePeriod) |
--until |
no | Time-axis end (upstream untilTimePeriod) |
--lang |
no | Upstream language (default EN) |
fred_seriesFRED series observations (realtime, local execution; /fredgraph.csv?id=; ONE series id per call — several ids answer a ZIP archive the JSON transport cannot carry; an unknown series id answers an HTML error page and is reported as not-found; a missing observation is null; --start / --end are the upstream cosd / coed bounds)
Jurisdiction: US
| Flag | Required | Meaning |
|---|---|---|
--series |
yes | Series id, one per call (GDP / CPIAUCSL / DGS10) — several ids answer a ZIP upstream |
--start |
no | Observation window start (upstream cosd) |
--end |
no | Observation window end (upstream coed) |
ilo_stat_indicatorILOSTAT indicator for one country (realtime, local execution; /data/indicator/; the format flag is the query parameter format=json — a path suffix is a 400/404; --ref-area (ISO-3) is required — the world-wide answer is orders of magnitude bigger; --time-from / --time-until are the upstream timefrom / timeto bounds — the upstream spells the upper bound 'timeto' and silently ignores 'timeuntil'; the urllib channel is the working one on this host — the curl stack answers an empty 200)
Jurisdiction: GLOBAL
| Flag | Required | Meaning |
|---|---|---|
--indicator |
yes | ILOSTAT indicator code (e.g. EMP_TEMP_SEX_ECO_NB_A) |
--ref-area |
yes | Country ISO-3 code (e.g. USA) — required, the world-wide answer is orders of magnitude bigger |
--time-from |
no | Year lower bound (upstream timefrom) |
--time-until |
no | Year upper bound (upstream timeto — the upstream does not know timeuntil) |
--sex |
no | Sex dimension filter (upstream sex) |
--classif |
no | Classification dimension filter (upstream classif1, e.g. ECO_SECTOR_TOTAL) |
--source |
no | Source filter (upstream source) |
imf_sdmx_seriesIMF SDMX series (realtime, local execution; /external/sdmx/2.1/data/{flow}/{COUNTRY.INDICATOR[.FREQUENCY]}, the SDMX 2.1 generic-CSV channel; --country AND --indicator are both required — the country-only key is the multi-megabyte wall; the key shape fits the WEO/GDD/CPI family, NOT UNFCCC whose dimensions insert INDUSTRY/GAS_TYPE before the indicator; --start / --end are the upstream startPeriod / endPeriod bounds; OBS_VALUE carries the true value — SCALE is only a display hint)
Jurisdiction: GLOBAL
| Flag | Required | Meaning |
|---|---|---|
--flow |
yes | IMF dataflow id (WEO World Economic Outlook / GDD Global Debt / CPI prices) |
--country |
yes | Country code (ISO-3 in WEO/GDD, e.g. USA) — required together with --indicator; a country-only key is the multi-megabyte wall |
--indicator |
yes | Indicator code (e.g. NGDP_RPCH = real GDP growth) — the key shape is COUNTRY.INDICATOR\[.FREQUENCY\], fitting the WEO/GDD/CPI family (UNFCCC's dimension order differs; do not use it there) |
--frequency |
no | Optional trailing key dimension (e.g. A) |
--start |
no | Period window start (upstream startPeriod) |
--end |
no | Period window end (upstream endPeriod) |
oecd_sdmx_seriesOECD SDMX series (realtime, local execution; /public/rest/data/{flow}/{key}/all, the SDMX generic-CSV channel; --flow takes the CATALOG form agency,DSD@DF[,version] — the bare DF spelling answers 404 "Could not find Dataflow and/or DSD"; --key is dot-separated with EXACTLY one segment per DSD dimension and an EMPTY segment as the wildcard — the segment count is validated against the DSD structure before the data call, so the short-key 403 ("expecting 12 got 6") never forms; --start / --end are the upstream startPeriod / endPeriod bounds; the whole service is keyless — the 2026-11-02 'needs a key' ruling was a request-form misdiagnosis)
Jurisdiction: GLOBAL
| Flag | Required | Meaning |
|---|---|---|
--flow |
yes | Dataflow in the catalog form agency,DSD@DF\[,version\] (e.g. OECD.ECO.MAD,DSD_EO@DF_EO,1.5 Economic Outlook, OECD.SDD.NAD,DSD_NAAG@DF_NAAG_I,1.0 national-accounts GDP chapter) — the bare DF spelling answers 404; a dotted agency is the norm |
--key |
yes | Dot-separated series key, one segment per DSD dimension, empty = wildcard (A.DEU... = annual × Germany × everything else) — validated against the structure endpoint first, with the dimension names in the error |
--start |
no | Period window start (upstream startPeriod) |
--end |
no | Period window end (upstream endPeriod) |
un_comtrade_tradeUN Comtrade trade mirror, public preview (realtime, local execution; /public/v1/preview/{type}/{freq}/{cl}; --reporter / --partner take an ISO-3 code or the numeric area code — the ISO3 is translated through the area reference, whose historical and duplicate rows make a naive map wrong (USA = 842, not 840 or 841); --period 2023 / 202301; --cmd is the commodity code (comma list, TOTAL = all goods); --flow X / M / 'X,M'; the preview answers at most 500 records)
Jurisdiction: GLOBAL
| Flag | Required | Meaning |
|---|---|---|
--reporter |
yes | Reporting country: ISO-3 (USA) or the numeric area code (842) |
--period |
yes | Reporting period: 2023 or 202301 |
--partner |
no | Partner area: ISO-3 or numeric code (0 / W00 = the World aggregate) |
--cmd |
no | Commodity code, comma list allowed (TOTAL = all goods) |
--flow |
no | Trade flow: X (export), M (import), X,M for both |
--type-code |
no | Path segment: commodity type (C) |
--freq-code |
no | Path segment: frequency (A = annual) |
--cl-code |
no | Path segment: classification (HS) |
--max-records |
no | Records per call (1–500) |
--partner2 |
no | Second partner area (upstream partner2Code; ISO-3 or numeric code, resolved the same as --partner — the via-country leg of a mirror flow) |
--customs |
no | Customs regime filter (upstream customsCode; values per the Comtrade reference) |
--mot |
no | Mode of transport filter (upstream motCode; a numeric code per the Comtrade reference) |
unsd_sdg_indicatorsUNSD SDG indicator catalog (realtime, local execution; /Indicator/List — 251 indicators over the 17 goals, each row carrying its series codes (713 in total) nested inside; the upstream answers the whole catalog in one payload — --page / --per-page slice it locally and --search is a LOCAL keyword scan over the whole catalog, never an upstream filter)
Jurisdiction: GLOBAL
| Flag | Required | Meaning |
|---|---|---|
--page |
no | Local page slice (the upstream sends the whole catalog at once) |
--per-page |
no | Local page size (1–500, default 50) |
--search |
no | Local keyword scan (indicator code / description / series codes) — over the whole catalog, not the current page |
unsd_sdg_seriesUNSD SDG series observations (realtime, local execution; /Series/Data?seriesCode= — series granularity only: the whole-indicator endpoint is a 3.2M-row wall that is never formed; --geo is a LOCAL filter over the fetched page matching the geoAreaCode or geoAreaName — the upstream 'area' parameter is DECORATIVE, byte-identical with and without it; --time is the upstream timePeriod filter, the one upstream filter that works on this endpoint)
Jurisdiction: GLOBAL
| Flag | Required | Meaning |
|---|---|---|
--series |
yes | SDG series code (e.g. SI_POV_DAY1, DC_ODA_POVLG — list candidates with unsd_sdg_indicators) — series granularity only; the whole-indicator endpoint is a 3.2M-row wall and is never called |
--geo |
no | Geography filter, applied locally (matches geoAreaCode or geoAreaName, case-insensitive) — the upstream area parameter is decorative (byte-identical with or without it) |
--time |
no | Period filter (upstream timePeriod, e.g. 2020) — the one upstream filter that works on this endpoint |
--page |
no | Page number, 1-based (upstream pager) |
--page-size |
no | Rows per page (1–1000, default 100) |
wb_countriesWorld Bank country reference (realtime, local execution; /v2/country; ISO3 / ISO2 / region / income level / lending type / coordinates — the income band is the buyer-screen dimension; the 296 entries include the aggregate regions)
Jurisdiction: GLOBAL
| Flag | Required | Meaning |
|---|---|---|
--page |
no | Page number, 1-based (default 1) |
--per-page |
no | Rows per page (default 100) |
wb_ids_indicatorsWorld Bank International Debt Statistics catalog (realtime, local execution; /v2/indicator with source pinned to 6 = IDS — 577 indicators in seven debt families: DOD stocks / INT interest / AMT disbursements / DIS / NFL net flows / NTR / TDS service plus the balance-of-payments mirrors; the per-page default 600 holds the whole catalog in one page; the VALUES of the DT.* codes are served by wb_wdi_values WITHOUT a source parameter — the value endpoint breaks with source=6 and the API silently falls back to sourceid 2)
Jurisdiction: GLOBAL
| Flag | Required | Meaning |
|---|---|---|
--page |
no | Page number, 1-based (default 1) |
--per-page |
no | Rows per page (default 600 — the whole IDS catalog fits one page) |
--search |
no | Keyword, scanned over the current page only (not an upstream filter) |
wb_wdi_indicatorsWorld Bank indicator catalog (realtime, local execution; /v2/indicator?source=; source 2 = WDI — without it the catalog is every World Bank source at once (29,544 rows); --search is a LOCAL keyword scan over the returned page, not an upstream filter)
Jurisdiction: GLOBAL
| Flag | Required | Meaning |
|---|---|---|
--source |
no | World Bank source id, 2 = WDI (default 2) — without it the catalog is every source at once |
--page |
no | Page number, 1-based (default 1) |
--per-page |
no | Rows per page (default 500) |
--search |
no | Keyword, scanned over the current page only (not an upstream filter) — candidates off-page need paging |
wb_wdi_valuesWorld Bank WDI indicator values (realtime, local execution; /v2/country/{country}/indicator/{indicator}; country = ISO3, several codes joined by ';'; ONE indicator code per call — the upstream rejects several codes in one call ("120 Invalid value"); date = YYYY or YYYY:YYYY; a missing observation is null, never fabricated)
Jurisdiction: GLOBAL
| Flag | Required | Meaning |
|---|---|---|
--country |
yes | Country ISO-3 code; several joined with ; (CHN;JPN) |
--indicator |
yes | One WDI indicator code (e.g. NY.GDP.MKTP.CD) — several codes answer 120 Invalid value upstream |
--date |
no | A year or a range: 2020 or 2020:2023 |
--per-page |
no | Rows per page (default 100) |
who_xmart_indicatorsWHO xMart indicator directory (realtime, local execution; IND_DIRECTORY_WIDE — 1,561 indicators, each row carrying IND_URI_API (the per-indicator API diameter) and IND_URI_WEB; --filter is the raw upstream OData $filter; --search is a LOCAL keyword scan over the returned page)
Jurisdiction: GLOBAL
| Flag | Required | Meaning |
|---|---|---|
--filter |
no | The upstream OData $filter verbatim (e.g. startswith(IND_NAME,'TB_')) — this is how you find indicators by word |
--top |
no | Upstream $top page size (1–5000, default 500) |
--skip |
no | Upstream $skip offset (default 0) |
--search |
no | Keyword, scanned over the current page only (not an upstream filter) |
who_xmart_valuesWHO xMart indicator observations (realtime, local execution; DATA_/{entity set}; the entity set is resolved from the directory row's IND_URI_API — when several entity sets carry the same indicator name the candidate list is NOT auto-picked, pass --entity-set; --geo takes an ISO-3 country (translated through REF_GEO_WIDE into the M49 code) or a raw M49 code; --year is the DIM_TIME string value)
Jurisdiction: GLOBAL
| Flag | Required | Meaning |
|---|---|---|
--indicator |
yes | Indicator code (e.g. TB_ppm_enrol_tx_prct) |
--geo |
no | ISO-3 country code or a raw M49 code (translated through REF_GEO_WIDE) |
--year |
no | Year (the DIM_TIME string value, e.g. 2023) |
--entity-set |
no | The values entity set (required when one indicator name has several candidates) |
--top |
no | Upstream $top page size (1–5000, default 500) |
--skip |
no | Upstream $skip offset (default 0) |
searchCorpus search (hosted, PAT required): filters/record_kind/level/pagination
| Flag | Required | Meaning |
|---|---|---|
--filter |
no | Filter K=V (repeatable; the filterable fields are listed on this page) |
--record-kind |
no | Record kind (closed set; values in the domain spec) |
--facets |
no | Comma-separated fields to return facet counts for |
--level |
no | Read-layer depth (default tier1; see the read layers on this page) |
--limit |
no | Rows per page (default 50, max 1000) |
--cursor |
no | Pagination cursor (feed next_cursor from the response) |
--mode |
no | Special mode: screen (batch screening; requires --input) |
--input |
no | Input JSONL file for batch screening (with --mode screen) |
readCorpus single-record read (hosted): id + T-layer depth
| Flag | Required | Meaning |
|---|---|---|
--id |
yes | Subject id (from search result rows) |
--level |
no | Read-layer depth (default tier1) |
climatetrace_ownersClimate TRACE emissions-owner candidates: name/limit/offset upstream-verbatim; zero hit = legal empty (upstream 404 JSON mapped); ordering is NOT stable across limits — fetch enough in one go
Jurisdiction: GLOBAL
| Flag | Required | Meaning |
|---|---|---|
--name |
yes | Owner name (feed the id into climatetrace_sources for facility-level emissions) |
--limit |
no | Rows (cap 50) |
--offset |
no | Rows to skip (ordering is unstable — prefer one large fetch) |
climatetrace_sourcesClimate TRACE owner/filter→facility/aggregate emission sources: owner_ids→ownerIds (comma-joined = union & dedup, tested; repeated param = upstream silently first-wins, do not use) XOR --owner-name shortcut (resolves first candidate); year no local wall (out-of-window year → upstream null, 2021+ has data); gas verbatim — non-co2e gas switches row key to emissions_quantity (native unit); 0.2.9 audit additions: offset paging, sectors closed-set validated locally (invalid values silently return the WHOLE corpus upstream), subsectors passthrough (upstream 400 self-describes), location family gadm_id/city_id/country_group/continent passthrough (upstream 400 enforces one-at-a-time); owner_ids or at least one filter required (bare corpus scan walled politely)
Jurisdiction: GLOBAL
| Flag | Required | Meaning |
|---|---|---|
--owner-ids |
no | Owner id(s), e.g. E100000000766 (comma-joined = union) |
--owner-name |
no | Owner-name shortcut: resolves the first matching owner (XOR with --owner-ids; use the latter to target precisely) |
--year |
no | Emissions year (default = current year; data window starts 2021) |
--gas |
no | Gas measure (default co2e_100yr = tCO2e) |
--limit |
no | Rows (cap 500) |
--offset |
no | Rows to skip (ordering is unstable — prefer one large fetch) |
--sectors |
no | Sector filter, closed set: agriculture / buildings / fluorinated-gases / forestry-and-land-use / fossil-fuel-operations / manufacturing / mineral-extraction / power / transportation / waste, plus the special all_no_forest (wrong values silently return the whole corpus upstream — validated locally) |
--subsectors |
no | Subsector slug (68 upstream values, listed at GET /v7/definitions/subsectors; wrong values get an upstream 400) |
--gadm-id |
no | GADM region id (location family — gadm-id / city-id / country-group / continent: the upstream allows only one at a time, more gets a 400) |
--city-id |
no | Metro-area id (location family, one at a time) |
--country-group |
no | Country-group slug, e.g. eu / aosis / g20 (location family, one at a time) |
--continent |
no | Continent name, e.g. Europe (the upstream counts RUS under Europe; location family, one at a time) |
eiti_companiesEITI extractives filing-company candidates: company_name__like is the upstream Datasette magic param verbatim (%/_ metachars yours to manage); --name shortcut wraps %contains% (same slot, XOR); zero hit = legal empty
Jurisdiction: GLOBAL
| Flag | Required | Meaning |
|---|---|---|
--company-name__like |
no | Company name, SQL LIKE match (% / _ wildcards pass through) |
--name |
no | Company-name shortcut: assembled to a %name% contains match (XOR with --company-name__like; use the latter to control wildcards yourself) |
--size |
no | Rows (cap 1000) |
eiti_paymentsEITI company→government payment lines: id channel (eiti_id_company__exact verbatim XOR --eiti-id shortcut adding the eiti_id_company: prefix) + name channel (company_name__like verbatim XOR --name shortcut); channels may combine; at least one required (bare scan walled locally)
Jurisdiction: GLOBAL
| Flag | Required | Meaning |
|---|---|---|
--eiti-id-company__exact |
no | EITI company id, exact full value (incl. the eiti_id_company: prefix) |
--eiti-id |
no | Bare-UUID shortcut: the eiti_id_company: prefix is auto-added (XOR with --eiti-id-company__exact) |
--company-name__like |
no | Company name, SQL LIKE match (% / _ wildcards pass through) |
--name |
no | Company-name shortcut: assembled to a %name% contains match (XOR with --company-name__like; use the latter to control wildcards yourself) |
--size |
no | Rows (cap 1000) |
epa_frs_facilitiesEPA FRS facility registry point query: seven filter columns upstream-verbatim (registry_id / primary_name / state_code / city_name + the 0.3.20 audit trio country_name / site_type_name / epa_region_code — ALL exact '=' match, combinable = AND; the upstream contains/~ operators silently return 0, fuzzy facility names go through ECHO; country_name unlocks the non-US facility slice, GERMANY=110 measured) + start/size paging (ROWS closed interval start:end, computed locally — an omitted/inverted ROWS segment makes the upstream dump the whole table); at least one filter required (bare 5.6M-row scan walled politely, batch pipeline serves that); each call = rows + count (total_matches)
Jurisdiction: US
| Flag | Required | Meaning |
|---|---|---|
--registry-id |
no | FRS Registry ID — the authoritative facility key (ECHO/TRI/GHGRP join anchor) |
--primary-name |
no | Facility primary name — EXACT match incl. spaces (the upstream contains/~ operators silently return 0; fuzzy names go through ECHO) |
--state-code |
no | State code, 2-letter (lowercase uppercased locally, e.g. DE) |
--city-name |
no | City name (exact; the seven filters combine as AND, at least one required) |
--country-name |
no | Country name (exact uppercase form, lowercase uppercased locally — GERMANY=110 measured; unlocks the non-US facility slice) |
--site-type-name |
no | Site type (exact uppercase, e.g. STATIONARY=4,725,914 measured) |
--epa-region-code |
no | EPA region (zero-padded two-digit string form '03'; region 10 = 214,197 measured) |
--start |
no | Paging offset (upstream ROWS closed-interval start; the end is computed locally from size) |
--size |
no | Rows (default 50, politeness cap 500) |
euasl_datasetsEU Air Safety List official download catalog (keyless): one call returns all files — the machine-readable XLSX master (Annex A = carriers under an operating ban, Annex B = restrictions/conditions) + 24 official-language PDF renditions; the document UUIDs rotate on every republication (reconcile against this listing, never guess file names); zero params upstream; the binary bodies go through the batch pipeline, this face gives coordinates
Jurisdiction: EU
| Flag | Required | Meaning |
|---|
eutl_datasetsEUTL official bulk-download catalog (keyless): one call returns all datasets — Azure daily extracts (accounts/operators/holdings csv.gz) + climate.ec.europa.eu yearly files (compliance/verified emissions 2021-2025); zero params upstream; file downloads themselves go through the batch pipeline, this face gives coordinates
Jurisdiction: EU
| Flag | Required | Meaning |
|---|
paris_mou_bansParis MoU banned-ships register (keyless): ban date/occurrence/order status/reason/minimum duration/banning authority, with the embedded ISM company flattened to row keys — the official ship x management-company edge (~2/3 of rows carry a company IMO number); zero params upstream
Jurisdiction: GLOBAL
| Flag | Required | Meaning |
|---|
paris_mou_detentionsParis MoU (Atlantic/European port state control) currently-detained ships snapshot (keyless): daily-rolling live state — ship IMO number (asset key), detention port+country, reporting authority; historical detentions go through paris_mou_inspections window search; zero params upstream
Jurisdiction: GLOBAL
| Flag | Required | Meaning |
|---|
paris_mou_inspectionsParis MoU historical port state control inspections (THETIS form-encoded POST, keyless): period_min/period_max are dd/mm/yyyy STRICT (upstream native order day/month/year — wrong order silently returns zero) and the window must be <= 3 years (enforced locally, upstream silently empties beyond); page is the paging switch — the face always sends it (without page upstream ignores limit and dumps the whole window); page+start+limit = start-offset paging (page 1/2 verified zero overlap); ism_company_imo_number / ism_company_name filter straight to the management company (resume window stats ships/inspections/detentions/ISM deficiencies ride along); psc_inspection_regime upstream-verbatim (1 = PSC default regime, only verified value; omitted = upstream 200 empty); zero rows in window = legal empty
Jurisdiction: GLOBAL
| Flag | Required | Meaning |
|---|---|---|
--period-min |
yes | Window start dd/mm/yyyy (upstream periodMin; STRICT day-first — wrong order silently returns zero; required) |
--period-max |
yes | Window end dd/mm/yyyy (upstream periodMax; window <= 3 years enforced locally — longer windows silently empty upstream; required) |
--psc-inspection-regime |
no | Inspection regime (upstream pscInspectionRegime; 1 = PSC default, the only live value — 0 → poisoned 200 empty / 2 → HTTP 500; non-1 walled locally with the evidence) |
--page |
no | Page number (upstream page; the paging switch — this face always sends it, without it upstream ignores limit and dumps the whole window) |
--start |
no | Row offset within page (upstream start; page+start+limit = start-offset paging, page 1/2 verified zero overlap) |
--limit |
no | Rows (default 50, politeness cap 500; upstream fully honors 1000) |
--ism-company-name |
no | ISM management-company name filter (upstream ismCompanyName) |
--ism-company-imo-number |
no | ISM company IMO number filter, 7-digit zero-padded (upstream ismCompanyImoNumber, e.g. 0052193; both padded/unpadded forms accepted upstream — passed through verbatim) |
paris_mou_low_performance_companiesParis MoU low-performance ISM company list (rolling 6-month window, keyless): each row carries an IMO company number (7-digit zero-padded official string), with address/country/performance level (LOW dominant, some MEDIUM)/listing dates — company-risk attribute list; zero params upstream
Jurisdiction: GLOBAL
| Flag | Required | Meaning |
|---|
thetis_mrv_datasetsTHETIS-MRV versioned bulk-file catalog (keyless): reporting periods (2018+) x versioned regenerated XLSX publications (versions roll — reconcile by this list, never guess filenames; generation timestamps are early-morning batch runs); download_path template is served for the batch pipeline, this face gives coordinates; zero params upstream
Jurisdiction: EU
| Flag | Required | Meaning |
|---|
searchCorpus search (hosted, PAT required): filters/record_kind/level/pagination
| Flag | Required | Meaning |
|---|---|---|
--filter |
no | Filter K=V (repeatable; the filterable fields are listed on this page) |
--record-kind |
no | Record kind (closed set; values in the domain spec) |
--facets |
no | Comma-separated fields to return facet counts for |
--level |
no | Read-layer depth (default tier1; see the read layers on this page) |
--limit |
no | Rows per page (default 50, max 1000) |
--cursor |
no | Pagination cursor (feed next_cursor from the response) |
--mode |
no | Special mode: screen (batch screening; requires --input) |
--input |
no | Input JSONL file for batch screening (with --mode screen) |
readCorpus single-record read (hosted): id + T-layer depth
| Flag | Required | Meaning |
|---|---|---|
--id |
yes | Subject id (from search result rows) |
--level |
no | Read-layer depth (default tier1) |
Note: this domain's
search/readanswer from the corpus face; the production medical store is reached via the hub REST direct-call reference (basehttps://hub.omnimay.com; see the healthcare domain page); the realtime queries are unaffected.
au_tga_artgAustralian Therapeutic Goods Register (ARTG) lookup.
Jurisdiction: AU
| Flag | Required | Meaning |
|---|---|---|
--query |
no | Free-text words, ANDed across fields; for an exact sponsor match put the name in double quotes, e.g. "Sun Pharma ANZ Pty Ltd" |
--limit |
no | Rows (cap 100, default 20) |
--skip |
no | Rows to skip (default 0) |
au_tga_manufacturersAustralian registered manufacturers list (filterable by state).
Jurisdiction: AU
| Flag | Required | Meaning |
|---|---|---|
--state |
no | State filter, e.g. QLD / NSW / VIC (local filter on SiteState) |
--limit |
no | Rows (cap 500, default 100) |
ca_dpd_companiesCanada Drug Product Database companies: DIN owners × company code, with type and full address.
Jurisdiction: CA
| Flag | Required | Meaning |
|---|---|---|
--limit |
no | Rows (default 200 — the upstream serves the whole register in one shot, this slices locally) |
--skip |
no | Rows to skip (default 0, local slice) |
ca_dpd_drug_productsCanadian drug products: DIN × brand name × company, filtered by the market-status closed set.
Jurisdiction: CA
| Flag | Required | Meaning |
|---|---|---|
--status |
yes | Market status, closed set, required: 1=Approved 2=Marketed 3=Cancelled Pre-Market 4=Cancelled Post-Market 6=Dormant (no 5) — an unknown value is silently ignored upstream and dumps the whole 15MB register, so the SDK walls it first |
--limit |
no | Rows (default 200, local slice) |
--skip |
no | Rows to skip (default 0, local slice) |
ca_mdall_companiesCanada MDALL medical-device company register (a two-country register — US makers carry their country code).
Jurisdiction: CA
| Flag | Required | Meaning |
|---|---|---|
--limit |
no | Rows (default 200 — one full shot upstream, sliced locally) |
--skip |
no | Rows to skip (default 0, local slice) |
ca_mdall_licenceSingle MDALL licence dossier: manufacturer block × company ID × device class and identifier family.
Jurisdiction: CA
| Flag | Required | Meaning |
|---|---|---|
--licence-id |
yes | MDALL licence number, numeric (e.g. 111577; upstream param licenceId) |
--licence-type |
no | Licence index: active (default) |
--lang |
no | Language: eng (default) |
ctgov_studiesClinicalTrials.gov search — by condition, sponsor or status.
Jurisdiction: US
| Flag | Required | Meaning |
|---|---|---|
--query.term |
no | Raw query expression (official query.term syntax; by sponsor: AREA\[LeadSponsorName\]("Pfizer")) |
--query.titles |
no | Title-field search (combinable with --query.term / --query.cond) |
--query.intr |
no | Intervention-field search (drug / procedure name; combinable) |
--query.cond |
no | Condition search (combinable) |
--filter.advanced |
no | Advanced filter, AREA\[field\](value) syntax, combinable (example below) |
--agg-filters |
no | Facet filter with numeric enum values, e.g. phase:3 (the PHASE3 spelling yields zero hits) |
--fields |
no | Columns to return, comma-separated, e.g. NCTId,BriefTitle |
--page-size |
no | Rows per page (default 20; no enforced upstream cap) |
--page-token |
no | Pagination token (feed next_page_token) |
--sort |
no | Sort, e.g. EnrollmentCount:desc |
--count-total, --no-count-total |
no | Request totalCount (default on) |
dailymed_splsUS structured product labels (DailyMed SPL) search.
Jurisdiction: US
| Flag | Required | Meaning |
|---|---|---|
--search |
no | Drug name (native drug_name channel) |
--manufacturer |
no | Labeler filter, e.g. Pfizer |
--setid |
no | Exact SPL setid filter |
--page |
no | Page number |
--pagesize |
no | Rows per page (clamped at 100 — larger asks still return 100) |
--sort |
no | Sort, e.g. published_date |
epmc_searchEurope PMC literature search — by affiliation or topic.
Jurisdiction: GLOBAL
| Flag | Required | Meaning |
|---|---|---|
--search |
no | Query expression, e.g. AFF:"Novartis" AND "psoriasis" (AFF filters by affiliation) |
--result-type |
no | Row depth (default lite) |
--page-size |
no | Rows per page, 1–1000 (default 25) |
--cursor-mark |
no | Pagination cursor (* = first page) |
--sort |
no | Sort, e.g. CITED desc |
eudamed_devices_udi_di_dataEU UDI-DI → EUDAMED registration data.
Jurisdiction: EU
| Flag | Required | Meaning |
|---|---|---|
--primary-di |
yes | EU UDI-DI (required) |
--page |
no | Page number (starts at 0) |
--page-size |
no | Rows per page (default 5) |
--iso2-code |
no | Response language (default en) |
fda_crl_lettersFDA Complete Response Letters: company × negative-approval events, with approval status and letter date.
Jurisdiction: US
| Flag | Required | Meaning |
|---|---|---|
--search |
no | Query expression, e.g. company_name:"Firm Name" — required at runtime: a missing expression fails locally |
--limit |
no | Rows, 1–1000 (upstream hard wall; default 20) |
--skip |
no | Rows to skip (default 0 — upstream has no cursor, deep paging relies on it) |
--sort |
no | Sort (default letter_date:desc) |
fda_device_510k510(k) premarket notifications: K number × applicant, with decision code and decision date.
Jurisdiction: US
| Flag | Required | Meaning |
|---|---|---|
--search |
no | Query expression, e.g. applicant:"Medtronic" — required at runtime: a missing expression fails locally |
--limit |
no | Rows, 1–1000 (upstream hard wall; default 20) |
--skip |
no | Rows to skip (default 0 — upstream has no cursor, deep paging relies on it) |
--sort |
no | Sort (default decision_date:desc) |
fda_device_classificationDevice product-code taxonomy: device name × product code × device class; the product code joins the 510(k) / PMA / recall faces.
Jurisdiction: US
| Flag | Required | Meaning |
|---|---|---|
--search |
no | Query expression, e.g. device_name:"syringe" — required at runtime: a missing expression fails locally |
--limit |
no | Rows, 1–1000 (upstream hard wall; default 20) |
--skip |
no | Rows to skip (default 0 — upstream has no cursor, deep paging relies on it) |
--sort |
no | Sort (this face has no date field — there is no default; give one yourself) |
fda_device_pmaPMA premarket approvals and supplements: PMA number × applicant, with decision code and decision date.
Jurisdiction: US
| Flag | Required | Meaning |
|---|---|---|
--search |
no | Query expression, e.g. applicant:"Medtronic" — required at runtime: a missing expression fails locally |
--limit |
no | Rows, 1–1000 (upstream hard wall; default 20) |
--skip |
no | Rows to skip (default 0 — upstream has no cursor, deep paging relies on it) |
--sort |
no | Sort (default decision_date:desc) |
fda_device_recallsUS device recalls (the RES system, full lifecycle incl. ongoing): the recalling firm's FEI number and K numbers are the join keys.
Jurisdiction: US
| Flag | Required | Meaning |
|---|---|---|
--search |
no | Query expression, e.g. recalling_firm:"Firm Name" (phrase form) — required at runtime: a missing expression fails locally |
--limit |
no | Rows, 1–1000 (upstream hard wall; default 20) |
--skip |
no | Rows to skip (default 0 — upstream has no cursor, deep paging relies on it) |
--sort |
no | Sort (default event_date_posted:desc) |
fda_device_registrationsDevice establishment registrations and listings (quarterly): registration number / FEI number × firm name.
Jurisdiction: US
| Flag | Required | Meaning |
|---|---|---|
--search |
no | Query expression, e.g. registration.name:"Firm Name" (searchable fields live in the registration.* namespace; top-level firm_name / fei_number never match) — required at runtime: a missing expression fails locally |
--limit |
no | Rows, 1–1000 (upstream hard wall; default 20) |
--skip |
no | Rows to skip (default 0 — upstream has no cursor, deep paging relies on it) |
--sort |
no | Sort (default registration.reg_expiry_date_year:desc) |
fda_drug_approvalsDrugs@FDA application dossiers: application number × sponsor, with product lists and submission timelines.
Jurisdiction: US
| Flag | Required | Meaning |
|---|---|---|
--search |
no | Query expression (openFDA syntax), e.g. sponsor_name:"TEVA" — the company key is sponsor_name (applicant_name is an upstream-docs illusion); keyword fields are case-sensitive in their stored form — required at runtime: a missing expression fails locally |
--limit |
no | Rows, 1–1000 (upstream hard wall; default 20) |
--skip |
no | Rows to skip (default 0 — upstream has no cursor, deep paging relies on it) |
--sort |
no | Sort (default submissions.submission_status_date:desc) |
fda_drug_catalogNDC product catalog (refreshed daily): product NDC × labeler, with marketing dates and category.
Jurisdiction: US
| Flag | Required | Meaning |
|---|---|---|
--search |
no | Query expression, e.g. labeler_name:"pfizer" for a labeler — the NDC directory refreshes daily; NSDE marketing dates live in this face — required at runtime: a missing expression fails locally |
--limit |
no | Rows, 1–1000 (upstream hard wall; default 20) |
--skip |
no | Rows to skip (default 0 — upstream has no cursor, deep paging relies on it) |
--sort |
no | Sort (default marketing_start_date:desc) |
fda_drug_recallsUS drug recall and enforcement records (2012+): recall number × recalling firm, with class, status and reason.
Jurisdiction: US
| Flag | Required | Meaning |
|---|---|---|
--search |
no | Query expression, e.g. recalling_firm.exact:"Firm Name" — required at runtime: a missing expression fails locally rather than hitting upstream |
--limit |
no | Rows, 1–1000 (upstream hard wall; default 20) |
--skip |
no | Rows to skip (default 0 — upstream has no cursor, deep paging relies on it) |
--sort |
no | Sort (default report_date:desc) |
fda_drug_shortagesUS drug shortage reports (openFDA).
Jurisdiction: US
| Flag | Required | Meaning |
|---|---|---|
--search |
no | Query expression, e.g. openfda.manufacturer_name.exact:"Fresenius Kabi USA, LLC" AND status:Current (openFDA syntax; manufacturer, drug and status all go into the expression) |
--limit |
no | Rows, 1–1000 (default 20) |
--skip |
no | Rows to skip (default 0) |
--sort |
no | Sort (default update_date:desc) |
fda_food_recallsUS food recall and enforcement records (2012+): recall number × recalling firm, with class, status and reason.
Jurisdiction: US
| Flag | Required | Meaning |
|---|---|---|
--search |
no | Query expression, e.g. recalling_firm.exact:"Firm Name" — required at runtime: a missing expression fails locally |
--limit |
no | Rows, 1–1000 (upstream hard wall; default 20) |
--skip |
no | Rows to skip (default 0 — upstream has no cursor, deep paging relies on it) |
--sort |
no | Sort (default report_date:desc) |
fda_orangebookOrange Book approved drugs: approval date × application holder, with reference-listed-drug flags.
Jurisdiction: US
| Flag | Required | Meaning |
|---|---|---|
--search |
no | Query expression, e.g. products.application_full_name:"Teva" (the holder sits inside products[]; there is no top-level applicant field) — required at runtime: a missing expression fails locally |
--limit |
no | Rows, 1–1000 (upstream hard wall; default 20) |
--skip |
no | Rows to skip (default 0 — upstream has no cursor, deep paging relies on it) |
--sort |
no | Sort (default approval_date:desc) |
gb_mhra_alertSingle UK MHRA alert dossier (notice body + PDF attachments).
Jurisdiction: GB
| Flag | Required | Meaning |
|---|---|---|
--slug |
yes | Alert slug (from gb_mhra_alerts rows; pasting the full gov.uk link also works — a trailing .json is stripped too) |
gb_mhra_alertsUK MHRA medicines & device safety-alert search (recalls, device alerts, field safety notices).
Jurisdiction: GB
| Flag | Required | Meaning |
|---|---|---|
--q |
no | Query (a company/product penetration channel — e.g. Abbott hits 160 alerts; omit for the full 1,462-alert register, newest first) |
--count |
no | Rows per page, 1–100 (default 20; our politeness cap — no upstream wall) |
--start |
no | Offset pagination: row to start from (default 0) |
gudid_devicesUS device registry (GUDID): DI / UDI → device record.
Jurisdiction: US
| Flag | Required | Meaning |
|---|---|---|
--di |
no | Device Identifier (DI) |
--udi |
no | Full UDI string |
--record-key |
no | Record key (native GUDID row key) |
mesh_descriptorMeSH descriptor lookup — normalize drug / disease terms to standard descriptors.
Jurisdiction: GLOBAL
| Flag | Required | Meaning |
|---|---|---|
--label |
yes | Term to look up (passing term/descriptor gets a 400 upstream — use label) |
--match |
no | Match mode (default contains) |
--limit |
no | Candidates cap (default 10, max 50) |
rasff_notificationsEU RASFF food-and-feed safety-alert search: notifying country × product category × risk decision.
Jurisdiction: EU
| Flag | Required | Meaning |
|---|---|---|
--subject |
no | Free text on the alert subject (upstream param subject; e.g. aflatoxin) |
--notification-reference |
no | Reference number, exact (upstream param notificationReference; e.g. 2026.9701) |
--ec-valid-date-from |
no | Window start, dd-MM-yyyy (upstream param ecValidDateFrom; e.g. 01-09-2026 — ISO input is rejected upstream) |
--ec-valid-date-to |
no | Window end, dd-MM-yyyy (upstream param ecValidDateTo) |
--page-number |
no | Page number, 1-based (upstream param pageNumber; default 1) |
--items-per-page |
no | Rows per page, 1–200 (upstream param itemsPerPage; browser default 25, 200 is our politeness cap) |
rxnav_rxcui_atcRxCUI → ATC classification.
Jurisdiction: US
| Flag | Required | Meaning |
|---|---|---|
--rxcui |
yes | Numeric RxCUI |
rxnav_rxcui_by_nameDrug or brand name → RxCUI (RxNorm official normalization).
Jurisdiction: US
| Flag | Required | Meaning |
|---|---|---|
--name |
yes | Drug or brand name |
safety_gate_alertsEU Safety Gate (ex-RAPEX) non-food product-safety weekly-report index.
Jurisdiction: EU
| Flag | Required | Meaning |
|---|---|---|
--year |
no | Report year — a local post-filter, not an upstream param (the index always arrives whole) |
--limit |
no | Rows (default 200, local slice) |
--skip |
no | Rows to skip (default 0, local slice) |
safety_gate_reportOne Safety Gate weekly report's alerts: case number × category × risk level × notifying country × country of origin.
Jurisdiction: EU
| Flag | Required | Meaning |
|---|---|---|
--report-id |
yes | Numeric report id (the report_id echoed by safety_gate_alerts; a pasted detail URL also works) |
--limit |
no | Rows (default 200, local slice) |
--skip |
no | Rows to skip (default 0, local slice) |
searchCorpus search (hosted, PAT required): filters/record_kind/level/pagination
| Flag | Required | Meaning |
|---|---|---|
--filter |
no | Filter K=V (repeatable; the filterable fields are listed on this page) |
--record-kind |
no | Record kind (closed set; values in the domain spec) |
--facets |
no | Comma-separated fields to return facet counts for |
--level |
no | Read-layer depth (default tier1; see the read layers on this page) |
--limit |
no | Rows per page (default 50, max 1000) |
--cursor |
no | Pagination cursor (feed next_cursor from the response) |
--mode |
no | Special mode: screen (batch screening; requires --input) |
--input |
no | Input JSONL file for batch screening (with --mode screen) |
readCorpus single-record read (hosted): id + T-layer depth
| Flag | Required | Meaning |
|---|---|---|
--id |
yes | Subject id (from search result rows) |
--level |
no | Read-layer depth (default tier1) |
afdb_debarred_entitiesAfDB debarment register (keyless): the whole 1,440-row feed (FIRM 1,196 / INDIVIDUAL 244) is pulled once, cached 24h and scanned locally. Basis = the cross-debarment edge (CROSS DEBARMENT : WBG / CROSS-DEBARMENT: ADB — upstream spacing inconsistent, so --basis is a contains-match on the bank token: WBG/ADB/IDB/EBRD); To empty = ongoing. Empty result = clean screening (legitimate answer)
Jurisdiction: GLOBAL
| Flag | Required | Meaning |
|---|---|---|
--name |
no | Entity or individual name — matches any part of the name, ignoring case |
--type |
no | Subject type: FIRM or INDIVIDUAL (exact match, ignoring case) |
--basis |
no | Debarment reason — matches any part of the Basis text. Cross-debarments are marked by bank token (WBG / ADB / IDB / EBRD), and the same marker is written both with spaces and with hyphens, so match the token alone |
--limit |
no | Rows to return, 1–100 (default 20). The whole register is screened locally, so total_matched in the result is the exact number of hits |
ca_sema_sanctionsCanada SEMA sanctions (Consolidated Canadian Autonomous Sanctions List, keyless sema-lmes.xml): 5,708 live listings — persons 3,526 / entities 2,181 of which 731 ships with an IMO number (the join key onto shipping rosters). Bilingual cells verbatim ("Syria / Syrie"); name screening contains-matches name + aliases (matched_on echoes the hit face). Empty result = clean screening (legitimate answer)
Jurisdiction: CA
| Flag | Required | Meaning |
|---|---|---|
--name |
no | Designated name — matches any part of the name or of an alias, ignoring case; the result echoes which one hit |
--country |
no | Country — matches any part of the country cell, which is written in both languages (Syria and Syrie both hit) |
--limit |
no | Rows to return, 1–100 (default 20). The whole list is screened locally, so total_matched in the result is the exact number of hits |
co_sic_sanctionsColombia SIC sanctions register (keyless): firm sanctions imposed in firme by the Superintendencia de Industria y Comercio — multado (the sanctioned party) × valor (fine, COP) × conducta (the violation) × sector, 3,938 rows 2013→. Socrata $-parameter channel verbatim: --where raw SoQL, --limit 1-500, --offset, --order column[ ASC|DESC] (same contract as co_secop_contracts; name-only key — no NIT column, a name join onto co_rues_companies is the corpus line's job)
Jurisdiction: CO
| Flag | Required | Meaning |
|---|---|---|
--where |
no | SoQL filter passed through verbatim (e.g. upper(multado) like '%ECOPETROL%' — multado is the sanctioned-party column; 3,938 firm sanctions since 2013) |
--limit |
no | Rows per page, 1–500 (default 20) |
--offset |
no | Paging offset, 0-based (no total echo on this register — page by offset) |
--order |
no | Sort order (e.g. fecha_emitida DESC; the default is ingestion order, not time) |
courtlistener_opinions_searchCourtListener opinions search (federal + state courts; CAP/api.case.law retired into this source): at least one filter required (full corpus ~8.3M bulk is served by the S3 batch line); upstream fixes page size at 20 — page via --cursor (next_cursor is echoed back). 0.2.9 audit snapshot (2026-10-28): the search endpoint now returns 401 for anonymous traffic (worked 2026-10-26) while other v4 endpoints stay open — face on watch per the keyless-only ruling; authenticated tiers are 5/min·50/hr·125/day, anonymous numbers unpublished upstream
Jurisdiction: US
| Flag | Required | Meaning |
|---|---|---|
--q |
no | Full-text query |
--case-name |
no | Case-name filter |
--court |
no | Court id, e.g. calctapp / scotus |
--judge |
no | Judge name filter |
--docket-number |
no | Docket number filter |
--filed-after |
no | Filed on/after YYYY-MM-DD |
--filed-before |
no | Filed on/before YYYY-MM-DD |
--order-by |
no | Sort, e.g. score desc |
--cursor |
no | Opaque cursor (feed next_cursor) |
csl_screening_listName screening against the US Consolidated Screening List (realtime, local execution): SDN / Entity List / DPL / ITAR / SSI … 12 list families, one keyless CSV, cached 24h and scanned locally (matched_on shows which face hit: name or alt_names). Empty result = clean screening (a legitimate answer)
Jurisdiction: US
| Flag | Required | Meaning |
|---|---|---|
--name |
no | Subject name (substring, case-insensitive; matches name + alt_names; required — a missing name returns a JSON usage-error envelope) |
--source |
no | List-family filter, substring (e.g. "Entity List", "SDN", "Sectoral") |
--type |
no | Subject type: Entity / Individual / Vessel / Aircraft (many rows carry no type) |
--limit |
no | Rows (default 20, cap 100; total_matched echoes the full count) |
dgcomp_cases_searchDG COMP case search: --query raw ES bool DSL (JSON text, XOR with shortcut) XOR --name/--instrument shortcut (assembles the SPA's three-field text query / caseInstrument term); pageSize hard cap 100 — upstream silently returns 100 rows for larger asks (probed 2026-10-26)
Jurisdiction: EU
| Flag | Required | Meaning |
|---|---|---|
--query |
no | Raw ES bool query, JSON text, e.g. {"bool":{"must":\[{"term":{"caseInstrument":"SA"}}\]}} |
--name |
no | Party/case-name shortcut: text query over caseTitle and two sibling fields (XOR with --query; use --query for raw DSL) |
--instrument |
no | Case type: AT antitrust / M merger / SA state aid / DMA Digital Markets Act |
--text |
no | Extra full-text condition (empty = none) |
--page |
no | Page number |
--limit |
no | Rows, 1–100 (larger asks silently yield 100) |
ecfr_searcheCFR current-code section search (keyless, realtime): where a topic lives in the codified CFR today — counterpart of federalregister_documents (Federal Register = what changed today). coords = seven-level citation; starts_on~ends_on = that version's effective window. 0.2.9 audit: --date = point-in-time retrieval (section versions in force on that date; probed 2026-10-28 asbestos 1,436 current vs 339 at 2024-01-01)
Jurisdiction: US
| Flag | Required | Meaning |
|---|---|---|
--q |
no | Topic term (required — otherwise a JSON usage-error envelope) |
--page |
no | Page number (default 1) |
--limit |
no | Rows (default 20, cap 100) |
--date |
no | Point-in-time date YYYY-MM-DD — section versions in force on that date (omit = current text; e.g. asbestos: 1,436 sections current vs 339 at 2024-01-01) |
ecfr_titleseCFR title catalog (keyless): the 50 CFR titles with latest amendment/issue dates and the library-wide as_of watermark (eCFR integrates daily)
Jurisdiction: US
| Flag | Required | Meaning |
|---|
federalregister_documentsFederal Register document search: q → conditions[term] verbatim; startdt/enddt auto-completed to a full window when either end is given (a single end is silently ignored upstream); document_number is the stable key, single-doc raw_text_url feeds the corpus batch line. 0.2.9 audit additions: --doc-type closed set validated locally (invalid values silently return 0 rows upstream — false-negative trap), --agencies slug filter, --cfr-title/--cfr-part CFR-anchored narrowing (part requires title), --order gains executive_order_number
Jurisdiction: US
| Flag | Required | Meaning |
|---|---|---|
--q |
yes | Query term (quoted phrases go exact) |
--startdt |
no | Publication date YYYY-MM-DD from (a bare end auto-completes to 1994-01-01) |
--enddt |
no | Publication date to (a bare start auto-completes to today) |
--order |
no | Result order: relevance / newest / oldest / executive_order_number (the fourth sorts by executive-order number) |
--doc-type |
no | Document type, closed set: RULE / PRORULE / NOTICE / PRESDOCU (wrong values silently yield 0 rows upstream — validated locally) |
--agencies |
no | Agency slug, e.g. environmental-protection-agency (the full list lives at GET /api/v1/agencies) |
--cfr-title |
no | CFR title number, e.g. 40 (environment) |
--cfr-part |
no | CFR part or range, e.g. 763 or 1-50 (requires --cfr-title) |
--page |
no | Page number |
--limit |
no | Rows (cap 50 — a platform-side limit; the upstream allows 1000) |
gb_cma_caseUK CMA single-case dossier (keyless): content_id is the stable UUID key; change_history = case evolution newest→oldest ([0] = latest, last = First published); attachments = decision/notice PDF family; body_html = case-page summary. A pasted full base_path (/cma-cases/ or absolute URL) is accepted — the prefix is stripped
Jurisdiction: GB
| Flag | Required | Meaning |
|---|---|---|
--slug |
yes | Case slug (from gb_cma_cases rows; pasting the full gov.uk link also works — the prefix is stripped) |
gb_cma_casesUK CMA case search (gov.uk search API, keyless): q verbatim over case titles (case name = party pair 'A / B'); count politeness cap 100 (upstream has no wall — count=1000 yields the full 1000, probed 2026-10-29); start = offset pagination; omit --q to enumerate the full live register (~2,591 cases). Single-case detail: gb_cma_case with the slug from each row
Jurisdiction: GB
| Flag | Required | Meaning |
|---|---|---|
--q |
no | Case query (matches titles/descriptions; omit to enumerate the full ~2,600-case register — case names are party pairs, e.g. "Google / BeatThatQuote.com") |
--count |
no | Rows per page, 1–100 (default 20; the 100 cap is our politeness limit — the upstream has no wall) |
--start |
no | Offset pagination: row to start from (default 0) |
gb_ec_donationsUK EC donations face: query verbatim (donor/regulated-entity name); from/to window auto-completed when missing (missing window → upstream Total=-1 fake success); rows hard cap 50 (probed 2026-10-26)
Jurisdiction: GB
| Flag | Required | Meaning |
|---|---|---|
--query |
yes | Donor / regulated-entity name (contains match; required) |
--from |
no | Window start YYYY-MM-DD (default = register origin 2001-02-16) |
--to |
no | Window end (default today) |
--start |
no | Offset |
--limit |
no | Rows, 1–50 (larger asks silently yield 50) |
gb_ec_loansUK EC loans face: query verbatim (lender/borrower name); upstream loans endpoint takes no date-window params; rows hard cap 50 (probed 2026-10-26)
Jurisdiction: GB
| Flag | Required | Meaning |
|---|---|---|
--query |
yes | Lender / borrower name (contains match; required) |
--start |
no | Offset |
--limit |
no | Rows, 1–50 (larger asks silently yield 50) |
gb_gazette_noticesThe Gazette search face (keyless, OGL; 3.58M notices digitised from 1992): event filtering is by notice code — --noticetypes (+-joined upstream; the noticecode= param is SILENTLY IGNORED, probed 2026-11-03) or --insolvency (the corporate-insolvency chapter: 2404/2408/2410/2411/2414/2421-2424/2431/2432/2607/2702). title = the company name on corporate insolvency codes; placed_by = liquidator/administrator or the edition; geo:Point = the registered office. At least one filter required — a bare search is the 4,887,099-notice bulk wall
Jurisdiction: GB
| Flag | Required | Meaning |
|---|---|---|
--text |
no | Full-text contains term (over the notice body and title) |
--noticetypes |
no | Notice code(s), comma- or +-joined (e.g. 2410,2432) — event filtering is by notice code only; the lookalike noticecode= param is ignored upstream, so rewrite commands copied from elsewhere onto this one |
--insolvency |
no | The corporate-insolvency code-chapter preset (13 codes: winding-up resolutions, liquidator appointments, administrators, cessations…), union'd with --noticetypes |
--start-date |
no | Publish-window start YYYY-MM-DD |
--end-date |
no | Publish-window end YYYY-MM-DD |
--page |
no | Page number (default 1) |
--page-size |
no | Rows per page, 1–100 (default 20; 100 is the upstream hard cap) |
--sort |
no | Sort: latest-date (default) or oldest-date |
gb_tna_caselaw_judgmentUK single-judgment dossier (keyless): neutral_citation is the official key; parties = [{name, role}] official party-to-role edges (claimant/defendant, companies and individuals); judges; text = plain-text body. document_uri takes all three forms — legacy ewhc/admin/2026/2298, new-style d-, tna. — the uri field of gb_tna_caselaw_search rows; a pasted full URL is accepted (prefix and /data.xml suffix stripped)
Jurisdiction: GB
| Flag | Required | Meaning |
|---|---|---|
--document-uri |
yes | Document URI (any of the three uri forms from search rows: legacy ewhc/admin/2026/2298, new-style d-, tna.; a pasted full link is stripped automatically) |
gb_tna_caselaw_searchUK judgment search (TNA Find Case Law /atom.xml, keyless): eight upstream params verbatim — party/judge are full-word matches over party/judge names, query is full text, court/tribunal are court codes (repeatable, exploded); order in ±date/±updated/±transformation; per_page politeness cap 50 (=upstream default). Rows carry neutral_citation (e.g. [2026] EWHC 2298 (Admin)), uri (machine key for gb_tna_caselaw_judgment) and contenthash. Open Justice Licence: commercial reuse OK, bulk computational analysis forbidden without a (free) licence — keep this a targeted search face
Jurisdiction: GB
| Flag | Required | Meaning |
|---|---|---|
--query |
no | Full-text query (a quoted phrase matches words in order) |
--court |
no | Court code, repeatable (e.g. uksc ewhc; tribunal codes also go here) |
--tribunal |
no | Tribunal code, repeatable (alias segment of court, e.g. eat) |
--party |
no | Party name, full-word match (e.g. Barclays — partial words don't hit) |
--judge |
no | Judge name, full-word match |
--order |
no | Sort: date/-date (default newest first)/updated/-updated/transformation/-transformation |
--page |
no | Page number (total pages in the result's total_pages) |
--per-page |
no | Rows per page, 1–50 (default 50 = the upstream default and our politeness cap) |
--minimum-availability |
no | Minimum representation level: metadata/document/full-text (default full-text) |
idb_debarred_entitiesIDB sanctioned-firms register (keyless CKAN DataStore, server-side search; live 1,343 rows): q = full-text across all fields, filters = JSON field→value exact matches (e.g. {"To": "Ongoing"} or {"Entity": "Firm"}), offset paging, include_total always on. From arrives as nanosecond text kept verbatim ("2009-07-10 00:00:00.000000000"); Source carries the cross-debarment markers (ADB/WBG cross debarment). Empty result = clean screening (legitimate answer)
Jurisdiction: GLOBAL
| Flag | Required | Meaning |
|---|---|---|
--q |
no | Full-text search across every field of the register (the register's own q parameter) |
--filters |
no | Filter by field values, as JSON text of field→value exact matches (the register's own filters parameter), e.g. {"To": "Ongoing"} or {"Entity": "Firm"} |
--limit |
no | Rows per call, 1–100 (default 20) — the register is queried live, so this is the page size |
--offset |
no | Rows to skip before the first row returned (the register's own offset parameter); the result carries the register's total row count |
--sort |
no | Sort order, e.g. "From desc" (the register's own sort parameter) |
ie_revenue_defaultersIrish Revenue defaulters register (keyless): the statutory quarterly publication — TWO row schemas under one list: part 1 = penalties determined by a court (Issue Type/Fine/Sentence/Charges), part 2 = Revenue settlements (Name/Address/County/Occupation + Tax/Interest/Penalties/Total/Unpaid as ints, comma-thousands stripped). One part per call (--part 1|2); --year + --month select the quarter (march/june/september/december, give both or neither) and default to the latest on the index (current year only). Names/addresses are published by statute — the co_sic precedent; CSV carries a UTF-8 BOM and trailing-space headers (normalised)
Jurisdiction: IE
| Flag | Required | Meaning |
|---|---|---|
--part |
no | List part: 1 = court-determined penalties (issue type/fine/sentence/charges), 2 = Revenue settlements (five amount columns + unpaid) — the two parts are two different tables and the result's kind echoes the row schema (default 1) |
--year |
no | Publication year (together with --month; omit for the latest quarter on the index) |
--month |
no | Quarter name: march/june/september/december (together with --year) |
lda_filingsLDA lobbying-disclosure filings: client_name (lobbied company) / registrant_name (lobbying firm) / filing_year all upstream-verbatim (may combine); page_size hard-clamped 25 — upstream silently returns 25 rows for larger asks (probed 2026-10-26); iterate with --page (true offset pagination)
Jurisdiction: US
| Flag | Required | Meaning |
|---|---|---|
--client-name |
no | Lobbied company name (contains match) |
--registrant-name |
no | Lobbying firm name |
--filing-year |
no | Filing year (from 1999) |
--page |
no | Page number (upstream pages hold at most 25 rows) |
--ordering |
no | Sort (default -dt_posted) |
--limit |
no | Rows, 1–25 (larger asks silently yield 25) |
sipri_trades_searchSIPRI arms transfers: supplier/recipient country names (shortcut — resolves numeric EntityId via the 30-day cached country table; names in the raw filter value1 upstream → 500) XOR --filters raw JSON ({"field": "Supplier"|"Recipient", "listData": [EntityId]}); pageSize cap 100; country-level face, not company-level
Jurisdiction: GLOBAL
| Flag | Required | Meaning |
|---|---|---|
--filters |
no | Raw filter list, JSON text, e.g. \[{"field":"Recipient","listData":\[8\]}\] (countries are numeric ids) |
--supplier |
no | Supplier-country shortcut: full English name, e.g. United States (XOR with --filters; the name is resolved to its numeric id) |
--recipient |
no | Recipient-country shortcut: full English name, e.g. Angola (XOR with --filters; the name is resolved to its numeric id) |
--type |
no | Measure: delivered = trend-indicator value / orders = orders placed |
--page |
no | Page number |
--limit |
no | Rows (cap 100) |
us_occ_enforcementsOCC (Office of the Comptroller of the Currency) monthly enforcement-actions news releases (keyless): the by-year news-release listing picks the Enforcement Actions titles (~11-12 a year; listings verified 2005-2026); default = the latest release of the year. TWO body schemas under one face, form says which: sentences (2024+) = one row per action with cmp_amount scaled from the '$750 million' wording + docket No. (AA-ENF-YYYY-NN — the official key, joins the EASearch database 1989+, out of SDK scope) + IAP prohibition rows (institution-affiliated parties; names are statutory public disclosures — the co_sic precedent); tables (≤2020) = per-section order rows (No./Name-Bank-City/State/Date). --month selects by month name in any era (2026-era titles carry it, earlier listings' MM/DD/YYYY dates do); --all walks every release of the year
Jurisdiction: US
| Flag | Required | Meaning |
|---|---|---|
--year |
no | Year 2005–current (the by-year news-release listing range; default = this year) |
--month |
no | Full month name January–December — picks that month's enforcement release (omit for the year's latest) |
--all |
no | Walk every enforcement release of the year (rows carry their release_nr) |
wb_debarred_firmsWorld Bank debarred-firms register (keyless via the page-embedded public apikey): the whole 1,546-row dump is pulled once, cached 24h and scanned locally (same contract as csl_screening_list). SUPP_ELIG_STAT DEBARRED 890 / X-DEBARRED 656; DEBAR_TO_DATE 2999-12-31 = indefinite; DEBAR_REASON cites the procurement-guidelines clause; China leads at 392 firms. The DNB/REGISTER identifier fields ship empty — name × country is the join channel. Empty result = clean screening (legitimate answer)
Jurisdiction: GLOBAL
| Flag | Required | Meaning |
|---|---|---|
--name |
no | Supplier name — matches any part of the name, ignoring case |
--country |
no | Country — matches any part of the country name, or the two-letter country code exactly (China and CN both hit) |
--type |
no | Supplier type: F firm, I individual, U unspecified, C conglomerate (exact match, ignoring case) |
--limit |
no | Rows to return, 1–100 (default 20). The whole register is screened locally, so total_matched in the result is the exact number of hits |
searchCorpus search (hosted, PAT required): filters/record_kind/level/pagination
| Flag | Required | Meaning |
|---|---|---|
--filter |
no | Filter K=V (repeatable; the filterable fields are listed on this page) |
--record-kind |
no | Record kind (closed set; values in the domain spec) |
--facets |
no | Comma-separated fields to return facet counts for |
--level |
no | Read-layer depth (default tier1; see the read layers on this page) |
--limit |
no | Rows per page (default 50, max 1000) |
--cursor |
no | Pagination cursor (feed next_cursor from the response) |
--mode |
no | Special mode: screen (batch screening; requires --input) |
--input |
no | Input JSONL file for batch screening (with --mode screen) |
readCorpus single-record read (hosted): id + T-layer depth
| Flag | Required | Meaning |
|---|---|---|
--id |
yes | Subject id (from search result rows) |
--level |
no | Read-layer depth (default tier1) |
br_pncp_contractsBrazil national procurement contracts (Portal Nacional de Contratações Públicas, keyless): publication-window search over /api/consulta/v1/contratos — every row is buyer CNPJ × supplier CNPJ with the four valor columns; join straight onto the RFB register. data_inicial/data_final (YYYYMMDD or YYYY-MM-DD) and pagina are upstream verbatim (500 rows/page); cnpj_orgao narrows to one buyer. PF (individual) supplier rows carry their identifier and name masked per the PII rule
Jurisdiction: BR
| Flag | Required | Meaning |
|---|---|---|
--data-inicial |
yes | Window start, YYYYMMDD or YYYY-MM-DD (required — both window ends must be given) |
--data-final |
yes | Window end (required; a single month holds ~175k contracts — start narrow) |
--pagina |
no | Page number (default 1; each page is a fixed 500 rows = the upstream default) |
--cnpj-orgao |
no | Buyer CNPJ filter, 14 digits (optional) |
co_secop_contractsColombia SECOP II electronic contracts (datos.gov.co Socrata dataset jbjy-vk9h, keyless): 5.6M+ contracts — buyer NIT × supplier NIT/CC with the valor family; join straight onto the RUES register. where is the raw SoQL $where channel (verbatim pass-through); limit/offset/order mirror $limit/$offset/$order. No total echo — page with offset. Personal-document (Cédula etc.) supplier rows carry their identifier and name masked per the PII rule
Jurisdiction: CO
| Flag | Required | Meaning |
|---|---|---|
--where |
no | SoQL filter expression, passed through verbatim, e.g. upper(nombre_entidad) like '%MINISTERIO%' (you write the % / _ wildcards) |
--limit |
no | Rows, 1–500 (default 20) |
--offset |
no | Offset pagination (default 0; no total is returned — track pages yourself) |
--order |
no | Sort column with optional ASC / DESC, e.g. valor_del_contrato DESC (NULLS syntax gets an upstream 400) |
ny_abo_contractsNew York State authority contracts (data.ny.gov Socrata dataset ehig-g5x3, keyless): 275k+ rows from the Authorities Budget Office universe — buyer authority_name × vendor_name + full address (no UEI/DUNS; name+address walk), four value columns plus MWBE / NYS-business preference flags. where is the raw SoQL $where channel; limit/offset/order mirror $limit/$offset/$order. No total echo — page with offset
Jurisdiction: US
| Flag | Required | Meaning |
|---|---|---|
--where |
no | SoQL filter expression, passed through verbatim, e.g. upper(vendor_name) like '%DELTA%' |
--limit |
no | Rows, 1–500 (default 20) |
--offset |
no | Offset pagination (default 0; no total is returned) |
--order |
no | Sort column with optional ASC / DESC, e.g. award_date DESC (NULLS syntax gets an upstream 400) |
ny_mta_procurementsNew York MTA procurements (data.ny.gov Socrata dataset twsw-2mqa, keyless): 107k+ rows — buyer is always the MTA; vendor_name + value family + vendor_is_nys_or_fbe preference flag. where is the raw SoQL $where channel; limit/offset/order mirror $limit/$offset/$order. No total echo — page with offset
Jurisdiction: US
| Flag | Required | Meaning |
|---|---|---|
--where |
no | SoQL filter expression, passed through verbatim, e.g. upper(vendor_name) like '%SKANSKA%' |
--limit |
no | Rows, 1–500 (default 20) |
--offset |
no | Offset pagination (default 0; no total is returned) |
--order |
no | Sort column with optional ASC / DESC, e.g. transaction_number DESC (NULLS syntax gets an upstream 400) |
ny_ogs_paymentsNew York State Office of General Services design & construction payments (data.ny.gov Socrata dataset rb9h-9fit, keyless): 69k+ payment rows — buyer is always OGS; each row is contractnumber × vendor × paymentamount with fiscalyear/quarter/county (no address columns — name walk). Completes the New York trio (ABO authorities / MTA transport / OGS construction) buyer universe. where is the raw SoQL $where channel; limit/offset/order mirror $limit/$offset/$order. No total echo — page with offset
Jurisdiction: US
| Flag | Required | Meaning |
|---|---|---|
--where |
no | SoQL filter expression, passed through verbatim, e.g. upper(vendor) like '%HIGHLAND%' |
--limit |
no | Rows, 1–500 (default 20) |
--offset |
no | Offset pagination (default 0; no total is returned) |
--order |
no | Sort column with optional ASC / DESC, e.g. paymentamount DESC (NULLS syntax gets an upstream 400) |
ungm_contract_awardsUnited Nations Global Marketplace contract awards (https://www.ungm.org public search, keyless): ~50k awards across the UN-agency buyer universe (UNDP/UNFPA/ILO/UNOPS...) × global vendors — each row is award id + title/vendor/award date/agency/reference/supplier country. supplier/title/reference/award_from/award_to/countries/agencies/unspscs are upstream verbatim; page_index (1-based) and page_size (1-100, site default 15) page through; newest first by default (sort_field=AwardDate, sort_ascending=false). The ASP.NET anti-forgery session pairing is handled internally (15-minute reuse, auto re-bootstrap on expiry)
Jurisdiction: GLOBAL
| Flag | Required | Meaning |
|---|---|---|
--supplier |
no | Vendor-name filter, e.g. DELTA (upstream param Supplier) |
--title |
no | Title text filter (upstream param Title) |
--reference |
no | Reference filter, e.g. rfx_11130_ROAP |
--award-from |
no | Award-date window start (site picker format dd-MMM-yyyy; upstream AwardFrom) |
--award-to |
no | Award-date window end (upstream AwardTo) |
--countries |
no | Project-country filter list, space-separated (upstream Countries[]) |
--agencies |
no | UN-agency filter list, e.g. --agencies UNDP ILO (upstream Agencies[]) |
--unspscs |
no | UNSPSC code filter list (upstream UNSPSCs[]) |
--page-index |
no | Page number, 1-based (default 1) |
--page-size |
no | Page size, 1–100 (default 15, the site's own default) |
--sort-field |
no | Sort field (default AwardDate; never empty — a null makes the upstream 500) |
--sort-ascending |
no | Ascending flag (default off = newest first) |
wb_procnoticesWorld Bank procurement notice stream (search.worldbank.org /api/v2/procnotices, keyless): 313k+ notices across the MDB buyer universe (IBRD/IDA projects in 100+ countries). notice_type/rows/os are upstream verbatim (default: Contract Award); supplier keys are extracted from the embedded award section into awarded_firms[]{name, supp_id} — firm name + WB supplier id, joinable onto the WB debarred list. notice_text itself is not returned (embedded contact details stay out of the face)
Jurisdiction: GLOBAL
| Flag | Required | Meaning |
|---|---|---|
--notice-type |
no | Notice type (default Contract Award; other upstream enum values such as General Procurement Notice) |
--rows |
no | Rows, 1–100 (default 10) |
--os |
no | Offset pagination (default 0; the full feed is ~313k rows — upstream's own os param name) |
searchCorpus search (hosted, PAT required): filters/record_kind/level/pagination
| Flag | Required | Meaning |
|---|---|---|
--filter |
no | Filter K=V (repeatable; the filterable fields are listed on this page) |
--record-kind |
no | Record kind (closed set; values in the domain spec) |
--facets |
no | Comma-separated fields to return facet counts for |
--level |
no | Read-layer depth (default tier1; see the read layers on this page) |
--limit |
no | Rows per page (default 50, max 1000) |
--cursor |
no | Pagination cursor (feed next_cursor from the response) |
--mode |
no | Special mode: screen (batch screening; requires --input) |
--input |
no | Input JSONL file for batch screening (with --mode screen) |
readCorpus single-record read (hosted): id + T-layer depth
| Flag | Required | Meaning |
|---|---|---|
--id |
yes | Subject id (from search result rows) |
--level |
no | Read-layer depth (default tier1) |
biorxiv_detailsbioRxiv preprint metadata window stream (realtime, local execution; /details/biorxiv/{from}/{to}/{cursor}; authors arrive as a semicolon-joined string and jatsxml is a full-text XML URL, not inline — full-text bulk belongs to the jatsxml_url links; message counts are strings upstream, normalized here)
Jurisdiction: GLOBAL
| Flag | Required | Meaning |
|---|---|---|
--from-date |
yes | Window start YYYY-MM-DD (required) |
--to-date |
yes | Window end YYYY-MM-DD (required) |
--cursor |
no | Page index (starts at 0) |
crossref_worksCrossref works search with funder bridge (realtime, local execution; query full-text × funder DOI (filter=funder:) × award_number (filter=award.number:, requires --funder) × from/to publication window combine AND; award numbers live only inside rows' funders[].award — select cannot fetch them (probe: select-not-available); offset+rows ≤ 10,000 documented upstream wall — deep paging switches to --cursor, the official deep-pager channel (0.2.9 audit)
Jurisdiction: GLOBAL
| Flag | Required | Meaning |
|---|---|---|
--query |
no | Full-text query |
--funder |
no | Funder DOI, e.g. 10.13039/100000001 = NSF |
--award-number |
no | Award / grant number (requires --funder) |
--from-pub-date |
no | Publication window start YYYY-MM-DD (official param from-pub-date) |
--to-pub-date |
no | Publication window end YYYY-MM-DD (the official param is until-pub-date, mirrored to to here) |
--rows |
no | Rows (cap 100 — a platform-side limit; the upstream documents 1000) |
--offset |
no | Result offset (offset+rows ≤ 10,000; for deeper pages switch to --cursor — XOR with --offset) |
--cursor |
no | Deep-paging cursor: * for the first page, then feed next_cursor — bypasses the 10,000-row offset wall (XOR with --offset) |
gb_gtr_projectsUK UKRI Gateway to Research projects (realtime, local execution; /projects?q=&s=&p=; s ≥ 10 is an upstream 400 wall; upstream sends no total — full page signals more via has_more; organisation edges live one hop deeper in detail links.link[] rel=LEAD_ORG, this face is the list only)
Jurisdiction: GB
| Flag | Required | Meaning |
|---|---|---|
--q |
yes | Search term (required) |
--s |
no | Page size (at least 10) |
--p |
no | Page number |
icite_pubsNIH iCite citation-impact card for a PubMed paper (realtime, local execution; /api/pubs?pmids= single record; RCR/FCR/citation counts — the impact hop after nih_reporter_publications hands you a pmid)
Jurisdiction: US
| Flag | Required | Meaning |
|---|---|---|
--pmid |
yes | PubMed id, digits only, e.g. 26017442 (required) |
nih_reporter_projectsNIH RePORTER project search (realtime, local execution; POST /v2/projects/search; criteria=snake_case and include_fields=camelCase are separately hard-bound upstream — wrong shapes are silently ignored, so bare passthrough is not exposed; org match is exact, not fuzzy; offset+limit cap 15,000)
Jurisdiction: US
| Flag | Required | Meaning |
|---|---|---|
--org-name |
no | Receiving organization name (exact match upstream) |
--fiscal-year |
no | Fiscal year |
--include-fields |
no | Comma-separated camelCase fields (wrong names are silently ignored upstream) |
--limit |
no | Page size, 1–500 |
--offset |
no | Result offset (offset+limit ≤ 15,000) |
nih_reporter_publicationsNIH funding↔publication bridge (realtime, local execution; POST /v2/publications/search; criteria recognizes ONLY pmids/appl_ids — every other key is silently ignored upstream and dumps the whole 8.3M table, so the local gate requires one of the two and no other criteria is passed through; rows are a 3-key bridge {coreproject, pmid, applid}; zero rows = no linkage on record, sparseness is a real answer)
Jurisdiction: US
| Flag | Required | Meaning |
|---|---|---|
--pmids |
no | Comma-separated PubMed ids |
--appl-ids |
no | Comma-separated NIH application ids (from nih_reporter_projects) |
--limit |
no | Page size, 1–500 |
--offset |
no | Result offset (offset+limit ≤ 15,000) |
nsf_awardsUS NSF awards search (realtime, local execution; keyword full-text XOR id point lookup; rpp 1-200 per upstream doc; upstream sends no total — full page signals more via has_more)
Jurisdiction: US
| Flag | Required | Meaning |
|---|---|---|
--keyword |
no | Full-text search keyword (XOR with --id) |
--id |
no | NSF award id, point lookup (XOR with --keyword) |
--rpp |
no | Rows per page, 1–200 |
--offset |
no | Result offset (pagination) |
openalex_institutionsResearch-institution candidate search (realtime, local execution; /institutions?search=; same-name multi-country clones coexist — the candidate list is NOT auto-picked: choose the ROR explicitly, then query output via openalex_works --ror)
Jurisdiction: GLOBAL
| Flag | Required | Meaning |
|---|---|---|
--search |
yes | Institution name, e.g. pfizer (required) |
--per-page |
no | Rows per page, 1–200 |
openalex_worksGlobal scholarly works search (realtime, local execution; api.openalex.org/works; search full-text × ror institution edge × doi × title_search combine AND into filter=; per_page 1-200 (explicit upstream 400 wall); cursor pagination via meta.next_cursor — the cursor encodes paging only, so re-send the same constraints when continuing; select is force-merged with core fields so slimming cannot strip id/doi/display_name/authorships/open_access)
Jurisdiction: GLOBAL
| Flag | Required | Meaning |
|---|---|---|
--search |
no | Full-text search term |
--ror |
no | ROR id (bare or full URL; filters by institution) |
--doi |
no | DOI exact match |
--title-search |
no | Title substring match |
--per-page |
no | Rows per page, 1–200 |
--cursor |
no | Cursor from next_cursor (re-send the same constraints) |
--select |
no | Extra fields to return, comma-separated (core fields are always merged in) |
opencitations_citationsOpenCitations COCI citing-DOI list (realtime, local execution; /index/v1/citations/{doi}; doi: prefix and doi.org URLs are normalized away — upstream 400s otherwise; upstream limit param is silently ignored (probe: ?limit=3 still returns all 217) so no fake pagination, the full list comes back with a count)
Jurisdiction: GLOBAL
| Flag | Required | Meaning |
|---|---|---|
--doi |
yes | Cited DOI (the doi: prefix is auto-stripped; required) |
searchCorpus search (hosted, PAT required): filters/record_kind/level/pagination
| Flag | Required | Meaning |
|---|---|---|
--filter |
no | Filter K=V (repeatable; the filterable fields are listed on this page) |
--record-kind |
no | Record kind (closed set; values in the domain spec) |
--facets |
no | Comma-separated fields to return facet counts for |
--level |
no | Read-layer depth (default tier1; see the read layers on this page) |
--limit |
no | Rows per page (default 50, max 1000) |
--cursor |
no | Pagination cursor (feed next_cursor from the response) |
--mode |
no | Special mode: screen (batch screening; requires --input) |
--input |
no | Input JSONL file for batch screening (with --mode screen) |
readCorpus single-record read (hosted): id + T-layer depth
| Flag | Required | Meaning |
|---|---|---|
--id |
yes | Subject id (from search result rows) |
--level |
no | Read-layer depth (default tier1) |
cisa_kev_catalogCISA Known Exploited Vulnerabilities catalog (realtime, local execution; static feed ~1.8MB; --cve and --ransomware are local post-filters, upstream stays empty-param pure; catalog updates weekly, catalogVersion echoed in reason)
Jurisdiction: US
| Flag | Required | Meaning |
|---|---|---|
--cve |
no | CVE id exact lookup (local filter), e.g. CVE-2021-44228 |
--ransomware |
no | Only entries with known ransomware campaign use (local filter) |
--limit |
no | Rows (default 50; page through the catalog instead of dumping it) |
euvd_exploitedENISA EU KEV rolling window — vulnerabilities currently exploited in the wild per EU tracking (realtime, local execution; the window refreshes continuously; the 399,311-row full EUVD↔CVE mapping is a raw-side 12MB dump, not this face; --limit is a local slice)
Jurisdiction: EU
| Flag | Required | Meaning |
|---|---|---|
--limit |
no | Rows (default 50; the EU KEV rolling window is small but grows) |
euvd_vulnerabilityENISA EUVD single-vulnerability full record by CVE or EUVD code (realtime, local execution; richer than the NVD public face — CVSS vector+version, EPSS inline, exploitedSince, CVE+GHSA aliases, vendor×product×version ranges, EU member-state CSAF advisories; dates are Java-format upstream and ISO-normalized locally; unknown id = 404 carried as not-found)
Jurisdiction: EU
| Flag | Required | Meaning |
|---|---|---|
--id |
yes | CVE or EUVD code (e.g. CVE-2024-3400 / EUVD-2024-31989; required) — the single-record full lookup |
osv_vulnsOpen-source package vulnerability query (realtime, local execution; OSV /v1/query POST; ecosystem is a closed set validated locally because upstream silently returns empty for unknown values; version omitted = all known vulns for the package)
Jurisdiction: GLOBAL
| Flag | Required | Meaning |
|---|---|---|
--package |
yes | Package name, e.g. lodash (required) |
--ecosystem |
yes | OSV ecosystem (npm / PyPI / Go / Maven / crates.io / RubyGems / NuGet / Packagist / Debian / Alpine / Linux / OSS-Fuzz / Hex / Pub / Conda / Android / GitHub Actions; required) |
--version |
no | Package version (omit = all known vulns) |
--page-token |
no | Continuation token (feed result.next_page_token from the prior response; the upstream paginates past 1000 vulns or 20 seconds) |
searchCorpus search (hosted, PAT required): filters/record_kind/level/pagination
| Flag | Required | Meaning |
|---|---|---|
--filter |
no | Filter K=V (repeatable; the filterable fields are listed on this page) |
--record-kind |
no | Record kind (closed set; values in the domain spec) |
--facets |
no | Comma-separated fields to return facet counts for |
--level |
no | Read-layer depth (default tier1; see the read layers on this page) |
--limit |
no | Rows per page (default 50, max 1000) |
--cursor |
no | Pagination cursor (feed next_cursor from the response) |
--mode |
no | Special mode: screen (batch screening; requires --input) |
--input |
no | Input JSONL file for batch screening (with --mode screen) |
readCorpus single-record read (hosted): id + T-layer depth
| Flag | Required | Meaning |
|---|---|---|
--id |
yes | Subject id (from search result rows) |
--level |
no | Read-layer depth (default tier1) |
| exit | Family | Meaning |
|---|---|---|
| 0 | Success | Normal output |
| 1 | Upstream/availability | Upstream unreachable / rate-limited / not found, capability unavailable, hosted 429 |
| 2 | Usage | Malformed arguments, unknown kind, missing credentials, request 4xx |
SdkError(code, detail, provider?, status?, retry_after?) — the code set is fixed (closed), so you can branch exhaustively.
Quick triage: exit 1 → network/upstream/rate-limit problem (retry per Retry-After or later); exit 2 → check your arguments and credentials.
capability_unavailable / rate_limited / thirdparty_rate_limited / thirdparty_upstream_unavailable / upstream_not_found / upstream_rate_limited / upstream_unavailableusage_error / resolve_kind_unknown / op_unknown / corpus-contract 4xx (unauthenticated / forbidden / undeclared_field / bad_value …)| HTTP | code | Trigger |
|---|---|---|
| 400 | undeclared_field / bad_operator / record_kind_unknown / cursor_invalid / limit_out_of_range / bad_value |
Malformed request shape/value |
| 401 | unauthenticated |
Bearer PAT missing/invalid |
| 403 | forbidden |
PAT not authorized for this data area |
| 404 | unknown_target |
read id outside the collection (not covered ≠ does not exist) |
| 429 | rate_limited |
Over the per-key quota (with Retry-After; retry at that time) |
| 502/503 | thirdparty_upstream_unavailable / thirdparty_rate_limited / capability_unavailable |
Upstream trouble (upstream Retry-After passed through when the upstream rate-limits) |
Note: when an individual upstream is unreachable from your network, the SDK normalizes it to upstream_unavailable with a troubleshooting hint, rather than retrying blindly.