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

# Get queued call status

> Poll a call request owned by your organization. Share the 60 requests/second read budget across all requests for the credential owner. Poll each pending request no more frequently than every 10 seconds and spread polling requests over time to avoid bursts. Failed processing is returned with HTTP 200 and status failed; the error contains a public reason. Use conversationId to track an initiated call's outcome.



## OpenAPI

````yaml /openapi/openapi.yaml get /call-requests/{callRequestId}
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:
  /call-requests/{callRequestId}:
    get:
      tags:
        - Calls
      summary: Get queued call status
      description: >-
        Poll a call request owned by your organization. Share the 60
        requests/second read budget across all requests for the credential
        owner. Poll each pending request no more frequently than every 10
        seconds and spread polling requests over time to avoid bursts. Failed
        processing is returned with HTTP 200 and status failed; the error
        contains a public reason. Use conversationId to track an initiated
        call's outcome.
      operationId: getV1CallRequestsByCallRequestId
      parameters:
        - name: callRequestId
          in: path
          required: true
          schema:
            format: uuid
            type: string
      responses:
        '200':
          description: Response for status 200
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CallRequestResponse'
        '404':
          description: >-
            Standard error response that includes a message describing what went
            wrong
          content:
            application/json:
              schema:
                additionalProperties: false
                description: >-
                  Standard error response that includes a message describing
                  what went wrong
                type: object
                required:
                  - success
                  - data
                  - message
                properties:
                  success:
                    enum:
                      - false
                    type: boolean
                  data:
                    additionalProperties: false
                    type: object
                    properties: {}
                  message:
                    type: string
components:
  schemas:
    CallRequestResponse:
      additionalProperties: false
      type: object
      required:
        - success
        - data
      properties:
        success:
          enum:
            - true
          type: boolean
        data:
          $ref: '#/components/schemas/CallRequestStatus'
    CallRequestStatus:
      additionalProperties: false
      type: object
      required:
        - callRequestId
        - status
        - createdAt
        - expiresAt
        - finishedAt
        - conversationId
        - error
      properties:
        callRequestId:
          format: uuid
          type: string
        status:
          type: string
          enum:
            - queued
            - processing
            - initiated
            - failed
        createdAt:
          type: string
          format: date-time
        expiresAt:
          type: string
          format: date-time
        finishedAt:
          format: date-time
          type: string
          nullable: true
        conversationId:
          format: uuid
          type: string
          nullable: true
        error:
          anyOf:
            - $ref: '#/components/schemas/CallRequestError'
            - type: object
              nullable: true
              enum:
                - null
    CallRequestError:
      additionalProperties: false
      type: object
      required:
        - category
        - code
        - message
      properties:
        category:
          type: string
          enum:
            - request
            - compliance
            - internal
        code:
          type: string
          enum:
            - target_unavailable
            - call_restricted
            - internal_error
            - call_start_unconfirmed
            - queue_expired
        message:
          type: string

````