Phonely Webhooks API

Receive structured post-call event data from Phonely after each AI voice interaction completes. The Send Call Data post-call workflow action POSTs a JSON payload containing call metadata, full transcript (text + structured turns), AI-generated summary, purpose, topic, sentiment, key points, action items, follow-up indicators, mentioned entities (email, date, time), recording URL, and dashboard URL to any HTTPS endpoint you configure.

Phonely Webhooks API is one of 2 APIs that Phonely publishes on the APIs.io network, described by an AsyncAPI event-driven specification.

This API exposes 1 machine-runnable capability that can be deployed as REST, MCP, or Agent Skill surfaces via Naftiko and 1 JSON Schema definition.

Tagged areas include AI, Voice, Webhooks, Events, and Call Data. The published artifact set on APIs.io includes API documentation, an AsyncAPI specification, sample payloads, 1 Naftiko capability spec, and 1 JSON Schema.

AsyncAPI Specification

phonely-webhooks-asyncapi.yml Raw ↑
asyncapi: 3.0.0
info:
  title: Phonely Webhooks
  version: "1.0.0"
  description: |
    Phonely delivers post-call event data to any HTTPS endpoint configured via
    the "Send Call Data" post-call action in the workflow builder. The event is
    delivered as an HTTP POST with a JSON body containing call metadata, transcript,
    AI analysis (summary, sentiment, key points, action items), follow-up
    indicators, mentioned entities (email, date, time), recording URL, and
    dashboard URL.
  contact:
    name: Phonely
    url: https://www.phonely.ai
  license:
    name: Phonely Terms of Service
    url: https://www.phonely.ai/terms

defaultContentType: application/json

servers:
  customer-endpoint:
    host: example.com
    pathname: /phonely/webhook
    protocol: https
    description: |
      The customer-owned HTTPS endpoint that Phonely POSTs call data to. The
      endpoint must accept JSON, respond quickly to avoid sender timeouts, and
      log delivery failures. Configure the URL inside the agent workflow builder
      at /agent/{agentId}?tab=workflows.

channels:
  postCall:
    address: /phonely/webhook
    title: Post-Call Webhook
    description: |
      Delivered after a call has completed. The Send Call Data workflow action
      must be present in the agent's post-call workflow for this event to fire.
    messages:
      postCallEvent:
        $ref: '#/components/messages/PostCallEvent'

operations:
  receivePostCall:
    action: receive
    channel:
      $ref: '#/channels/postCall'
    title: Receive Post-Call Event
    summary: Phonely POSTs a post-call event payload to the configured webhook URL.
    bindings:
      http:
        method: POST

components:
  messages:
    PostCallEvent:
      name: PostCallEvent
      title: Post-Call Event
      summary: Structured call data delivered after a Phonely call completes.
      contentType: application/json
      payload:
        $ref: '#/components/schemas/PostCallEvent'

  schemas:
    PostCallEvent:
      type: object
      required:
        - callId
        - callDirection
        - callStarted
        - callEnded
        - duration
        - businessPhoneNumber
        - customerPhoneNumber
      properties:
        callId:
          type: string
          description: Unique identifier for the call.
        agentName:
          type: string
          description: Display name of the agent that handled the call.
        callerName:
          type: string
          description: Caller's name when known.
        callDirection:
          type: string
          description: Direction of the call.
          enum:
            - inbound
            - outbound
        callStarted:
          type: string
          format: date-time
          description: ISO 8601 timestamp of when the call started.
        callEnded:
          type: string
          format: date-time
          description: ISO 8601 timestamp of when the call ended.
        duration:
          type: number
          description: Call duration in seconds.
        businessPhoneNumber:
          type: string
          description: Business phone number assigned to the agent (E.164).
        customerPhoneNumber:
          type: string
          description: Caller's phone number (E.164).
        mentionedEmail:
          type: string
          nullable: true
          description: Email address mentioned during the call, if any.
        mentionedDate:
          type: string
          nullable: true
          description: Date mentioned during the call, if any.
        mentionedTime:
          type: string
          nullable: true
          description: Time mentioned during the call, if any.
        transcriptText:
          type: string
          description: Full text transcript of the call.
        transcript:
          type: array
          description: Structured transcript turns.
          items:
            type: object
            required:
              - role
              - content
            properties:
              role:
                type: string
                description: Speaker role for this turn.
                enum:
                  - agent
                  - user
              content:
                type: string
                description: Text content of the turn.
        summary:
          type: string
          description: Brief AI-generated summary of the call.
        longSummary:
          type: string
          nullable: true
          description: Detailed AI-generated summary of the call.
        purpose:
          type: string
          description: AI-extracted call objective.
        topic:
          type: string
          description: AI-extracted call topic / category.
        sentiment:
          type: string
          description: Overall sentiment of the call.
        keyPoints:
          type: array
          description: Highlighted insights from the call.
          items:
            type: string
        unansweredQuestions:
          type: array
          description: Caller questions that were not resolved.
          items:
            type: string
        actionItems:
          type: array
          description: Tasks generated by the call.
          items:
            type: string
        followUp:
          type: string
          description: Follow-up indicator.
        followUpReason:
          type: string
          description: Reason a follow-up is needed.
        ai_success:
          type: string
          description: AI performance / success metric for the call.
        recordingUrl:
          type: string
          format: uri
          description: HTTPS URL to the call recording.
        dashboardUrl:
          type: string
          format: uri
          description: HTTPS URL to view this call in the Phonely dashboard.
        endedReason:
          type: string
          description: Reason the call ended (e.g. caller_hangup, agent_hangup, transfer).