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

# Create an OTLP destination

`POST /telemetry/destinations`

Create an OTLP export destination in the resolved project. Names must be unique within the project.

## 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 project.

## 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.
  - `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`). Values are returned redacted as empty strings, so the keys are visible but the credentials are not.
  - `id` string, required
  - `name` string, required — Unique within the project. 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

---

[API](https://skmtc.net/onkernel/apis/kernel-api.md) · [All operations](https://skmtc.net/onkernel/apis/kernel-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/onkernel/kernel-api/revisions/858365328f92/schema)
