> ## Documentation Index
> Fetch the complete documentation index at: https://docs.usetuner.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Receive Traces

> OTLP/HTTP trace receiver.

Status codes are chosen around how OTel exporters behave, not around what reads
nicely. An exporter retries on 5xx and on connection failure, and treats 4xx as
permanent. So anything the sender could fix returns 4xx (no retry storm), and
anything that is our problem must not masquerade as the sender's fault.

Protobuf only. OTLP/JSON encodes trace and span ids as hex while protobuf's JSON
mapping expects base64, so accepting it means a bespoke conversion layer. Both
LiveKit's and Pipecat's HTTP exporters send protobuf, so JSON buys nothing today.



## OpenAPI

````yaml https://api.usetuner.ai/public/openapi.json post /api/v1/traces
openapi: 3.1.0
info:
  title: My Public API
  version: 1.0.0
servers:
  - url: https://api.usetuner.ai
security: []
tags:
  - name: calls
    x-group: Calls
  - name: workspaces
    x-group: Workspaces
  - name: agent-settings
    x-group: Agent Settings
  - name: agents
    x-group: Agents
  - name: simulation
    x-group: Simulation
  - name: traces
    x-group: Traces
  - name: providers
    x-group: Providers
paths:
  /api/v1/traces:
    post:
      tags:
        - traces
      summary: Receive Traces
      description: >-
        OTLP/HTTP trace receiver.


        Status codes are chosen around how OTel exporters behave, not around
        what reads

        nicely. An exporter retries on 5xx and on connection failure, and treats
        4xx as

        permanent. So anything the sender could fix returns 4xx (no retry
        storm), and

        anything that is our problem must not masquerade as the sender's fault.


        Protobuf only. OTLP/JSON encodes trace and span ids as hex while
        protobuf's JSON

        mapping expects base64, so accepting it means a bespoke conversion
        layer. Both

        LiveKit's and Pipecat's HTTP exporters send protobuf, so JSON buys
        nothing today.
      operationId: receive_traces_api_v1_traces_post
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
      security:
        - Bearer: []
components:
  securitySchemes:
    Bearer:
      type: http
      description: >-
        Use Tuner API key (tr_api_...) or user session token. Find your API key
        in Workspace Settings > API Keys.
      scheme: bearer

````