API Schema Documentation
Complete reference for our API response structures
Two Response Types: Our API returns different schemas depending on the operation:
EntitySearchResult- Returned when searching for entities (lightweight, optimized for lists)EntityDetailsResponse- Returned when fetching full entity details (comprehensive, includes enrichment data)
Search EntitySearchResult
Returned by: GET /api/v1/entities?name=... (search endpoint)
Purpose: Lightweight entity records optimized for search results and list views. Contains core identification fields and basic risk information.
person,
organization, vessel, aircraft
["US", "GB"]). Combines data from countries, locations, and nationality fields.
Fraud,
Money Laundering, Terrorism, Corruption,
Sanctions
admedia (Adverse Media),
sanctions, pep
"1975-05-15 - 1975"). Multiple date formats joined by " - ".
"IMO-9876543")."Financial Services", "Manufacturing").{
"id": "eb83d4c4-9ecf-463e-acdb-64e1978ce107",
"name": "JOHN MICHAEL DOE",
"entity_type": "person",
"countries": ["US", "GB"],
"risk": ["Money Laundering", "Fraud"],
"data_source": "admedia",
"match_score": 95.5,
"birth_information": "1975-05-15 - 1975",
"original_name": "João Miguel Silva"
}
Details EntityDetailsResponse
Returned by:
GET /api/v1/entities?id=...&include=summary,risk_timeline,notes,graph
Purpose: Comprehensive entity profile with enrichment data from both Elasticsearch and PostgreSQL. Includes AI-generated summaries, risk timelines with source citations, relationship graphs, and extracted metadata.
Core Fields (from Elasticsearch)
person,
organization, vessel, aircraft
Enrichment Fields (from PostgreSQL)
occurred_at(string): Event date in ISO 8601 formatrisk_status(string): Status label (e.g.,arrested,convicted,investigated)summary(string): Event descriptionprovenance(array[object]): Source citations withurl,publisher,snippet,publishdate
role,
occupation, crime_status, location). Dynamic fields
based on available data. Omitted if empty.
source_id(string UUID): Source entity IDtarget_id(string UUID): Target entity IDrelation_type(string): Relationship type (e.g.,associated_with,employed_by)relation_description(string): Human-readable description
{
"id": "eb83d4c4-9ecf-463e-acdb-64e1978ce107",
"name": "JOHN MICHAEL DOE",
"entity_type": "person",
"aliases": ["John Doe", "J.M. Doe", "Johnny Doe"],
"name_variants": ["Jon Doe", "John M. Doe"],
"countries": ["US", "GB"],
"risk": ["Money Laundering", "Fraud"],
"data_source": "admedia",
"birth_information": "1975-05-15 - 1975",
"original_name": "João Miguel Silva",
"summary": "High-risk individual with documented history of financial fraud...",
"risk_timeline": [
{
"occurred_at": "2022-03-15",
"risk_status": "convicted",
"summary": "Convicted of wire fraud in federal court",
"provenance": [
{
"url": "https://news.example.com/john-doe-convicted",
"publisher": "Financial Times",
"snippet": "John Doe convicted of wire fraud...",
"publishdate": "2022-03-15"
}
]
}
],
"notes": {
"occupation": "Financial Consultant",
"education": "MBA from Harvard Business School"
},
"graph": [
{
"source_id": "eb83d4c4-9ecf-463e-acdb-64e1978ce107",
"target_id": "660f9500-f30c-52e5-b827-557766551111",
"relation_type": "associated_with",
"relation_description": "Business partner at shell company"
}
]
}
Note: All optional fields are omitted from the response if they are empty, null, or contain no data. This keeps responses lean and focused on available information.