> ## Documentation Index
> Fetch the complete documentation index at: https://docs.useorgx.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# List events

> Read accepted workspace events in cursor order.



## OpenAPI

````yaml openapi/v1.yaml GET /events/stream
openapi: 3.1.0
info:
  title: OrgX REST API v1
  version: '1'
  description: >-
    Build accountable work into your product with OrgX REST API v1.


    Create work with one field, attach evidence when it is complete, and keep
    the receipt. Every authenticated request is scoped to the workspace resolved
    from your credential.


    Start with `POST /work`. Human guide:
    https://docs.useorgx.com/docs/api/quickstart
  contact:
    name: OrgX Support
    url: https://useorgx.com/support
    email: support@useorgx.com
  license:
    name: Proprietary
    url: https://useorgx.com/terms
servers:
  - url: https://useorgx.com/api/v1
    description: Production
security: []
tags:
  - name: Work
    description: Create accountable work and complete it with evidence
  - name: Initiatives
    description: Organize related work around an outcome
  - name: Operating processes
    description: Evidence-backed company workflow/process lifecycle
  - name: Operating map
    description: Derived, rebuildable Operating Map projection over the process ledger
  - name: Discovery runs
    description: Wizard and deep-search workflow discovery over connected company sources
  - name: Handoffs
    description: Ledger-backed stage handoffs between operating-process stages
  - name: Events
    description: Replayable, workspace-scoped accepted ledger events
  - name: Projections
    description: Workspace-scoped, rebuildable read projections over OrgX sources
  - name: Episodes
    description: Mission-compatible Episode read adapters
  - name: Receipt validation
    description: Account-free Agent Work Receipt schema discovery and conformance
  - name: Receipt import
    description: Authenticated, workspace-scoped import into the hosted receipt ledger
  - name: Workload diagnosis
    description: >-
      Account-free evaluation of time, agents, systems, authority, and
      accountability boundaries
  - name: Content Studio
    description: >-
      Estimate, showcase, checkout, and payment event operations for Content
      Studio
  - name: Decisions
    description: Raise decisions for human ruling and read their state
  - name: Artifacts
    description: Register produced work against the entity it belongs to
  - name: Launches
    description: Preview and run an initiative launch through its spend gates
  - name: Runs
    description: Control agent runs with pause, resume, cancel, and rollback
  - name: Lifecycle
    description: Pause, resume, retry, or cancel work hierarchy nodes and runs
  - name: Deduplication
    description: Claim durable event fingerprints so duplicate triggers fire once
  - name: Credential
    description: >-
      Resolve the calling credential, the workspaces it reaches, and what it may
      do
  - name: API discovery
    description: Account-free error codes, request schemas, and closed vocabularies for v1
externalDocs:
  description: Human-readable OrgX REST API v1 reference
  url: https://docs.useorgx.com/docs/api/public-api
paths:
  /events/stream:
    get:
      tags:
        - Events
      summary: List events
      description: >-
        Read accepted workspace events in cursor order. Use the returned cursor
        to continue.
      operationId: listEvents
      parameters:
        - $ref: '#/components/parameters/WorkspaceIdQuery'
        - $ref: '#/components/parameters/EventStreamCursor'
        - $ref: '#/components/parameters/EventStreamLimit'
        - $ref: '#/components/parameters/EventTypeFilter'
        - $ref: '#/components/parameters/AggregateTypeFilter'
        - $ref: '#/components/parameters/EventStreamTransport'
        - $ref: '#/components/parameters/EventStreamAfter'
        - $ref: '#/components/parameters/EventStreamDuration'
        - $ref: '#/components/parameters/EventStreamPoll'
        - $ref: '#/components/parameters/EventStreamLastEventId'
      responses:
        '200':
          description: Replayable ledger event page or bounded SSE lease
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EventStreamResponse'
              example:
                data:
                  - id: a5614527-0ce6-43be-8d1d-d012b7394867
                    workspaceId: 09707fa5-aaae-4493-8a23-827111000f89
                    ownerId: 5902c040-0e2f-4a76-8f7f-00fa275b2940
                    aggregateType: work
                    aggregateId: 7fbb727d-17c4-4bc7-9fc7-60eb15e9314d
                    aggregateVersion: 1
                    eventType: work
                    schemaVersion: 1
                    actorType: work
                    actorId: launch-review-agent
                    payload: {}
                    payloadDigest: >-
                      sha256:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
                    occurredAtCanonical: '2026-08-18T18:30:00.000Z'
                    idempotencyKey: launch-plan-review
                    causationId: eb590f00-d27a-4184-8332-47747f78f3e4
                    correlationId: c54dbab4-488d-487f-85da-d041381e34cb
                    contextManifestDigest: context_manifest_digest
                    previousHash: >-
                      sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
                    eventHash: >-
                      sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
                meta: {}
            text/event-stream:
              schema:
                type: string
              examples:
                connected:
                  value: |-
                    retry: 5000

                    event: connected
                    data: {"delivery":"ledger_sse","duplicateTolerant":true}

                    id: eyJ...opaque-cursor...
                    event: ledger_event
                    data: {"id":"...","eventType":"handoff.fulfilled"}
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - bearerAuth: []
        - cookieAuth: []
components:
  parameters:
    WorkspaceIdQuery:
      name: workspace_id
      in: query
      required: true
      schema:
        type: string
        format: uuid
    EventStreamCursor:
      name: cursor
      in: query
      required: false
      schema:
        type: string
      description: Opaque cursor returned as meta.nextCursor.
    EventStreamLimit:
      name: limit
      in: query
      required: false
      schema:
        type: integer
        minimum: 1
        maximum: 100
        default: 50
    EventTypeFilter:
      name: event_type
      in: query
      required: false
      explode: true
      schema:
        type: array
        items:
          type: string
      description: Repeat to filter accepted events by ledger event type.
    AggregateTypeFilter:
      name: aggregate_type
      in: query
      required: false
      schema:
        type: string
        pattern: ^[a-z][a-z0-9_.-]{0,99}$
    EventStreamTransport:
      name: transport
      in: query
      required: false
      schema:
        type: string
        enum:
          - json
          - sse
        default: json
      description: Use sse for a bounded Server-Sent Events lease.
    EventStreamAfter:
      name: after
      in: query
      required: false
      schema:
        type: string
      description: Opaque SSE replay cursor. Equivalent to Last-Event-ID.
    EventStreamDuration:
      name: stream_ms
      in: query
      required: false
      schema:
        type: integer
        minimum: 1
        maximum: 300000
        default: 60000
      description: Maximum SSE lease duration in milliseconds.
    EventStreamPoll:
      name: poll_ms
      in: query
      required: false
      schema:
        type: integer
        minimum: 1
        maximum: 10000
        default: 1000
      description: Ledger polling interval for the SSE lease in milliseconds.
    EventStreamLastEventId:
      name: Last-Event-ID
      in: header
      required: false
      schema:
        type: string
      description: Opaque cursor returned in the previous SSE event id field.
  schemas:
    EventStreamResponse:
      type: object
      additionalProperties: false
      required:
        - data
        - meta
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/LedgerEvent'
        meta:
          $ref: '#/components/schemas/EventStreamMeta'
    LedgerEvent:
      type: object
      additionalProperties: false
      required:
        - id
        - workspaceId
        - ownerId
        - aggregateType
        - aggregateId
        - aggregateVersion
        - eventType
        - schemaVersion
        - actorType
        - actorId
        - payload
        - payloadDigest
        - occurredAtCanonical
        - idempotencyKey
        - causationId
        - correlationId
        - contextManifestDigest
        - previousHash
        - eventHash
      properties:
        id:
          type: string
          format: uuid
        workspaceId:
          type: string
          format: uuid
        ownerId:
          type: string
          format: uuid
        aggregateType:
          type: string
        aggregateId:
          type: string
        aggregateVersion:
          type: integer
          minimum: 1
        eventType:
          type: string
        schemaVersion:
          type: integer
          minimum: 1
        actorType:
          type: string
        actorId:
          type: string
        payload:
          type: object
        payloadDigest:
          type: string
        occurredAtCanonical:
          type: string
          format: date-time
        recordedAt:
          type: string
          format: date-time
        idempotencyKey:
          type: string
        causationId:
          type:
            - string
            - 'null'
          format: uuid
        correlationId:
          type:
            - string
            - 'null'
          format: uuid
        contextManifestDigest:
          type:
            - string
            - 'null'
        previousHash:
          type:
            - string
            - 'null'
        eventHash:
          type: string
    EventStreamMeta:
      allOf:
        - $ref: '#/components/schemas/ContractMeta'
        - type: object
          required:
            - count
            - limit
            - hasMore
            - nextCursor
            - sourceCursor
            - projectionStatus
          properties:
            count:
              type: integer
              minimum: 0
            limit:
              type: integer
              minimum: 1
            hasMore:
              type: boolean
            nextCursor:
              type:
                - string
                - 'null'
            sourceCursor:
              type:
                - string
                - 'null'
            projectionStatus:
              type: string
              const: ledger_replay
            delivery:
              type: string
              const: cursor_page
            ordering:
              type: string
              const: recorded_at_desc,id_desc
            duplicateTolerant:
              type: boolean
    ApiError:
      type: object
      properties:
        error:
          type: object
          properties:
            code:
              type: string
            message:
              type: string
            details:
              type: object
            requestId:
              type: string
            timestamp:
              type: string
              format: date-time
            docsUrl:
              type: string
              format: uri
            retryAfter:
              type: integer
              description: Seconds until rate limit resets
    ContractMeta:
      type: object
      additionalProperties: false
      required:
        - apiVersion
        - workspaceId
      properties:
        apiVersion:
          type: string
          const: '1'
        workspaceId:
          type: string
          format: uuid
        count:
          type: integer
          minimum: 0
  responses:
    BadRequest:
      description: Request validation failed
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ApiError'
    Unauthorized:
      description: Authentication required
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ApiError'
    NotFound:
      description: Resource is unavailable to the caller
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ApiError'
    ServiceUnavailable:
      description: Ledger or workspace authorization is unavailable
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ApiError'
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: 'OrgX API key, sent as `Authorization: Bearer oxk_...`'
    cookieAuth:
      type: apiKey
      in: cookie
      name: __session
      description: Session cookie from web authentication

````