Feedback
File a bug report or suggest an improvement, or head to the idea board to pitch and vote on features. Public, no sign-in required, screenshots welcome.
Something broke, or something's missing. Either way we want to hear it, and our lead detective C. T. Lucky keeps the intake open. Reports are public — no sign-in required. For parameter-level detail, see the API reference in the sidebar.
Bug reports and improvement suggestions come in through one endpoint and land in the engineering queue. Feature ideas are different: they live on a public idea board where anyone can pitch one and vote on the rest, so for those we hand you a link rather than take a submission. We read every one.
The report endpoint takes multipart/form-data, not JSON — that's what lets a screenshot ride along with the text.
Signed in or not
The report endpoint works with or without a bearer token.
- Signed in — send your usual
Authorization: Bearerheader. We identify you from the token, so you skip theemailfield and the report arrives with your account attached. - Anonymous — no header, but an
emailfield is required so we can reach you. Once the report is in, we send an acknowledgement to that address. An anonymous call without an email returns400 ReporterEmailRequired.
File a report
POST /v1/feedback/reports
For a bug or an improvement. type declares which.
# A bug report with a screenshot. Anonymous, so the email is how we reach you.
curl -X POST "$CT_API/feedback/reports" \
-F "type=bug" \
-F "title=Competitor list crashes on sort" \
-F "description=Sorting the competitor list by name shows a blank page." \
-F "email=reporter@example.com" \
-F "images=@screenshot.png"Returns 201 Created:
{ "status": "received" }The fields:
type— required. One ofbugorimprovement.title— required, 1–200 characters.description— required, 1–5000 characters. The more concrete, the faster we move.email— required only when not signed in.context— optional. A JSON object string with optionalurlanduserAgentfields, telling us where the report was filed from. Unreadable values are ignored.images— optional, repeated under this field name. Up to 3, 5 MB each.
Attachments
A screenshot often says more than the description. Up to 3 images ride along on a report, 5 MB each. The caps are hard: an image over 5 MB returns 413 AttachmentTooLarge, a fourth image returns 422 TooManyAttachments.
Suggest a feature
GET /v1/feedback/idea-board
Feature ideas live on the idea board, where you pitch new ones and vote on existing ones. This endpoint hands back the address to send the user to — it doesn't take a submission.
# Signed in, so the bearer token earns a personal board link.
curl "$CT_API/feedback/idea-board" \
-H "Authorization: Bearer $CT_TOKEN"Returns 200 OK:
{ "url": "https://www.votito.com/public/ideabank/?key=…" }Signed-in callers get a personal link tied to their account; everyone else gets the public board. Either way, send the user to the returned url.
The rate limit
The report endpoint carries a per-address ceiling: 10 submissions a minute. The 11th returns 429 FeedbackRateLimited. Wait a minute and retry. The idea-board link is a plain read and carries no limit.
Errors you might see
| Code | HTTP | When |
|---|---|---|
ReporterEmailRequired | 400 | The report is anonymous and no email came with it. |
ReportInvalid | 422 | A field fails validation — a missing title, an unknown type, a 6000-character description. |
AttachmentTooLarge | 413 | An attached image is over 5 MB, or the request as a whole is too large. |
TooManyAttachments | 422 | More than 3 images on one report. |
FeedbackRateLimited | 429 | More than 10 reports in a minute from your address. Wait a minute and retry. |
ReportSinkUnavailable | 502 | The report could not be delivered right now. Nothing was recorded, so retry in a few minutes. |
Onboarding checklist
A checklist of starter tasks for new Competitor Tracker & Co. organizations, with the one-time coin reward for finishing four and getting your first dossier.
Model Context Protocol
Connect an AI assistant to Competitor Tracker & Co. over the Model Context Protocol: Streamable HTTP endpoint, OAuth or API-key auth, plus the tools it exposes.