---
title: "Ingest metrics via OTLP"
method: POST
path: "/api/{org_id}/v1/metrics"
tags: ["Metrics"]
---

# Ingest metrics via OTLP

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

## 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/metrics`
- Auth: API key in header `Authorization`
- TypeScript: <https://skmtc.dev/openobserve/apis/openobserve-api-http/docs/api/:org_id/v1/metrics/post.ts> (a function with typed inputs; its response is checked against the schema)

Ingests metrics data using OpenTelemetry Protocol (OTLP) format. Supports both Protocol Buffers and JSON content types for OTLP metrics ingestion. This is the standard endpoint for OpenTelemetry SDK and collector integrations to send metrics data.

## Path parameters

- `org_id` string, required

## Request body

- object

## Response `200`

ExportMetricsServiceResponse

- OtlpMetricsExportJson
  - `partialSuccess` object
    - `errorMessage` string
    - `rejectedDataPoints` string

## Other responses

- `206`: ExportMetricsServiceResponse 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)
