Skip to content

Commit c6a38a6

Browse files
fix: address PR review feedback
- Fix Custom TTS link to customization/custom-voices/custom-tts - Update Custom Storage Data Flow: rename "Vapi Metadata" to "Vapi Storage" with Product Usage Metrics and System Logs - Add clear distinction between System Logs (internal) and Call Logs (customer-facing) - Ensure consistent naming across all diagrams - Add Vapi Storage to Custom Models Data Flow diagram - Fix BYOI Summary: Transport BYOK via Twilio/Telnyx/Vonage, Storage in BYOK column - Fix Artifacts Storage Summary: Custom Storage as Yes/No, add HIPAA disclaimer Co-Authored-By: Claude <noreply@anthropic.com>
1 parent 6791466 commit c6a38a6

1 file changed

Lines changed: 98 additions & 43 deletions

File tree

fern/security-and-privacy/data-flow.mdx

Lines changed: 98 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,21 @@ When using Vapi, data flows through multiple components during a voice conversat
1616

1717
---
1818

19+
## Understanding Log Types
20+
21+
Vapi generates two distinct types of logs during calls:
22+
23+
| Log Type | Description | Visibility | Custom Storage |
24+
|----------|-------------|------------|----------------|
25+
| **System Logs** | Internal operational logs used by Vapi for debugging, monitoring, and system health | Vapi internal only | ❌ Never uploaded to custom bucket |
26+
| **Call Logs** | Conversation data including transcripts, recordings, and call metadata | Available to customers via API/Dashboard | ✅ Can be uploaded to custom bucket |
27+
28+
<Warning>
29+
**System Logs** are strictly internal to Vapi and are never shared with customers or uploaded to custom storage buckets. They contain infrastructure-level data used for Vapi's operational purposes only.
30+
</Warning>
31+
32+
---
33+
1934
## Voice Pipeline Architecture
2035

2136
Vapi orchestrates a sophisticated voice pipeline with multiple modular components. Each component can be configured to use Vapi's default providers, your own API keys, or your own custom servers.
@@ -112,7 +127,7 @@ Vapi runs proprietary real-time models that make conversations feel natural. The
112127
| **Filler Injection** | Adds natural speech patterns ("um", "like", "so") |
113128

114129
<Warning>
115-
Orchestration models process data in real-time but do **not persist** the audio or intermediate results. All processing is **ephemeral**. Only final transcripts and logs are stored (unless HIPAA mode is enabled).
130+
Orchestration models process data in real-time but do **not persist** the audio or intermediate results. All processing is **ephemeral**. Only final transcripts and call logs are stored (unless HIPAA mode is enabled).
116131
</Warning>
117132

118133
### 4. Language Model (LLM)
@@ -131,7 +146,7 @@ Generates conversational responses based on transcribed user input.
131146
Converts LLM responses into spoken audio.
132147

133148
<Note>
134-
**Custom Voice:** Vapi supports custom TTS integration via audio streaming endpoints. See [Custom TTS](/customization/custom-tts).
149+
**Custom Voice:** Vapi supports custom TTS integration via audio streaming endpoints. See [Custom TTS](/customization/custom-voices/custom-tts).
135150
</Note>
136151

137152
**Bring Your Own API Key:**
@@ -157,32 +172,41 @@ flowchart LR
157172
TTS[Voice]
158173
end
159174
160-
subgraph Storage["Vapi Storage"]
161-
R[(Recordings)]
162-
TR[(Transcripts)]
163-
L[(Call Logs)]
164-
M[(Metrics)]
175+
subgraph VapiStorage["Vapi Storage"]
176+
subgraph CallData["Call Logs (Customer-Accessible)"]
177+
R[(Recordings)]
178+
TR[(Transcripts)]
179+
L[(Call Logs)]
180+
end
181+
subgraph InternalData["Internal (Vapi Only)"]
182+
M[(Product Usage Metrics)]
183+
SL[(System Logs)]
184+
end
165185
end
166186
167187
A --> T --> STT --> O --> LLM --> TTS --> T --> A
168188
STT -.-> TR
169189
O -.-> L
170190
LLM -.-> L
171191
TTS -.-> R
192+
Vapi -.-> InternalData
172193
```
173194

174195
**Default storage on Vapi:**
175-
- Call recordings (configurable retention)
176-
- Full transcripts with timestamps
177-
- Call logs with component-level detail
178-
- Usage metrics and analytics
179-
- Structured outputs from call analysis
196+
- **Call Logs (Customer-Accessible):**
197+
- Call recordings (configurable retention)
198+
- Full transcripts with timestamps
199+
- Call logs with component-level detail
200+
- Structured outputs from call analysis
201+
- **Internal (Vapi Only):**
202+
- Product usage metrics and analytics
203+
- System logs for operational monitoring
180204

181205
---
182206

183207
## Custom Storage Data Flow
184208

185-
When you configure custom bucket storage, recordings and artifacts are uploaded to your infrastructure.
209+
When you configure custom bucket storage, call recordings and call logs are uploaded to your infrastructure. System logs and product usage metrics remain on Vapi's infrastructure.
186210

187211
```mermaid
188212
flowchart LR
@@ -199,20 +223,25 @@ flowchart LR
199223
end
200224
201225
subgraph Customer["Your Cloud Storage"]
202-
R[(Recordings)]
203-
TR[(Transcripts)]
204-
L[(Logs)]
226+
subgraph CustomerCallData["Call Logs (Customer Data)"]
227+
R[(Recordings)]
228+
TR[(Transcripts)]
229+
L[(Call Logs)]
230+
end
205231
end
206232
207-
subgraph VapiMin["Vapi Metadata"]
208-
M[Call IDs & Timestamps]
233+
subgraph VapiStorage["Vapi Storage"]
234+
subgraph InternalData["Internal (Vapi Only)"]
235+
M[(Product Usage Metrics)]
236+
SL[(System Logs)]
237+
end
209238
end
210239
211240
A --> T --> STT --> O --> LLM --> TTS --> T --> A
212241
STT -.-> TR
213242
TTS -.-> R
214243
O -.-> L
215-
Vapi -.-> VapiMin
244+
Vapi -.-> InternalData
216245
```
217246

218247
**Supported storage providers:**
@@ -222,6 +251,10 @@ flowchart LR
222251
- Supabase Storage
223252
- Azure Blob Storage
224253

254+
<Note>
255+
**System Logs** and **Product Usage Metrics** are always stored on Vapi's infrastructure and are never uploaded to custom storage buckets. These are internal operational data used by Vapi only.
256+
</Note>
257+
225258
---
226259

227260
## Custom Models Data Flow
@@ -251,8 +284,19 @@ flowchart TB
251284
TTS[Voice]
252285
end
253286
254-
subgraph YourStorage["Your Storage"]
255-
S[(All Artifacts)]
287+
subgraph YourStorage["Your Cloud Storage"]
288+
subgraph CustomerCallData["Call Logs (Customer Data)"]
289+
S[(Recordings)]
290+
S2[(Transcripts)]
291+
S3[(Call Logs)]
292+
end
293+
end
294+
295+
subgraph VapiStorage["Vapi Storage"]
296+
subgraph InternalData["Internal (Vapi Only)"]
297+
M[(Product Usage Metrics)]
298+
SL[(System Logs)]
299+
end
256300
end
257301
258302
A --> T
@@ -261,26 +305,28 @@ flowchart TB
261305
O <--> LLM
262306
O <--> TTS
263307
TTS --> T --> A
264-
O -.-> S
308+
O -.-> CustomerCallData
309+
Vapi -.-> InternalData
265310
```
266311

267312
**With full custom configuration:**
268313
- **Your servers process:** Audio transcription, LLM inference, speech synthesis
269314
- **Vapi handles:** Orchestration (endpointing, interruptions, etc.), transport routing
270-
- **Your storage receives:** Recordings, transcripts, logs
315+
- **Your storage receives:** Recordings, transcripts, call logs
316+
- **Vapi storage retains:** Product usage metrics, system logs (internal only)
271317

272318
---
273319

274320
## Bring Your Own Infrastructure Summary
275321

276-
| Component | Bring Your Own API Key | Custom Server |
277-
|-----------|----------------------|---------------|
278-
| **Transport** | N/A | ✅ WebSocket/SIP |
322+
| Component | Bring Your Own Key (BYOK) | Custom Server |
323+
|-----------|---------------------------|---------------|
324+
| **Transport** | ✅ Twilio, Telnyx, Vonage, etc. | ✅ WebSocket/SIP |
279325
| **Transcriber** | ✅ Most providers |[Custom Transcriber](/customization/custom-transcriber) |
280326
| **Orchestration** | ❌ Vapi only | ❌ Vapi only |
281327
| **LLM** | ✅ All providers |[Custom LLM](/customization/custom-llm/using-your-server) |
282-
| **Voice** | ✅ All providers |[Custom TTS](/customization/custom-tts) |
283-
| **Storage** | N/A | ✅ S3/GCP/R2/Azure |
328+
| **Voice** | ✅ All providers |[Custom TTS](/customization/custom-voices/custom-tts) |
329+
| **Storage** | ✅ S3/GCP/R2/Azure | ✅ S3/GCP/R2/Azure |
284330

285331
<Note>
286332
The **Orchestration Layer** (endpointing, interruption detection, emotion detection, backchanneling, filler injection) is Vapi's core value proposition and runs exclusively on Vapi infrastructure. Audio processed by these models is **ephemeral** and not stored.
@@ -290,13 +336,18 @@ The **Orchestration Layer** (endpointing, interruption detection, emotion detect
290336

291337
## Artifacts Storage Summary
292338

293-
| Artifact | Default Location | Custom Storage | HIPAA Mode |
294-
|----------|-----------------|----------------|------------|
295-
| **Call Recordings** | Vapi | Your bucket | Not stored |
296-
| **Transcripts** | Vapi | Your bucket | Not stored |
297-
| **Call Logs** | Vapi | Your bucket | Not stored |
298-
| **Usage Metrics** | Vapi | Analytics API | Vapi only |
299-
| **Structured Outputs** | Vapi | Webhook delivery | Configurable |
339+
| Artifact | Default Location | Custom Storage Supported | HIPAA Mode |
340+
|----------|-----------------|--------------------------|------------|
341+
| **Call Recordings** | Vapi | ✅ Yes | Not stored on Vapi |
342+
| **Transcripts** | Vapi | ✅ Yes | Not stored on Vapi |
343+
| **Call Logs** | Vapi | ✅ Yes | Not stored on Vapi |
344+
| **Product Usage Metrics** | Vapi | ❌ No | Vapi only |
345+
| **System Logs** | Vapi | ❌ No | Vapi only |
346+
| **Structured Outputs** | Vapi | ✅ Yes (via webhook) | Configurable |
347+
348+
<Warning>
349+
**HIPAA Mode Important Notice:** When HIPAA mode is enabled (`hipaaEnabled: true`) and no custom storage is configured, Vapi will **not store** call recordings or transcripts. This data will be lost after the call ends. To retain call data in HIPAA mode, you **must** configure a custom storage bucket.
350+
</Warning>
300351

301352
---
302353

@@ -307,8 +358,8 @@ Even with maximum custom configuration, certain data passes through Vapi's orche
307358
| Data Type | Processing | Retention |
308359
|-----------|-----------|-----------|
309360
| Raw audio streams | Real-time routing to Transcriber/Voice | **Ephemeral** (not stored) |
310-
| Transcribed text | Orchestration analysis, LLM routing | Logged (unless HIPAA) |
311-
| LLM responses | Filler injection, Voice routing | Logged (unless HIPAA) |
361+
| Transcribed text | Orchestration analysis, LLM routing | Call logs (unless HIPAA) |
362+
| LLM responses | Filler injection, Voice routing | Call logs (unless HIPAA) |
312363
| Emotion metadata | Passed to LLM context | **Ephemeral** |
313364
| Call signaling | SIP/WebSocket management | Metadata only |
314365

@@ -322,18 +373,18 @@ Even with maximum custom configuration, certain data passes through Vapi's orche
322373
- **Custom Transcriber** via WebSocket endpoint
323374
- **Custom LLM** via OpenAI-compatible server
324375
- **Custom Voice** via audio streaming endpoint
325-
- **Custom bucket storage** for all artifacts
326-
- **HIPAA mode** to prevent any Vapi storage
376+
- **Custom bucket storage** for all call logs
377+
- **HIPAA mode** to prevent Vapi call log storage
327378

328-
Result: Only orchestration signals (ephemeral) pass through Vapi.
379+
Result: Only orchestration signals (ephemeral) pass through Vapi. System logs remain on Vapi infrastructure (never shared).
329380
</Accordion>
330381

331382
<Accordion title="Data residency compliance">
332383
- Use **custom bucket storage** in your required region
333384
- Use **custom LLM** hosted in-region OR provider with regional endpoints
334385
- Use **custom Voice** hosted in-region if needed
335386

336-
Note: Orchestration models run on Vapi's US/EU infrastructure (data is ephemeral).
387+
Note: Orchestration models run on Vapi's US/EU infrastructure (data is ephemeral). System logs remain on Vapi infrastructure.
337388
</Accordion>
338389

339390
<Accordion title="Cost optimization with own API keys">
@@ -344,9 +395,13 @@ Even with maximum custom configuration, certain data passes through Vapi's orche
344395

345396
<Accordion title="HIPAA compliance">
346397
- Enable `hipaaEnabled: true`
398+
- **Important:** Configure custom storage to retain call recordings and transcripts
347399
- Use only HIPAA-compliant providers (Deepgram, Azure, OpenAI, Anthropic, ElevenLabs)
348-
- Optional: Custom storage for additional PHI control
349400
- See [HIPAA Compliance](/security-and-privacy/hipaa)
401+
402+
<Warning>
403+
Without custom storage configured, HIPAA mode will result in **no call recordings or transcripts being stored**. Data will be lost after call completion.
404+
</Warning>
350405
</Accordion>
351406
</AccordionGroup>
352407

@@ -357,7 +412,7 @@ Even with maximum custom configuration, certain data passes through Vapi's orche
357412
### Custom Integration Guides
358413
- [Custom Transcriber](/customization/custom-transcriber) - Bring your own speech-to-text
359414
- [Custom LLM](/customization/custom-llm/using-your-server) - Bring your own language model
360-
- [Custom TTS](/customization/custom-tts) - Bring your own voice synthesis
415+
- [Custom TTS](/customization/custom-voices/custom-tts) - Bring your own voice synthesis
361416

362417
### Storage Configuration
363418
- [AWS S3](/providers/cloud/s3) - S3 bucket setup

0 commit comments

Comments
 (0)