---
title: "Create an OTLP destination"
method: POST
path: "/telemetry/destinations"
tags: ["Browser Telemetry"]
---

# Create an OTLP destination

`POST /telemetry/destinations`

## Request

- Base URL: `https://api.onkernel.com`
- URL: `https://api.onkernel.com/telemetry/destinations`
- Auth: HTTP bearer

Create an OTLP export destination in the authenticated organization. Names must be unique within the organization. Requires an organization-scoped credential or dashboard authentication; project-scoped credentials receive a 403.

## Request body

- OTLPDestinationCreateRequest
  - `description` string
  - `endpoint` string, required: Base endpoint of the OTLP/HTTP collector, without a signal path. Kernel appends the signal path itself, so pass `https://api.honeycomb.io` rather than `https://api.honeycomb.io/v1/logs`. If your provider's docs give you a signal-specific URL, drop the trailing `/v1/logs`, `/v1/traces`, or `/v1/metrics` — an endpoint that already carries one is rejected. Must be http or https, must resolve to a public address, and must carry no query string or fragment. Examples: `https://api.honeycomb.io`, `https://otlp-gateway-prod-us-east-0.grafana.net/otlp`, `https://otlp.datadoghq.com` (Datadog's OTLP intake for US1, not its logs intake).
  - `headers` object: Headers sent with each export request, typically an ingestion key. Encrypted at rest and returned redacted. Names and values must be valid HTTP header tokens, and the names and values together cannot exceed 8192 bytes. Names are matched case-insensitively and stored canonicalized, so supplying two spellings of one header is rejected.
  - `name` string, required: Unique within the organization.

## Response `201`

OTLP destination created

- OTLPDestination: An OTLP endpoint to export browser session telemetry to. Reference one from `telemetry.export.otlp.destination` when creating a browser to export that session's captured telemetry to it.
  - `consecutive_failures` integer, required: Failed deliveries since the last success, as observed by the relay process that wrote the latest outcome. Zero means the most recently recorded outcome succeeded.
  - `created_at` string, date-time, required
  - `description` string
  - `endpoint` string, required: OTLP/HTTP endpoint telemetry is sent to.
  - `headers` object, required: Headers sent with each export request. Names are returned in canonical form (`Authorization`, not `authorization`). Non-dashboard reads return values redacted as empty strings, so the keys are visible but the credentials are not. Dashboard reads return the stored values.
  - `id` string, required
  - `last_error` string: Sanitized class of the delivery failure recorded at `last_error_at`. It is retained after a later success, so its presence does not mean the destination is currently failing. Response bodies, endpoint URLs, credentials, and raw transport errors are never returned.
  - `last_error_at` string, date-time: Timestamp of the most recent failed delivery. It is retained after a later success, so it can predate `last_export_at`. Read `consecutive_failures` to tell whether the destination is currently failing.
  - `last_export_at` string, date-time: Timestamp of the most recent successful delivery. Moves only on success.
  - `name` string, required: Unique within the organization. Usable in place of the ID when selecting a destination, so it cannot be shaped like an ID.
  - `updated_at` string, date-time, required

## Other responses

- `400`: Bad Request – invalid input
- `401`: Unauthorized – missing or invalid authorization token
- `403`: Forbidden – insufficient permissions or plan
- `409`: Conflict – resource already exists
- `500`: Internal Server Error

## Changes

- **2026-10-16** `03b369edee49`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/kernel/apis/kernel-api/changes/telemetry/destinations/post.md)

---

[API](https://skmtc.dev/kernel/apis/kernel-api.md) - [All operations](https://skmtc.dev/kernel/apis/kernel-api/llms.txt) - [OpenAPI document](https://skmtc.dev/kernel/apis/kernel-api/revisions/0f6cf4f58fe6?raw)
