Base endpoint
Both forms carry the
/otlp prefix because nginx serves OTLP under it and
strips it before forwarding, so the receiver still sees /v1/logs. Dropping the
prefix is the most common setup mistake: the request reaches the dashboard
instead of the receiver and comes back as an HTML 404 rather than an ingest
error.
Get Started in the dashboard shows the exact base endpoint for your
deployment next to a license key you create there, with copy buttons, and
then watches for your first records. Where these pages write
$OIQ_ENDPOINT, that page has the real value.Paths
Over HTTP:
Over gRPC, on port 4317: the standard OTLP logs, metrics and trace services.
Where both are served, they accept the same dashboard-issued key and enforce
the same rate limits, quotas and per-signal entitlements — the only difference is
that gRPC metadata keys are lower-case, so the header is
x-license-key.
Authentication
Send your license key one of two ways:X-License-Key takes precedence if both are present. Header names are
case-insensitive; the key value is not.
One reason to prefer the
X-License-Key header. Rate limiting buckets
requests by that header’s value, falling back to source IP when it is absent.
Authenticating with Authorization: Bearer therefore shares a rate-limit
bucket with everything else from the same address. If several services egress
through one NAT gateway, they will collectively hit a limit that the per-key
form would have kept separate.Status codes
202 Accepted — success
202 Accepted — success
The batch was published to the pipeline. This is success. It acknowledges
receipt, not storage; data becomes queryable a few seconds later.
400 Bad Request — the payload did not decode
400 Bad Request — the payload did not decode
Causes: malformed protobuf, a body that does not match the declared content
type, or a payload that decodes but violates the OTLP schema.Rejected payloads are copied to a dead-letter queue, so they are recoverable
by an operator.
403 Forbidden — valid key, disallowed request
403 Forbidden — valid key, disallowed request
The signal is not enabled for your account, or the source address is not
permitted.
413 Payload Too Large
413 Payload Too Large
The body exceeded a size cap. See limits.
429 Too Many Requests
429 Too Many Requests
A rate limit was hit. A
Retry-After header gives the wait in seconds.500 / 502 / 503 — retryable
500 / 502 / 503 — retryable
The receiver could not publish to the pipeline. OpenTelemetry SDKs and
Prometheus remote-write both retry these with backoff.
Rate limits
Three limits apply to authenticated HTTP ingest:- 200 requests per second per account, with a burst allowance of 400.
Exceeding it returns
429withRetry-After: 1. - 10,000 requests per minute per account. Exceeding it returns
429withRetry-After: 60. - A global per-key limit, which also returns
429.
Limits and caps
- General ingest
- Prometheus remote-write
- 50 MB maximum request body.
Encodings
OTLP/HTTP accepts:application/jsonapplication/x-protobufapplication/octet-stream— treated as protobuf
Content-Encoding returns 415; a body that fails to decompress returns 400.
Next
Send data with OpenTelemetry
Endpoints, headers and a first request.
Prometheus remote-write
Ship from an existing Prometheus server.