---
title: "Publish an event into the telemetry stream"
method: POST
path: "/telemetry/events"
---

# Publish an event into the telemetry stream

`POST /telemetry/events`

Injects an event into the telemetry stream, gated by the active telemetry config. Returns 200 with the assigned envelope when the event is admitted, 204 when the event is filtered (no active session or the event's category is disabled), or 400 on validation failure.

## Request body

- PublishEventRequest — Request body for publishing an event into the telemetry stream.
  - `type` string, required — Event type identifier.
  - `category` 'console' | 'network' | 'page' | 'interaction' | 'control' | 'platform' | 'connection' | 'system' | 'screenshot' | 'captcha' | 'monitor' — Event category. Optional and advisory: for a known event `type` the server assigns the category authoritatively and ignores this field. It is only used for unknown custom types, where it is required.
  - `source` BrowserEventSource — Provenance metadata identifying which producer emitted the event.
    - `kind` 'cdp' | 'kernel_api' | 'extension' | 'local_process', required — Event producer. `cdp`: Chrome DevTools Protocol events from the browser. `kernel_api`: Kernel API server (reserved for server-generated events). `extension`: injected Chrome extension. `local_process`: system process running alongside the browser.
    - `event` string — Producer-specific event name (e.g. `Runtime.consoleAPICalled` for CDP-sourced console events).
    - `metadata` object — Producer-specific context (e.g. CDP target/session/frame IDs).
  - `data` unknown

## Response `200`

Event published; envelope carries the assigned sequence.

- TelemetryEnvelope — The envelope assigned to a successfully published event.
  - `seq` integer, required — Process-monotonic sequence number assigned across the lifetime of the server. Use with Last-Event-ID to resume the SSE stream from this point.
  - `event` TelemetryEvent, required — A telemetry event. The wire-level event shape accepted by the publish endpoint and emitted on the SSE stream. Arbitrary `type` strings and `data` payloads are admitted. For browser events emitted by the Kernel image, `data` conforms to the per-type schema documented in the `Browser*Event` / `Browser*EventData` definitions, selected by `type`.
    - `ts` integer — Unix timestamp in microseconds. Defaults to the current time when omitted.
    - `type` string, required — Event type identifier.
    - `category` 'console' | 'network' | 'page' | 'interaction' | 'control' | 'platform' | 'connection' | 'system' | 'screenshot' | 'captcha' | 'monitor' — Event category.
    - `source` BrowserEventSource — Provenance metadata identifying which producer emitted the event.
      - `kind` 'cdp' | 'kernel_api' | 'extension' | 'local_process', required — Event producer. `cdp`: Chrome DevTools Protocol events from the browser. `kernel_api`: Kernel API server (reserved for server-generated events). `extension`: injected Chrome extension. `local_process`: system process running alongside the browser.
      - `event` string — Producer-specific event name (e.g. `Runtime.consoleAPICalled` for CDP-sourced console events).
      - `metadata` object — Producer-specific context (e.g. CDP target/session/frame IDs).
    - `data` unknown
    - `truncated` boolean — Set by the server when the data field was truncated to fit the size limit.

## Other responses

- `204` — Event accepted but filtered by the active telemetry config; not published.
- `400` — Bad Request

## Changes

> 52 revisions in range; 8 could not be searched.

- **2026-06-03** `476130d5c598` — 1 breaking, 5 warning, 7 info
  - removed the enum value `api` of the request property `category`
  - added the new `captcha` enum value to the `event/category` response property for the response status `200`
  - added the new `connection` enum value to the `event/category` response property for the response status `200`
  - added the new `control` enum value to the `event/category` response property for the response status `200`
  - …9 more
- **2026-05-28** `05c448c4e602` — 1 info
  - added the success response with the status `204`
- **2026-05-22** `9a07b5ebd7b8` — 1 warning, 1 info
  - added the new `api` enum value to the `event/category` response property for the response status `200`
  - added the new `api` enum value to the request property `category`
- **2026-05-15** `14ce560a6f1d` — 1 info
  - endpoint added
- **2025-06-27** `f980a92ab23f` — 1 breaking
  - api path removed without deprecation

[Change history](https://skmtc.dev/kernel/apis/kernel-images-api/changes/telemetry/events/post.md)

---

[API](https://skmtc.dev/kernel/apis/kernel-images-api.md) · [All operations](https://skmtc.dev/kernel/apis/kernel-images-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/kernel/kernel-images-api/revisions/7a641fa15a85/schema)
