---
title: "Get Calendar Event"
method: GET
path: "/api/v1/calendar_events/{id}"
tags: ["Calendar Events"]
---

# Get Calendar Event

`GET /api/v1/calendar_events/{id}`

## Request

- Base URL: `https://nordicfinancialnews.com`
- URL: `https://nordicfinancialnews.com/api/v1/calendar_events/{id}`
- Auth: HTTP bearer

Fetches a single scheduled calendar event by ID. Cancelled or discarded events return 404.

On plans with a capped calendar, only events inside your plan's window are readable; anything outside it returns 403.

Responses are cached with `ETag` and `Last-Modified` headers and a `private, max-age=300` `Cache-Control`; clients can send `If-None-Match` or `If-Modified-Since` to receive a `304 Not Modified`.

## Headers

- `If-None-Match` string
- `If-Modified-Since` string

## Response `200`

Calendar event retrieved

- object
  - `calendar_event` CalendarEventDetail, required
    - `id` string, required: Unique calendar event identifier
    - `title` string, required: Event title as reported by the issuer or exchange
    - `description` string, nullable: Optional long-form description
    - `event_type` 'earnings_report' | 'earnings_call' | 'agm' | 'egm' | 'dividend' | 'capital_markets_day' | 'trading_update' | 'conference_presentation' | 'ma_announcement' | 'ma_offer_deadline' | 'ma_completion' | 'listing' | 'delisting', required: The kind of calendar event
    - `status` 'scheduled' | 'published' | 'cancelled', required: Event lifecycle status. `scheduled` is upcoming; `published` means the event has occurred (events flip ~2 days after their date); `cancelled` means the issuer withdrew it. List endpoints return `scheduled` + `published` and exclude `cancelled` by default. Pass the `status` query parameter to filter (e.g. `status=cancelled`).
    - `date_precision` 'exact' | 'day' | 'month': Granularity of `scheduled_at`. `exact` = timestamp known; `day` = date only; `month` = only the month is known. Consumers that need a date should still use `scheduled_at` (set to a representative point inside the window).
    - `fiscal_period` string, nullable: Fiscal period slug (required for report-type events, e.g. `q3_2026`, `fy_2025`). For a split fiscal year the year is the one in which the fiscal year ends (2025/26 → `fy_2026`).
    - `scheduled_at` string, date-time, required: Scheduled date/time in UTC (ISO 8601). For the local calendar date use `local_time` instead: a day-precision event is stored at local midnight, so its UTC instant falls on the previous day for ahead-of-UTC (Nordic) zones.
    - `timezone` string: The issuer's IANA timezone, used to interpret `scheduled_at`. Resolved from the source article, falling back to the company's country zone.
    - `local_time` string, date-time: `scheduled_at` rendered in the issuer's `timezone` (ISO 8601 with offset). Use this for the correct local date/time. Its date is right even for day-precision events.
    - `scheduled_at_changed_at` string, date-time, nullable: When `scheduled_at` last changed. Useful for change-feed consumers tracking date moves.
    - `source_article_id` string, nullable: ID of the article the event was extracted from. `null` when the article is not retrievable (not live, or removed), or when the event was first found on a company website. If a company website later supplied the date, this still names the original article, and `source` names the website. Best-effort: on the free plan it may reference an article your plan can't fetch (premium source or outside the age window).
    - `source` object, nullable: Who published the current date. `article` is a news article or company announcement. `company_website` is the issuer's own investor relations calendar. `null` when our editors set the date.
      - `type` 'article' | 'company_website'
      - `name` string, nullable: The publisher: the outlet that carried the article, or the issuer's investor relations site. `null` when the article is no longer available.
      - `url` string, nullable: The investor relations calendar page, for `company_website`. `null` for `article`.
      - `article_id` string, nullable: ID of the article, for `article`. Matches `source_article_id`. `null` when the article is no longer available, and for `company_website`.
    - `company_id` string, required: ID of the company this event relates to
    - `company` object, nullable: The issuer this event belongs to, inlined so a calendar can be rendered without a lookup per row. `id` is the same value as `company_id`. `null` only when the issuer is not published by this API.
      - `id` string: Unique company identifier
      - `name` string: Company name
      - `ticker` string, nullable: Primary stock ticker. `null` for an unlisted issuer.
    - `country` string, nullable: Country ISO 3166-1 alpha-2 code
    - `dividend` object, nullable: Dividend lifecycle dates. `null` for non-dividend events. `scheduled_at` follows the priority ex-date > record-date > payment-date, whichever is explicitly stated.
      - `ex_date` string, nullable: Ex-dividend date (YYYY-MM-DD). The market-event anchor: share price drops on this day.
      - `record_date` string, nullable: Record date (YYYY-MM-DD). Holders of record on this date receive the dividend.
      - `payment_date` string, nullable: Payment date (YYYY-MM-DD). When the cash is distributed to shareholders.
      - `declaration_date` string, nullable: Declaration / announcement date (YYYY-MM-DD). Metadata only, never used as the calendar anchor.
      - `kind` 'ordinary' | 'special': Tranche type. `ordinary` for the recurring/regular dividend; `special` for an extra/bonus/one-off dividend. When an issuer proposes both for the same date, they are returned as two separate events.
    - `coverage_event` object, nullable: The news event that covered this calendar event, once its issuer-local date has arrived. `null` when the date is in the future, no news event matches, or your plan can't access the matched event. `id` is the event's ID: fetch it with `GET /api/v1/events/{id}`. `url` is the Nordic Financial News web page (sign-in required), not the REST endpoint or the publisher's article. Computed when you read: it does not advance `updated_at`, so `updated_after` sync does not deliver coverage-only changes. Revalidate with `If-None-Match`.
      - `id` string: Unique event identifier
      - `title` string: Event title
      - `significance` 'notable' | 'routine': Editorial importance of the event. `notable` = front-page-worthy; `routine` = factual ledger record. Commentary is never matched.
      - `url` string: The event's page on Nordic Financial News
    - `updated_at` string, date-time: When the event was last updated (ISO 8601). Use with `updated_after` for polling

## Other responses

- `304`: Not Modified
- `401`: Missing or invalid API key
- `403`: Calendar event is outside this plan's calendar window
- `404`: Calendar event not found

---

[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)
