---
title: "Subscribe to Corporate Actions Events (SSE)"
method: GET
path: "/v1beta1/events/corporate-actions"
tags: ["Corporate actions"]
---

# Subscribe to Corporate Actions Events (SSE)

`GET /v1beta1/events/corporate-actions`

Server-Sent Events (SSE) stream that delivers every corporate-action mutation (`insert` / `update` / `delete`) across all 15 CA types on a single long-lived `text/event-stream` connection. When `since`, `since_id`, or the `Last-Event-Id` reconnect header is provided, historical events are replayed first; otherwise only live events are pushed.

Each event carries an `event_type` discriminator that selects the shape of the `ca` payload -- see the [`corporate_action_event`](#/components/schemas/corporate_action_event) schema for the mapping to each per-type schema. The same underlying data is available on demand via [`GET /v1/corporate-actions`](#operation/CorporateActions).

## Query parameters

- `type` CorporateActionEventType[]
- `region` 'all' | 'us' | 'non_us'
- `since` string, date-time
- `until` string, date-time
- `since_id` string, ulid — Lexically sortable, monotonically increasing 26-character [ULID](https://github.com/ulid/spec) (Crockford Base32, uppercase) that identifies a single SSE emission. Unique per message -- an `update` or `delete` for the same underlying corporate action carries a fresh `event_id`. Because ULIDs sort in emission order, they can be used as resume cursors via `since_id`, `until_id`, or the standard `Last-Event-Id` reconnect header.
- `until_id` string, ulid — Lexically sortable, monotonically increasing 26-character [ULID](https://github.com/ulid/spec) (Crockford Base32, uppercase) that identifies a single SSE emission. Unique per message -- an `update` or `delete` for the same underlying corporate action carries a fresh `event_id`. Because ULIDs sort in emission order, they can be used as resume cursors via `since_id`, `until_id`, or the standard `Last-Event-Id` reconnect header.

## Headers

- `Last-Event-Id` string, ulid — Lexically sortable, monotonically increasing 26-character [ULID](https://github.com/ulid/spec) (Crockford Base32, uppercase) that identifies a single SSE emission. Unique per message -- an `update` or `delete` for the same underlying corporate action carries a fresh `event_id`. Because ULIDs sort in emission order, they can be used as resume cursors via `since_id`, `until_id`, or the standard `Last-Event-Id` reconnect header.

## Response `200`

Connected. Corporate-action events will now start streaming as long as you keep the connection open.

## Other responses

- `400` — One of the request parameters is invalid. See the returned message for details.
- `401` — Authentication headers are missing or invalid. Make sure you authenticate your request with a valid API key.
- `403` — The requested resource is forbidden.
- `429` — Too many requests. You hit the rate limit. Use the X-RateLimit-... response headers to make sure you're under the rate limit.
- `500` — Internal server error. We recommend retrying these later. If the issue persists, please contact us on [Slack](https://alpaca.markets/slack) or on the [Community Forum](https://forum.alpaca.markets/).

---

[API](https://skmtc.net/alpacahq/apis/gift-city-extensions-api.md) · [All operations](https://skmtc.net/alpacahq/apis/gift-city-extensions-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/alpacahq/gift-city-extensions-api/revisions/62e3378bb273/schema)
