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

# List or search contacts

> Requires contacts:read. Every result is restricted to the API key's account. The optional q value searches name, email, phone, identifier, company, website and domain. sort applies only when q is absent.



## OpenAPI

````yaml /api-reference/openapi.json get /api/v2/accounts/{accountId}/contacts
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,
    inboxes, teams, agents, AI agents and knowledge, WhatsApp templates and
    broadcasts, workflows, chat menus, appointments and webhooks, authenticated
    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: 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: Agents
    description: The human agents on your account and their availability.
  - 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: 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: Outbound Webhooks
    description: >-
      Signed webhooks (v2): HMAC-SHA256 signature on every delivery, test
      events, delivery logs and secret rotation.
  - 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: Webhooks
    description: >-
      Account webhooks (v1): a URL plus event subscriptions, as configured in
      the dashboard. Unsigned; prefer Outbound Webhooks for new integrations.
  - 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}/contacts:
    get:
      tags:
        - Contacts
      summary: List or search contacts
      description: >-
        Requires contacts:read. Every result is restricted to the API key's
        account. The optional q value searches name, email, phone, identifier,
        company, website and domain. sort applies only when q is absent.
      parameters:
        - description: HueChat account ID
          name: accountId
          in: path
          required: true
          schema:
            type: integer
        - description: Full-text customer search
          name: q
          in: query
          schema:
            type: string
        - description: Page number
          name: page
          in: query
          schema:
            type: integer
            default: 1
        - description: Results per page (1-100)
          name: per_page
          in: query
          schema:
            type: integer
            default: 30
        - description: >-
            Sort field: created_at, name, email, phone_number, last_activity_at,
            company, city or country
          name: sort
          in: query
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/accounts.ContactAPIListResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/accounts.ContactAPIError'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/accounts.ContactAPIError'
        '429':
          description: Too Many Requests
          headers:
            Retry-After:
              description: 60 seconds before retrying after the API key quota is exceeded
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/accounts.ContactAPIError'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/accounts.ContactAPIError'
      security:
        - ApiKeyAuth: []
components:
  schemas:
    accounts.ContactAPIListResponse:
      type: object
      properties:
        meta:
          $ref: '#/components/schemas/accounts.ContactAPIPagination'
        payload:
          type: array
          items:
            $ref: '#/components/schemas/accounts.ContactAPIRecord'
    accounts.ContactAPIError:
      type: object
      properties:
        error:
          type: string
          example: Contact not found
    accounts.ContactAPIPagination:
      type: object
      properties:
        count:
          type: integer
          example: 125
        current_page:
          type: integer
          example: 1
        per_page:
          type: integer
          example: 30
        total_pages:
          type: integer
          example: 5
    accounts.ContactAPIRecord:
      type: object
      properties:
        additional_attributes:
          type: object
          additionalProperties: true
        blocked:
          type: boolean
        contact_inboxes:
          type: array
          items: {}
        created_at:
          type: integer
          example: 1789200000
        custom_attributes:
          type: object
          additionalProperties: true
        email:
          type: string
          example: sara@example.com
        id:
          type: integer
          example: 1042
        identifier:
          type: string
          example: erp-customer-8842
        last_activity_at:
          type: integer
        merged_from_contact_id:
          type: integer
        name:
          type: string
          example: Sara Alotaibi
        phone_number:
          type: string
          example: '+966501234567'
        thumbnail:
          type: string
        updated_at:
          type: string
          example: '2026-09-12T12:00:00Z'
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: >-
        Your personal access token from Settings → Profile, or a scoped API key
        (`hc_…`) created at Settings → Developer → API keys. Send it as
        `Authorization: Bearer <token>`.

````