---
title: "Record analytics events"
method: POST
path: "/analytics/events"
tags: ["Analytics"]
---

# Record analytics events

`POST /analytics/events`

## Request

- Base URL: `https://v1.orchestrator.rhinestone.dev/deposit-processor`
- URL: `https://v1.orchestrator.rhinestone.dev/deposit-processor/analytics/events`
- Auth: one of:
  - HTTP bearer
  - none
- TypeScript: <https://skmtc.dev/rhinestonewtf/apis/deposit-service-api/docs/analytics/events/post.ts> (a function with typed inputs; its response is checked against the schema)

Stores a batch of browser analytics events.

## Request body

- AnalyticsEventsRequest
  - `events` AnalyticsEvent[], required
    - union
      - object
        - `event_id` string, uuid, required
        - `session_id` string, uuid, required
        - `sequence` integer, required
        - `type` string, required
        - `timestamp` string, date-time, required
        - `widget_version` string, required
        - `proxy_origin` string, required: Canonical HTTP(S) origin only (for example https://app.example.com), without credentials, path, query, fragment, or trailing slash.
        - `payload` object, required: JSON object limited to 16 KiB serialized, 10 recursive levels, and 4096 characters per key or string value.
        - `modal` 'deposit', required
        - `session_properties` object, required
          - `enabled_funding_methods` string[], required
          - `wallet_integration` 'modal_connected' | 'host_supplied' | 'none', required
          - `fiat_methods` union, required
            - object
              - …
            - object
              - …
          - `asset_migration_providers` string[], required
          - `initial_asset_migration` string, nullable, required
          - `gasless_wallet_flow_enabled` boolean, required
          - `presentation` 'inline' | 'overlay', required
          - `overlay_close_enabled` boolean, required
          - `target_chain` string: CAIP-2 chain identifier (e.g. "eip155:8453")
          - `target_token` string: On-chain token identity for the session target: an EVM or HyperEVM ERC-20 address, a HyperCore spot token id, a Solana mint, a Tron TRC-20 address, a Stellar Asset Contract, or a native-asset sentinel. Hex values are stored lower-cased; base58 and base32 are byte-exact.
          - `prefills` object, required
            - `source_chain` boolean, required
            - `source_token` boolean, required
            - `amount` boolean, required
            - `initial_asset_migration` boolean, required
        - `funding_method` 'wallet' | 'transfer' | 'fiat_onramp' | 'exchange_connect' | 'asset_migration' | 'null', nullable, required
      - object
        - `event_id` string, uuid, required
        - `session_id` string, uuid, required
        - `sequence` integer, required
        - `type` string, required
        - `timestamp` string, date-time, required
        - `widget_version` string, required
        - `proxy_origin` string, required: Canonical HTTP(S) origin only (for example https://app.example.com), without credentials, path, query, fragment, or trailing slash.
        - `payload` object, required: JSON object limited to 16 KiB serialized, 10 recursive levels, and 4096 characters per key or string value.
        - `modal` 'withdraw', required
        - `session_properties` object, required
          - `presentation` 'inline' | 'overlay', required
          - `overlay_close_enabled` boolean, required
          - `target_chain` string: CAIP-2 chain identifier (e.g. "eip155:8453")
          - `target_token` string: On-chain token identity for the session target: an EVM or HyperEVM ERC-20 address, a HyperCore spot token id, a Solana mint, a Tron TRC-20 address, a Stellar Asset Contract, or a native-asset sentinel. Hex values are stored lower-cased; base58 and base32 are byte-exact.
          - `prefills` object, required
            - `target_chain` boolean, required
            - `target_token` boolean, required
            - `recipient` boolean, required
            - `amount` boolean, required
      - object
        - `event_id` string, uuid, required
        - `session_id` string, uuid, required
        - `sequence` integer, required
        - `type` string, required
        - `timestamp` string, date-time, required
        - `widget_version` string, required
        - `proxy_origin` string, required: Canonical HTTP(S) origin only (for example https://app.example.com), without credentials, path, query, fragment, or trailing slash.
        - `payload` object, required: JSON object limited to 16 KiB serialized, 10 recursive levels, and 4096 characters per key or string value.
        - `modal` 'claim', required
        - `session_properties` object, required
          - `presentation` 'inline' | 'overlay', required
          - `overlay_close_enabled` boolean, required
          - `prefills` object, required
            - `transaction_hash` boolean, required
            - `refund_destination` boolean, required

## Response `200`

The complete batch is durably represented

- AnalyticsEventsResponse
  - `accepted` integer, required

## Other responses

- `400`: Malformed or invalid batch
- `401`: A presented credential is invalid or not permitted
- `409`: Session attribution, envelope, event ID, or sequence conflict
- `503`: Analytics persistence is temporarily unavailable

## Changes

- **2026-09-17** `676300ac19ff`: 3 info
  - added the optional property `code` to the response with the `400` status
  - added the optional property `code` to the response with the `401` status
  - added the optional property `code` to the response with the `503` status
- **2026-09-04** `54262a43c6a8`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/rhinestonewtf/apis/deposit-service-api/changes/analytics/events/post.md)

---

[API](https://skmtc.dev/rhinestonewtf/apis/deposit-service-api.md) - [All operations](https://skmtc.dev/rhinestonewtf/apis/deposit-service-api/llms.txt) - [OpenAPI document](https://skmtc.dev/rhinestonewtf/apis/deposit-service-api/revisions/aa1767d704fa?raw)
