Skip to main content

Data Models

This page documents the complete data structures returned by the Corpus Product API.

EventResponse

The standard event object returned by list endpoints.

Fields

FieldTypeDescription
idUUIDUnique event identifier
titlestringEvent title/headline
descriptionstringDetailed event description (nullable)
eventCategorystringCategory ID (e.g., “conflict”, “cyber”)
eventTypestringType ID within category
eventSubtypestringSubtype ID within type (nullable)
eventDatedateDate when the event occurred, YYYY-MM-DD (nullable)
eventDateEnddateEnd date for multi-day events (nullable)
locationstringSpecific location name (nullable)
locationCountrystringISO country code (nullable)
locationCoordinatesobjectCoordinates object with lat and lng (nullable)
fatalitiesintegerNumber of reported fatalities (nullable)
injuriesintegerNumber of reported injuries (nullable)
abductionsintegerNumber of reported abductions (nullable)
civilianTargetingbooleanWhether civilians were deliberately targeted (nullable)
admin1stringFirst-level administrative division, e.g. state/province (nullable)
admin2stringSecond-level administrative division, e.g. district/county (nullable)
admin3stringThird-level administrative division, e.g. commune/ward (nullable)
geoPrecisionintegerGeographic precision level (nullable). See Geo Precision Levels
salienceScorefloatConfidence score indicating how reliably the event has been verified (nullable). See Salience Score
salienceRationalestringHuman-readable explanation of the confidence assessment (nullable)
articleCountintegerNumber of source articles
actorCountintegerNumber of actors involved
sourceDomainsstring[]List of source domain URLs (nullable)
createdAtdatetimeWhen record was created
updatedAtdatetimeWhen record was last updated

Geo Precision Levels

The geoPrecision field follows ACLED convention for indicating the precision of location coordinates.
ValueLabelDescription
1Exact / rooftopCoordinates correspond to a specific building, intersection, or precise point
2District / cityCoordinates correspond to a named populated place such as a city or district centre
3Approximate / countryCoordinates are approximate, typically placed at a regional or country centroid

Salience Score

The salienceScore field is a confidence score indicating how reliably the event has been verified. Scores below 0.75 are not included in the dataset.
ScoreLabelDescription
1.0ConfirmedThe event definitely happened. Reporting is consistent, independently corroborated across multiple credible channels, or comes from an authoritative monitoring system with a strong verification process.
0.94–0.99High ConfidenceThe event almost certainly happened. It is sourced from established outlets or accounts with direct access to the situation, and the details align with other verifiable facts and known patterns in the area.
0.90–0.93CredibleThe event very likely happened. It is reported by a verified source with a known affiliation and is broadly consistent with the established pattern of activity in the region.
0.87–0.89ProbableThe event very likely happened, though the level of independent corroboration is more limited. It is often based on a single credible report or a small number of supporting signals, but still fits the broader context and pattern of activity in the area.
0.82–0.86LikelyThe event very likely happened, and the core claim appears solid. Confidence is slightly lower mainly because some details remain unclear, incomplete, or only partially verified, not because the event itself appears unlikely.
0.75–0.81UnconfirmedThe event likely happened, but important details are still unconfirmed or only partially verified. This is a common confidence range in immediate monitoring, where the core event appears credible but reporting on the specifics may still be incomplete, inconsistent, or developing.
< 0.75PlausibleThe event may have happened, but the reporting is too limited, vague, or weakly sourced to meet the threshold for inclusion in the dataset.

Example JSON

{
  "id": "ad8b3d2a-353f-41fd-908d-780615f31673",
  "title": "353 killed, 60 kidnapped in violent attacks across Nigeria in June",
  "description": "A total of 353 people were killed and 60 were kidnapped in violent attacks across Nigeria in June.",
  "eventCategory": "crime",
  "eventType": "violence",
  "eventSubtype": null,
  "eventDate": "2026-06-01",
  "eventDateEnd": null,
  "location": "Nigeria",
  "locationCountry": "NG",
  "locationCoordinates": null,
  "fatalities": 353,
  "injuries": null,
  "abductions": 60,
  "civilianTargeting": true,
  "admin1": "Borno",
  "admin2": null,
  "admin3": null,
  "geoPrecision": 3,
  "salienceScore": null,
  "salienceRationale": null,
  "articleCount": 0,
  "actorCount": 0,
  "sourceDomains": null,
  "createdAt": "2026-02-13T22:29:32.845037Z",
  "updatedAt": "2026-02-13T22:29:32.845037Z"
}

EventDetailResponse

Extended event object with category-specific data. Includes all fields from EventResponse plus:
FieldTypeDescription
categorySpecificDataobjectCategory-specific metadata fields (nullable)
actorRolesBreakdownobjectBreakdown of actors by role (nullable)

Category-Specific Data

The categorySpecificData field contains metadata fields defined by the event’s category. See each category’s taxonomy page for the specific fields available. Example for Conflict event:
{
  "id": "...",
  "title": "Armed clash between government and rebel forces",
  "eventCategory": "conflict",
  "eventType": "battles",
  "eventSubtype": "armed_clash",
  "eventDate": "2026-02-10",
  "eventDateEnd": null,
  "location": "Donetsk",
  "locationCountry": "UA",
  "locationCoordinates": {
    "lat": 48.0159,
    "lng": 37.8029
  },
  "fatalities": 15,
  "injuries": 23,
  "abductions": 0,
  "civilianTargeting": false,
  "admin1": "Donetsk Oblast",
  "admin2": "Donetsk",
  "admin3": null,
  "geoPrecision": 2,
  "salienceScore": 0.85,
  "salienceRationale": null,
  "articleCount": 3,
  "actorCount": 2,
  "sourceDomains": ["reuters.com", "bbc.co.uk"],
  "createdAt": "2026-02-10T14:30:00Z",
  "updatedAt": "2026-02-10T14:30:00Z",
  "categorySpecificData": {
    "disorder_type": "Political violence"
  },
  "actorRolesBreakdown": null
}

ActorResponse

The standard actor object returned by list endpoints.

Fields

FieldTypeDescription
idUUIDUnique actor identifier
canonicalNamestringActor’s canonical/standardized name
aliasesstring[]Alternative names/spellings (nullable)
descriptionstringDescription of the actor (nullable)
articleCountintegerNumber of articles mentioning this actor
eventCountintegerNumber of events involving this actor
sourceDomainsstring[]List of source domains (nullable)
firstMentionDatedateDate of first mention (nullable)
lastMentionDatedateDate of most recent mention (nullable)
createdAtdatetimeWhen record was created
updatedAtdatetimeWhen record was last updated
Note: The actor type/category is not included in the response object. To filter actors by type, use the actor_type query parameter when calling /v1/actors, and use the /v1/metadata/actor-types endpoint to discover available types.

Example JSON

{
  "id": "5a9c2a21-e326-4563-b425-a6490d4ccbe0",
  "canonicalName": "3M",
  "aliases": null,
  "description": "The mention of '3M' refers to the corporation, a large multinational conglomerate known for its diverse range of products.",
  "articleCount": 6,
  "eventCount": 0,
  "sourceDomains": [
    "www.boston25news.com",
    "www.facebook.com",
    "www.kimt.com",
    "www.local10.com"
  ],
  "firstMentionDate": null,
  "lastMentionDate": null,
  "createdAt": "2026-02-04T00:26:46.088359Z",
  "updatedAt": "2026-02-04T00:28:15.278086Z"
}

ActorDetailResponse

Extended actor object with relationship breakdowns. Includes all fields from ActorResponse plus:
FieldTypeDescription
eventTypesBreakdownobjectBreakdown of events by type (nullable)
rolesBreakdownobjectBreakdown of actor roles across events (nullable)

PaginatedEventsResponse

Wrapper for paginated event listings.
FieldTypeDescription
itemsEventResponse[]Array of events
totalintegerTotal number of matching events
pageintegerCurrent page number
pageSizeintegerNumber of items per page
totalPagesintegerTotal number of pages

Example JSON

{
  "items": [...],
  "total": 49,
  "page": 1,
  "pageSize": 50,
  "totalPages": 1
}

PaginatedActorsResponse

Same structure as PaginatedEventsResponse but with items as ActorResponse[].

CountryAggregation

Country with event count.
FieldTypeDescription
countrystringCountry name
eventCountintegerNumber of events in this country

RegionAggregation

Location/region with event count.
FieldTypeDescription
locationstringCity/region name
countrystringCountry name (nullable)
eventCountintegerNumber of events in this location

MetadataValueCount

Generic metadata value with count.
FieldTypeDescription
valuestringThe metadata value
countintegerNumber of occurrences
Used in responses from:
  • /v1/metadata/event-categories
  • /v1/metadata/event-types
  • /v1/metadata/event-subtypes
  • /v1/metadata/actor-types

Source Reliability

Sources attached to events carry a reliability_tier field that classifies the origin of the source material. This value is auto-assigned by the ingestion pipeline based on the scraper type that collected the article.
ValueDescription
news_outletEstablished news organization (wire service, newspaper, broadcaster)
social_mediaSocial media platform post (Twitter/X, Facebook, Telegram, etc.)
ai_generatedContent produced by an AI model or automated summarisation pipeline
unknownSource type could not be determined

Export Formats

The /v1/events/export endpoint supports multiple output formats:

CSV Format

Standard comma-separated values with headers. Includes all event fields plus actor information.

JSON Format

Array of EventDetailResponse objects with full metadata and actors.

GeoJSON Format

Geographic data format suitable for mapping applications:
{
  "type": "FeatureCollection",
  "features": [
    {
      "type": "Feature",
      "geometry": {
        "type": "Point",
        "coordinates": [-74.0060, 40.7128]
      },
      "properties": {
        "id": "...",
        "title": "...",
        "event_category": "...",
        ...
      }
    }
  ]
}

ACLED Format

Compatible with ACLED (Armed Conflict Location & Event Data Project) schema. Only available for conflict category events.

Key Actor Fields

FieldTypeDescription
actor1stringPrincipal (primary) actor in the conflict event
assoc_actor_1stringAssociated actors (internal sub-units of actor1), semicolon-separated
supporting_actor_1stringExternal supporting actors for actor1, comma-separated
inter1stringInter-group code for actor1 (1=state, 2=rebel, 3=political militia, etc.)
actor2stringSecondary (opposing) actor in the conflict event
assoc_actor_2stringAssociated actors (internal sub-units of actor2), semicolon-separated
supporting_actor_2stringExternal supporting actors for actor2, comma-separated
inter2stringInter-group code for actor2
interactionstringInteraction code combining inter1 and inter2 (e.g., “1-2” for state vs rebel)
Example:
{
  "event_id_cnty": "NGA12345678",
  "event_date": "2026-02-10",
  "event_type": "Battles",
  "sub_event_type": "Armed clash",
  "actor1": "Nigerian Army",
  "assoc_actor_1": "7th Division; 3rd Battalion",
  "supporting_actor_1": "French Air Force, U.S. Military Advisors",
  "inter1": "1",
  "actor2": "Boko Haram",
  "assoc_actor_2": "Shekau Faction",
  "supporting_actor_2": null,
  "inter2": "2",
  "interaction": "1-2",
  "location": "Maiduguri",
  "country": "Nigeria",
  "fatalities": 15
}

Flat Format

Denormalized JSON with actor positions as explicit columns, suitable for spreadsheet import and tabular analysis.

Actor Position Fields

FieldTypeDescription
principal_actorstringPrincipal (primary) actor name
principal_actor_categorystringCategory of principal actor (state_forces, rebel_group, etc.)
sub_principal_actorsstringInternal sub-units of principal actor, semicolon-separated
supporting_principal_actorstringExternal actors supporting principal, comma-separated
secondary_actorstringSecondary (opposing) actor name
secondary_actor_categorystringCategory of secondary actor
sub_secondary_actorsstringInternal sub-units of secondary actor, semicolon-separated
supporting_secondary_actorstringExternal actors supporting secondary, comma-separated
Actor Position Hierarchy:
  • Principal/Secondary: Main actors in the event (actor1/actor2 in ACLED)
  • Sub-Principal/Sub-Secondary: Internal sub-units, factions, or branches within the same organization (e.g., “3rd Battalion” within “Nigerian Army”)
  • Supporting Principal/Supporting Secondary: External organizations providing support (e.g., “U.S. Special Forces” providing training to “Colombian Army”)
Example:
{
  "id": "ad8b3d2a-353f-41fd-908d-780615f31673",
  "title": "Armed clash between Nigerian forces and insurgents",
  "event_category": "conflict",
  "event_type": "battles",
  "event_subtype": "armed_clash",
  "event_date": "2026-02-10",
  "location": "Maiduguri, Borno State",
  "location_country": "NG",
  "principal_actor": "Nigerian Army",
  "principal_actor_category": "state_forces",
  "sub_principal_actors": "7th Division; 3rd Battalion",
  "supporting_principal_actor": "French Air Force, U.S. Military Advisors",
  "secondary_actor": "Boko Haram",
  "secondary_actor_category": "rebel_group",
  "sub_secondary_actors": "Shekau Faction",
  "supporting_secondary_actor": null,
  "salience_score": 0.85,
  "created_at": "2026-02-10T14:30:00Z",
  "updated_at": "2026-02-10T14:30:00Z"
}
← Back to Taxonomy Overview