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

# Phone agent billed minutes and credits for a date window

> The tenant's phone agent usage: billed minutes, the credits they cost and the calls that billed, in `totals`, per phone agent (`agents`) and per UTC day (`days`). Each call is billed in whole minutes, rounded up, with a 1-minute minimum, at the credits per minute in force when it was made, so the figures add up to what billing charges. Phone minutes count against the same monthly credits as agents and chat.



## OpenAPI

````yaml https://api.neoagent.io/public-api/openapi.json get /public-api/performance/phone
openapi: 3.1.0
info:
  description: >-
    Neo's public contract for the dashboard ChatAgent, partner integrations, and
    MSP automation. Every response is wrapped in a `{data, meta}` envelope;
    errors use `{error: {code, message, details?}, meta: {request_id}}`.
    Authenticate with a `Bearer neo_sk_<env>_<secret>` API key (service account)
    or a Microsoft Entra ID JWT (dashboard user). Signed-URL endpoints (end-user
    feedback links) take a `signature` query parameter instead.
  title: Neo Public API
  version: 1.0.0
servers:
  - url: https://api.neoagent.io
security: []
tags:
  - description: Service metadata — health, OpenAPI.
    name: Meta
  - description: Agents and workflows — read, version history, delete, stats.
    name: Agents
  - description: Agent/workflow execution history, sub-resources, retry/cancel.
    name: Executions
  - description: >-
      Every tool call the tenant's agents made in the last 30 days, within the
      caller's workflow access.
    name: Audit Log
  - description: PSA webhook events and their workflow-match results.
    name: Callbacks
  - description: Technician-in-the-loop approval requests.
    name: TIL requests
  - description: RMM script executions triggered by agents.
    name: RMM scripts
  - description: Dispatch-agent field-update decisions.
    name: Dispatch
  - description: The authenticated tenant.
    name: Tenant
  - description: Agent-builder schema catalogs (raw JSON payloads).
    name: Schemas
  - description: Escalate to the Neo team (HubSpot ticket).
    name: Escalation
  - description: Tenant settings.
    name: Settings
  - description: Tenant API-key management (dashboard JWT only).
    name: API keys
  - description: End-user feedback links (signed-URL auth).
    name: Feedback
  - description: End-client companies (CRUD + bulk-update).
    name: End companies
  - description: Channels — bind a CONVERSATIONAL agent to a transport (Teams or Slack).
    name: Channels
  - description: PSA/RMM/M365 integration status and connection management.
    name: Integrations
  - description: Technician roster (controls TIL routing and paging).
    name: Technicians
  - description: Future runs queued for TRIGGERED agents.
    name: Scheduled work
  - description: Subscription state and customer-facing credit usage (no provider $).
    name: Billing
  - description: Inbox messages and announcements.
    name: Inbox & Comms
  - description: Tenant-authored agent skills (CRUD) and the built-in skill catalog.
    name: Skills
paths:
  /public-api/performance/phone:
    get:
      tags:
        - Performance
      summary: Phone agent billed minutes and credits for a date window
      description: >-
        The tenant's phone agent usage: billed minutes, the credits they cost
        and the calls that billed, in `totals`, per phone agent (`agents`) and
        per UTC day (`days`). Each call is billed in whole minutes, rounded up,
        with a 1-minute minimum, at the credits per minute in force when it was
        made, so the figures add up to what billing charges. Phone minutes count
        against the same monthly credits as agents and chat.
      operationId: public_api.performance_phone_get
      parameters:
        - description: ISO-8601 window start (inclusive).
          in: query
          name: from
          required: true
          schema:
            type: string
        - description: ISO-8601 window end (exclusive).
          in: query
          name: to
          required: true
          schema:
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                properties:
                  data:
                    $ref: '#/components/schemas/PhoneUsage'
                  meta:
                    $ref: '#/components/schemas/SuccessMeta'
                required:
                  - data
                  - meta
                type: object
          description: Success.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorEnvelope'
          description: Bad request — malformed input.
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorEnvelope'
          description: Unauthenticated — missing or invalid credentials.
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorEnvelope'
          description: Forbidden — authenticated but not allowed.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorEnvelope'
          description: Not found.
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorEnvelope'
          description: Conflict — the resource is in a state that blocks this operation.
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorEnvelope'
          description: Request validation failed.
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorEnvelope'
          description: Rate limited — see Retry-After.
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorEnvelope'
          description: Internal server error.
      security:
        - bearerAuth: []
components:
  schemas:
    PhoneUsage:
      properties:
        agents:
          description: One row per phone agent that billed, most credits first.
          items:
            $ref: '#/components/schemas/PhoneAgentUsage'
          title: Agents
          type: array
        credits_per_minute:
          anyOf:
            - type: integer
            - type: 'null'
          description: >-
            Credits one billed minute cost in the window. Null when the rate
            changed inside the window.
          title: Credits Per Minute
        days:
          description: One row per UTC day with a billed call, oldest first.
          items:
            $ref: '#/components/schemas/PhoneUsageDay'
          title: Days
          type: array
        totals:
          $ref: '#/components/schemas/PhoneUsageTotals'
      required:
        - totals
        - credits_per_minute
        - agents
        - days
      title: PhoneUsage
      type: object
    SuccessMeta:
      properties:
        pagination:
          $ref: '#/components/schemas/Pagination'
        request_id:
          format: uuid
          type: string
        timings_ms:
          additionalProperties:
            type: number
          type: object
        warnings:
          description: >-
            Non-fatal warnings about the created/updated resource (e.g. an
            unhealthy PSA callback).
          items:
            type: string
          type: array
      required:
        - request_id
        - timings_ms
      type: object
    ErrorEnvelope:
      properties:
        error:
          properties:
            code:
              description: Stable machine-readable error code.
              type: string
            details:
              additionalProperties: true
              type: object
            message:
              type: string
          required:
            - code
            - message
          type: object
        meta:
          properties:
            request_id:
              format: uuid
              type:
                - string
                - 'null'
          type: object
      required:
        - error
        - meta
      type: object
    PhoneAgentUsage:
      properties:
        agent_name:
          anyOf:
            - type: string
            - type: 'null'
          description: The phone agent's name. Null when Neo no longer knows it.
          title: Agent Name
        billed_minutes:
          description: 'Minutes billed: each call rounded up to whole minutes, at least 1.'
          title: Billed Minutes
          type: integer
        calls:
          description: Calls that billed. A call that never connected bills nothing.
          title: Calls
          type: integer
        credits:
          description: Credits the billed minutes cost.
          title: Credits
          type: integer
        phone_number:
          title: Phone Number
          type: string
        phone_number_id:
          anyOf:
            - type: integer
            - type: 'null'
          description: >-
            The number's `id` in `GET /phone/numbers`. Null once the number is
            released.
          title: Phone Number Id
      required:
        - billed_minutes
        - credits
        - calls
        - phone_number
        - agent_name
        - phone_number_id
      title: PhoneAgentUsage
      type: object
    PhoneUsageDay:
      properties:
        billed_minutes:
          description: 'Minutes billed: each call rounded up to whole minutes, at least 1.'
          title: Billed Minutes
          type: integer
        calls:
          description: Calls that billed. A call that never connected bills nothing.
          title: Calls
          type: integer
        credits:
          description: Credits the billed minutes cost.
          title: Credits
          type: integer
        day:
          description: UTC day. Days with no billed call are left out.
          format: date
          title: Day
          type: string
      required:
        - billed_minutes
        - credits
        - calls
        - day
      title: PhoneUsageDay
      type: object
    PhoneUsageTotals:
      properties:
        billed_minutes:
          description: 'Minutes billed: each call rounded up to whole minutes, at least 1.'
          title: Billed Minutes
          type: integer
        calls:
          description: Calls that billed. A call that never connected bills nothing.
          title: Calls
          type: integer
        credits:
          description: Credits the billed minutes cost.
          title: Credits
          type: integer
      required:
        - billed_minutes
        - credits
        - calls
      title: PhoneUsageTotals
      type: object
    Pagination:
      properties:
        has_more:
          type: boolean
        next_cursor:
          type:
            - string
            - 'null'
      required:
        - next_cursor
        - has_more
      type: object
  securitySchemes:
    bearerAuth:
      description: >-
        `Authorization: Bearer <token>` where `<token>` is either a
        `neo_sk_<env>_<secret>` API key (service account) or a Microsoft Entra
        ID access token (dashboard user).
      scheme: bearer
      type: http

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.