> ## Documentation Index
> Fetch the complete documentation index at: https://developers.huechat.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Form performance and question summaries

> Requires forms:read and reports:read. UTC date bounds are inclusive in the URL. Invitation delivery counts ignore the device filter. Choice labels are restricted to configured options; free-text answers appear only in the response list. Historical versions with reused question IDs are aggregated under the latest published question label.



## OpenAPI

````yaml /api-reference/openapi.json get /api/v2/accounts/{accountId}/forms/{formId}/reports
openapi: 3.0.3
info:
  contact:
    name: HueChat support
    email: support@huechat.ai
    url: https://huechat.ai/contact
  description: >-
    Account-scoped REST API for HueChat: conversations, messages, contacts,
    Customer CDP, Sales CRM, forms, appointments, inboxes, teams, agents, AI
    agents and knowledge, WhatsApp templates and broadcasts, workflows and chat
    menus. Authenticate with account-scoped API keys; every route is scoped to
    your own account.
  license:
    name: Proprietary
    url: https://huechat.ai/terms
  termsOfService: https://huechat.ai/terms
  title: HueChat API
  version: 2.0.0
servers:
  - url: https://app.huechat.ai
    description: Production
security:
  - bearerAuth: []
tags:
  - name: Agents
    description: The human agents on your account and their availability.
  - name: AI Agents
    description: >-
      Assistants you build to answer customers on their own: persona, language,
      guardrails, tools and a knowledge base, published to inboxes, replying in
      Arabic or English until they hand off to a human. Create, publish, test,
      monitor quality and roll back versions.
  - name: Broadcasts
    description: >-
      Send a WhatsApp template to a list of contacts from a CSV or saved
      audience, with scheduling, pause and resume, and delivery reports.
  - name: Chat Menus
    description: >-
      Numbered or button-driven menus a customer sees at the start of a
      conversation.
  - name: Contacts
    description: >-
      The people your team talks to: phone, email, name, custom attributes,
      labels and notes. One contact can have conversations on several channels.
  - name: Conversations
    description: >-
      A conversation is one thread between a contact and your team on one
      channel, with status, assignee, team, labels, priority and custom
      attributes. List, filter, search, assign, resolve and annotate them.
  - name: Forms
    description: >-
      Form management, assets, delivery, respondent sessions, submissions,
      scheduling, reports and AI-assisted authoring in one group.
  - name: Inboxes
    description: >-
      Connected channels: a WhatsApp Business number, an Instagram or Messenger
      page, an email address or a website live-chat widget. Inboxes decide where
      a conversation comes from and who can see it.
  - name: Knowledge
    description: >-
      Documents, web pages and text that ground an AI agent's answers. Upload,
      point at a URL or paste text; HueChat indexes it and the agent cites it.
  - name: Messages
    description: >-
      Everything said inside a conversation: text, attachments, WhatsApp
      templates and interactive replies. Sending through the API delivers on the
      conversation's channel and shows in the inbox like any agent reply.
  - name: Sales CRM
    description: >-
      The full tenant-scoped Sales workspace: Leads, Companies, Deals, tasks,
      products, price books, quotes, payments, forecasts, reports and settings.
  - name: Teams
    description: Groups of agents used for assignment and reporting.
  - name: Templates
    description: >-
      Pre-approved WhatsApp message formats required by Meta for
      business-initiated messages. Create, sync from Meta, AI-generate,
      test-send and read analytics.
  - name: Workflows
    description: >-
      Automation flows built from triggers and steps: route, tag, reply, wait,
      hand off. Create, publish, version and toggle.
paths:
  /api/v2/accounts/{accountId}/forms/{formId}/reports:
    parameters:
      - $ref: '#/components/parameters/accountId'
      - $ref: '#/components/parameters/formId'
      - $ref: '#/components/parameters/from'
      - $ref: '#/components/parameters/to'
      - $ref: '#/components/parameters/device'
    get:
      tags:
        - Forms
      summary: Form performance and question summaries
      description: >-
        Requires forms:read and reports:read. UTC date bounds are inclusive in
        the URL. Invitation delivery counts ignore the device filter. Choice
        labels are restricted to configured options; free-text answers appear
        only in the response list. Historical versions with reused question IDs
        are aggregated under the latest published question label.
      operationId: getApiV2AccountsAccountidFormsFormidReports
      responses:
        '200':
          description: Performance, devices, drop-off, summaries and invitation journey
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FormReport'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '402':
          $ref: '#/components/responses/PlanDisabled'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          description: Report query unavailable.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '503':
          $ref: '#/components/responses/Unavailable'
      security:
        - bearerAuth: []
components:
  parameters:
    accountId:
      name: accountId
      in: path
      required: true
      schema:
        type: integer
        minimum: 1
    formId:
      name: formId
      in: path
      required: true
      schema:
        type: string
        format: uuid
    from:
      name: from
      in: query
      schema:
        type: string
        format: date
      description: Inclusive UTC day; defaults to all time.
    to:
      name: to
      in: query
      schema:
        type: string
        format: date
      description: Inclusive UTC day; defaults to today.
    device:
      name: device
      in: query
      schema:
        $ref: '#/components/schemas/Device'
  schemas:
    FormReport:
      type: object
      properties:
        views:
          type: integer
        starts:
          type: integer
        submissions:
          type: integer
        completion_rate:
          type: number
          description: Percentage from 0 to 100
        avg_completion_seconds:
          type: number
        devices:
          type: object
          properties:
            desktop:
              type: integer
            mobile:
              type: integer
            tablet:
              type: integer
            other:
              type: integer
        activity:
          type: array
          items:
            type: object
            properties:
              date:
                type: string
                format: date
              views:
                type: integer
              starts:
                type: integer
              submissions:
                type: integer
        dropoff:
          type: array
          items:
            type: object
            properties:
              question_id:
                type: string
              title:
                type: string
              seen:
                type: integer
              answered:
                type: integer
              exits:
                type: integer
        summary:
          type: array
          items:
            type: object
            properties:
              question_id:
                type: string
              title:
                type: string
              type:
                type: string
              total:
                type: integer
              average:
                type: number
              score:
                type: number
              choices:
                type: array
                items:
                  type: object
                  properties:
                    label:
                      type: string
                    count:
                      type: integer
        sources:
          type: array
          items:
            type: object
            properties:
              source:
                type: string
              count:
                type: integer
        invitation:
          type: object
          properties:
            sent:
              type: integer
            opened:
              type: integer
            started:
              type: integer
            completed:
              type: integer
            expired:
              type: integer
        metrics:
          type: array
          items:
            $ref: '#/components/schemas/SatisfactionMetric'
        csat:
          type: number
          description: Percent of CSAT 4–5; omitted without eligible data.
        nps:
          type: number
          description: >-
            Percent promoters 9–10 minus detractors 0–6; omitted without
            eligible data.
    Error:
      type: object
      properties:
        error:
          type: string
    Device:
      type: string
      enum:
        - desktop
        - mobile
        - tablet
        - other
    SatisfactionMetric:
      type: object
      properties:
        question_id:
          type: string
        type:
          type: string
          enum:
            - csat
            - nps
        total:
          type: integer
        average:
          type: number
        score:
          type: number
        promoters:
          type: integer
        passives:
          type: integer
        detractors:
          type: integer
        satisfied:
          type: integer
  responses:
    Unauthorized:
      description: Authentication required.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    PlanDisabled:
      description: Forms is disabled on the workspace plan.
      content:
        application/json:
          schema:
            type: object
            properties:
              error:
                type: string
              code:
                type: string
                enum:
                  - plan_disabled
              feature:
                type: string
                enum:
                  - forms
    Forbidden:
      description: Invitation, session, membership, or consent requirement not met.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    NotFound:
      description: Form not found in the account or not publicly available.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    Unavailable:
      description: Dependency/configuration unavailable; fail closed.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: >-
        Your personal access token where supported, or a scoped API key (`hc_…`)
        created inside HueChat at Account → Developer API. Send it as
        `Authorization: Bearer <token>`.

````