Call recording, logging and transcribing

Record, log, and transcribe calls using artifact plans

Deprecated: The old recordingEnabled, recordingPath, and recordingCredentials properties are deprecated. Use the new artifactPlan configuration instead for recording, logging, and transcript generation.

Overview

Vapi’s artifact plan system provides comprehensive call recording, logging, and transcription capabilities that allow you to capture, store, and analyze voice conversations for quality assurance, training, and compliance purposes.

Artifact plans enable you to:

  • Record audio conversations for quality monitoring
  • Generate detailed call logs for debugging and analysis
  • Create transcripts for conversation analysis
  • Store artifacts in custom storage or Vapi’s secure cloud
  • Monitor conversation quality and assistant performance
  • Ensure compliance with regulatory requirements

Use Cases

Payment Processing Flows

Protect sensitive payment information by using a middle assistant with all artifacts disabled:

1{
2 "squad": {
3 "members": [
4 {
5 "assistant": {
6 "name": "Service Assistant",
7 "artifactPlan": {
8 "recordingEnabled": true,
9 "loggingEnabled": true,
10 "transcriptPlan": { "enabled": true }
11 }
12 }
13 },
14 {
15 "assistant": {
16 "name": "Payment Assistant",
17 "artifactPlan": {
18 "recordingEnabled": false,
19 "loggingEnabled": false,
20 "transcriptPlan": { "enabled": false }
21 }
22 }
23 },
24 {
25 "assistant": {
26 "name": "Confirmation Assistant",
27 "artifactPlan": {
28 "recordingEnabled": true,
29 "loggingEnabled": true,
30 "transcriptPlan": { "enabled": true }
31 }
32 }
33 }
34 ]
35 }
36}

This flow ensures that:

  • Service conversations are recorded for quality assurance
  • Payment details (credit card numbers, CVV codes) are never recorded or logged
  • Confirmation conversations are recorded for compliance

For Enterprise customers, Vapi provides built-in recording consent plans that automatically create a consent assistant to request recording permission before transferring to your main assistant.

The Enterprise consent feature supports both:

  • Verbal consent: Requires explicit “yes” confirmation from users
  • Implicit consent: Assumes consent if users stay on the line after hearing the consent message

The system automatically tracks consent decisions and provides compliance data in the end-of-call report, including whether consent was granted and when it was obtained.

Alternatively, you can implement custom consent flows using squads:

1{
2 "squad": {
3 "members": [
4 {
5 "assistant": {
6 "name": "Consent Assistant",
7 "artifactPlan": {
8 "recordingEnabled": false,
9 "loggingEnabled": false,
10 "transcriptPlan": { "enabled": false }
11 }
12 }
13 },
14 {
15 "assistant": {
16 "name": "Main Assistant",
17 "artifactPlan": {
18 "recordingEnabled": true,
19 "loggingEnabled": true,
20 "transcriptPlan": { "enabled": true }
21 }
22 }
23 }
24 ]
25 }
26}

The consent assistant runs without generating artifacts, while the main assistant records the actual conversation after consent is obtained.

Artifact Plan Configuration

Basic Configuration

Configure recording, logging, and transcript generation using the artifactPlan:

1{
2 "name": "Customer Support Assistant",
3 "artifactPlan": {
4 "recordingEnabled": true,
5 "recordingFormat": "wav;l16",
6 "loggingEnabled": true,
7 "pcapEnabled": true,
8 "transcriptPlan": {
9 "enabled": true,
10 "assistantName": "Assistant",
11 "userName": "Customer"
12 }
13 },
14 "model": {
15 "provider": "openai",
16 "model": "gpt-4"
17 },
18 "voice": {
19 "provider": "11labs",
20 "voiceId": "harry"
21 }
22}

Artifact Plan Options

Configure different types of artifacts with these options:

  • recordingEnabled: Enable call recording (stored in call.artifact.recording) Default: true
  • recordingFormat: Audio format for recordings (e.g., “wav;l16”, “mp3”) Default: “wav;l16”
  • loggingEnabled: Enable detailed call logs (stored in call.artifact.logUrl) Default: true
  • pcapEnabled: Enable SIP packet capture for phone calls (stored in call.artifact.pcapUrl) Default: true
  • transcriptPlan: Configure transcript generation with speaker names

Storage Configuration

Default Storage

By default, Vapi stores artifacts securely in the cloud:

  • Recordings, logs, and transcripts are encrypted at rest and in transit
  • Access is controlled through your API credentials
  • Artifacts are automatically cleaned up based on your retention policy

Custom Storage

Configure custom storage for different artifact types:

1{
2 "artifactPlan": {
3 "recordingEnabled": true,
4 "recordingFormat": "wav;l16",
5 "loggingEnabled": true,
6 "pcapEnabled": true,
7 "recordingUseCustomStorageEnabled": true,
8 "loggingUseCustomStorageEnabled": true,
9 "pcapUseCustomStorageEnabled": true,
10 "recordingPath": "https://your-bucket.s3.amazonaws.com/recordings/",
11 "loggingPath": "https://your-bucket.s3.amazonaws.com/logs/",
12 "pcapS3PathPrefix": "/pcaps",
13 "transcriptPlan": {
14 "enabled": true,
15 "assistantName": "Assistant",
16 "userName": "Customer"
17 }
18 },
19 "credentials": [
20 {
21 "provider": "aws",
22 "region": "us-east-1",
23 "accessKeyId": "your-access-key",
24 "secretAccessKey": "your-secret-key"
25 }
26 ]
27}

Storage Control Options

Control where each artifact type is stored:

  • recordingUseCustomStorageEnabled: Use custom storage for recordings (default: true)
  • loggingUseCustomStorageEnabled: Use custom storage for logs (default: true)
  • pcapUseCustomStorageEnabled: Use custom storage for SIP packet capture (default: true)
  • recordingPath: Custom path for recording storage
  • loggingPath: Custom path for log storage
  • pcapS3PathPrefix: S3 path prefix for PCAP files

Squad and Transfer Behavior

Dynamic Artifact Control

In squads with multiple assistants, artifact generation (recording, logging, transcripts) can be controlled per assistant. When assistants are swapped or transferred during a call:

  • Recording: Pauses when recordingEnabled: false assistant is active, resumes when recordingEnabled: true assistant takes over
  • Logging: Pauses when loggingEnabled: false assistant is active, resumes when loggingEnabled: true assistant takes over
  • Transcripts: Pauses when transcriptPlan.enabled: false assistant is active, resumes when transcriptPlan.enabled: true assistant takes over

Transcript Configuration

Automatic Transcription

Configure transcript generation using the transcriptPlan:

1{
2 "artifactPlan": {
3 "transcriptPlan": {
4 "enabled": true,
5 "assistantName": "Assistant",
6 "userName": "Customer"
7 }
8 }
9}

Transcript Plan Options

  • enabled: Enable or disable transcript generation
  • assistantName: Name to use for assistant messages in transcripts
  • userName: Name to use for user messages in transcripts

Transcript Features

  • Real-time transcription: Transcripts are generated during the call
  • Speaker identification: Distinguishes between assistant and user messages
  • Timestamps: Each message includes timing information
  • OpenAI formatting: Available in call.artifact.messagesOpenAIFormatted

Transcript Structure

1{
2 "callId": "call-123",
3 "artifact": {
4 "transcript": [
5 {
6 "role": "assistant",
7 "message": "Hello! How can I help you today?",
8 "time": 0.5
9 },
10 {
11 "role": "user",
12 "message": "I need help with my account",
13 "time": 3.2
14 }
15 ],
16 "messagesOpenAIFormatted": [
17 {
18 "role": "assistant",
19 "content": "Hello! How can I help you today?"
20 },
21 {
22 "role": "user",
23 "content": "I need help with my account"
24 }
25 ]
26 }
27}

Logging Configuration

Detailed Call Logs

Enable comprehensive logging for debugging and analysis:

1{
2 "artifactPlan": {
3 "loggingEnabled": true,
4 "loggingUseCustomStorageEnabled": true,
5 "loggingPath": "https://your-bucket.s3.amazonaws.com/logs/"
6 }
7}

Log Features

  • Debug information: Detailed logs for troubleshooting
  • Performance metrics: Call timing and performance data
  • Error tracking: Comprehensive error logs and stack traces
  • Workflow execution: Step-by-step workflow node execution

Accessing Logs

Logs are available through:

  • Dashboard: View logs in the call details page
  • API: Access via call.artifact.logUrl
  • Custom storage: Store logs in your S3/GCP bucket

Accessing Artifacts

Via Dashboard

  1. Navigate to Calls in your Vapi dashboard
  2. Select a specific call from the list
  3. View artifacts in the Artifacts section:
    • Recording: Play or download the audio recording
    • Transcript: View the full conversation transcript
    • Logs: Access detailed call logs for debugging
    • PCAP: Download SIP packet capture (phone calls only)

Via API

Retrieve artifact URLs programmatically:

1import { VapiClient } from "@vapi-ai/server-sdk";
2
3const client = new VapiClient({ token: "your-api-key" });
4
5// Get call details including all artifacts
6const call = await client.calls.get("call-id");
7
8console.log("Recording URL:", call.artifact.recording);
9console.log("Transcript:", call.artifact.transcript);
10console.log("Log URL:", call.artifact.logUrl);
11console.log("PCAP URL:", call.artifact.pcapUrl);
12console.log("Messages:", call.artifact.messages);
13console.log("Nodes:", call.artifact.nodes);

Privacy and Compliance

Important: Call recording laws vary by jurisdiction. Ensure compliance with:

  • Consent requirements - Inform participants about recording
  • Data protection regulations (GDPR, CCPA, etc.)
  • Industry standards (PCI DSS, HIPAA, etc.)

For Enterprise customers, Vapi provides automated consent management through recording consent plans. This feature automatically:

  • Creates a consent assistant that requests recording permission
  • Handles both verbal and stay-on-line consent types
  • Only begins recording after consent is granted
  • Maintains audit trails of consent decisions

Best Practices

  • Inform callers about recording at the start of conversations
  • Secure storage with encryption and access controls
  • Retention policies to automatically delete old recordings
  • Access logs to track who accesses recordings

Always comply with local laws regarding call recording. Some jurisdictions require explicit consent from all parties before recording.

Recording Analysis

Call Artifacts

Use the comprehensive artifact data for analysis:

1{
2 "callId": "call-123",
3 "artifact": {
4 "recording": "https://api.vapi.ai/recordings/call-123.mp3",
5 "transcript": [
6 {
7 "role": "assistant",
8 "message": "Hello! How can I help you today?",
9 "time": 0.5
10 },
11 {
12 "role": "user",
13 "message": "I need help with my account",
14 "time": 3.2
15 }
16 ],
17 "logUrl": "https://api.vapi.ai/logs/call-123.json",
18 "messages": [
19 {
20 "role": "assistant",
21 "message": "Hello! How can I help you today?"
22 },
23 {
24 "role": "user",
25 "message": "I need help with my account"
26 }
27 ],
28 "nodes": [
29 {
30 "name": "greeting",
31 "messages": ["Hello! How can I help you today?"],
32 "variables": {}
33 }
34 ],
35 "variableValues": {
36 "customerName": "John Doe",
37 "issueType": "account_access"
38 }
39 }
40}

Analysis Use Cases

Use artifact data for comprehensive insights:

  • Conversation flow analysis using artifact.nodes
  • Response quality evaluation using artifact.messages
  • Customer satisfaction metrics from transcript analysis
  • Assistant performance tracking using logs and recordings
  • Workflow optimization using node execution data
  • Variable tracking using artifact.variableValues

FAQ

Use the artifactPlan configuration in your assistant or call settings. Set recordingEnabled, loggingEnabled, and configure transcriptPlan.enabled to true to enable all three features.

By default, artifacts are stored securely in Vapi’s cloud storage. You can configure custom storage using S3 or Google Cloud Storage with the recordingPath, loggingPath, and storage control options.

Artifacts are available through the API via call.artifact.recording, call.artifact.transcript, call.artifact.logUrl, and other properties. You can also view them in the Vapi dashboard.

The transcript includes timing information and is optimized for conversation analysis. The messages property contains the same content but in a simpler format, while messagesOpenAIFormatted is structured for OpenAI API compatibility.

Use the transcriptPlan configuration with assistantName and userName properties to customize how speakers are identified in the transcript output.

Yes, you can configure artifact plans at both the assistant level and per individual call. This gives you granular control over what artifacts are generated for each conversation.

PCAP (Packet Capture) is available for phone calls and contains SIP packet data for debugging telephony issues. It’s stored in call.artifact.pcapUrl when pcapEnabled is set to true.

Default retention is 30 days for all artifacts. You can configure custom retention policies and use custom storage for longer-term archival.

In squads, each assistant can have different artifact settings. Recording, logging, and transcripts pause when an assistant with disabled artifacts is active, and resume when an assistant with enabled artifacts takes over. This allows for privacy-conscious flows like consent collection.

Next Steps