Telemetry destinations
Configure one organization-scoped OTLP/HTTP JSON trace collector. Reads need org_config.read; create, test, delete, and replay operations need org_config.write. Collector URLs must be public HTTPS, and authentication headers are never returned.
Endpoints
| Method and path | Result |
|---|---|
GET /v1/telemetry-destinations |
{ "destinations": [...] } with id, url_hint, created_at, last_delivered_at, last_error, pending_spans, and dropped_spans |
POST /v1/telemetry-destinations |
201 with id and url_hint; one destination per organization |
POST /v1/telemetry-destinations/:id/test |
Sends a test span; { "delivered": true } when accepted |
DELETE /v1/telemetry-destinations/:id |
204 when removed, 404 when absent |
GET /v1/telemetry-destinations/:id/deliveries |
The latest 50 delivery records, without payloads or authentication headers |
POST /v1/telemetry-destinations/:id/deliveries/:delivery/replay |
Queues a failed delivery; returns { "queued": true, "id": "..." } |
Create a destination
{
"url": "https://collector.example.com/v1/traces",
"headers": { "Authorization": "Bearer <collector-token>" }
}
Supply authentication headers from a secret store. Do not put credentials in the URL. At most ten headers are accepted; transport headers, trace-context headers, cookies, and values containing line breaks are refused. An existing destination returns 409 DESTINATION_EXISTS; remove it before configuring another.
Delivery outcomes
The test returns 502 EXPORT_FAILED if the collector does not accept the span. Delivery history includes pending, delivered, failed, and partial. Failed deliveries can be replayed. A partially accepted OTLP batch cannot be replayed because the collector does not identify each rejected span. Replay can return 409 NOT_REPLAYABLE or 409 QUEUE_FULL.
Connect a collector and propagate trace context. Export is sampled and best effort at observation time; it does not replace stored evidence.