Ingest API
Public shared ingest terminates TLS on port 443 at https://ingest.fluxtail.io.
Download the Ingest OpenAPI document
Authentication
Section titled “Authentication”Every request uses exactly one receiver-bound token:
Authorization: Bearer ftl_RECEIVER_BOUND_TOKENThe token, account, requested receiver, and protocol must match.
HTTP JSON
Section titled “HTTP JSON”POST /v1/receivers/{receiverId}/logsContent-Type: application/jsonThe body is one JSON object or an array. Success is HTTP 202:
{"accepted":1}OTLP/HTTP logs
Section titled “OTLP/HTTP logs”POST /v1/receivers/{receiverId}/otlp/v1/logsUse 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.
Prometheus text
Section titled “Prometheus text”POST /v1/receivers/{receiverId}/prometheus/metricsUse a Prometheus text or OpenMetrics content type. Success is HTTP 202.
Prometheus remote_write
Section titled “Prometheus remote_write”POST /v1/receivers/{receiverId}/prometheus/api/v1/writeUse Snappy block-compressed remote_write v1 protobuf. Success is HTTP 204.
Errors
Section titled “Errors”| 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.