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

# List contacts

> Returns a page of contacts in your organization, newest first by default. Array filters are repeated rather than comma-separated: `?tagIds=a&tagIds=b`.



## OpenAPI

````yaml /api-reference/openapi.json get /v1/contacts
openapi: 3.0.0
info:
  title: Flovoo API
  description: |-
    Authenticate with an API key created from **Connectors → API**:

    ```
    Authorization: Bearer flv_...
    ```

    The organization is derived from the key, so no request carries an
    organization id.
  version: '1.0'
  contact: {}
servers: []
security: []
tags: []
paths:
  /v1/contacts:
    get:
      tags:
        - Contacts
      summary: List contacts
      description: >-
        Returns a page of contacts in your organization, newest first by
        default. Array filters are repeated rather than comma-separated:
        `?tagIds=a&tagIds=b`.
      operationId: PublicContactsController_list
      parameters:
        - required: false
          name: page
          in: query
          schema:
            minimum: 1
            exclusiveMinimum: false
            default: 1
            type: integer
        - required: false
          name: limit
          in: query
          schema:
            minimum: 1
            maximum: 100
            exclusiveMaximum: false
            exclusiveMinimum: false
            default: 25
            type: integer
        - required: false
          name: search
          in: query
          schema:
            type: string
        - required: false
          name: sortBy
          in: query
          schema:
            default: createdAt
            enum:
              - createdAt
              - name
              - lastInteractionAt
            type: string
        - required: false
          name: sortOrder
          in: query
          schema:
            default: desc
            enum:
              - asc
              - desc
            type: string
        - required: false
          name: tagIds
          in: query
          schema:
            type: array
        - required: false
          name: stageIds
          in: query
          schema:
            type: array
        - required: false
          name: assigneeIds
          in: query
          schema:
            type: array
        - required: false
          name: channelIds
          in: query
          schema:
            type: array
        - required: true
          name: includeUnassigned
          in: query
          schema:
            enum:
              - 'true'
              - 'false'
            type: string
        - required: true
          name: isBlocked
          in: query
          schema:
            enum:
              - 'true'
              - 'false'
            type: string
        - x-enumNames:
            - ACTIVE
            - ARCHIVED
          required: false
          name: status
          in: query
          schema:
            type: string
            enum:
              - active
              - archived
        - required: false
          name: createdAfter
          in: query
          schema:
            type: string
            format: date-time
        - required: false
          name: createdBefore
          in: query
          schema:
            type: string
            format: date-time
        - required: false
          name: lastInteractionAfter
          in: query
          schema:
            type: string
            format: date-time
        - required: false
          name: lastInteractionBefore
          in: query
          schema:
            type: string
            format: date-time
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicContactListDoc'
        '400':
          description: >-
            The request failed validation. Every failing field is listed in
            `details`, not just the first.
          content:
            application/json:
              example:
                error:
                  type: invalid_request_error
                  code: validation_failed
                  message: The request failed validation.
                  details:
                    - param: phone
                      code: invalid_string
                      message: Invalid phone number format
                  requestId: req_01J8X4M2N9P3Q5R7
        '401':
          description: The key is missing, unknown, or revoked.
          content:
            application/json:
              examples:
                missing:
                  summary: No Authorization header
                  value:
                    error:
                      type: authentication_error
                      code: missing_api_key
                      message: No API key was provided.
                      requestId: req_01J8X4M2N9P3Q5R7
                invalid:
                  summary: Unknown key
                  value:
                    error:
                      type: authentication_error
                      code: invalid_api_key
                      message: The API key provided is not valid.
                      requestId: req_01J8X4M2N9P3Q5R7
                revoked:
                  summary: Revoked key
                  value:
                    error:
                      type: authentication_error
                      code: revoked_api_key
                      message: This API key has been revoked.
                      requestId: req_01J8X4M2N9P3Q5R7
        '403':
          description: The key is valid but lacks the route's scope.
          content:
            application/json:
              example:
                error:
                  type: permission_error
                  code: insufficient_scope
                  message: >-
                    This API key does not have the required scope:
                    contacts.create.
                  requestId: req_01J8X4M2N9P3Q5R7
        '429':
          description: Rate limit exceeded. `Retry-After` gives the seconds to wait.
          content:
            application/json:
              example:
                error:
                  type: rate_limit_error
                  code: rate_limit_exceeded
                  message: >-
                    Rate limit of 300 requests per minute exceeded. Retry in
                    23s.
                  requestId: req_01J8X4M2N9P3Q5R7
        '500':
          description: >-
            An error on our side. The original exception is never returned;
            quote `requestId` to support.
          content:
            application/json:
              example:
                error:
                  type: api_error
                  code: internal_error
                  message: An unexpected error occurred.
                  requestId: req_01J8X4M2N9P3Q5R7
      security:
        - api-key: []
components:
  schemas:
    PublicContactListDoc:
      type: object
      properties:
        data:
          type: array
          items:
            type: object
            properties:
              id:
                type: string
                format: uuid
              name:
                type: string
              phone:
                description: Digits only, no + prefix
                type: string
                nullable: true
              email:
                type: string
                nullable: true
              avatar:
                type: string
                nullable: true
              notes:
                type: string
                nullable: true
              status:
                type: string
                enum:
                  - active
                  - archived
              isBlocked:
                description: Blocked contacts cannot send or receive messages
                type: boolean
              sourceMethod:
                description: How the contact entered the system, e.g. MANUAL, IMPORT
                type: string
                nullable: true
              assigneeId:
                description: Must be set before a message can be sent to this contact
                type: string
                format: uuid
                nullable: true
              stageId:
                type: string
                format: uuid
                nullable: true
              tags:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                    name:
                      type: string
                    color:
                      description: 'Hex colour, e.g. #74d44e'
                      type: string
                  required:
                    - id
                    - name
                    - color
              createdAt:
                type: string
                format: date-time
              updatedAt:
                type: string
                format: date-time
              lastInteractionAt:
                type: string
                format: date-time
                nullable: true
            required:
              - id
              - name
              - phone
              - email
              - avatar
              - notes
              - status
              - isBlocked
              - sourceMethod
              - assigneeId
              - stageId
              - tags
              - createdAt
              - updatedAt
              - lastInteractionAt
        page:
          type: integer
        limit:
          type: integer
        total:
          description: Total matching the filter, not the page
          type: integer
        totalPages:
          type: integer
        hasNext:
          type: boolean
        hasPrev:
          type: boolean
      required:
        - data
        - page
        - limit
        - total
        - totalPages
        - hasNext
        - hasPrev
  securitySchemes:
    api-key:
      scheme: bearer
      bearerFormat: JWT
      type: http
      description: Your API key, e.g. flv_9f2a8c1e…

````