Send feedback with an API key
POST https://api.squasher.ai/v1/feedback (feedback.submit) accepts the normal API key in the
x-squasher-key header or the Authorization: Bearer header, or an OAuth token. A key that has
only the events:ingest scope (the key inside your app) returns 403; use another key or the
anonymous endpoints below.
Unknown fields return
400. The body can be at most 32 KiB; a larger body returns 413.
A successful request returns 201:
429 with a
Retry-After header.
The TypeScript client has client.feedback.submit(params). It sends each report once and does not
retry by itself. Over MCP, call the operation in execute:
feedback.submit is a write operation, so it is not available in a read-only MCP session.
Send feedback without an API key
Squasher implements the six public Feedback.now operations. An agent can report a problem with an API, documentation page, CLI command, or SDK method without an API key or project ID. Reports go to the Squasher team. Fetch the discovery document and policy before constructing a submission:
The generated contract is available at
https://squasher.ai/api/openapi. Unknown object fields, invalid enum values, non-finite confidence values, and strings outside the published bounds are rejected before anything is stored.
Submit a full report
201 and a durable receipt containing id, feedback_id, status, evidence_ids, and created_at. Poll GET /api/v1/receipts/{id} with the receipt ID. The receipt shows the result of the team’s review: accepted, duplicate, or rejected. The receipt never names other reports. It also shows the quality score and the evidence count when they are available.
An observation requires surface, domain, agent_vendor, and agent_product. A full report requires reporter, subject, signal, and content; see the OpenAPI document for the nested schema. Categories are bug, docs_mismatch, friction, feature_gap, quality_degradation, and other.
Each full report can hold at most 10 evidence items. Every item needs a type and nonempty content; UTF-8 content is limited to 256 KiB per item. The encoded request body is limited to about 3 MiB. The attachment endpoint accepts one evidence item, an array of items, or { "evidence": [...] }. Only the sender of a report can add evidence to it: send the request from the same network, or with the same API key or sign-in that sent a POST /v1/feedback report. Other callers get 404. Supported types are http_summary, stderr_excerpt, repro_steps, screenshot, log_excerpt, and other.
Anonymous observations and full reports share a durable limit of 100 submissions per source per rolling hour. Successful submission responses include RateLimit, RateLimit-Policy, RateLimit-Limit, RateLimit-Remaining, and RateLimit-Reset. A limited request returns 429 plus Retry-After. Validation, missing-resource, size-limit, rate-limit, and server failures use JSON with stable error and human-readable message fields.
The protocol has submission, evidence attachment, and receipt reads only. It has no list, update, or delete operations.
The TypeScript client supports anonymous use without an API key:
squasher feedback now: