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

# List events

> Returns a paginated event stream for the authenticated client for audit and operational troubleshooting.

`customer.kyb_status.updated` events may include a `reason_code` field in `data.object` when the status change is driven by the Proof-of-Address (PoA) flow:
- `pending_proof_of_address` — emitted on freeze when the customer's rolling 7-day inbound volume exceeds the PoA-required threshold and no PoA is on file.
- `proof_of_address_rejected` — emitted when compliance rejects a submitted PoA document.
- `proof_of_address_approved` — emitted when compliance approves a submitted PoA, unfreezing the customer.

Other `customer.kyb_status.*` events do not include `reason_code`.




## OpenAPI

````yaml /openapi.yaml get /events
openapi: 3.0.3
info:
  title: Dakota Platform API
  version: 1.0.0
  description: >-
    Combined API specification for Dakota Platform services:

    - Issuance API: Asset minting and burning operations

    - Onboarding API: Know Your Business/Customer verification

    - On/Off Ramp API: Managing on-ramp and off-ramp accounts

    - Recipients API: Managing destinations for KYB'd entities

    - Transactions API: Viewing transaction history across platform operations


    ## Authentication and API Headers


    All API endpoints require the following headers:


    - `x-idempotency-key`: Required for all POST endpoints to ensure request
    idempotency

    - `x-api-key`: Required for authentication across all endpoints


    Note: On /applications endpoints you need a token for authentication instead
    of a x-api-key

    - `x-application-token`: Required for authentication on public /applications
    endpoints (alternative to `x-api-key` where documented)



    ## Rate Limits


    Requests are rate limited per API key. Every response includes the following
    headers:


    | Header | Description |

    | --- | --- |

    | `X-RateLimit-Limit` | Maximum requests allowed in the current one-minute
    window. |

    | `X-RateLimit-Remaining` | Requests remaining in the current window. |

    | `X-RateLimit-Reset` | Absolute Unix timestamp (seconds since epoch) when
    the current rate-limit window resets. |


    When a request is throttled (`429`), responses also include `Retry-After`
    with seconds to wait before retrying.
servers:
  - url: https://api.platform.dakota.xyz
    description: Production environment
  - url: https://api.platform.sandbox.dakota.xyz
    description: Sandbox — safe for testing with simulated data
security:
  - ApiKeyAuth: []
tags:
  - name: Agentic Payments
    x-alpha: true
    description: >-
      Alpha — agent-driven payments: provision agents, draft and approve
      spending mandates, accept reviewed instructions, and manage scheduled
      payments.


      **Prerequisites:** Customer onboarded; signer groups attached for
      recognition.

      **Related:** Wallets, Signer Groups, Transactions
  - name: Mandates
    x-alpha: true
    description: >-
      Alpha — spending mandates: signed, signer-bound authorizations governing
      what may be spent, approved or cancelled by a second recognized signer (§8
      — the dual-control rule that every mandate mutation must be signed by a
      recognized signer OTHER than the bound one). Independent of agents and
      scheduled payments.


      **Prerequisites:** Signer groups attached for recognition.

      **Related:** Signer Groups, Transactions
  - name: Insights
    x-alpha: true
    description: >-
      Alpha — read-only account insight: a deterministic report over a
      customer's agentic activity (funding balances, upcoming obligations,
      failures, mandate headroom and expiry) plus an advisory chat that narrates
      it. Never moves money, never creates or changes anything.


      **Prerequisites:** Customer onboarded; insight is computed from the
      customer's scheduled payments, mandates, and wallets.

      **Related:** Agentic Payments, Mandates
  - name: Customers
    description: >-
      Manage customer entities representing businesses and organizations
      onboarded to Dakota.


      **Prerequisites:** Complete KYB via Onboarding endpoints before initiating
      money movement.

      **Related:** Onboarding, Recipients, Transactions, Accounts, Wallets
  - name: Wallets
    description: >-
      Manage wallets, balances, and wallet-to-signer-group relationships for
      custody and movement controls.


      **Prerequisites:** Customer must exist. Configure signer groups before
      policy-enforced workflows.

      **Related:** Signer Groups, Policies, Transactions, Customers
  - name: Transactions
    description: >-
      Create, cancel, and retrieve transaction records across account and wallet
      flows.


      **Prerequisites:** Accounts or destinations must be configured based on
      flow type.

      **Related:** Accounts, Recipients, Policies, Events
  - name: Recipients
    description: >-
      Manage recipient entities and destination rails used by customers for
      payouts and transfers.


      **Prerequisites:** Customer must be onboarded and active.

      **Related:** Customers, Transactions, Accounts, Onboarding
  - name: Accounts
    description: >-
      Manage account resources used for onramp, offramp, and swap operations.


      **Prerequisites:** Customer must be created and network/asset constraints
      must be known.

      **Related:** Customers, Transactions, Auto Transactions, Info
  - name: Auto Transactions
    description: >-
      Manage automated transaction configurations and execution history for
      account automation workflows.


      **Prerequisites:** Source account must exist and be configured for
      automation.

      **Related:** Accounts, Transactions, Events
  - name: Onboarding
    description: >-
      Manage KYB/KYC onboarding lifecycle, application documents, attestations,
      and verification steps.


      **Prerequisites:** Customer context and required entity/application
      metadata.

      **Related:** Customers, Exceptions, Recipients, Transactions
  - name: Policies
    description: >-
      Define and manage policy objects and rules used for transaction governance
      and risk controls.


      **Prerequisites:** Wallet and signer group resources should be configured
      for enforcement scenarios.

      **Related:** Wallets, Signer Groups, Transactions
  - name: Signer Groups
    description: >-
      Manage signer groups and signer assignments for multi-party authorization
      models.


      **Prerequisites:** Wallets should exist before linking signer groups.

      **Related:** Wallets, Policies, Transactions
  - name: Authentication
    description: >-
      Manage API authentication credentials and key lifecycle for platform
      access.


      **Prerequisites:** Client organization must be provisioned.

      **Related:** Users, Info
  - name: Users
    description: >-
      Manage client users, roles, and identity metadata for platform access
      control.


      **Prerequisites:** Auth credentials and client context must be
      established.

      **Related:** Authentication
  - name: Webhooks
    description: >-
      Manage outbound webhook targets and delivery configuration for event
      notifications.


      **Prerequisites:** Subscriber endpoint must be reachable and secured.

      **Related:** Events, Authentication
  - name: Payouts
    description: >-
      Manage where Dakota sends your accrued developer-fee payouts.


      **Prerequisites:** Auth credentials and client context must be
      established.

      **Related:** Events
  - name: Events
    description: >-
      Retrieve event records emitted by platform operations for audit and
      troubleshooting.


      **Prerequisites:** Requesting client must have access to referenced
      resources.

      **Related:** Webhooks, Transactions, Onboarding
  - name: Info
    description: >-
      Read platform capability metadata, such as supported rails, networks, and
      assets.


      **Prerequisites:** Valid authentication headers.

      **Related:** Accounts, Transactions
  - name: Sandbox
    description: >-
      Trigger sandbox-only simulation endpoints for safe end-to-end integration
      testing with synthetic data. The sandbox host
      (`https://api.platform.sandbox.dakota.xyz`) also accepts a family of
      `X-Sandbox-*` request headers on most write endpoints (`Customers`,
      `Accounts`, `Transactions`, simulate endpoints) that let integrators drive
      deterministic failure modes — pick a preset via `X-Sandbox-Scenario`, or
      compose a custom one with
      `X-Sandbox-Error-Step`/`X-Sandbox-Error-Status`/`X-Sandbox-Error-Message`.
      `X-Sandbox-Instant-Completion` collapses async flows to a single
      synchronous step, and `X-Sandbox-Skip-Auto-Approval` keeps newly created
      KYB applications in `pending` for manual-review testing. All `X-Sandbox-*`
      headers are ignored in production.


      **Prerequisites:** Sandbox environment and test customer data.

      **Related:** Customers, Accounts, Transactions, Onboarding
paths:
  /events:
    get:
      tags:
        - Events
      summary: List events
      description: >
        Returns a paginated event stream for the authenticated client for audit
        and operational troubleshooting.


        `customer.kyb_status.updated` events may include a `reason_code` field
        in `data.object` when the status change is driven by the
        Proof-of-Address (PoA) flow:

        - `pending_proof_of_address` — emitted on freeze when the customer's
        rolling 7-day inbound volume exceeds the PoA-required threshold and no
        PoA is on file.

        - `proof_of_address_rejected` — emitted when compliance rejects a
        submitted PoA document.

        - `proof_of_address_approved` — emitted when compliance approves a
        submitted PoA, unfreezing the customer.


        Other `customer.kyb_status.*` events do not include `reason_code`.
      operationId: listEvents
      parameters:
        - $ref: '#/components/parameters/StartingAfterParam'
        - $ref: '#/components/parameters/EndingBeforeParam'
        - $ref: '#/components/parameters/LimitParam'
      responses:
        '200':
          description: A list of events
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedEventResponse'
              examples:
                event_stream:
                  summary: Paginated event stream using the canonical webhook envelope
                  value:
                    data:
                      - id: 1NFHrqBHb3cTfLVkFSGmHZqdDPi
                        type: transaction.auto.updated
                        created: 1735689600
                        api_version: 1.0.0
                        data:
                          object:
                            id: 1NFHrqBHb3cTfLVkFSGmHZqdDPi
                            auto_account_id: 1NFHrqBHb3cTfLVkFSGmHZqdDPj
                            status: completed
                        metadata:
                          source: platform
                    meta:
                      total_count: 100
                      has_more_after: true
                      has_more_before: false
                outbound_event_catalog:
                  summary: Canonical payload examples for all outbound event types
                  value:
                    data:
                      - id: 1NFHrqBHb3cTfLVkFSGmHZqdDPi
                        type: user.created
                        created: 1735689600
                        api_version: 1.0.0
                        data:
                          object:
                            user_id: 1NFHrqBHb3cTfLVkFSGmHZqdDPu
                      - id: 1NFHrqBHb3cTfLVkFSGmHZqdDPj
                        type: user.updated
                        created: 1735689601
                        api_version: 1.0.0
                        data:
                          object:
                            user_id: 1NFHrqBHb3cTfLVkFSGmHZqdDPu
                            email: user.updated@example.com
                      - id: 1NFHrqBHb3cTfLVkFSGmHZqdDPk
                        type: user.deleted
                        created: 1735689602
                        api_version: 1.0.0
                        data:
                          object:
                            user_id: 1NFHrqBHb3cTfLVkFSGmHZqdDPu
                      - id: 1NFHrqBHb3cTfLVkFSGmHZqdDPl
                        type: api_key.created
                        created: 1735689603
                        api_version: 1.0.0
                        data:
                          object:
                            key_id: 1NFHrqBHb3cTfLVkFSGmHZqdDPv
                      - id: 1NFHrqBHb3cTfLVkFSGmHZqdDPm
                        type: api_key.deleted
                        created: 1735689604
                        api_version: 1.0.0
                        data:
                          object:
                            key_id: 1NFHrqBHb3cTfLVkFSGmHZqdDPv
                      - id: 1NFHrqBHb3cTfLVkFSGmHZqdDPn
                        type: customer.created
                        created: 1735689605
                        api_version: 1.0.0
                        data:
                          object:
                            customer_id: 1NFHrqBHb3cTfLVkFSGmHZqdDPw
                            name: Acme Corp
                            customer_type: business
                      - id: 1NFHrqBHb3cTfLVkFSGmHZqdDPo
                        type: customer.updated
                        created: 1735689606
                        api_version: 1.0.0
                        data:
                          object:
                            customer_id: 1NFHrqBHb3cTfLVkFSGmHZqdDPw
                            name: Acme Holdings
                            customer_type: business
                          previous_attributes:
                            name: Acme Corp
                      - id: 1NFHrqBHb3cTfLVkFSGmHZqdDPp
                        type: customer.kyb_link.created
                        created: 1735689607
                        api_version: 1.0.0
                        data:
                          object:
                            customer_id: 1NFHrqBHb3cTfLVkFSGmHZqdDPw
                            link_type: hosted
                            url: https://example.test/kyb
                            status: active
                      - id: 1NFHrqBHb3cTfLVkFSGmHZqdDPq
                        type: customer.kyb_link.updated
                        created: 1735689608
                        api_version: 1.0.0
                        data:
                          object:
                            customer_id: 1NFHrqBHb3cTfLVkFSGmHZqdDPw
                            link_type: hosted
                            url: https://example.test/kyb
                            status: expired
                      - id: 1NFHrqBHb3cTfLVkFSGmHZqdDPr
                        type: customer.kyb_status.created
                        created: 1735689609
                        api_version: 1.0.0
                        data:
                          object:
                            customer_id: 1NFHrqBHb3cTfLVkFSGmHZqdDPw
                            kyb_status: in_review
                      - id: 1NFHrqBHb3cTfLVkFSGmHZqdDPs
                        type: customer.kyb_status.updated
                        created: 1735689610
                        api_version: 1.0.0
                        data:
                          object:
                            customer_id: 1NFHrqBHb3cTfLVkFSGmHZqdDPw
                            kyb_status: approved
                            reason_code: proof_of_address_approved
                      - id: 1NFHrqBHb3cTfLVkFSGmHZqdDQa
                        type: customer.kyb_status.updated
                        created: 1735689610
                        api_version: 1.0.0
                        data:
                          object:
                            customer_id: 1NFHrqBHb3cTfLVkFSGmHZqdDPw
                            kyb_status: frozen
                            reason_code: pending_proof_of_address
                      - id: 1NFHrqBHb3cTfLVkFSGmHZqdDPt
                        type: auto_account.created
                        created: 1735689611
                        api_version: 1.0.0
                        data:
                          object:
                            id: 1NFHrqBHb3cTfLVkFSGmHZqdDPx
                            customer_id: 1NFHrqBHb3cTfLVkFSGmHZqdDPw
                            status: active
                      - id: 1NFHrqBHb3cTfLVkFSGmHZqdDPu
                        type: auto_account.updated
                        created: 1735689612
                        api_version: 1.0.0
                        data:
                          object:
                            id: 1NFHrqBHb3cTfLVkFSGmHZqdDPx
                            customer_id: 1NFHrqBHb3cTfLVkFSGmHZqdDPw
                            status: inactive
                      - id: 1NFHrqBHb3cTfLVkFSGmHZqdDPv
                        type: auto_account.deleted
                        created: 1735689613
                        api_version: 1.0.0
                        data:
                          object:
                            id: 1NFHrqBHb3cTfLVkFSGmHZqdDPx
                      - id: 1NFHrqBHb3cTfLVkFSGmHZqdDPw
                        type: transaction.auto.created
                        created: 1735689614
                        api_version: 1.0.0
                        data:
                          object:
                            id: 1NFHrqBHb3cTfLVkFSGmHZqdDPy
                            auto_account_id: 1NFHrqBHb3cTfLVkFSGmHZqdDPx
                            status: pending
                      - id: 1NFHrqBHb3cTfLVkFSGmHZqdDPx
                        type: transaction.auto.updated
                        created: 1735689615
                        api_version: 1.0.0
                        data:
                          object:
                            id: 1NFHrqBHb3cTfLVkFSGmHZqdDPy
                            auto_account_id: 1NFHrqBHb3cTfLVkFSGmHZqdDPx
                            status: completed
                      - id: 1NFHrqBHb3cTfLVkFSGmHZqdDPy
                        type: transaction.one_off.created
                        created: 1735689616
                        api_version: 1.0.0
                        data:
                          object:
                            id: 1NFHrqBHb3cTfLVkFSGmHZqdDPz
                            customer_id: 1NFHrqBHb3cTfLVkFSGmHZqdDPw
                            status: pending
                      - id: 1NFHrqBHb3cTfLVkFSGmHZqdDPz
                        type: transaction.one_off.updated
                        created: 1735689617
                        api_version: 1.0.0
                        data:
                          object:
                            id: 1NFHrqBHb3cTfLVkFSGmHZqdDPz
                            customer_id: 1NFHrqBHb3cTfLVkFSGmHZqdDPw
                            status: completed
                      - id: 1NFHrqBHb3cTfLVkFSGmHZqdDQ0
                        type: recipient.created
                        created: 1735689618
                        api_version: 1.0.0
                        data:
                          object:
                            recipient_id: 1NFHrqBHb3cTfLVkFSGmHZqdDQ2
                            customer_id: 1NFHrqBHb3cTfLVkFSGmHZqdDPw
                      - id: 1NFHrqBHb3cTfLVkFSGmHZqdDQ1
                        type: recipient.updated
                        created: 1735689619
                        api_version: 1.0.0
                        data:
                          object:
                            recipient_id: 1NFHrqBHb3cTfLVkFSGmHZqdDQ2
                            status: active
                      - id: 1NFHrqBHb3cTfLVkFSGmHZqdDQ2
                        type: recipient.deleted
                        created: 1735689620
                        api_version: 1.0.0
                        data:
                          object:
                            recipient_id: 1NFHrqBHb3cTfLVkFSGmHZqdDQ2
                      - id: 1NFHrqBHb3cTfLVkFSGmHZqdDQ3
                        type: destination.created
                        created: 1735689621
                        api_version: 1.0.0
                        data:
                          object:
                            destination_id: 1NFHrqBHb3cTfLVkFSGmHZqdDQ4
                            recipient_id: 1NFHrqBHb3cTfLVkFSGmHZqdDQ2
                      - id: 1NFHrqBHb3cTfLVkFSGmHZqdDQ4
                        type: destination.deleted
                        created: 1735689622
                        api_version: 1.0.0
                        data:
                          object:
                            destination_id: 1NFHrqBHb3cTfLVkFSGmHZqdDQ4
                      - id: 1NFHrqBHb3cTfLVkFSGmHZqdDQ5
                        type: target.created
                        created: 1735689623
                        api_version: 1.0.0
                        data:
                          object:
                            target_id: 1NFHrqBHb3cTfLVkFSGmHZqdDQ6
                            global: false
                      - id: 1NFHrqBHb3cTfLVkFSGmHZqdDQ6
                        type: target.updated
                        created: 1735689624
                        api_version: 1.0.0
                        data:
                          object:
                            target_id: 1NFHrqBHb3cTfLVkFSGmHZqdDQ6
                            global: true
                      - id: 1NFHrqBHb3cTfLVkFSGmHZqdDQ7
                        type: target.deleted
                        created: 1735689625
                        api_version: 1.0.0
                        data:
                          object:
                            target_id: 1NFHrqBHb3cTfLVkFSGmHZqdDQ6
                      - id: 1NFHrqBHb3cTfLVkFSGmHZqdDQ8
                        type: exception.created
                        created: 1735689626
                        api_version: 1.0.0
                        data:
                          object:
                            exception_id: 1NFHrqBHb3cTfLVkFSGmHZqdDQ9
                      - id: 1NFHrqBHb3cTfLVkFSGmHZqdDQ9
                        type: exception.cleared
                        created: 1735689627
                        api_version: 1.0.0
                        data:
                          object:
                            exception_id: 1NFHrqBHb3cTfLVkFSGmHZqdDQ9
                      - id: 1NFHrqBHb3cTfLVkFSGmHZqdDQA
                        type: bvnk.onboarding.created
                        created: 1735689628
                        api_version: 1.0.0
                        data:
                          object:
                            customer_id: 1NFHrqBHb3cTfLVkFSGmHZqdDPw
                      - id: 1NFHrqBHb3cTfLVkFSGmHZqdDQB
                        type: bvnk.onboarding.updated
                        created: 1735689629
                        api_version: 1.0.0
                        data:
                          object:
                            customer_id: 1NFHrqBHb3cTfLVkFSGmHZqdDPw
                      - id: 1NFHrqBHb3cTfLVkFSGmHZqdDQC
                        type: wallet.created
                        created: 1735689630
                        api_version: 1.0.0
                        data:
                          object:
                            wallet_id: 1NFHrqBHb3cTfLVkFSGmHZqdDQD
                            status: active
                      - id: 1NFHrqBHb3cTfLVkFSGmHZqdDQD
                        type: wallet.updated
                        created: 1735689631
                        api_version: 1.0.0
                        data:
                          object:
                            wallet_id: 1NFHrqBHb3cTfLVkFSGmHZqdDQD
                            status: active
                      - id: 1NFHrqBHb3cTfLVkFSGmHZqdDQE
                        type: wallet.signer_group.created
                        created: 1735689632
                        api_version: 1.0.0
                        data:
                          object:
                            wallet_id: 1NFHrqBHb3cTfLVkFSGmHZqdDQD
                            signer_group_id: 1NFHrqBHb3cTfLVkFSGmHZqdDQF
                      - id: 1NFHrqBHb3cTfLVkFSGmHZqdDQF
                        type: wallet.signer_group.updated
                        created: 1735689633
                        api_version: 1.0.0
                        data:
                          object:
                            wallet_id: 1NFHrqBHb3cTfLVkFSGmHZqdDQD
                            signer_group_id: 1NFHrqBHb3cTfLVkFSGmHZqdDQF
                      - id: 1NFHrqBHb3cTfLVkFSGmHZqdDQG
                        type: wallet.policy.created
                        created: 1735689634
                        api_version: 1.0.0
                        data:
                          object:
                            wallet_id: 1NFHrqBHb3cTfLVkFSGmHZqdDQD
                            policy_id: 1NFHrqBHb3cTfLVkFSGmHZqdDQH
                      - id: 1NFHrqBHb3cTfLVkFSGmHZqdDQH
                        type: wallet.policy.updated
                        created: 1735689635
                        api_version: 1.0.0
                        data:
                          object:
                            wallet_id: 1NFHrqBHb3cTfLVkFSGmHZqdDQD
                            policy_id: 1NFHrqBHb3cTfLVkFSGmHZqdDQH
                      - id: 1NFHrqBHb3cTfLVkFSGmHZqdDQI
                        type: wallet.transaction.created
                        created: 1735689636
                        api_version: 1.0.0
                        data:
                          object:
                            transaction_id: 1NFHrqBHb3cTfLVkFSGmHZqdDQJ
                            wallet_id: 1NFHrqBHb3cTfLVkFSGmHZqdDQD
                            status: pending
                      - id: 1NFHrqBHb3cTfLVkFSGmHZqdDQJ
                        type: wallet.transaction.updated
                        created: 1735689637
                        api_version: 1.0.0
                        data:
                          object:
                            transaction_id: 1NFHrqBHb3cTfLVkFSGmHZqdDQJ
                            wallet_id: 1NFHrqBHb3cTfLVkFSGmHZqdDQD
                            status: submitted
                      - id: 1NFHrqBHb3cTfLVkFSGmHZqdDQK
                        type: wallet.deposit
                        created: 1735689638
                        api_version: 1.0.0
                        data:
                          object:
                            wallet_id: 1NFHrqBHb3cTfLVkFSGmHZqdDQD
                            transaction_hash: >-
                              0xc5398a1e7e0a2c0f9e8d4b2a3c5d7e8f9a0b1c2d3e4f5a6b7c8d9e0f1a2b3c4d
                            chain_id: eip155:84532
                            sender: '0x9a81920CF1DbEef7a4B9eAB161658A5F280f8792'
                            recipient: '0x7ba84eAfC6FCeECFE5192841F660b6c89e216b5f'
                            amount: '1500000'
                            asset:
                              id: USDC
                              name: USD Coin
                              network_id: base-sepolia
                              contract_address: '0x036CbD53842c5426634e7929541eC2318f3dCF7e'
                              decimals: 6
                              token_standard: erc20
                    meta:
                      total_count: 39
                      has_more_after: false
                      has_more_before: false
        '400':
          description: Invalid request
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
              example:
                type: https://docs.dakota.xyz/api-reference/errors#invalid-request
                title: Invalid request
                status: 400
                detail: Invalid request
                instance: https://api.platform.dakota.xyz/events
                request_id: req_01hzy6y7v8w9x0y1z2a3b4c5d6
        '401':
          description: Unauthorized
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
              example:
                type: >-
                  https://docs.dakota.xyz/api-reference/errors#authentication-error
                title: Unauthorized
                status: 401
                detail: Unauthorized
                instance: https://api.platform.dakota.xyz/events
                request_id: req_01hzy6y7v8w9x0y1z2a3b4c5d6
        '403':
          description: Forbidden
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
              example:
                type: https://docs.dakota.xyz/api-reference/errors#forbidden
                title: Forbidden
                status: 403
                detail: Forbidden
                instance: https://api.platform.dakota.xyz/events
                request_id: req_01hzy6y7v8w9x0y1z2a3b4c5d6
        default:
          description: Unexpected error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
              example:
                type: https://docs.dakota.xyz/api-reference/errors#internal-error
                title: Unexpected error
                status: 500
                detail: Unexpected error
                instance: https://api.platform.dakota.xyz/events
                request_id: req_01hzy6y7v8w9x0y1z2a3b4c5d6
      externalDocs:
        description: Read full guide in docs
        url: https://docs.dakota.xyz/api-reference/events/list-events
components:
  parameters:
    StartingAfterParam:
      name: starting_after
      in: query
      required: false
      description: >-
        A cursor for use in pagination. `starting_after` is a KSUID for the
        object you are listing that defines your place in the list. For
        instance, if you make a list request and receive 100 objects, ending
        with ID `2B5J8KZ9N7M1K3P6Q8R4T7V9`, your subsequent call can include
        `starting_after=2B5J8KZ9N7M1K3P6Q8R4T7V9` in order to fetch the next
        page of the list.
      schema:
        $ref: '#/components/schemas/KSUID'
    EndingBeforeParam:
      name: ending_before
      in: query
      required: false
      description: >-
        A cursor for use in pagination. `ending_before` is a KSUID for the
        object you are listing that defines your place in the list. For
        instance, if you make a list request and receive 100 objects, starting
        with ID `2B5J8KZ9N7M1K3P6Q8R4T7V9`, your subsequent call can include
        `ending_before=2B5J8KZ9N7M1K3P6Q8R4T7V9` in order to fetch the previous
        page of the list.
      schema:
        $ref: '#/components/schemas/KSUID'
    LimitParam:
      name: limit
      in: query
      required: false
      description: >-
        A limit on the number of objects to be returned. Limit can range between
        1 and 100, and the default is 20.
      schema:
        type: integer
        minimum: 1
        maximum: 100
        default: 20
  schemas:
    PaginatedEventResponse:
      allOf:
        - $ref: '#/components/schemas/PaginatedListResponse'
        - type: object
          properties:
            data:
              type: array
              items:
                $ref: '#/components/schemas/Event'
    ProblemDetails:
      type: object
      required:
        - type
        - title
        - status
      description: |
        Error response following RFC 9457 Problem Details.
        Public API error responses use this format.
      example:
        type: https://docs.dakota.xyz/api-reference/errors#not-found
        title: Customer Not Found
        status: 404
        detail: Customer cst_2abc123 was not found in your organization.
        instance: https://api.platform.dakota.xyz/customers/cst_2abc123
        request_id: req_7f3a8b2c
      properties:
        type:
          type: string
          format: uri
          description: |
            URI reference identifying the problem type.
            Resolves to human-readable documentation.
          example: https://docs.dakota.xyz/api-reference/errors#not-found
        title:
          type: string
          description: >-
            Short, human-readable summary of the problem type. Stable across
            occurrences.
          example: Customer Not Found
        status:
          type: integer
          description: HTTP status code for this occurrence.
          example: 404
        detail:
          type: string
          description: Human-readable explanation specific to this occurrence.
          example: Customer cst_2abc123 was not found in your organization.
        instance:
          type: string
          format: uri
          description: The request path that triggered this error.
          example: https://api.platform.dakota.xyz/customers/cst_2abc123
        request_id:
          type: string
          description: Unique request identifier. Include when contacting support.
          example: req_7f3a8b2c
        errors:
          type: array
          description: Field-level validation errors (present for validation failures).
          items:
            $ref: '#/components/schemas/ValidationError'
    KSUID:
      type: string
      title: KSUID
      description: >-
        KSUID is a 27-character globally unique ID that combines a timestamp
        with a random component. Used for all entity identifiers in the Dakota
        platform.
      pattern: ^[0-9A-Za-z]{27}$
      minLength: 27
      maxLength: 27
      example: 1NFHrqBHb3cTfLVkFSGmHZqdDPi
    PaginatedListResponse:
      type: object
      description: Wrapper for paginated list responses
      required:
        - data
        - meta
      properties:
        data:
          type: array
          description: List of objects returned by the API
          items:
            type: object
        meta:
          $ref: '#/components/schemas/Meta'
    Event:
      type: object
      description: >-
        Canonical event envelope used for outbound webhooks and event stream
        retrieval.
      required:
        - id
        - type
        - created
        - api_version
        - data
      properties:
        id:
          $ref: '#/components/schemas/KSUID'
        type:
          $ref: '#/components/schemas/EventType'
        created:
          type: integer
          description: Unix timestamp in seconds when the event was emitted.
          example: 1735689600
        api_version:
          type: string
          description: Version of the event envelope schema.
          example: 1.0.0
        request:
          $ref: '#/components/schemas/EventRequest'
        data:
          $ref: '#/components/schemas/EventData'
        metadata:
          type: object
          description: >-
            Optional event metadata with implementation-specific, non-provider
            fields.
          additionalProperties: true
    ValidationError:
      type: object
      required:
        - field
        - message
      properties:
        field:
          type: string
          description: Field path using dot notation for nested fields.
          example: bank_account.routing_number
        message:
          type: string
          description: Human-readable description of the field error.
          example: Routing number must be exactly 9 digits
        code:
          type: string
          description: Machine-readable error code for this field.
          example: invalid_format
    Meta:
      type: object
      description: Meta information about the response
      required:
        - total_count
        - has_more_after
        - has_more_before
      properties:
        total_count:
          type: integer
          description: Total number of items available
          example: 100
        has_more_after:
          type: boolean
          description: Indicates whether there are more items that follow this set.
          example: true
        has_more_before:
          type: boolean
          description: Indicates whether there are more items that precede this set.
          example: false
    EventType:
      type: string
      description: Canonical outbound event type identifier.
      enum:
        - user.created
        - user.updated
        - user.deleted
        - api_key.created
        - api_key.deleted
        - customer.created
        - customer.updated
        - customer.kyb_link.created
        - customer.kyb_link.updated
        - customer.kyb_status.created
        - customer.kyb_status.updated
        - customer.kyb_application.submitted
        - customer.capability_status.updated
        - auto_account.created
        - auto_account.updated
        - auto_account.deleted
        - transaction.auto.created
        - transaction.auto.updated
        - transaction.one_off.created
        - transaction.one_off.updated
        - recipient.created
        - recipient.updated
        - recipient.deleted
        - destination.created
        - destination.deleted
        - target.created
        - target.updated
        - target.deleted
        - exception.created
        - exception.cleared
        - bvnk.onboarding.created
        - bvnk.onboarding.updated
        - wallet.created
        - wallet.updated
        - wallet.signer_group.created
        - wallet.signer_group.updated
        - wallet.policy.created
        - wallet.policy.updated
        - wallet.transaction.created
        - wallet.transaction.updated
        - wallet.deposit
        - fee_payout_destination.updated
        - fee_payout_destination.deleted
        - scheduled_payment.failed
      example: transaction.auto.updated
    EventRequest:
      type: object
      description: >-
        Request metadata for the original operation that emitted the event, when
        available.
      properties:
        id:
          type: string
          nullable: true
          description: Request identifier of the originating API call.
          example: req_01hzy6y7v8w9x0y1z2a3b4c5d6
        idempotency_key:
          type: string
          nullable: true
          description: Idempotency key used on the originating request, if provided.
          example: 8ad0a5e9-2e1c-49c4-a2ba-0f6fdd49a3a6
    EventData:
      type: object
      required:
        - object
      properties:
        object:
          type: object
          description: >-
            Event resource snapshot after provider-field sanitization. The shape
            varies by event type; see the `GET /events` example responses for
            representative payloads.
          additionalProperties: true
        previous_attributes:
          type: object
          description: Sparse set of attributes before an update, when available.
          additionalProperties: true
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key

````