Dialer integration
Push calls from any dialer into AskElephant, deep-link back to the originating system, and retrieve AI-generated insights
Overview
The AskElephant public API lets any dialer or call recording system push calls for processing and retrieve AI-generated insights (action items, signals, transcripts) when they are ready. The integration flow is:
- Ingest — Your dialer submits a call recording via
POST /v2/engagements - Process — AskElephant transcribes the recording and runs AI analysis
- Notify — A webhook fires when the transcript is ready
- Retrieve — Your system fetches insights via
GET /v2/engagements/{id}?expand=action_items,signals
The external_url field on each engagement lets you deep-link from AskElephant back to the call in your dialer’s UI, and from your dialer into the AskElephant engagement.
Prerequisites
- An AskElephant workspace with API access enabled
- An API key (
sk-apik_<id>.<secret>) — see Authentication - A webhook endpoint configured in Settings > Webhooks — see Webhooks
- Publicly accessible HTTPS URLs for your call recordings
Step 1 — Submit a call recording
When a call ends and a recording is available, submit it to AskElephant:
Request fields
Response
Save the id — you will need it to fetch insights later.
Idempotency
The external_id field serves as the workspace-scoped idempotency key. If you submit the same external_id again (even with different field values), the API returns the existing engagement unchanged. This means you can safely retry failed submissions without creating duplicates.
Step 2 — Subscribe to the transcript webhook
In Settings > Webhooks, subscribe to the v1.engagement.transcript_timeline.completed event type. This event fires when the engagement transcript has been processed and is ready for retrieval.
Example webhook payload:
The data.object is the full engagement, including the external_url you provided at creation time.
Webhook delivery
Webhooks are delivered by Svix with automatic retries and exponential backoff. Your endpoint should:
- Return a
2xxstatus within 15 seconds - Be idempotent — the same event may be delivered more than once
- Verify the Svix signature before processing — see Verifying webhook signatures
Step 3 — Retrieve insights
When you receive the v1.engagement.transcript_timeline.completed webhook, fetch the engagement with expanded insights:
Response with insights
Available expand fields
Combine multiple expand fields with commas: ?expand=action_items,signals,transcript
Timing considerations
The v1.engagement.transcript_timeline.completed event fires when the transcript is ready. AI-derived insights (action items, signals) are generated through independent processing pipelines and may still be in progress when the transcript event fires.
Recommended approach: When you receive the webhook, wait 30-60 seconds before fetching insights with ?expand=action_items,signals. If the action_items or signals arrays are empty, retry after a short delay. Most insights are available within 2-3 minutes of transcript completion.
WAVV event mapping
If you are integrating WAVV (or a similar dialer), here is how WAVV call lifecycle events map to AskElephant API calls:
WAVV-specific guidance
- Use
"source_system": "wavv"to identify calls from WAVV in AskElephant - Set
external_idto the WAVV call ID for idempotency (e.g."wavv-call-12345") - Set
external_urlto the WAVV call detail URL or use a deep-link scheme (e.g.wavv://call/12345) if the WAVV app supports deep linking - Map WAVV agent info to the participant with
is_owner: true - Map the WAVV lead/contact to additional participants with their name, email, and/or phone
Deep linking with external_url
The external_url field creates a bidirectional link between AskElephant and your dialer:
- Dialer to AskElephant: Your dialer can link to the AskElephant engagement using the engagement
idreturned in the creation response - AskElephant to dialer: The
external_urlis stored with the engagement and included in all engagement API responses and webhook payloads, letting downstream systems link back to the call in your dialer
The field accepts:
- Standard URLs:
https://my-dialer.example.com/calls/123 - Custom app deep-link schemes:
wavv://call/123,tel:+14155550100
Dangerous schemes (javascript:, data:, vbscript:, blob:, file:) are rejected.
Error handling
Complete integration checklist
- Obtain an API key from Settings > API Keys
- Configure a webhook endpoint in Settings > Webhooks and subscribe to
v1.engagement.transcript_timeline.completed - Implement Svix signature verification on your webhook handler
- When a call recording is ready,
POST /v2/engagementswith the recording URL, call metadata, andexternal_url - When you receive the transcript webhook, fetch
GET /v2/engagements/{id}?expand=action_items,signalsto retrieve insights - Display insights in your dialer UI alongside the call details