Skip to content
FluxtailDocs

Ingest API

Public shared ingest terminates TLS on port 443 at https://ingest.fluxtail.io.

Download the Ingest OpenAPI document

Every request uses exactly one receiver-bound token:

Authorization: Bearer ftl_RECEIVER_BOUND_TOKEN

The token, account, requested receiver, and protocol must match.

POST /v1/receivers/{receiverId}/logs
Content-Type: application/json

The body is one JSON object or an array. Success is HTTP 202:

{"accepted":1}
POST /v1/receivers/{receiverId}/otlp/v1/logs

Use application/json or application/x-protobuf. Optional HTTP gzip encoding is supported. Success is HTTP 200 with the matching OTLP response type.

OTLP/gRPC uses the standard LogsService Export method at ingest.fluxtail.io:443 with the same Bearer metadata.

POST /v1/receivers/{receiverId}/prometheus/metrics

Use a Prometheus text or OpenMetrics content type. Success is HTTP 202.

POST /v1/receivers/{receiverId}/prometheus/api/v1/write

Use Snappy block-compressed remote_write v1 protobuf. Success is HTTP 204.

Status Meaning
400 Malformed payload.
401 Missing, conflicting, or invalid token.
403 Receiver, protocol, or IP policy denied.
404 Unknown route or receiver identity.
413 Body is too large.
415 Unsupported content type or encoding.
429 Account or receiver event limit exceeded.
503 Authentication, Redis rate limiting, or NATS is unavailable.

Authentication completes before ingest reads or decodes the body. Body and record limits are protocol-specific.