---
title: "Send feedback"
method: POST
path: "/api/v1/feedback"
tags: ["Feedback"]
---

# Send feedback

`POST /api/v1/feedback`

## Request

- Base URL: `https://app.easyscraper.com`
- URL: `https://app.easyscraper.com/api/v1/feedback`
- Auth: API key in cookie `better-auth.session_token`

Files a bug report or a feature request, with the logged in user's vote. A bug report's `context` is what the app knew when it was filed (the route, the build, the last failed calls), which the user saw; the organization's plan is added to it. Feature requests are shown to every user at once; bug reports only to their author and the team, until the team publishes them. `organizationId` is the organization it's about, if the user is a member (their only organization when left out). `attachmentIds` are up to 3 screenshots uploaded for the `feedback-attachment` purpose (`POST /v1/files/uploads`), which only the author and the team can see. A user can file 10 items an hour

## Request body

- union
  - object
    - `type` 'bug', required
    - `title` string, required
    - `details` object, required
      - `whatHappened` string, required
      - `expected` string, required
      - `steps` string
    - `context` object
      - `routeId` string
      - `path` string
      - `buildSha` string
      - `error` string
      - `apiErrors` object[]
        - `procedure` string, required
        - `code` string, required
        - `requestId` string
        - `at` string
      - `errorEventIds` string[]
      - `userAgent` string
      - `viewport` string
      - `locale` string
      - `plan` string
    - `organizationId` string, uuid
    - `attachmentIds` string[]
  - object
    - `type` 'feature', required
    - `title` string, required
    - `details` object, required
      - `goal` string, required
      - `obstacle` string, required
      - `suggestion` string
    - `organizationId` string, uuid
    - `attachmentIds` string[]

## Response `200`

OK

- object
  - `id` string, uuid, required
  - `number` integer, required
  - `type` 'bug' | 'feature', required
  - `status` 'open' | 'planned' | 'in-progress' | 'done' | 'declined' | 'duplicate', required
  - `isPublic` boolean, required
  - `title` string, required
  - `details` object, required
  - `releaseNote` string, nullable, required
  - `changelogUrl` string, nullable, required
  - `declineReason` string, nullable, required
  - `voteCount` integer, required
  - `activityAt` string, date-time, required
  - `createdAt` string, date-time, required
  - `updatedAt` string, date-time, required
  - `isAuthor` boolean, required
  - `hasVoted` boolean, required
  - `recentVoteCount` number, required
  - `commentCount` number, required

## Other responses

- `400`: 400
- `401`: 401
- `404`: 404
- `409`: 409
- `429`: 429

## Changes

- **2026-11-02** `a12cef98c52b`: 1 info
  - added the non-success response with the status `400`
- **2026-10-31** `3e642e95991a`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/easyscraper/apis/easy-scraper-api/changes/api/v1/feedback/post.md)

---

[API](https://skmtc.dev/easyscraper/apis/easy-scraper-api.md) - [All operations](https://skmtc.dev/easyscraper/apis/easy-scraper-api/llms.txt) - [OpenAPI document](https://skmtc.dev/easyscraper/apis/easy-scraper-api/revisions/a12cef98c52b?raw)
