---
title: "OTLP metrics ingest"
method: POST
path: "/v1/metrics"
tags: ["OTLP Ingest"]
---

# OTLP metrics ingest

`POST /v1/metrics`

## Request

- Base URL: `https://agent.getaxonflow.com`
- URL: `https://agent.getaxonflow.com/v1/metrics`
- Auth: none declared. Required headers: `Authorization`
- TypeScript: <https://skmtc.dev/getaxonflow/apis/axonflow-agent-api/docs/v1/metrics/post.ts> (a function with typed inputs; its response is checked against the schema)

OTLP/HTTP `ExportMetricsServiceRequest` ingest for Claude Code
telemetry. Content types: `application/x-protobuf` (default when
the header is empty), `application/protobuf`, or `application/json`;
anything else returns **415**. Success returns 200 with an OTLP
`ExportMetricsServiceResponse` in the request's content type.

**Enterprise only** — community builds return **501** with
`{"error": {"code", "message"}}`. Org/tenant comes from the
authenticated license (Basic auth), never from OTLP resource
attributes.

## Headers

- `Authorization` string, required

## Request body

- object

## Response `200`

OTLP export response (matching request content type)

## Other responses

- `400`: Malformed OTLP payload
- `401`: Missing or invalid authentication. Handler-written 401s use the `{success, error}` envelope; 401s written by the auth middleware use the `{"error": {"code", "message"}}` envelope (JSONError).
- `415`: Unsupported Content-Type
- `501`: Cowork OTLP ingest is not in this deployment's plane set: the Community build, and the Enterprise build in a core-only deployment mode (community, evaluation, community-saas). Both answer the same body.

---

[API](https://skmtc.dev/getaxonflow/apis/axonflow-agent-api.md) - [All operations](https://skmtc.dev/getaxonflow/apis/axonflow-agent-api/llms.txt) - [OpenAPI document](https://skmtc.dev/getaxonflow/apis/axonflow-agent-api/revisions/34d30fcb7fa1?raw)
