For AI agents: a documentation index is available at the root level at /llms.txt and /llms-full.txt. Append /llms.txt to any URL for a page-level index, or .md for the markdown version of any page.
Configure consent management for call recording compliance
Enterprise Feature: Recording consent plans are only available for
Enterprise customers. Contact your account manager or sales
team to enable
this feature.
Overview
The recording consent plan feature automatically creates a consent assistant that asks users for permission to record calls before transferring them to your main assistant. Call recording only begins after consent is granted, ensuring compliance with privacy laws and regulations across different jurisdictions.
Recording consent plans enable you to:
Automatically request recording consent before each call
Handle consent through two different interaction patterns
Ensure compliance with privacy regulations (GDPR, CCPA, etc.)
Maintain audit trails of consent decisions while ensuring privacy during the consent process
How it works:
A consent assistant is automatically created and placed first in the call flow
Users interact with the consent assistant to grant or deny recording permission
If consent is granted, the call transfers to your original assistant
If consent is denied, the call ends or transfers based on your configuration
Consent Types
Vapi supports two types of recording consent plans, each designed for different use cases and legal requirements.
Stay-on-Line Consent
This type assumes consent is granted if the user remains on the call after hearing the consent message. It’s commonly used for customer service scenarios where staying on the line implies agreement.
Best practices for stay-on-line messages:
Clearly state that staying on the line implies consent
Mention the purpose of recording (quality, training, etc.)
Provide clear instructions to hang up if they don’t consent
Example message:
"For quality and training purposes, this call may be recorded. Please stay on the line if you agree to being recorded, or hang up if you do not consent."
Verbal Consent
This type requires explicit verbal consent from the user. The AI assistant will ask for clear confirmation and continue asking until the user provides explicit consent or declines.
Best practices for verbal consent messages:
Ask for explicit verbal confirmation
Use clear yes/no language
Explain what happens if they decline
Example message:
"This call may be recorded for quality and training purposes. Do you agree to being recorded? Please say 'yes' if you agree or 'no' if you decline."
Configuration
Add the recording consent plan to your assistant’s compliancePlan:
Basic Stay-on-Line Configuration
1
{
2
"compliancePlan": {
3
"recordingConsentPlan": {
4
"type": "stay-on-line",
5
"message": "For quality and training purposes, this call may be recorded. Please stay on the line if you agree to being recorded, or hang up if you do not consent.",
6
"voice": {
7
"voiceId": "Neha",
8
"provider": "vapi"
9
},
10
"waitSeconds": 3
11
}
12
}
13
}
Basic Verbal Consent Configuration
1
{
2
"compliancePlan": {
3
"recordingConsentPlan": {
4
"type": "verbal",
5
"message": "This call may be recorded for quality and training purposes. Do you agree to being recorded? Please say 'yes' if you agree or 'no' if you decline.",
When you add a recording consent plan to your assistant, the compliance data will be included in the end-of-call-report webhook. Here’s what the compliance section looks like in the webhook payload:
Successful Consent Webhook
1
{
2
"message": {
3
"type": "end-of-call-report",
4
"analysis": {
5
/* call analysis data */
6
},
7
"artifact": {
8
/* call artifacts */
9
},
10
"startedAt": "2024-01-15T10:25:00Z",
11
"endedAt": "2024-01-15T10:35:00Z",
12
"endedReason": "assistantEndedCall",
13
"cost": 0.15,
14
"compliance": {
15
"recordingConsent": {
16
"type": "verbal",
17
"grantedAt": "2024-01-15T10:30:00Z"
18
}
19
},
20
"transcript": "/* call transcript */",
21
"recordingUrl": "https://...",
22
"stereoRecordingUrl": "https://..."
23
}
24
}
No Consent Webhook
1
{
2
"message": {
3
"type": "end-of-call-report",
4
"analysis": {
5
/* call analysis data */
6
},
7
"artifact": {
8
/* call artifacts */
9
},
10
"startedAt": "2024-01-15T10:25:00Z",
11
"endedAt": "2024-01-15T10:30:00Z",
12
"endedReason": "assistantEndedCall",
13
"cost": 0.1,
14
"compliance": {
15
"recordingConsent": {
16
"type": "verbal"
17
}
18
},
19
"transcript": "/* call transcript */"
20
}
21
}
Key points about the webhook structure:
recordingConsent field: Always present in the compliance object when a consent plan is configured
type: Shows which consent type was used ("verbal" or "stay-on-line")
grantedAt: Only set when the user explicitly grants permission
Missing grantedAt: Indicates the user declined consent or hung up before granting permission
This webhook structure allows you to easily determine whether recording consent was granted and audit compliance decisions for each call. The compliance data is sent as part of the end-of-call-report webhook, which includes all call details, analysis, and compliance information.