Feedback Status API | Triaged, Shipped or Declined
Returns one feedback report filed from your account, by id: what was sent (type, title, area), its status (new, triaged, shipped or declined), the team's response text or null, and timestamps. updated_at moves only when status or response changes, so an agent can tell a report that has been looked at from one that has not. Free, never metered. Any id that is not on your account answers 404, including ids that are not UUIDs. Cost: Free per call.
GET feedback/{id} returns a single feedback report belonging to the calling account: id, type, title, area, status (one of new, triaged, shipped, declined), response (the team's reply text or null), created_at and updated_at. It costs nothing, takes no parameters beyond the id in the path, and answers 404 not_found for any id that is not this account's, so a report can never be read across accounts.
Authorization
bearerAuth Pass your API key as a bearer token on every request: Authorization: Bearer <API_KEY>.
In: header
Path Parameters
The id segment of the path, as returned by the endpoint that created the resource.
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
curl -X GET "https://example.com/feedback/string"{ "id": "7c9e6679-7425-40de-944b-e07fc1f90ae7", "type": "bug", "title": "tweet/thread returns 500 on a quoted reply", "area": "tweet/thread", "status": "triaged", "response": "Reproduced. The quoted post was deleted mid-thread; a fix is in review.", "created_at": "2026-09-04T10:15:00.000Z", "updated_at": "2026-09-04T14:02:11.000Z"}{ "error": "Invalid API key"}{ "error": "not_found", "message": "No feedback with that id on this account."}{ "error": "Too many requests. Limit: 10 per minute."}{ "error": "upstream_unavailable", "message": "The feedback service is temporarily unavailable. Retry shortly."}{ "error": "Internal server error"}Pricing
| Unit | Price |
|---|---|
| Per call | Free |
When to use
Use it after POST feedback when you want to know whether a report has been triaged, shipped or declined, or to surface the team's reply to the user who filed it. Poll it sparingly: compare updated_at with the value you last saw and treat an unchanged one as not yet looked at. There is no list route, so keep the ids that POST feedback returns.
Notes
- Replace {id} with the id returned by POST feedback.
- Served from the API root: https://api.twitterapis.com/feedback/{id}. It is NOT under /twitter.
- Free. Never metered.
- Rate limited to 10 requests per minute per API key, shared with POST feedback. Exceeding it returns 429 with a Retry-After header.
- 404 {"error": "not_found", "message": "No feedback with that id on this account."} for any id that is not on this account: one that belongs to another account, one that never existed, or one that is not shaped like a UUID. The three cases are deliberately indistinguishable.
- Both Authorization: Bearer <key> and x-api-key: <key> are accepted.
Related endpoints
- Send Feedback: File a bug, idea or missing-capability report from the tool you are using, typically drafted by your AI agent and sent after you review it.
- Account Info: Your credit balance, lifetime usage, and account details for the API key making the call.
FAQ
How can I tell whether anyone has looked at my report yet?
Compare updated_at with created_at. They are equal until the status or the response changes; the first change to either moves updated_at. A status of new with updated_at equal to created_at means nobody has reviewed it yet.
What do the four statuses mean?
new: received and not yet reviewed. triaged: read and accepted into the queue, possibly with a response. shipped: the fix or feature is live. declined: it will not be done, and response says why.
Can I list every report my account has filed?
No, there is no list route. Store the id from each POST feedback response and read them individually.
Why do I get 404 for an id I know exists?
The read is scoped to the account that filed the report. A report filed by a different account answers 404 rather than 403, on purpose, so the route never confirms that an id exists somewhere else. Check that you are using a key on the same account that sent it.
Send Feedback POST
Files a product feedback report against your account. It exists for AI agents (Claude Code, Cursor, any MCP client) working against this API: when a call fails, a capability is missing, or the user asks for it, the agent drafts a report locally, the user reviews it, and the client sends it here. The report reaches the team as a stored row plus a Slack post, and the returned id lets the agent read its status later. Free, never metered, rate limited to 10 per minute per key. Cost: Free per call.
Overview
Articles: Create, edit, publish, and read X's long-form Articles (X's internal name: Notes). Publishing posts a real announcement tweet; reading a published article is a public call that needs no session.