DocumentationAPI Reference
DocumentationAPI Reference
Book a meeting
Linkedin
Github
  1. Webhooks
  • Agents
    • List all agents
      GET
    • Create a new agent
      POST
    • Get an agent
      GET
    • Update an agent
      PATCH
    • Delete an agent
      DELETE
  • Tool Templates
    • List all tool templates
      GET
    • Create a new tool template
      POST
    • Get a tool template
      GET
    • Update a tool template
      PATCH
    • Delete a tool template
      DELETE
  • Numbers
    • List all phone numbers
      GET
    • Register a phone number
      POST
    • Get a phone number
      GET
    • Update a phone number
      PATCH
    • Delete a phone number
      DELETE
  • Calls
    • List calls
      GET
    • Get call by ID
      GET
    • Initiate outbound call
      POST
  • Call Control
    • Send control command to active call
      POST
  • Usage
    • Get usage logs
      GET
  • SIP Trunks
    • List SIP trunks
    • Create a SIP trunk
    • Get a SIP trunk
    • Delete a SIP trunk
  • Voices
    • List available voices
  • BYOK
    • Get BYOK configurations
    • Add BYOK configuration
    • Delete BYOK configuration
    • Get BYOK provider configurations
  • Domains
    • Get your domain
    • Add a domain
    • Delete your domain
    • List available Resend domains
    • Select and sync a Resend domain
    • Verify domain DNS records
    • Refresh domain status
  • Webhooks
    • Dynamic assistant configuration webhook
    • Tool/Function Call
    • Call Status Update
    • End of Call Report
  • Analysis Templates
    • List analysis templates
    • Create analysis template
    • Get analysis template
    • Update analysis template
    • Delete analysis template
  • Organization
    • Get organization information
    • Create organization
    • Get organization information (deprecated)
  • Campaigns
    • List all campaigns
    • Create a campaign
    • Get a campaign
    • Update a campaign
    • Delete a campaign
    • List campaign leads
    • Add a lead
    • Remove a lead
  • Schemas
    • Error
    • Pagination
    • UUID
    • Timestamp
    • SuccessResponse
    • STTConfig
    • LLMConfig
    • TTSConfig
    • XAIRealtimeConfig
    • Agent
    • AgentCreate
    • AgentUpdate
    • PhoneNumber
    • PhoneNumberCreate
    • PhoneNumberUpdate
    • Call
    • CallControlCommand
    • InjectContextCommand
    • SayCommand
    • EndCallCommand
    • TransferCommand
    • CallControlResponse
    • OutboundCallRequest
    • Account
    • UsageLog
    • OutboundCallResponse
    • UsageSummary
    • Organization
    • SipTrunk
    • SipTrunkCreate
    • OrganizationChild
    • Voice
    • OrganizationCreate
    • OrganizationCreated
    • AssistantRequestPayload
    • CallObject
    • Customer
    • AssistantRequestResponse
    • XAIRealtimeVoice
    • AssistantConfigOverride
    • AnalysisPlan
    • AssistantWebhookObject
    • ToolCallsPayload
    • ToolCall
    • ToolCallsResponse
    • StatusUpdatePayload
    • EndOfCallReportPayload
    • ToolDefinition
    • EndCallTool
    • TransferCallTool
    • WebhookHeaders
    • XAIRealtimeWebhookNotes
    • ToolFunctionConfig
    • ToolTransferConfig
    • ToolTemplate
    • ToolTemplateCreate
    • ToolTemplateUpdate
    • AnalysisTemplate
    • CreateAnalysisTemplate
    • UpdateAnalysisTemplate
    • AnalysisTemplateListResponse
    • CampaignLead
    • Campaign
    • CampaignCreate
    • CampaignUpdate
    • CampaignLeadCreate
DocumentationAPI Reference
DocumentationAPI Reference
Book a meeting
Linkedin
Github
  1. Webhooks

End of Call Report

Webhook
POST
end-of-call-report
Webhooks
Last modified:2026-01-30 13:43:45
Maintainer:Jesper Rietbergen
Called after the call ends with a summary and optional structured analysis.
This is the most commonly used webhook for integrating call data into CRM systems.
Payload includes:
Call duration in seconds
AI-generated call summary
Full conversation transcript (messages array)
Structured analysis result (if analysis_plan was configured on the agent)
Full assistant configuration including any custom metadata
Recording URL (if recording is enabled)

Assistant Object#

The payload includes the full assistant object containing:
All resolved configuration (after any overrides from assistant-request)
Any custom metadata you passed in the assistant-request response
This is especially useful for correlating call reports with your CRM records using the metadata you passed during assistant-request.
The response body is ignored.

Request

Authorization
Provide your bearer token in the
Authorization
header when making requests to protected resources.
Example:
Authorization: Bearer ********************
Body Params application/jsonRequired

Examples

Responses

🟢200
Acknowledged (response body ignored)
This response does not have a body.
Request Request Example
Shell
JavaScript
Java
Swift
curl --location --request POST 'https://your-api-server.com' \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data-raw '{
    "message": {
        "type": "end-of-call-report",
        "timestamp": "2025-12-13T12:05:30.000Z",
        "call": {
            "id": "5c4d030f-43e3-4e65-899e-8148521e660f",
            "type": "inbound_phone_call",
            "status": "ended"
        },
        "phone_number": {
            "number": "+31850835037",
            "name": "HMS Sovereign Demo"
        },
        "customer": {
            "number": "+31612345678"
        },
        "assistant": {
            "llm_config": {
                "provider": "openai",
                "model": "gpt-4.1"
            },
            "stt_config": {
                "provider": "deepgram",
                "model": "nova-3",
                "language": "nl"
            },
            "tts_config": {
                "provider": "elevenlabs",
                "voice_id": "ukiwGs47sHyibruHJ1vg"
            },
            "first_message": "Hello, how can I help you?",
            "analysis_plan": {
                "structured_data_plan": {
                    "enabled": true
                }
            },
            "autonomous_silence_handling": false,
            "voicemail_detection": false,
            "metadata": {
                "crm_id": "12345",
                "campaign_id": "summer-2025",
                "customer_tier": "premium"
            }
        },
        "duration_seconds": 84,
        "summary": "Customer asked about opening hours and wanted to schedule an appointment for next week.",
        "messages": [
            {
                "role": "assistant",
                "content": "Hello, how can I help you?"
            },
            {
                "role": "user",
                "content": "I would like to schedule an appointment for next week."
            },
            {
                "role": "assistant",
                "content": "Of course! Which day did you have in mind?"
            }
        ],
        "analysis": {
            "sentiment": 8,
            "main_topic": "Scheduling appointment",
            "question_answered": true,
            "conversation_quality": "Good"
        },
        "recording_url": "https://example.supabase.co/storage/v1/object/sign/recordings/5c4d030f-43e3-4e65-899e-8148521e660f/recording.ogg?token=eyJ..."
    }
}'
Modified at 2026-01-30 13:43:45
Previous
Call Status Update
Next
List analysis templates
Built with