---
title: "List Company Events"
method: GET
path: "/api/v1/companies/{identifier}/events"
tags: ["Companies"]
---

# List Company Events

`GET /api/v1/companies/{identifier}/events`

## Request

- Base URL: `https://nordicfinancialnews.com`
- URL: `https://nordicfinancialnews.com/api/v1/companies/{identifier}/events`
- Auth: HTTP bearer

Returns Events this company participates in, newest first. This is the same contract as `GET /api/v1/events`, scoped to a single company by the path. Plan gating, ordering, `updated_after` sync (including merge/removal tombstones for this company), and cursor semantics all match the flat resource; see its documentation for the full detail.

A tombstone respects the same event-grain filters as the flat resource, including `last_article_after`/`before`. A merged event's `last_article_at` freezes at merge time, so those filter a tombstone against that frozen value rather than against when the merge happened. `window` cannot be used for sync polling (mutually exclusive with `updated_after`).

Parameters that name or describe a different company or listing are rejected here with `400 invalid-parameter`: `company`, `ticker`, `watchlist`, `listed`, `exchange`, `market`, `domicile`, `index`, `sector` and `market_segment`. The path already fixes the company; use `GET /api/v1/events` to filter the full collection by any of them. `watchlist=false` and `listed` with any value other than `true` remain inert. `mode` is rejected with `400 invalid-parameter`; use `GET /api/v1/events?company={company_id}&q={query}&mode=semantic` to search one company's events by meaning.

Responses carry an `ETag` and `Cache-Control: private, max-age=0, must-revalidate`; send the ETag back as `If-None-Match` to receive a `304 Not Modified`. There is no `Last-Modified`, so `If-Modified-Since` alone never revalidates. This is the same contract, and the same reason, as `GET /api/v1/events`. Requests carrying `q` or `updated_after` are not cached and return `Cache-Control: no-cache, no-store`.

## Query parameters

- `limit` integer
- `cursor` string
- `fields` string
- `updated_after` string
- `q` string
- `event_type` string
- `event_category` string
- `significance` string
- `sort` string
- `country` string
- `category` string
- `sources` string
- `first_reported_after` string
- `first_reported_before` string
- `last_article_after` string
- `last_article_before` string
- `window` string
- `source_type` string
- `content_type` string
- `related_to` string
- `include_peripheral` boolean

## Headers

- `If-None-Match` string

## Response `200`

Company events retrieved successfully

- object
  - `events` EventSummary[], required
    - `id` string, required: Unique event identifier
    - `title` string: Event title (omitted on a tombstone)
    - `status` 'active' | 'closed' | 'merged' | 'removed', required: Lifecycle status. `active`/`closed` are live (closed = coverage window lapsed but the event stays visible and can reopen). `merged` = absorbed into another event (see `merged_into`); `removed` = withdrawn from the feed (no live articles remain, or it was found to be incorrect). `merged`/`removed` never appear in the default list and carry only the tombstone fields.
    - `significance` 'notable' | 'routine' | 'commentary': Editorial importance (omitted on a tombstone). `notable` = front-page-worthy; `routine` = factual ledger record; `commentary` = single-article opinion/analysis.
    - `event_type` object, nullable: The kind of event (omitted on a tombstone)
      - `slug` string
      - `label` string
      - `category` string
    - `article_count` integer: Number of live articles reporting this event (omitted on a tombstone). This is the total count. Your plan's age and source restrictions do not reduce it; use GET on the event to see which of them your plan can fetch.
    - `first_reported_at` string, date-time, nullable: When this event was first reported (ISO 8601, omitted on a tombstone): the earliest known publication time among this event's member articles. Falls back to `last_article_at` for ordering when null. This is editorial time, not the time the record reached this API.
    - `last_article_at` string, date-time, nullable: Publication time of the newest article reporting this event (ISO 8601, omitted on a tombstone).
    - `updated_at` string, date-time, required: When this record last changed (ISO 8601). This is the clock incremental sync runs on. Pass your last completed sync time as `updated_after`, drain every page via `pagination.next_cursor`, and only then advance your stored timestamp.
    - `company_ids` string[]: IDs of companies associated with this event, verified and visible only (omitted on a tombstone). Restricted to companies with an active-involvement role (subject, acquirer, target, investor, issuer, partner) unless `include_peripheral=true`.
    - `story_ids` string[]: IDs of published stories generated from this event, if any (omitted on a tombstone)
    - `merged_into` string, nullable: ID of the surviving event this one was merged into. Present only when `status` is `merged`; null for every other status, including `removed` and on some older merged events.
    - `related_to` string, nullable: Commentary-only metadata: the `id` of the factual event this commentary event comments on or reacts to, when the piece is about a specific factual event. Always null for non-commentary events, and often null for commentary events too (the piece may not be about a specific event). Filter with `related_to=<id>` to find commentary reacting to a given event.
  - `pagination` object, required
    - `count` integer
    - `next_cursor` string, nullable
  - `plan_limited` boolean: Present and `true` when your plan capped what this endpoint can return. Absent when your plan applies no cap.

## Other responses

- `304`: Not Modified
- `400`: Invalid parameter

---

[API](https://skmtc.dev/nordicfinancialnews/apis/nordic-financial-news-api.md) - [All operations](https://skmtc.dev/nordicfinancialnews/apis/nordic-financial-news-api/llms.txt) - [OpenAPI document](https://skmtc.dev/nordicfinancialnews/apis/nordic-financial-news-api/revisions/aa48db8c82fc?raw)
