Complaintr Docs

API and tools

Submit reports from your software and understand the MCP tool contract.

The public complaint endpoint accepts reports for registered applications. It does not require a Complaintr login or API key. Application management and private workspace reads are separate authenticated features.

A successful submission
Your clientPOST /api/v1/complaintsappName · title · description
Complaintr201 Createdid · application · createdAt

Keep the returned complaint ID. It identifies the report in your workspace.

Submit a complaint

Send POST /api/v1/complaints to your Complaintr app origin with a JSON body.

Terminal
curl --request POST 'https://app.complaintr.com/api/v1/complaints' \
--header 'Content-Type: application/json' \
--data '{
  "appName": "Acme Store",
  "title": "Checkout button does not respond",
  "description": "Clicking Checkout on the cart page leaves me on the same page instead of opening payment.",
  "sourceAgent": "custom-client",
  "metadata": { "environment": "staging" }
}'
FieldRequiredDescription
appNameYesRegistered application name, at most 100 characters. Case-insensitive matching.
titleYesShort summary, at most 200 characters.
descriptionYesExpected and actual behavior, at most 5,000 characters.
sourceAgentNoSource label, at most 50 characters.
metadataNoJSON context supplied with the report. Use an object with named fields.

Keep secrets and personal information out of the submitted content. A successful response has status 201:

JSON response
{
  "id": "example-complaint-id",
  "title": "Checkout button does not respond",
  "application": "Acme Store",
  "category": null,
  "severity": null,
  "createdAt": "2026-09-21T09:00:00.000Z",
  "shareUrl": "https://app.complaintr.com/share/example-complaint-id"
}

Category and severity can be null when triage is disabled or unavailable. Save the returned id to identify the report. The shareUrl is an opt-in entry link: opening it activates public sharing.

MCP tools

Connect using the integration guide. The remote endpoint is:

Plain text
https://app.complaintr.com/api/mcp

report_complaint

Creates a complaint. Its input fields match the submission table above. Verify that the tool succeeds and returns a complaint ID before reporting success to the user.

share_complaint

Creates a public share link. Pass complaintId, the ID returned when the complaint was created. Call this only when the user wants to share the report publicly.

Sharing endpoints

RequestResult
POST /api/v1/complaints/:id/shareCreates or returns a token and shareUrl.
DELETE /api/v1/complaints/:id/shareRevokes the current token and returns {"revoked": true}.
GET /share/:idActivates sharing and redirects to the public card.

Sharing endpoints operate using the complaint ID without a workspace login. Treat IDs as sensitive references. Read Sharing before exposing links in your own interface.

Errors and retries

StatusMeaningNext step
400Required submission fields are missing or invalid.Check field types and lengths.
404The application or complaint does not exist.Check the registered name or returned complaint ID.
429Too many requests.Wait before retrying. Submission responses include Retry-After in seconds.
500The request could not be completed.Inspect the response and check whether a report arrived before retrying.

HTTP complaint submission permits 10 requests per IP address per 60 seconds. Sharing permits 30 requests per IP address per 60 seconds across creation and revocation.

Complaint submission has no public idempotency key. A retry can create a duplicate, particularly if the connection was lost after the server stored the report. Check the inbox before repeating an uncertain submission.

On this page