Skip to main content
Squasher accepts OpenTelemetry data over OTLP/HTTP at https://ingest.squasher.ai. This page is the contract for request paths, media types, responses, limits, and intentional non-goals. For setup and SDK examples, see OpenTelemetry.

Paths and authentication

Use https://ingest.squasher.ai as the base URL. The Setup page also shows a Collector URL. Send OTLP to https://ingest.squasher.ai instead: the rate limit and region routing on this page apply to that endpoint. Authenticate with one of:
  • x-squasher-key: <key>
  • Authorization: Bearer <key>
OTLP requests do not need a project ID. Squasher finds the project from the ingest key.

Request media types

A request without Content-Type is read as JSON. Other media types, and protobuf on /v1/ai, return 415. Matching is case-insensitive. A value such as Application/X-Protobuf; charset=binary is treated as protobuf.

Compression and body size

A gzip body can expand to at most 16 MiB. A larger decompressed body returns 413. An invalid gzip body returns 400.

Success responses

Squasher does not report a rejected subset in partial_success. A 200 means the full request was accepted for storage or for durable replay. Delivery is at least once, so a retry can store a duplicate. Keep stable trace and span IDs.

Error responses

Retry 429 and 5xx with backoff. Do not retry other 4xx responses before you fix the request. A 503 can follow a partial write, so a retry can store some records twice.

Data region

Each project stores its data in one data region. ingest.squasher.ai sends each request to the region of the project that owns the key. Squasher does not store a project’s data in another region. If a request reaches the wrong region, Squasher returns a retryable 503 and stores nothing.

Rate limits

Each project can send 10,000 records per minute by default. Squasher counts each span, log record, and metric point in the request. Above the limit, Squasher returns 429 with Retry-After and X-RateLimit-Limit, X-RateLimit-Remaining, and X-RateLimit-Reset.

What Squasher does with each signal

For attribute rename rules and issue grouping detail, see OpenTelemetry.

Sampling and fidelity

Squasher stores the span traceState value when the exporter sends it. It does not parse W3C tracestate sampling keys such as ot=th, and service request and error counts use the spans Squasher accepted, not adjusted counts. If you sample in your OpenTelemetry Collector, follow Tail sampling so error and slow traces still reach Squasher.

Intentional non-goals

Squasher does not:
  • Accept OTLP over gRPC (port 4317). Use http/protobuf or http/json.
  • Host an OpenTelemetry Collector with processors for customer pipelines. Bring your own Collector when you need processors, then export OTLP/HTTP to Squasher.
  • Offer a customer-facing OTLP export API. Read data through the product UI, REST API, CLI, or MCP.
  • Accept protobuf on /v1/ai. Send JSON to that path, or send AI spans on /v1/traces with the usual GenAI attributes.
Squasher Collector is a host and optional Docker metrics agent that exports OTLP/HTTP metrics to Squasher. It is not a hosted Collector for application OTLP ingest.

Next steps

OpenTelemetry setup

Set exporter variables and connect an SDK or Collector.

Tail sampling

Keep error and slow traces and drop routine ones.

HTTP ingest API

Send events and drain logs without OTLP.

Infrastructure monitoring

Run Squasher Collector for host and Docker metrics.