Skip to Content
IntegrationsOTLP

Otlp

Already emit OpenTelemetry? You don’t need our SDK. Morse AI accepts standard OTLP directly, so an existing OTel pipeline can point at Morse without adding an SDK dependency to your app.

How it works

Morse’s ingestion is protocol-agnostic: the SDK path and the OTLP path both end up in the same persist function, so a trace looks identical in the UI regardless of how it arrived.

Endpoint

POST https://api.morsehq.dev/otlp/v1/traces

This is HTTP only — there is no gRPC ingest endpoint today. If your exporter is configured for OTLP/gRPC, switch it to OTLP/HTTP and point it at the path above.

Use dev-api.morsehq.dev for the dev environment.

Content types

The endpoint accepts either:

  • application/x-protobuf — standard OTLP protobuf, converted internally and normalized the same way as JSON.
  • application/json — OTLP JSON.

Auth

Send your Morse API key the same way you would for the SDK — as a bearer API key.

curl -X POST https://api.morsehq.dev/otlp/v1/traces \ -H "Authorization: Bearer $MORSE_API_KEY" \ -H "Content-Type: application/json" \ -d @spans.json

Normalization

Every OTLP span is mapped into the same typed span model the SDK produces — agent, llm, tool, http, db, or custom — before it’s persisted. Priority order: an explicit av.span_type attribute, then gen_ai.* attributes, then db.system, then http.method / rpc.system, falling back to the OTLP span kind.

There’s no separate “OTLP view” in the product — traces that arrive this way show up in Traces exactly like SDK-originated traces, with the same filters, the same verdict strip, and the same eval/context tabs.

How to use it

  • Point your existing OTel SDK’s OTLP/HTTP exporter at https://api.morsehq.dev/otlp/v1/traces (or the dev host) with your Morse API key as the bearer token.
  • Send either protobuf or JSON — don’t reconfigure your exporter’s encoding just for Morse.
  • If you use semantic-convention gen_ai.* attributes for LLM calls, they map straight to Morse’s llm span type automatically.
  • Traces — where OTLP-ingested spans show up, alongside SDK-originated ones.
  • MCP endpoint — query that same trace data from an MCP client.
Last updated on