POST /v1/post-call
After a call ends, submit the call summary to store a permanent evidence bundle. This packages every disclosure made, every consent captured, and every opt-out honored into a signed, tamper-proof record that can be used for legal defense.
This endpoint is always free.
Request
Section titled “Request”POST https://voice.econsent.org/v1/post-callAuthorization: Bearer ec_voice_YOUR_KEYContent-Type: application/json{ "call_id": "call_xyz789", "phone": "+15551234567", "calling_entity": "Acme Insurance LLC", "calling_number": "+18005550100", "started_at": "2026-04-10T15:42:00Z", "ended_at": "2026-04-10T15:46:30Z", "duration_seconds": 270, "outcome": "completed", "audio_recording_url": "https://storage.yourplatform.com/recordings/call_xyz789.wav", "full_transcript": "...", "ai_disclosures_made": [ { "type": "ai_identity", "at_seconds": 1, "text": "Hi, this is an AI assistant calling on behalf of Acme Insurance." }, { "type": "callback_number", "at_seconds": 4, "text": "Our callback number is 800-555-0100." }, { "type": "opt_out_instructions", "at_seconds": 6, "text": "If you'd like to opt out at any time, just say stop or press 9." } ], "consent_ids_used": ["cst_lx8k7n3f4g5h6j7k"], "consent_ids_captured": ["cst_lx8ka1b2c3d4e5f6"]}| Field | Type | Required | Description |
|---|---|---|---|
call_id | string | Yes | Your internal call identifier |
phone | string | Yes | Consumer phone in E.164 |
calling_entity | string | Yes | Legal entity name |
calling_number | string | No | Caller ID phone number |
started_at | string | No | ISO 8601 call start time |
ended_at | string | No | ISO 8601 call end time |
duration_seconds | number | No | Call duration in seconds |
outcome | string | No | completed, no_answer, voicemail, failed |
audio_recording_url | string | No | URL to the full call recording |
full_transcript | string | No | Full call transcript |
ai_disclosures_made | array | No | List of disclosures made during the call (see below) |
consent_ids_used | array | No | Consent IDs that authorized this call (from precall) |
consent_ids_captured | array | No | Consent IDs captured during this call (from capture-verbal) |
Disclosure types
Section titled “Disclosure types”| Type | Description |
|---|---|
ai_identity | Disclosed that an AI is making the call |
callback_number | Provided the callback phone number |
opt_out_instructions | Explained how to opt out |
consent_request | Asked for consent |
offshore_location | Disclosed the call center location (for offshore compliance) |
Response
Section titled “Response”{ "evidence_bundle_id": "ev_lx8kc1d2e3f4g5h6", "stored": true, "evidence_url": "https://verify.econsent.org/e/ev_lx8kc1d2e3f4g5h6", "compliance_score": 100, "compliance_findings": [], "retention_until": "2030-04-10T15:46:30Z"}Code Examples
Section titled “Code Examples”await voice.postCall({ callId: 'call_xyz789', phone: '+15551234567', callingEntity: 'Acme Insurance LLC', durationSeconds: 270, outcome: 'completed', aiDisclosuresMade: [ { type: 'ai_identity', atSeconds: 1, text: 'This is an AI assistant...' }, { type: 'callback_number', atSeconds: 4, text: 'Our number is 800-555-0100' }, ],});voice.post_call( call_id="call_xyz789", phone="+15551234567", calling_entity="Acme Insurance LLC", duration_seconds=270, outcome="completed", ai_disclosures_made=[ {"type": "ai_identity", "at_seconds": 1, "text": "This is an AI assistant..."}, {"type": "callback_number", "at_seconds": 4, "text": "Our number is 800-555-0100"}, ],)