types
Voice Router SDK - Webhook Normalization / types
types
Interfaces
UnifiedWebhookEvent
Unified webhook event with provider-specific type safety
When a specific provider is known at compile time, the raw field
will be typed with that provider's actual webhook payload type.
Example
const event: UnifiedWebhookEvent<'gladia'> = handler.parse(payload);
// event.raw is typed as GladiaWebhookPayload
if ('payload' in event.raw) {
const transcription = event.raw.payload; // TranscriptionResultDTO
}Type Parameters
| Type Parameter | Default type | Description |
|---|---|---|
P extends TranscriptionProvider | TranscriptionProvider | The transcription provider (defaults to all providers) |
Properties
eventType
eventType:
WebhookEventType
Type of webhook event
provider
provider:
P
Provider that sent this webhook
raw
raw:
Pextends keyofProviderWebhookPayloadMap?ProviderWebhookPayloadMap[P<P>] :unknown
Original webhook payload (fully typed per provider)
Type-safe based on the provider:
gladia: GladiaWebhookPayloadassemblyai: AssemblyAIWebhookPayloaddeepgram: DeepgramWebhookPayload
success
success:
boolean
Whether the operation was successful
timestamp
timestamp:
string
Event timestamp
data?
optionaldata:object
Transcription data (if available)
id
id:
string
Transcription job ID
status
status:
TranscriptionStatus
Current status
completedAt?
optionalcompletedAt:string
Completion timestamp
confidence?
optionalconfidence:number
Overall confidence score
createdAt?
optionalcreatedAt:string
Creation timestamp
duration?
optionalduration:number
Audio duration in seconds
error?
optionalerror:string
Error message (only for failed events)
language?
optionallanguage:string
Detected or specified language
metadata?
optionalmetadata:Record<string,unknown>
Additional provider-specific metadata
speakers?
optionalspeakers:Speaker[]
Speaker diarization results
summary?
optionalsummary:string
Summary of content
text?
optionaltext:string
Full transcribed text (only for completed events)
utterances?
optionalutterances:Utterance[]
Utterances (speaker turns)
words?
optionalwords:Word[]
Word-level transcription
WebhookValidation
Webhook validation result
Properties
valid
valid:
boolean
Whether the webhook is valid
details?
optionaldetails:Record<string,unknown>
Additional validation details
error?
optionalerror:string
Error message (if invalid)
provider?
optionalprovider:TranscriptionProvider
Detected provider (if valid)
WebhookVerificationOptions
Webhook signature verification options
Properties
headers?
optionalheaders:Record<string,string>
Custom headers from the webhook request
rawBody?
optionalrawBody:string|Buffer<ArrayBufferLike>
Raw request body (for signature verification)
secret?
optionalsecret:string
Webhook secret key
signature?
optionalsignature:string
Webhook signature from headers
timestamp?
optionaltimestamp:string
Timestamp from headers (for replay attack prevention)
References
AssemblyAIWebhookPayload
Re-exports AssemblyAIWebhookPayload
DeepgramWebhookPayload
Re-exports DeepgramWebhookPayload
GladiaWebhookErrorPayload
Re-exports GladiaWebhookErrorPayload
GladiaWebhookSuccessPayload
Re-exports GladiaWebhookSuccessPayload
Type Aliases
GladiaWebhookPayload
GladiaWebhookPayload =
GladiaWebhookSuccessPayload|GladiaWebhookErrorPayload
Union of all Gladia webhook payloads
ProviderWebhookPayloadMap
ProviderWebhookPayloadMap =
object
Map of provider names to their webhook payload types
Properties
assemblyai
assemblyai:
AssemblyAIWebhookPayload
azure-stt
azure-stt:
unknown
deepgram
deepgram:
DeepgramWebhookPayload
gladia
gladia:
GladiaWebhookPayload
openai-whisper
openai-whisper:
never
speechmatics
speechmatics:
unknown
WebhookEventType
WebhookEventType =
"transcription.created"|"transcription.processing"|"transcription.completed"|"transcription.failed"|"live.session_started"|"live.session_ended"|"live.transcript"
Unified webhook event types