giorgior27
02/20/2025, 2:18 PMgiorgior27
02/20/2025, 4:14 PMShubham Bajaj
02/21/2025, 12:29 AM@IsOptional()
@IsBoolean()
@ApiHideProperty()
inputPreprocessingEnabled?: boolean;
This shows inputPreprocessingEnabled is deprecated in favor of chunkPlan.enabled.
The dashboard might still show both because of backward compatibility, but you should use the new structure:
export class ChunkPlan {
/**
* This determines whether the model output is chunked before being sent to the voice provider. Default true.
*
* Usage:
* - To rely on the voice provider's audio generation logic, set this to false.
* - If seeing issues with quality, set this to true.
*
* If disabled, Vapi-provided audio control tokens like <flush /> will not work.
* @default true
*/
@IsOptional()
@IsBoolean()
@ApiPropertyOptional({ example: true })
enabled?: boolean;
/**
* This is the minimum number of characters in a chunk.
*
* Usage:
* - To increase quality, set this to a higher value.
* - To decrease latency, set this to a lower value.
*
* @default 30
*/
@IsOptional()
@IsNumberWithHelpfulError()
@IsInt()
@Min(1)
@Max(80)
@ApiPropertyOptional({ example: 30 })
minCharacters?: number;
/**
* These are the punctuations that are considered valid boundaries for a chunk to be created.
*
* Usage:
* - To increase quality, constrain to fewer boundaries.
* - To decrease latency, enable all.
*
* Default is automatically set to balance the trade-off between quality and latency based on the provider.
*/
@IsOptional()
@ArrayUnique()
@ArrayNotEmpty()
@IsIn(INPUT_PUNCTUATION_BOUNDARIES, { each: true })
@ApiPropertyOptional({
enum: INPUT_PUNCTUATION_BOUNDARIES,
isArray: true,
example: DEFAULT_INPUT_PUNCTUATION_BOUNDARIES,
})
punctuationBoundaries?: Punctuation[];
/**
* This is the plan for formatting the chunk before it is sent to the voice provider.
*/
@IsOptional()
@IsObject()
@ValidateNested()
@Type(() => FormatPlan)
formatPlan?: FormatPlan;
}
Shubham Bajaj
02/21/2025, 12:30 AM* When this is enabled, no logs, recordings, or transcriptions will be stored. At the end of the call, you will still receive an end-of-call-report message to store on your server. Defaults to false.
*
* @deprecated Use compliancePlan.hipaaEnabled instead.
*
*/
@IsOptional()
@IsBoolean()
@ApiHideProperty()
hipaaEnabled?: boolean;
3. Recording Configuration
The root level recordingEnabled is being transitioned to artifactPlan.recordingEnabled:
* This determines whether assistant's calls are recorded. Defaults to true.
*
* Usage:
* - If you don't want to record the calls, set this to false.
* - If you want to record the calls when assistant.hipaaEnabled (deprecated) or assistant.compliancePlan.hipaaEnabled explicity set this to true and make sure to provide S3 or GCP credentials on the Provider Credentials page in the Dashboard.
*
* You can find the recording at call.artifact.recordingUrl and call.artifact.stereoRecordingUrl after the call is ended.
*
* @default true
*/
@IsOptional()
@IsBoolean()
@ApiPropertyOptional({ example: true })
recordingEnabled?: boolean;
Recommendation:
Always use the new plan-based structure:
{
"chunkPlan": {
"enabled": true,
"minCharacters": 45,
"punctuationBoundaries": [".", "!", "?"],
"formatPlan": {
"enabled": true,
"numberToDigitsCutoff": 2025
}
},
"compliancePlan": {
"hipaaEnabled": true
},
"artifactPlan": {
"recordingEnabled": true
}
}
The reason you see both versions is due to backward compatibility. The system maintains both to prevent breaking existing implementations, but you should use the new structured approach as the root-level fields will eventually be removed.giorgior27
02/21/2025, 7:44 PMVapi
02/24/2025, 7:33 AM