---
title: "Every workspace's events in the organization, oldest first by updatedAt, paged by a stable cursor."
method: GET
path: "/v1/organizations/current/events"
tags: ["events"]
---

# Every workspace's events in the organization, oldest first by updatedAt, paged by a stable cursor.

`GET /v1/organizations/current/events`

## Request

- Base URL: `https://api.50heads.com`
- URL: `https://api.50heads.com/v1/organizations/current/events`
- Auth: one of:
  - HTTP bearer
  - OAuth 2 (authorization code, authorization URL `https://auth.50heads.com/authorize`, token URL `https://auth.50heads.com/token`; client credentials, token URL `https://auth.50heads.com/token`, scopes: `events:read`)

Organization admins only (403 `organization_admin_required`); API keys, connected apps and service accounts with `events:read` where the organization has machine identities (otherwise 403 `session_required`). The page is oldest first by `updatedAt`, then `sequence`. `nextCursor` is always set: pass it back for the next page, or keep it and poll; an empty page still moves it on, so the next call reads only new events. Events are the webhook catalog's, with the same `data`; they are kept 90 days. Load by `id` to drop the rare repeat. Behind the `warehouseExport` flag: 404 `not_found` until it is on for your account.

## Query parameters

- `cursor` string: `nextCursor` from the last page. Omit to start from the oldest event still kept (90 days), or from `since`.
- `since` string: With no cursor: start at events updated at or after this time (ISO 8601, or a date).
- `type` string: Only this event type (`question.completed`), or every type of a group (`question`).
- `limit` integer: Events per page (default 100, at most 500).

## Response `200`

OK

- EventsStreamResponse
  - `events` object[], required
    - `id` string, required
    - `type` string, required
    - `sequence` integer, required
    - `createdAt` string, required
    - `updatedAt` string, required
    - `workspaceId` string, nullable, required
    - `data` object, required
  - `nextCursor` string, required
  - `hasMore` boolean, required

## Other responses

- `400`: The request is not valid; `error.details.validation` lists the fixes.
- `401`: No key or token, or it expired or was revoked.
- `403`: The key or token lacks the scope (`insufficient_scope`), or the action is not allowed.
- `429`: Too many requests; wait for Retry-After.

---

[API](https://skmtc.dev/50heads/apis/50heads-api.md) · [All operations](https://skmtc.dev/50heads/apis/50heads-api/llms.txt) · [OpenAPI document](https://skmtc.dev/50heads/apis/50heads-api/revisions/20175e8b00e3?raw)
