openapi: 3.1.0 info: title: Event Registry (NewsAPI.ai) Articles Events API description: 'Event Registry (NewsAPI.ai) is the world''s leading news intelligence platform providing a REST API for accessing global news articles, trending topics, event detection, named entities, sentiment analysis, and media monitoring across 150,000+ sources in 60+ languages, with historical archive access dating back to 2014. All requests are POST with JSON bodies and require an apiKey field. ' version: 1.0.0 contact: name: Event Registry Support email: info@eventregistry.org url: https://newsapi.ai termsOfService: https://newsapi.ai/terms license: name: Proprietary url: https://newsapi.ai/plans servers: - url: https://eventregistry.org/api/v1 description: Production API server security: - apiKeyAuth: [] tags: - name: Events description: Search and retrieve clustered news events (deduplicated story groups). paths: /event/getEvents: post: operationId: searchEvents summary: Search news events description: 'Search events — clusters of related articles about the same real-world happening. Events deduplicate coverage: one entry per story instead of per article. Returns up to 50 events per call. Ideal for high-level overviews and trend analysis. ' tags: - Events requestBody: required: true content: application/json: schema: allOf: - $ref: '#/components/schemas/ApiKeyParam' - $ref: '#/components/schemas/ContentFilterParams' properties: resultType: type: string default: events description: Must be "events". minArticlesInEvent: type: integer description: Minimum number of articles in the event. maxArticlesInEvent: type: integer description: Maximum number of articles in the event. reportingDateStart: type: string format: date description: Filter by average article publishing date >= this (YYYY-MM-DD). reportingDateEnd: type: string format: date description: Filter by average article publishing date <= this (YYYY-MM-DD). eventsPage: type: integer description: Page number (starting from 1). Default 1. eventsCount: type: integer maximum: 50 description: Events per page (max 50). Default 50. eventsSortBy: type: string enum: - date - rel - size - socialScore description: Sort order. Default "date". Use "size" for biggest stories. eventsSortByAsc: type: boolean description: Ascending sort order. Default false. minSentimentEvent: type: number minimum: -1 maximum: 1 description: Minimum event sentiment score. maxSentimentEvent: type: number minimum: -1 maximum: 1 description: Maximum event sentiment score. query: description: Advanced Query Language object for complex boolean logic. example: apiKey: YOUR_API_KEY conceptUri: http://en.wikipedia.org/wiki/Climate_change dateStart: '2026-01-01' eventsCount: 10 eventsSortBy: size resultType: events responses: '200': description: Successful response with events array. content: application/json: schema: type: object properties: events: type: object properties: results: type: array items: $ref: '#/components/schemas/Event' totalResults: type: integer page: type: integer count: type: integer '401': description: Unauthorized. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '429': description: Rate limit exceeded. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' /event/getEvent: post: operationId: getEventDetails summary: Get full event details by URI description: 'Retrieve full details for one or more events by their URI(s), including all grouped articles, concepts, categories, and geographic data. ' tags: - Events requestBody: required: true content: application/json: schema: allOf: - $ref: '#/components/schemas/ApiKeyParam' properties: eventUri: oneOf: - type: string - type: array items: type: string description: Event URI or array of URIs. articleBodyLen: type: integer description: Article body length in characters. Default 1000. required: - eventUri example: apiKey: YOUR_API_KEY eventUri: eng-12345678 responses: '200': description: Event details object keyed by event URI. content: application/json: schema: type: object additionalProperties: $ref: '#/components/schemas/Event' '401': description: Unauthorized. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' /event/getEventsForTopicPage: post: operationId: getTopicPageEvents summary: Get events for a topic page description: 'Returns events matching a user-created topic page (pre-configured search profile). ' tags: - Events requestBody: required: true content: application/json: schema: allOf: - $ref: '#/components/schemas/ApiKeyParam' properties: uri: type: string description: Topic page URI. eventsPage: type: integer description: Page number (starting from 1). Default 1. eventsCount: type: integer maximum: 50 description: Events per page (max 50). Default 50. required: - uri responses: '200': description: Events matching the topic page. content: application/json: schema: type: object properties: events: type: object properties: results: type: array items: $ref: '#/components/schemas/Event' totalResults: type: integer '401': description: Unauthorized. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' components: schemas: Category: type: object properties: uri: type: string label: type: string wgt: type: integer Location: type: object properties: uri: type: string label: type: object additionalProperties: type: string type: type: string lat: type: number long: type: number Concept: type: object properties: uri: type: string label: type: object additionalProperties: type: string type: type: string enum: - person - org - loc - wiki score: type: number Event: type: object properties: uri: type: string description: Unique event identifier. title: type: object additionalProperties: type: string description: Event title keyed by language code. summary: type: object additionalProperties: type: string description: Event summary keyed by language code. articleCount: type: integer description: Number of articles grouped in this event. date: type: string format: date concepts: type: array items: $ref: '#/components/schemas/Concept' categories: type: array items: $ref: '#/components/schemas/Category' sentiment: type: number minimum: -1 maximum: 1 location: $ref: '#/components/schemas/Location' ApiKeyParam: type: object required: - apiKey properties: apiKey: type: string description: Your NewsAPI.ai API key. ContentFilterParams: type: object properties: keyword: type: string description: 'Secondary keyword filter. Use conceptUri as the primary search method. Comma-separate individual words for multi-term matching (e.g., "SaaS, acquisition, merger"). ' conceptUri: type: string description: 'Primary search filter. URI(s) identifying concepts/entities (comma-separated for multiple). Resolve names to URIs using /suggestConceptsFast first. ' categoryUri: type: string description: Category URI(s) to filter by (comma-separated). sourceUri: type: string description: Specific news source URI(s) to filter by (comma-separated). sourceLocationUri: type: string description: Filter by where news sources are based (country/region URI, comma-separated). authorUri: type: string description: Author URI(s) to filter by (comma-separated). locationUri: type: string description: Location URI(s) mentioned in content (comma-separated). lang: type: string description: Language code(s) to filter by (comma-separated ISO codes, e.g. "eng", "deu", "fra"). dateStart: type: string format: date description: Start date inclusive (YYYY-MM-DD). dateEnd: type: string format: date description: End date inclusive (YYYY-MM-DD). forceMaxDataTimeWindow: type: integer enum: - 7 - 31 description: Limit results to recent data — 7 (last week) or 31 (last month). keywordLoc: type: string enum: - body - title - title,body description: Where to match keywords. Default "body". keywordOper: type: string enum: - and - or description: Boolean operator for multiple keywords. Default "and". minSentiment: type: number minimum: -1 maximum: 1 description: Minimum article sentiment score (-1 to 1). maxSentiment: type: number minimum: -1 maximum: 1 description: Maximum article sentiment score (-1 to 1). startSourceRankPercentile: type: integer minimum: 0 maximum: 100 description: Min source rank percentile (0=most important). Default 0. endSourceRankPercentile: type: integer minimum: 0 maximum: 100 description: Max source rank percentile. Default 100. ignoreKeyword: type: string description: Exclude articles/events mentioning these keywords (comma-separated). ignoreConceptUri: type: string description: Exclude by concept URI(s) (comma-separated). ignoreCategoryUri: type: string description: Exclude by category URI(s) (comma-separated). ignoreSourceUri: type: string description: Exclude by source URI(s) (comma-separated). ignoreSourceLocationUri: type: string description: Exclude by source location URI(s) (comma-separated). ignoreAuthorUri: type: string description: Exclude by author URI(s) (comma-separated). ignoreLocationUri: type: string description: Exclude by location URI(s) (comma-separated). ignoreLang: type: string description: Exclude by language code(s) (comma-separated). sourceGroupUri: type: string description: Filter by source group URI(s) (comma-separated). conceptOper: type: string enum: - and - or description: Boolean operator for multiple concepts. Default "and". categoryOper: type: string enum: - and - or description: Boolean operator for multiple categories. Default "or". dateMentionStart: type: string format: date description: Articles mentioning dates >= this (YYYY-MM-DD). dateMentionEnd: type: string format: date description: Articles mentioning dates <= this (YYYY-MM-DD). isDuplicateFilter: type: string enum: - keepAll - skipDuplicates - keepOnlyDuplicates description: Duplicate handling strategy. Default "keepAll". Use "skipDuplicates" to remove wire syndication noise. query: description: Advanced Query Language object for complex boolean logic. Overrides simple filter params. ErrorResponse: type: object properties: error: type: string message: type: string securitySchemes: apiKeyAuth: type: apiKey in: query name: apiKey description: 'API key obtained from newsapi.ai/register. Include as a field in the JSON POST body or as a query parameter named apiKey. ' externalDocs: description: Official API Documentation url: https://newsapi.ai/documentation