---
title: "Ingest trace data"
method: POST
path: "/api/{org_id}/v1/traces"
tags: ["Traces"]
---

# Ingest trace data

`POST /api/{org_id}/v1/traces`

## Request

- Base URL: `https://api.openobserve.ai` (the document declares no server; this is the origin it was published from)
- URL: `https://api.openobserve.ai/api/{org_id}/v1/traces`
- Auth: API key in header `Authorization`
- TypeScript: <https://skmtc.dev/openobserve/apis/openobserve-api-http/docs/api/:org_id/v1/traces/post.ts> (a function with typed inputs; its response is checked against the schema)

Accepts and processes distributed tracing data from applications and services. Supports both Protocol Buffers and JSON formats for OTLP (OpenTelemetry Protocol) trace ingestion. Use this endpoint to send trace spans, timing information, and service dependency data for observability and performance monitoring.

## Path parameters

- `org_id` string, required

## Request body

- object

## Response `200`

ExportTraceServiceResponse

- OtlpTracesExportJson
  - `partialSuccess` object
    - `errorMessage` string
    - `rejectedSpans` string

## Other responses

- `206`: ExportTraceServiceResponse with a partial success (JSON requests only)
- `400`: google.rpc.Status: invalid body, unsupported Content-Type, or write rejected (e.g. columns limit)
- `429`: google.rpc.Status: trial period expired
- `500`: google.rpc.Status: internal write error
- `503`: google.rpc.Status: ingester overloaded or unavailable, or ingestion not allowed (cloud)

---

[API](https://skmtc.dev/openobserve/apis/openobserve-api-http.md) - [All operations](https://skmtc.dev/openobserve/apis/openobserve-api-http/llms.txt) - [OpenAPI document](https://skmtc.dev/openobserve/apis/openobserve-api-http/revisions/0529b8a10252?raw)
