> ## Documentation Index
> Fetch the complete documentation index at: https://www.pickfu.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Rate a response

> Marks an individual respondent comment as helpful or not_helpful.

Calling this with `rating: "helpful"` records a positive vote.

Calling with `rating: "not_helpful"` flags the response as low-quality. For non-admin users this counts against a per-survey flag cap (default 10, overridable per team via the `y26q3-max-flag-responses-override` feature flag; returns 409 when exceeded). When the cap is not exceeded the response — and, on multi-question surveys, all responses from the same respondent — is automatically marked as rejected, the survey's valid-answer count is recalculated, and a previously completed survey may be reopened to collect replacement responses.

The endpoint is upserting: re-rating the same response replaces the previous rating and preserves any existing `comment` when one is not re-supplied. Switching a previous `not_helpful` rating to `helpful` records the new vote but does NOT un-reject the answer that was auto-rejected by the prior flag.

Use `DELETE /v1/responses/{id}/rate` to remove a rating; note that DELETE does NOT un-reject an answer that was rejected by a prior `not_helpful` rating, and removing a flag does free up cap space — repeatedly flagging then deleting can reject more than 10 answers without tripping the cap.



## OpenAPI

````yaml /api-reference/openapi.json post /responses/{id}/rate
openapi: 3.1.0
info:
  title: PickFu API
  version: 1.0.0
  description: >-
    The PickFu API enables programmatic access to create surveys, retrieve
    results, and integrate PickFu into your workflows.


    ## Overview


    PickFu helps you get instant consumer feedback through surveys. With the
    API, you can:


    - Create surveys programmatically

    - Retrieve survey results and respondent data

    - Target specific audiences with demographic traits

    - Integrate PickFu into your product development workflow


    ## Rate Limits


    Selected endpoints (currently the CSV export endpoints) enforce per-caller
    rate limits and return `429 Too Many Requests` when exceeded. See each
    endpoint description for its specific budget.


    ## Authentication


    All API requests require a Bearer token — either an API key or an OAuth 2.0
    access token. See the [Authentication
    guide](https://www.pickfu.com/docs/developers/authentication) for details.
  contact:
    name: PickFu Support
    email: support@pickfu.com
    url: https://www.pickfu.com
servers:
  - url: https://api.pickfu.com/v1
    description: Production
  - url: https://api.pickfu-sandbox.com/v1
    description: Sandbox
security:
  - bearerAuth: []
tags:
  - name: Surveys
    description: >-
      Create, retrieve, update, and publish surveys. Surveys are the core
      resource — each contains one or more questions with answer options.
  - name: Responses
    description: >-
      Retrieve individual responses (answers) for a survey, with pagination and
      per-question filtering.
  - name: Tags
    description: Organize surveys with tags. Tags are scoped to your team/account.
  - name: Projects
    description: >-
      Organize surveys into projects. Projects group related surveys and can be
      bookmarked or archived.
  - name: Traits
    description: >-
      Audience targeting and reporting traits used to reach specific
      demographics and segment survey results.
  - name: Playbooks
    description: >-
      Discover and retrieve step-by-step research playbooks. Each playbook is a
      structured sequence of polls designed for a specific research goal.
  - name: Help
    description: Search the PickFu help center for articles and guides.
  - name: Media
    description: >-
      Generate images from text prompts and upload media files to the PickFu
      CDN.
paths:
  /responses/{id}/rate:
    post:
      tags:
        - Responses
      summary: Rate a response
      description: >-
        Marks an individual respondent comment as helpful or not_helpful.


        Calling this with `rating: "helpful"` records a positive vote.


        Calling with `rating: "not_helpful"` flags the response as low-quality.
        For non-admin users this counts against a per-survey flag cap (default
        10, overridable per team via the `y26q3-max-flag-responses-override`
        feature flag; returns 409 when exceeded). When the cap is not exceeded
        the response — and, on multi-question surveys, all responses from the
        same respondent — is automatically marked as rejected, the survey's
        valid-answer count is recalculated, and a previously completed survey
        may be reopened to collect replacement responses.


        The endpoint is upserting: re-rating the same response replaces the
        previous rating and preserves any existing `comment` when one is not
        re-supplied. Switching a previous `not_helpful` rating to `helpful`
        records the new vote but does NOT un-reject the answer that was
        auto-rejected by the prior flag.


        Use `DELETE /v1/responses/{id}/rate` to remove a rating; note that
        DELETE does NOT un-reject an answer that was rejected by a prior
        `not_helpful` rating, and removing a flag does free up cap space —
        repeatedly flagging then deleting can reject more than 10 answers
        without tripping the cap.
      operationId: rateResponse
      parameters:
        - schema:
            type: string
            pattern: ^[A-Za-z0-9_-]{1,64}$
            maxLength: 64
          in: path
          name: id
          required: true
          description: Response (answer) GUID
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - rating
              additionalProperties: false
              properties:
                rating:
                  type: string
                  enum:
                    - helpful
                    - not_helpful
                  description: >-
                    Whether the response was helpful or not. "not_helpful" flags
                    the response as low-quality and may auto-reject it; see
                    endpoint description for the full effect.
                comment:
                  type: string
                  maxLength: 500
                  description: Optional reason or note attached to the rating.
      responses:
        '200':
          description: Default Response
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                  data:
                    type: object
                    properties:
                      id:
                        type: string
                        description: Response GUID
                      rating:
                        type: string
                        enum:
                          - helpful
                          - not_helpful
                        description: The rating that was applied
                      comment:
                        type: string
                        nullable: true
        '400':
          description: Default Response
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                  message:
                    type: string
        '401':
          description: Default Response
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                  message:
                    type: string
        '403':
          description: Default Response
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                  message:
                    type: string
        '404':
          description: Default Response
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                  message:
                    type: string
        '409':
          description: Default Response
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                  message:
                    type: string
        '422':
          description: Default Response
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                  message:
                    type: string
components:
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: >-
        OAuth2 access token obtained via the authorization flow. Include in the
        Authorization header as: `Bearer {access_token}`

````