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

# List outbound calls: calls agents had Neo place to a ticket's contact

> Calls that an agent with the Call Ticket Contact tool had Neo place to the contact of a ticket, newest first, at most the newest 1,000. Only the calls of agents the caller may view. Each row names the agent and its run (`agent_run_id`), the ticket and its PSA link, the contact, the Neo number the call came from and the number called, the brief and the voicemail message the agent wrote, when Neo placed it (`placed_at`, null while it waits in Neo's queue), how the call ended (`outcome`, null while it is queued or runs, and `outcome_reason`), whether the person asked not to be called again (`do_not_call`), the duration and the transcript. Outbound calls are not recorded, and they are not in `GET /phone/calls`.



## OpenAPI

````yaml https://api.neoagent.io/public-api/openapi.json get /public-api/phone/outbound-calls
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/phone/outbound-calls:
    get:
      tags:
        - Phone Agent
      summary: 'List outbound calls: calls agents had Neo place to a ticket''s contact'
      description: >-
        Calls that an agent with the Call Ticket Contact tool had Neo place to
        the contact of a ticket, newest first, at most the newest 1,000. Only
        the calls of agents the caller may view. Each row names the agent and
        its run (`agent_run_id`), the ticket and its PSA link, the contact, the
        Neo number the call came from and the number called, the brief and the
        voicemail message the agent wrote, when Neo placed it (`placed_at`, null
        while it waits in Neo's queue), how the call ended (`outcome`, null
        while it is queued or runs, and `outcome_reason`), whether the person
        asked not to be called again (`do_not_call`), the duration and the
        transcript. Outbound calls are not recorded, and they are not in `GET
        /phone/calls`.
      operationId: public_api.phone_outbound_calls_get
      parameters: []
      responses:
        '200':
          content:
            application/json:
              schema:
                properties:
                  data:
                    items:
                      $ref: '#/components/schemas/PublicOutboundCall'
                    type: array
                  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:
    PublicOutboundCall:
      description: >-
        Public projection of a `phone_outbound_calls` row: a call an agent had
        Neo place to the contact

        of a ticket.
      properties:
        agent_id:
          description: The agent that asked for the call.
          title: Agent Id
          type: integer
        agent_name:
          title: Agent Name
          type: string
        agent_run_id:
          anyOf:
            - type: string
            - type: 'null'
          description: >-
            The run of the agent that asked for the call, for `GET
            /executions/{execution_id}`; it continues after the call.
          title: Agent Run Id
        answered_at:
          anyOf:
            - format: date-time
              type: string
            - type: 'null'
          title: Answered At
        call_brief:
          description: >-
            What the agent told the phone agent: why it called, what to find out
            and what it could share.
          title: Call Brief
          type: string
        call_id:
          title: Call Id
          type: string
        contact_name:
          description: The ticket's contact, whom Neo asked for.
          title: Contact Name
          type: string
        created_at:
          description: When the agent asked for the call and Neo started to dial.
          format: date-time
          title: Created At
          type: string
        do_not_call:
          description: >-
            The person asked not to be called again; Neo refuses later calls
            from this MSP's agents to this number.
          title: Do Not Call
          type: boolean
        duration_seconds:
          anyOf:
            - type: number
            - type: 'null'
          description: >-
            From the answer to the hang-up; 0 when nobody answered. Billed like
            an inbound call.
          title: Duration Seconds
        finished_at:
          anyOf:
            - format: date-time
              type: string
            - type: 'null'
          title: Finished At
        from_number:
          description: The Neo number the call came from.
          title: From Number
          type: string
        id:
          title: Id
          type: integer
        outcome:
          anyOf:
            - enum:
                - ANSWERED
                - VOICEMAIL
                - NO_ANSWER
                - BUSY
                - FAILED
                - NOT_PLACED
                - UNKNOWN
              type: string
            - type: 'null'
          description: >-
            `ANSWERED`, `VOICEMAIL` (Neo left the voicemail message),
            `NO_ANSWER`, `BUSY` (busy or declined), `FAILED` (not connected),
            `NOT_PLACED` (it waited in the queue and Neo never dialed, for
            example because calling hours ended) or `UNKNOWN`; null while the
            call is queued or runs. A new value is additive.
          title: Outcome
        outcome_reason:
          anyOf:
            - type: string
            - type: 'null'
          description: Why a `FAILED` or `NOT_PLACED` call did not ring.
          title: Outcome Reason
        placed_at:
          anyOf:
            - format: date-time
              type: string
            - type: 'null'
          description: >-
            When Neo placed the call; null while it waits in Neo's queue, which
            places calls one after another.
          title: Placed At
        ticket_id:
          title: Ticket Id
          type: string
        ticket_reference:
          description: The ticket number as the PSA shows it.
          title: Ticket Reference
          type: string
        ticket_url:
          anyOf:
            - type: string
            - type: 'null'
          description: The PSA link of the ticket; null when the PSA gave none.
          title: Ticket Url
        to_number:
          description: 'The number Neo called: one the PSA holds for the contact.'
          title: To Number
          type: string
        transcription:
          anyOf:
            - type: string
            - type: 'null'
          description: >-
            `User:` / `Assistant:` lines; null when nobody answered. Outbound
            calls are not recorded.
          title: Transcription
        voicemail_message:
          anyOf:
            - type: string
            - type: 'null'
          description: >-
            What Neo says if a voicemail box answers, as the agent wrote it;
            null for Neo's short default.
          title: Voicemail Message
      required:
        - id
        - call_id
        - created_at
        - agent_id
        - agent_name
        - ticket_id
        - ticket_reference
        - ticket_url
        - agent_run_id
        - contact_name
        - from_number
        - to_number
        - call_brief
        - voicemail_message
        - placed_at
        - outcome
        - outcome_reason
        - do_not_call
        - answered_at
        - finished_at
        - duration_seconds
        - transcription
      title: PublicOutboundCall
      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
    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.