> ## 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.

# Create an appointment reminder with an optional published form

> Requires appointments:settings and administrator rights. Existing reminder fields still apply. form_id requires a published form and an approved Utility template with either the exact dynamic URL button for a private tracked invitation or the exact fixed public form URL already authored in BODY text. Fixed BODY links are general, issue no invitation, and require stop_after_response=false.



## OpenAPI

````yaml /api-reference/openapi.json post /api/v2/accounts/{accountId}/appointments/reminders
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}/appointments/reminders:
    parameters:
      - $ref: '#/components/parameters/accountId'
    post:
      tags:
        - Appointment reminders
      summary: Create an appointment reminder with an optional published form
      description: >-
        Requires appointments:settings and administrator rights. Existing
        reminder fields still apply. form_id requires a published form and an
        approved Utility template with either the exact dynamic URL button for a
        private tracked invitation or the exact fixed public form URL already
        authored in BODY text. Fixed BODY links are general, issue no
        invitation, and require stop_after_response=false.
      operationId: postApiV2AccountsAccountidAppointmentsReminders
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ReminderRule'
      responses:
        '200':
          description: Reminder created
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '402':
          $ref: '#/components/responses/PlanDisabled'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '409':
          $ref: '#/components/responses/Conflict'
        '422':
          $ref: '#/components/responses/ValidationError'
        '503':
          $ref: '#/components/responses/Unavailable'
      security:
        - bearerAuth: []
components:
  parameters:
    accountId:
      name: accountId
      in: path
      required: true
      schema:
        type: integer
        minimum: 1
  schemas:
    ReminderRule:
      type: object
      required:
        - name
        - timing_type
        - inbox_id
        - template_id
        - bindings
        - is_active
      properties:
        name:
          type: string
        resource_id:
          type: string
          format: uuid
        timing_type:
          type: string
          enum:
            - before_start
            - after_start
            - previous_day
        minutes_before:
          type: integer
          minimum: 5
          maximum: 10080
        minutes_after:
          type: integer
          minimum: 5
          maximum: 10080
        send_minute:
          type: integer
          minimum: 0
          maximum: 1439
        inbox_id:
          type: integer
        template_id:
          type: string
          format: uuid
        form_id:
          type: string
          format: uuid
          description: >-
            Optional published form in the same account. The approved template
            must use either its exact dynamic invitation URL button or its exact
            fixed public URL in BODY text. The fixed BODY mode persists form_id
            for configuration validation only and does not identify respondents.
        stop_after_response:
          type: boolean
          default: true
          description: >-
            Stops private invitation reminders after an appointment-bound
            response. Must be false when the approved template uses a fixed
            public form URL in BODY text.
        bindings:
          type: array
          maxItems: 30
          items:
            type: object
            required:
              - field
            properties:
              field:
                type: string
                enum:
                  - customer.first_name
                  - customer.name
                  - customer.email
                  - customer.phone
                  - appointment.id
                  - appointment.date
                  - appointment.time
                  - appointment.start_at
                  - service.name
                  - resource.name
                  - literal
              literal:
                type: string
                maxLength: 1024
        header_media:
          type: string
          maxLength: 512
        time_format:
          type: string
          enum:
            - 12h
            - 24h
        eligible_statuses:
          type: array
          items:
            type: string
            enum:
              - tentative
              - booked
              - confirmed
              - completed
              - cancelled
              - no_show
        is_active:
          type: boolean
    Error:
      type: object
      properties:
        error:
          type: string
  responses:
    BadRequest:
      description: Malformed request, invalid ID/filter or unknown top-level field.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    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'
    Conflict:
      description: Stale version, duplicate response, or already used invitation.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    ValidationError:
      description: The request or definition is invalid.
      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>`.

````