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

# List phone numbers

> Returns phone numbers accessible to the authenticated principal. For OAuth tokens, returns phone numbers for the parent organization and all child organizations. For API keys, returns only the authenticated organization's phone numbers. Use the `orgId` query parameter to filter results to a specific organization.



## OpenAPI

````yaml /openapi/openapi.yaml get /phone-numbers
openapi: 3.0.3
info:
  title: Annie API
  description: >
    ### Overview


    The Annie API is a (mostly) RESTful API. Typically, both POST bodies and
    responses are JSON-encoded.


    Note: The documenation is Work In Progress and is subject to change.


    ### Base URL


    The base URL for the Annie API is https://api.helloannie.com/.


    Examples in this document may abbreviate this to `/`.


    ### Versioning


    Routes are prefixed with a version number i.e. `v1`. The version will change
    when there is a non-backwards compatible or other significant change to the
    api.


    ### Authentication


    The Annie API supports two authentication methods API Keys and OAuth Access
    Tokens:


    #### API Keys


    API Keys are long-lived tokens that can be generated from the Developer
    Portal on your organization page. API keys are prefixed with `annie-sk-v2-`
    and can be used directly in the `Authorization` header.


    ```

    curl -H "Authorization: Bearer annie-sk-xxxxx"
    https://api.helloannie.com/...

    ```


    #### OAuth Tokens


    OAuth tokens are short-lived access tokens generated using the OAuth 2.0
    Client Credentials flow (Machine-to-Machine). OAuth clients provide scoped
    permissions and are ideal for server-to-server integrations.


    **Creating an OAuth Client**


    OAuth clients can be created in the Developer Portal on your organization
    page. When creating a client, you'll receive:


    - `client_id`: Your OAuth client identifier

    - `client_secret`: Your OAuth client secret (store this securely)


    **Generating an OAuth Token**


    To generate an OAuth access token, make a POST request to the Annie OAuth
    token endpoint:


    **Endpoint:** `https://annie-external-api.us.auth0.com/oauth/token`


    **Example Request:**


    ```bash

    curl -X POST https://annie-external-api.us.auth0.com/oauth/token \
      -H "Content-Type: application/json" \
      -d '{
        "grant_type": "client_credentials",
        "client_id": "your-client-id",
        "client_secret": "your-client-secret",
        "audience": "https://api.helloannie.com"
      }'
    ```


    The `access_token` from the response should be used in the `Authorization`
    header when making requests to the Annie API:


    ```

    curl -H "Authorization: Bearer eyJhbGciOiJSUzI..."
    https://api.helloannie.com/v1/...

    ```


    ### API Response Structure


    The Annie API returns status codes consistent with standard HTTP
    conventions. Success and Error responses follow the below structure:


    ```

    {
      "success": boolean
      "data": {}
      "message": string // optional
    }

    ```


    ### Rate Limiting


    The Annie API enforces rate limits to ensure stability and fair usage. The
    default rate limit is **60 requests per minute** per organization. This
    limit is applied per endpoint pattern (e.g. `GET /v1/bots/:id`).


    When the rate limit is exceeded, the API responds with HTTP `429 Too Many
    Requests`.


    Response headers include:


    - `X-RateLimit-Limit`: The maximum number of requests allowed in the current
    window.

    - `X-RateLimit-Remaining`: The number of requests remaining in the current
    window.

    - `X-RateLimit-Reset`: The time at which the current rate limit window
    resets (in UTC epoch seconds).


    If you exceed the limit, the response will contain a `Retry-After` header
    indicating how many seconds to wait before retrying.


    ### Pagination


    The Annie API does not currently support pagination. All results are
    returned at once.
  version: v1
servers:
  - url: https://api.helloannie.com/v1
security: []
paths:
  /phone-numbers:
    get:
      tags:
        - Phone Numbers
      summary: List phone numbers
      description: >-
        Returns phone numbers accessible to the authenticated principal. For
        OAuth tokens, returns phone numbers for the parent organization and all
        child organizations. For API keys, returns only the authenticated
        organization's phone numbers. Use the `orgId` query parameter to filter
        results to a specific organization.
      operationId: getV1Phone-numbers
      parameters:
        - name: orgId
          in: query
          required: false
          schema:
            format: uuid
            description: Filter phone numbers by a specific organization `orgId`
            type: string
      responses:
        '200':
          description: Response returned when listing phone numbers
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PhoneNumberListResponse'
        '403':
          description: You do not have permission to perform this action
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenResponse'
        '404':
          description: The requested resource was not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
components:
  schemas:
    PhoneNumberListResponse:
      additionalProperties: false
      type: object
      required:
        - success
        - data
      properties:
        success:
          enum:
            - true
          type: boolean
        data:
          type: object
          required:
            - phoneNumbers
          properties:
            phoneNumbers:
              type: array
              items:
                additionalProperties: false
                description: Represents a phone number and its configuration
                type: object
                required:
                  - id
                  - createdAt
                  - updatedAt
                  - orgId
                  - botId
                  - number
                  - name
                  - language
                  - outbound
                  - verifiedCallerId
                  - callbackForwardingNumber
                  - voiceId
                  - speed
                  - stability
                  - similarity
                  - style
                properties:
                  id:
                    format: uuid
                    type: string
                  createdAt:
                    type: string
                    format: date-time
                  updatedAt:
                    type: string
                    format: date-time
                  orgId:
                    format: uuid
                    type: string
                    nullable: true
                  botId:
                    format: uuid
                    type: string
                    nullable: true
                  number:
                    type: string
                  name:
                    type: string
                    nullable: true
                  language:
                    description: >-
                      The language of the phone number. ENGLISH_SPANISH supports
                      bilingual English/Spanish calls.
                    type: string
                    enum:
                      - ENGLISH
                      - ENGLISH_SPANISH
                      - SPANISH
                      - FRENCH
                    nullable: true
                  outbound:
                    type: boolean
                  verifiedCallerId:
                    description: >-
                      Verified caller ID used for outbound calls. Must be
                      pre-registered and verified for the organization.
                    type: string
                    nullable: true
                  callbackForwardingNumber:
                    description: >-
                      If a recipient calls back an outbound number, the call
                      will be forwarded to this phone number. Note: This field
                      will be ignored for inbound numbers and only applied to
                      outbound numbers.
                    type: string
                    nullable: true
                  voiceId:
                    description: >-
                      The voice of the phone number. Each voice supports a
                      single language and must match the phone number's
                      language: WARM_ENGLISH_SPANISH requires ENGLISH_SPANISH,
                      WARM_SPANISH requires SPANISH, WARM_FRENCH requires
                      FRENCH, and all other voices require ENGLISH.
                    type: string
                    enum:
                      - FRIENDLY_BRIGHT
                      - CALM_REASSURING
                      - POLISHED_PROFESSIONAL
                      - KIND_CURIOUS
                      - CONFIDENT_UPBEAT
                      - WARM_ENGLISH_SPANISH
                      - WARM_SPANISH
                      - WARM_FRENCH
                    nullable: true
                  speed:
                    type: number
                    nullable: true
                  stability:
                    type: number
                    nullable: true
                  similarity:
                    type: number
                    nullable: true
                  style:
                    type: number
                    nullable: true
    ForbiddenResponse:
      additionalProperties: false
      type: object
      required:
        - success
        - data
        - message
      properties:
        success:
          enum:
            - false
          type: boolean
        data:
          additionalProperties: false
          type: object
          properties: {}
        message:
          type: string
    NotFoundResponse:
      additionalProperties: false
      type: object
      required:
        - success
        - data
        - message
      properties:
        success:
          enum:
            - false
          type: boolean
        data:
          additionalProperties: false
          type: object
          properties: {}
        message:
          type: string

````