@apicity/elevenlabs 0.6.4 → 0.6.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/src/zod.js CHANGED
@@ -57,6 +57,87 @@ export const ElevenLabsGetVoiceRequestSchema = z.object({
57
57
  with_settings: z.boolean().optional(),
58
58
  });
59
59
  // ---------------------------------------------------------------------------
60
+ // GET /v1/voices
61
+ // ---------------------------------------------------------------------------
62
+ export const ElevenLabsListV1VoicesRequestSchema = z.object({
63
+ show_legacy: z.boolean().nullable().optional(),
64
+ });
65
+ // ---------------------------------------------------------------------------
66
+ // POST /v1/voices/add
67
+ // ---------------------------------------------------------------------------
68
+ export const ElevenLabsAddVoiceRequestSchema = z.object({
69
+ name: z.string(),
70
+ files: z.array(z.custom((value) => value instanceof Blob)).min(1),
71
+ remove_background_noise: z.boolean().optional(),
72
+ description: z.string().nullable().optional(),
73
+ labels: z
74
+ .union([z.record(z.string(), z.string()), z.string()])
75
+ .nullable()
76
+ .optional(),
77
+ });
78
+ // ---------------------------------------------------------------------------
79
+ // POST /v1/voices/:voice_id/edit
80
+ // ---------------------------------------------------------------------------
81
+ export const ElevenLabsEditVoiceRequestSchema = z.object({
82
+ name: z.string(),
83
+ files: z.array(z.custom((value) => value instanceof Blob)).optional(),
84
+ remove_background_noise: z.boolean().optional(),
85
+ description: z.string().nullable().optional(),
86
+ labels: z
87
+ .union([z.record(z.string(), z.string()), z.string()])
88
+ .nullable()
89
+ .optional(),
90
+ moderate_metadata: z.boolean().optional(),
91
+ });
92
+ // ---------------------------------------------------------------------------
93
+ // POST /v1/voices/:voice_id/settings/edit
94
+ // ---------------------------------------------------------------------------
95
+ export const ElevenLabsEditVoiceSettingsRequestSchema = z.object({
96
+ stability: z.number().nullable().optional(),
97
+ use_speaker_boost: z.boolean().nullable().optional(),
98
+ similarity_boost: z.number().nullable().optional(),
99
+ style: z.number().nullable().optional(),
100
+ speed: z.number().nullable().optional(),
101
+ });
102
+ // ---------------------------------------------------------------------------
103
+ // POST /v1/voices/add/:public_user_id/:voice_id
104
+ // ---------------------------------------------------------------------------
105
+ export const ElevenLabsAddSharedVoiceRequestSchema = z.object({
106
+ new_name: z.string(),
107
+ bookmarked: z.boolean().optional(),
108
+ });
109
+ // ---------------------------------------------------------------------------
110
+ // GET /v1/shared-voices
111
+ // ---------------------------------------------------------------------------
112
+ export const ElevenLabsSharedVoicesRequestSchema = z.object({
113
+ page_size: z.number().int().optional(),
114
+ category: z.string().nullable().optional(),
115
+ gender: z.string().nullable().optional(),
116
+ age: z.string().nullable().optional(),
117
+ accent: z.string().nullable().optional(),
118
+ language: z.string().nullable().optional(),
119
+ locale: z.string().nullable().optional(),
120
+ search: z.string().nullable().optional(),
121
+ use_cases: z.array(z.string()).nullable().optional(),
122
+ descriptives: z.array(z.string()).nullable().optional(),
123
+ featured: z.boolean().optional(),
124
+ min_notice_period_days: z.number().int().nullable().optional(),
125
+ include_custom_rates: z.boolean().nullable().optional(),
126
+ include_live_moderated: z.boolean().nullable().optional(),
127
+ reader_app_enabled: z.boolean().optional(),
128
+ owner_id: z.string().nullable().optional(),
129
+ sort: z.string().nullable().optional(),
130
+ page: z.number().int().optional(),
131
+ });
132
+ // ---------------------------------------------------------------------------
133
+ // POST /v1/similar-voices
134
+ // ---------------------------------------------------------------------------
135
+ export const ElevenLabsSimilarVoicesRequestSchema = z.object({
136
+ audio_file: z.custom((value) => value instanceof Blob).optional(),
137
+ similarity_threshold: z.number().nullable().optional(),
138
+ top_k: z.number().int().nullable().optional(),
139
+ });
140
+ // ---------------------------------------------------------------------------
60
141
  // POST /v1/voices/pvc
61
142
  // ---------------------------------------------------------------------------
62
143
  export const ElevenLabsCreatePvcVoiceRequestSchema = z.object({
@@ -66,6 +147,28 @@ export const ElevenLabsCreatePvcVoiceRequestSchema = z.object({
66
147
  labels: z.record(z.string(), z.string()).nullable().optional(),
67
148
  });
68
149
  // ---------------------------------------------------------------------------
150
+ // POST /v1/voices/pvc/:voice_id
151
+ // ---------------------------------------------------------------------------
152
+ export const ElevenLabsEditPvcVoiceRequestSchema = z.object({
153
+ name: z.string().max(100),
154
+ language: z.string(),
155
+ description: z.string().max(500).nullable().optional(),
156
+ labels: z.record(z.string(), z.string()).nullable().optional(),
157
+ });
158
+ // ---------------------------------------------------------------------------
159
+ // POST /v1/voices/pvc/:voice_id/samples
160
+ // ---------------------------------------------------------------------------
161
+ export const ElevenLabsAddPvcSamplesRequestSchema = z.object({
162
+ files: z.array(z.custom((value) => value instanceof Blob)).min(1),
163
+ remove_background_noise: z.boolean().optional(),
164
+ });
165
+ // ---------------------------------------------------------------------------
166
+ // GET /v1/voices/pvc/:voice_id/samples/:sample_id/audio
167
+ // ---------------------------------------------------------------------------
168
+ export const ElevenLabsGetPvcSampleAudioRequestSchema = z.object({
169
+ remove_background_noise: z.boolean().optional(),
170
+ });
171
+ // ---------------------------------------------------------------------------
69
172
  // POST /v1/voices/pvc/:voice_id/captcha
70
173
  // ---------------------------------------------------------------------------
71
174
  export const ElevenLabsPvcVoiceCaptchaRequestSchema = z.object({
@@ -160,6 +263,7 @@ export const ElevenLabsTextToDialogueRequestSchema = z.object({
160
263
  seed: z.number().int().min(0).max(4294967295).nullable().optional(),
161
264
  apply_text_normalization: z.enum(["auto", "on", "off"]).optional(),
162
265
  output_format: z.string().optional(),
266
+ enable_logging: z.boolean().optional(),
163
267
  });
164
268
  // ---------------------------------------------------------------------------
165
269
  // POST /v1/speech-to-text
@@ -206,6 +310,651 @@ export const ElevenLabsSpeechToTextRequestSchema = z.object({
206
310
  enable_logging: z.boolean().optional(),
207
311
  });
208
312
  // ---------------------------------------------------------------------------
313
+ // POST /v1/speech-to-speech/{voiceId} (and /stream)
314
+ // ---------------------------------------------------------------------------
315
+ // Multipart form: `audio` is the source recording whose content/emotion drives
316
+ // the conversion. `output_format` and `enable_logging` are query-string params;
317
+ // the factory strips them from the body and moves them to the URL.
318
+ // `voice_settings` must be sent as a JSON-encoded string in the form body; the
319
+ // factory accepts either a settings object (serialized for you) or a string.
320
+ export const ElevenLabsSpeechToSpeechRequestSchema = z.object({
321
+ audio: z.custom(),
322
+ model_id: z.string().optional(),
323
+ voice_settings: z
324
+ .union([ElevenLabsVoiceSettingsSchema, z.string()])
325
+ .nullable()
326
+ .optional(),
327
+ seed: z.number().int().min(0).max(4294967295).nullable().optional(),
328
+ remove_background_noise: z.boolean().optional(),
329
+ file_format: z.enum(["pcm_s16le_16", "other"]).nullable().optional(),
330
+ output_format: z.string().optional(),
331
+ enable_logging: z.boolean().optional(),
332
+ });
333
+ // ---------------------------------------------------------------------------
334
+ // POST /v1/audio-isolation (and /stream)
335
+ // ---------------------------------------------------------------------------
336
+ const ElevenLabsAudioIsolationFileFormatSchema = z.enum([
337
+ "pcm_s16le_16",
338
+ "other",
339
+ ]);
340
+ export const ElevenLabsAudioIsolationRequestSchema = z.object({
341
+ audio: z.custom((value) => value instanceof Blob),
342
+ file_format: ElevenLabsAudioIsolationFileFormatSchema.nullable().optional(),
343
+ preview_b64: z.string().nullable().optional(),
344
+ });
345
+ export const ElevenLabsAudioIsolationStreamRequestSchema = z.object({
346
+ audio: z.custom((value) => value instanceof Blob),
347
+ file_format: ElevenLabsAudioIsolationFileFormatSchema.nullable().optional(),
348
+ });
349
+ // ---------------------------------------------------------------------------
350
+ // GET /v1/audio-isolation/history
351
+ // ---------------------------------------------------------------------------
352
+ export const ElevenLabsAudioIsolationHistoryListRequestSchema = z.object({
353
+ page_size: z.number().int().min(1).max(1000).optional(),
354
+ page: z.number().int().min(1).optional(),
355
+ search: z.string().nullable().optional(),
356
+ });
357
+ // ---------------------------------------------------------------------------
358
+ // POST /v1/audio-native
359
+ // ---------------------------------------------------------------------------
360
+ const ElevenLabsAudioNativeTextNormalizationSchema = z.enum([
361
+ "auto",
362
+ "on",
363
+ "off",
364
+ "apply_english",
365
+ ]);
366
+ export const ElevenLabsAudioNativeCreateProjectRequestSchema = z.object({
367
+ name: z.string(),
368
+ image: z.string().nullable().optional(),
369
+ author: z.string().nullable().optional(),
370
+ title: z.string().nullable().optional(),
371
+ small: z.boolean().optional(),
372
+ text_color: z.string().nullable().optional(),
373
+ background_color: z.string().nullable().optional(),
374
+ sessionization: z.number().int().optional(),
375
+ voice_id: z.string().nullable().optional(),
376
+ model_id: z.string().nullable().optional(),
377
+ file: z.custom((value) => value instanceof Blob).optional(),
378
+ auto_convert: z.boolean().optional(),
379
+ apply_text_normalization: ElevenLabsAudioNativeTextNormalizationSchema.nullable().optional(),
380
+ pronunciation_dictionary_locators: z.array(z.string()).optional(),
381
+ });
382
+ // ---------------------------------------------------------------------------
383
+ // POST /v1/audio-native/content
384
+ // ---------------------------------------------------------------------------
385
+ export const ElevenLabsAudioNativeUpdateContentFromUrlRequestSchema = z.object({
386
+ url: z.string().url(),
387
+ author: z.string().nullable().optional(),
388
+ title: z.string().nullable().optional(),
389
+ });
390
+ // ---------------------------------------------------------------------------
391
+ // POST /v1/audio-native/:project_id/content
392
+ // ---------------------------------------------------------------------------
393
+ export const ElevenLabsAudioNativeUpdateProjectContentRequestSchema = z.object({
394
+ file: z.custom((value) => value instanceof Blob).optional(),
395
+ auto_convert: z.boolean().optional(),
396
+ auto_publish: z.boolean().optional(),
397
+ });
398
+ // ---------------------------------------------------------------------------
399
+ // POST /v1/forced-alignment
400
+ // ---------------------------------------------------------------------------
401
+ export const ElevenLabsForcedAlignmentRequestSchema = z.object({
402
+ file: z.custom((value) => value instanceof Blob),
403
+ text: z.string(),
404
+ });
405
+ // ---------------------------------------------------------------------------
406
+ // Music shared schemas
407
+ // ---------------------------------------------------------------------------
408
+ const ElevenLabsMusicTimeRangeSchema = z.object({
409
+ start_ms: z.number().int(),
410
+ end_ms: z.number().int(),
411
+ });
412
+ const ElevenLabsMusicSongSectionSchema = z.object({
413
+ section_name: z.string(),
414
+ positive_local_styles: z.array(z.string()),
415
+ negative_local_styles: z.array(z.string()),
416
+ duration_ms: z.number().int(),
417
+ lines: z.array(z.string()),
418
+ source_from: z
419
+ .object({
420
+ song_id: z.string(),
421
+ range: ElevenLabsMusicTimeRangeSchema,
422
+ negative_ranges: z.array(ElevenLabsMusicTimeRangeSchema).optional(),
423
+ })
424
+ .nullable()
425
+ .optional(),
426
+ });
427
+ const ElevenLabsMusicPromptSchema = z.object({
428
+ positive_global_styles: z.array(z.string()),
429
+ negative_global_styles: z.array(z.string()),
430
+ sections: z.array(ElevenLabsMusicSongSectionSchema),
431
+ });
432
+ const ElevenLabsMusicAudioRefChunkSchema = z.object({
433
+ song_id: z.string(),
434
+ range: ElevenLabsMusicTimeRangeSchema,
435
+ });
436
+ const ElevenLabsMusicGenerationChunkSchema = z.object({
437
+ text: z.string(),
438
+ duration_ms: z.number().int(),
439
+ positive_styles: z.array(z.string()),
440
+ negative_styles: z.array(z.string()).optional(),
441
+ context_adherence: z.enum(["low", "medium", "high"]).optional(),
442
+ conditioning_ref: ElevenLabsMusicAudioRefChunkSchema.nullable().optional(),
443
+ condition_strength: z
444
+ .enum(["low", "medium", "high", "xhigh"])
445
+ .nullable()
446
+ .optional(),
447
+ });
448
+ const ElevenLabsCompositionPlanSchema = z.object({
449
+ chunks: z.array(z.union([
450
+ ElevenLabsMusicGenerationChunkSchema,
451
+ ElevenLabsMusicAudioRefChunkSchema,
452
+ ])),
453
+ });
454
+ const ElevenLabsMusicCompositionPlanSchema = z.union([
455
+ ElevenLabsMusicPromptSchema,
456
+ ElevenLabsCompositionPlanSchema,
457
+ ]);
458
+ const ElevenLabsMusicModelIdSchema = z.enum(["music_v1", "music_v2"]);
459
+ // `output_format` is a query-string parameter, not a body field. As with the
460
+ // other audio endpoints, it is carried on the same request object and the
461
+ // factory strips it out and moves it to the URL query.
462
+ const musicComposeBaseShape = {
463
+ prompt: z.string().max(4100).nullable().optional(),
464
+ generation_mode: z
465
+ .enum(["track", "loop", "ambience", "video_to_music"])
466
+ .nullable()
467
+ .optional(),
468
+ lyrics_text: z.string().max(4000).nullable().optional(),
469
+ composition_plan: ElevenLabsMusicCompositionPlanSchema.nullable().optional(),
470
+ music_length_ms: z.number().int().min(3000).max(600000).nullable().optional(),
471
+ model_id: ElevenLabsMusicModelIdSchema.optional(),
472
+ seed: z.number().int().min(0).max(2147483647).nullable().optional(),
473
+ force_instrumental: z.boolean().optional(),
474
+ finetune_id: z.string().max(100).nullable().optional(),
475
+ finetune_strength: z.number().optional(),
476
+ use_phonetic_names: z.boolean().optional(),
477
+ store_for_inpainting: z.boolean().optional(),
478
+ };
479
+ // ---------------------------------------------------------------------------
480
+ // POST /v1/music
481
+ // ---------------------------------------------------------------------------
482
+ export const ElevenLabsComposeMusicRequestSchema = z.object({
483
+ ...musicComposeBaseShape,
484
+ respect_sections_durations: z.boolean().optional(),
485
+ sign_with_c2pa: z.boolean().optional(),
486
+ output_format: z.string().optional(),
487
+ });
488
+ // ---------------------------------------------------------------------------
489
+ // POST /v1/music/detailed
490
+ // ---------------------------------------------------------------------------
491
+ export const ElevenLabsComposeMusicDetailedRequestSchema = z.object({
492
+ ...musicComposeBaseShape,
493
+ respect_sections_durations: z.boolean().optional(),
494
+ with_timestamps: z.boolean().optional(),
495
+ sign_with_c2pa: z.boolean().optional(),
496
+ output_format: z.string().optional(),
497
+ });
498
+ // ---------------------------------------------------------------------------
499
+ // POST /v1/music/stream
500
+ // ---------------------------------------------------------------------------
501
+ export const ElevenLabsComposeMusicStreamRequestSchema = z.object({
502
+ ...musicComposeBaseShape,
503
+ output_format: z.string().optional(),
504
+ });
505
+ // ---------------------------------------------------------------------------
506
+ // POST /v1/music/plan
507
+ // ---------------------------------------------------------------------------
508
+ export const ElevenLabsMusicPlanRequestSchema = z.object({
509
+ prompt: z.string().max(4100),
510
+ music_length_ms: z.number().int().min(3000).max(600000).nullable().optional(),
511
+ source_composition_plan: ElevenLabsMusicCompositionPlanSchema.nullable().optional(),
512
+ model_id: ElevenLabsMusicModelIdSchema.optional(),
513
+ });
514
+ // ---------------------------------------------------------------------------
515
+ // POST /v1/music/stem-separation
516
+ // ---------------------------------------------------------------------------
517
+ export const ElevenLabsMusicStemSeparationRequestSchema = z.object({
518
+ file: z.custom((value) => value instanceof Blob),
519
+ stem_variation_id: z.enum(["two_stems_v1", "six_stems_v1"]).optional(),
520
+ sign_with_c2pa: z.boolean().optional(),
521
+ output_format: z.string().optional(),
522
+ });
523
+ // ---------------------------------------------------------------------------
524
+ // POST /v1/music/upload
525
+ // ---------------------------------------------------------------------------
526
+ export const ElevenLabsMusicUploadRequestSchema = z.object({
527
+ file: z.custom((value) => value instanceof Blob),
528
+ extract_composition_plan: z
529
+ .union([z.boolean(), z.enum(["music_v1", "music_v2"])])
530
+ .optional(),
531
+ with_timestamps: z.boolean().optional(),
532
+ });
533
+ // ---------------------------------------------------------------------------
534
+ // POST /v1/music/video-to-music
535
+ // ---------------------------------------------------------------------------
536
+ export const ElevenLabsVideoToMusicRequestSchema = z.object({
537
+ videos: z
538
+ .array(z.custom((value) => value instanceof Blob))
539
+ .min(1)
540
+ .max(10),
541
+ description: z.string().min(1).max(1000).nullable().optional(),
542
+ tags: z.array(z.string()).max(10).optional(),
543
+ model_id: ElevenLabsMusicModelIdSchema.optional(),
544
+ sign_with_c2pa: z.boolean().optional(),
545
+ output_format: z.string().optional(),
546
+ });
547
+ // ---------------------------------------------------------------------------
548
+ // Workspace administration shared schemas
549
+ // ---------------------------------------------------------------------------
550
+ const ElevenLabsWorkspaceSeatTypeSchema = z.enum([
551
+ "workspace_admin",
552
+ "workspace_member",
553
+ "workspace_lite_member",
554
+ ]);
555
+ const ElevenLabsWorkspaceResourceTypeSchema = z.enum([
556
+ "voice",
557
+ "voice_collection",
558
+ "pronunciation_dictionary",
559
+ "dubbing",
560
+ "project",
561
+ "convai_agents",
562
+ "convai_knowledge_base_documents",
563
+ "convai_tools",
564
+ "convai_settings",
565
+ "convai_secrets",
566
+ "workspace_auth_connections",
567
+ "convai_phone_numbers",
568
+ "convai_mcp_servers",
569
+ "convai_api_integration_connections",
570
+ "convai_api_integration_trigger_connections",
571
+ "convai_batch_calls",
572
+ "convai_agent_response_tests",
573
+ "convai_test_suite_invocations",
574
+ "convai_crawl_jobs",
575
+ "convai_crawl_tasks",
576
+ "convai_whatsapp_accounts",
577
+ "convai_agent_versions",
578
+ "convai_agent_branches",
579
+ "convai_agent_versions_deployments",
580
+ "convai_memory_entries",
581
+ "convai_coaching_proposals",
582
+ "convai_templates",
583
+ "dashboard",
584
+ "dashboard_configuration",
585
+ "convai_agent_drafts",
586
+ "resource_locators",
587
+ "assets",
588
+ "content_generations",
589
+ "content_templates",
590
+ "songs",
591
+ "transcription_tasks",
592
+ "avatars",
593
+ "avatar_video_generations",
594
+ "resource_collection",
595
+ "studio_projects",
596
+ ]);
597
+ const ElevenLabsWorkspaceResourceRoleSchema = z.enum([
598
+ "admin",
599
+ "editor",
600
+ "commenter",
601
+ "viewer",
602
+ ]);
603
+ const ElevenLabsWorkspaceWebhookHmacSettingsSchema = z.object({
604
+ auth_type: z.literal("hmac"),
605
+ name: z.string(),
606
+ webhook_url: z.string(),
607
+ request_headers: z.record(z.string(), z.string()).nullable().optional(),
608
+ });
609
+ const ElevenLabsWorkspaceAuthAlgorithmSchema = z.enum([
610
+ "HS256",
611
+ "HS384",
612
+ "HS512",
613
+ "RS256",
614
+ "RS384",
615
+ "RS512",
616
+ ]);
617
+ const ElevenLabsWorkspaceAuthTokenResponseFieldSchema = z.enum([
618
+ "access_token",
619
+ "id_token",
620
+ ]);
621
+ const ElevenLabsWorkspaceAuthStringMapSchema = z.record(z.string(), z.string());
622
+ // ---------------------------------------------------------------------------
623
+ // GET /v1/workspace/audit-logs
624
+ // ---------------------------------------------------------------------------
625
+ export const ElevenLabsListWorkspaceAuditLogsRequestSchema = z.object({
626
+ limit: z.number().int().min(1).max(100).optional(),
627
+ cursor: z.string().nullable().optional(),
628
+ time_from_unix_ms: z.number().int().nullable().optional(),
629
+ time_to_unix_ms: z.number().int().nullable().optional(),
630
+ actor_uid: z.string().nullable().optional(),
631
+ class_name: z.string().nullable().optional(),
632
+ activity_name: z.string().nullable().optional(),
633
+ });
634
+ // ---------------------------------------------------------------------------
635
+ // GET /v1/workspace/groups/search
636
+ // ---------------------------------------------------------------------------
637
+ export const ElevenLabsSearchWorkspaceGroupsRequestSchema = z.object({
638
+ name: z.string(),
639
+ });
640
+ // ---------------------------------------------------------------------------
641
+ // POST /v1/workspace/groups/:group_id/members
642
+ // ---------------------------------------------------------------------------
643
+ export const ElevenLabsAddWorkspaceGroupMemberRequestSchema = z.object({
644
+ email: z.string(),
645
+ });
646
+ // ---------------------------------------------------------------------------
647
+ // POST /v1/workspace/groups/:group_id/members/remove
648
+ // ---------------------------------------------------------------------------
649
+ export const ElevenLabsRemoveWorkspaceGroupMemberRequestSchema = z.object({
650
+ email: z.string(),
651
+ });
652
+ // ---------------------------------------------------------------------------
653
+ // POST /v1/workspace/members
654
+ // ---------------------------------------------------------------------------
655
+ export const ElevenLabsUpdateWorkspaceMemberRequestSchema = z.object({
656
+ email: z.string(),
657
+ is_locked: z.boolean().nullable().optional(),
658
+ workspace_role: ElevenLabsWorkspaceSeatTypeSchema.nullable().optional(),
659
+ workspace_seat_type: ElevenLabsWorkspaceSeatTypeSchema.nullable().optional(),
660
+ });
661
+ // ---------------------------------------------------------------------------
662
+ // POST /v1/workspace/invites/add
663
+ // ---------------------------------------------------------------------------
664
+ export const ElevenLabsAddWorkspaceInviteRequestSchema = z.object({
665
+ email: z.string(),
666
+ workspace_permission: z.string().nullable().optional(),
667
+ seat_type: ElevenLabsWorkspaceSeatTypeSchema.nullable().optional(),
668
+ group_ids: z.array(z.string()).nullable().optional(),
669
+ });
670
+ // ---------------------------------------------------------------------------
671
+ // POST /v1/workspace/invites/add-bulk
672
+ // ---------------------------------------------------------------------------
673
+ export const ElevenLabsAddWorkspaceInvitesBulkRequestSchema = z.object({
674
+ emails: z.array(z.string()),
675
+ seat_type: ElevenLabsWorkspaceSeatTypeSchema.nullable().optional(),
676
+ group_ids: z.array(z.string()).nullable().optional(),
677
+ });
678
+ // ---------------------------------------------------------------------------
679
+ // DELETE /v1/workspace/invites
680
+ // ---------------------------------------------------------------------------
681
+ export const ElevenLabsDeleteWorkspaceInviteRequestSchema = z.object({
682
+ email: z.string(),
683
+ });
684
+ // ---------------------------------------------------------------------------
685
+ // GET /v1/workspace/resources/:resource_id
686
+ // ---------------------------------------------------------------------------
687
+ export const ElevenLabsGetWorkspaceResourceRequestSchema = z.object({
688
+ resource_type: ElevenLabsWorkspaceResourceTypeSchema,
689
+ });
690
+ // ---------------------------------------------------------------------------
691
+ // POST /v1/workspace/resources/:resource_id/share
692
+ // ---------------------------------------------------------------------------
693
+ export const ElevenLabsShareWorkspaceResourceRequestSchema = z.object({
694
+ role: ElevenLabsWorkspaceResourceRoleSchema,
695
+ resource_type: ElevenLabsWorkspaceResourceTypeSchema,
696
+ user_email: z.string().nullable().optional(),
697
+ group_id: z.string().nullable().optional(),
698
+ workspace_api_key_id: z.string().nullable().optional(),
699
+ });
700
+ // ---------------------------------------------------------------------------
701
+ // POST /v1/workspace/resources/:resource_id/unshare
702
+ // ---------------------------------------------------------------------------
703
+ export const ElevenLabsUnshareWorkspaceResourceRequestSchema = z.object({
704
+ resource_type: ElevenLabsWorkspaceResourceTypeSchema,
705
+ user_email: z.string().nullable().optional(),
706
+ group_id: z.string().nullable().optional(),
707
+ workspace_api_key_id: z.string().nullable().optional(),
708
+ });
709
+ // ---------------------------------------------------------------------------
710
+ // GET /v1/workspace/webhooks
711
+ // ---------------------------------------------------------------------------
712
+ export const ElevenLabsListWorkspaceWebhooksRequestSchema = z.object({
713
+ include_usages: z.boolean().optional(),
714
+ });
715
+ // ---------------------------------------------------------------------------
716
+ // POST /v1/workspace/webhooks
717
+ // ---------------------------------------------------------------------------
718
+ export const ElevenLabsCreateWorkspaceWebhookRequestSchema = z.object({
719
+ settings: ElevenLabsWorkspaceWebhookHmacSettingsSchema,
720
+ });
721
+ // ---------------------------------------------------------------------------
722
+ // PATCH /v1/workspace/webhooks/:webhook_id
723
+ // ---------------------------------------------------------------------------
724
+ export const ElevenLabsUpdateWorkspaceWebhookRequestSchema = z.object({
725
+ is_disabled: z.boolean(),
726
+ name: z.string(),
727
+ retry_enabled: z.boolean().nullable().optional(),
728
+ request_headers: z.record(z.string(), z.string()).nullable().optional(),
729
+ });
730
+ const ElevenLabsCreateOAuth2ClientCredsRequestSchema = z.object({
731
+ name: z.string(),
732
+ auth_type: z.literal("oauth2_client_credentials").optional(),
733
+ provider: z.string(),
734
+ client_id: z.string(),
735
+ token_url: z.string(),
736
+ scopes: z.array(z.string()).optional(),
737
+ extra_params: ElevenLabsWorkspaceAuthStringMapSchema.optional(),
738
+ basic_auth_in_header: z.boolean().optional(),
739
+ client_secret: z.string(),
740
+ custom_headers: ElevenLabsWorkspaceAuthStringMapSchema.optional(),
741
+ });
742
+ const ElevenLabsCreateCustomHeaderAuthRequestSchema = z.object({
743
+ name: z.string(),
744
+ auth_type: z.literal("custom_header_auth").optional(),
745
+ provider: z.string(),
746
+ header_name: z.string(),
747
+ token: z.string(),
748
+ });
749
+ const ElevenLabsCreateBasicAuthRequestSchema = z.object({
750
+ name: z.string(),
751
+ auth_type: z.literal("basic_auth").optional(),
752
+ provider: z.string(),
753
+ username: z.string(),
754
+ password: z.string(),
755
+ });
756
+ const ElevenLabsCreateBearerAuthRequestSchema = z.object({
757
+ name: z.string(),
758
+ auth_type: z.literal("bearer_auth").optional(),
759
+ provider: z.string(),
760
+ token: z.string(),
761
+ });
762
+ const ElevenLabsCreateOAuth2JwtRequestSchema = z.object({
763
+ name: z.string(),
764
+ auth_type: z.literal("oauth2_jwt").optional(),
765
+ provider: z.string(),
766
+ algorithm: ElevenLabsWorkspaceAuthAlgorithmSchema.optional(),
767
+ key_id: z.string().nullable().optional(),
768
+ issuer: z.string(),
769
+ audience: z.string(),
770
+ subject: z.string(),
771
+ expiration_seconds: z.number().int().min(60).max(86400).optional(),
772
+ extra_params: ElevenLabsWorkspaceAuthStringMapSchema.optional(),
773
+ token_url: z.string(),
774
+ scopes: z.array(z.string()).optional(),
775
+ token_response_field: ElevenLabsWorkspaceAuthTokenResponseFieldSchema.optional(),
776
+ secret_key: z.string(),
777
+ });
778
+ const ElevenLabsCreatePrivateKeyJwtRequestSchema = z.object({
779
+ name: z.string(),
780
+ auth_type: z.literal("private_key_jwt").optional(),
781
+ provider: z.string(),
782
+ algorithm: ElevenLabsWorkspaceAuthAlgorithmSchema.optional(),
783
+ key_id: z.string().nullable().optional(),
784
+ issuer: z.string(),
785
+ audience: z.string(),
786
+ subject: z.string(),
787
+ expiration_seconds: z.number().int().min(60).max(86400).optional(),
788
+ extra_params: ElevenLabsWorkspaceAuthStringMapSchema.optional(),
789
+ secret_key: z.string(),
790
+ });
791
+ const ElevenLabsCreateMtlsAuthRequestSchema = z.object({
792
+ name: z.string(),
793
+ auth_type: z.literal("mtls").optional(),
794
+ provider: z.string(),
795
+ client_certificate: z.string(),
796
+ client_key: z.string(),
797
+ ca_certificate: z.string().nullable().optional(),
798
+ key_passphrase: z.string().nullable().optional(),
799
+ });
800
+ // ---------------------------------------------------------------------------
801
+ // POST /v1/workspace/auth-connections
802
+ // ---------------------------------------------------------------------------
803
+ export const ElevenLabsCreateWorkspaceAuthConnectionRequestSchema = z.union([
804
+ ElevenLabsCreateOAuth2ClientCredsRequestSchema,
805
+ ElevenLabsCreateCustomHeaderAuthRequestSchema,
806
+ ElevenLabsCreateBasicAuthRequestSchema,
807
+ ElevenLabsCreateBearerAuthRequestSchema,
808
+ ElevenLabsCreateOAuth2JwtRequestSchema,
809
+ ElevenLabsCreatePrivateKeyJwtRequestSchema,
810
+ ElevenLabsCreateMtlsAuthRequestSchema,
811
+ ]);
812
+ const ElevenLabsUpdateOAuth2ClientCredsRequestSchema = z.object({
813
+ auth_type: z.literal("oauth2_client_credentials").optional(),
814
+ provider: z.string().nullable().optional(),
815
+ client_id: z.string().nullable().optional(),
816
+ scopes: z.array(z.string()).nullable().optional(),
817
+ extra_params: ElevenLabsWorkspaceAuthStringMapSchema.nullable().optional(),
818
+ basic_auth_in_header: z.boolean().nullable().optional(),
819
+ client_secret: z.string().nullable().optional(),
820
+ custom_headers: ElevenLabsWorkspaceAuthStringMapSchema.nullable().optional(),
821
+ });
822
+ const ElevenLabsUpdateBasicAuthRequestSchema = z.object({
823
+ auth_type: z.literal("basic_auth").optional(),
824
+ provider: z.string().nullable().optional(),
825
+ username: z.string().nullable().optional(),
826
+ password: z.string().nullable().optional(),
827
+ });
828
+ const ElevenLabsUpdateBearerAuthRequestSchema = z.object({
829
+ auth_type: z.literal("bearer_auth").optional(),
830
+ provider: z.string().nullable().optional(),
831
+ token: z.string().nullable().optional(),
832
+ });
833
+ const ElevenLabsUpdateOAuth2JwtRequestSchema = z.object({
834
+ auth_type: z.literal("oauth2_jwt").optional(),
835
+ provider: z.string().nullable().optional(),
836
+ algorithm: ElevenLabsWorkspaceAuthAlgorithmSchema.nullable().optional(),
837
+ key_id: z.string().nullable().optional(),
838
+ issuer: z.string().nullable().optional(),
839
+ audience: z.string().nullable().optional(),
840
+ subject: z.string().nullable().optional(),
841
+ expiration_seconds: z.number().int().min(60).max(86400).nullable().optional(),
842
+ extra_params: ElevenLabsWorkspaceAuthStringMapSchema.nullable().optional(),
843
+ scopes: z.array(z.string()).nullable().optional(),
844
+ token_response_field: ElevenLabsWorkspaceAuthTokenResponseFieldSchema.nullable().optional(),
845
+ secret_key: z.string().nullable().optional(),
846
+ });
847
+ // ---------------------------------------------------------------------------
848
+ // PATCH /v1/workspace/auth-connections/:auth_connection_id
849
+ // ---------------------------------------------------------------------------
850
+ export const ElevenLabsUpdateWorkspaceAuthConnectionRequestSchema = z.union([
851
+ ElevenLabsUpdateOAuth2ClientCredsRequestSchema,
852
+ ElevenLabsUpdateBasicAuthRequestSchema,
853
+ ElevenLabsUpdateBearerAuthRequestSchema,
854
+ ElevenLabsUpdateOAuth2JwtRequestSchema,
855
+ ]);
856
+ // ---------------------------------------------------------------------------
857
+ // POST /v1/workspaces/api-keys/disable
858
+ // ---------------------------------------------------------------------------
859
+ export const ElevenLabsDisableWorkspaceApiKeyRequestSchema = z.object({
860
+ api_key_name: z.literal("self"),
861
+ });
862
+ // ---------------------------------------------------------------------------
863
+ // POST /v1/workspaces/api-keys/third-party-disabling
864
+ // ---------------------------------------------------------------------------
865
+ export const ElevenLabsSetWorkspaceApiKeyThirdPartyDisablingRequestSchema = z.object({
866
+ third_party_disable_allowed: z.boolean().nullable().optional(),
867
+ });
868
+ // ---------------------------------------------------------------------------
869
+ // Service account shared schemas
870
+ // ---------------------------------------------------------------------------
871
+ const ElevenLabsServiceAccountPermissionSchema = z.enum([
872
+ "text_to_speech",
873
+ "speech_to_speech",
874
+ "speech_to_text",
875
+ "models_read",
876
+ "models_write",
877
+ "voices_read",
878
+ "voices_write",
879
+ "speech_history_read",
880
+ "speech_history_write",
881
+ "sound_generation",
882
+ "audio_isolation",
883
+ "voice_generation",
884
+ "dubbing_read",
885
+ "dubbing_write",
886
+ "pronunciation_dictionaries_read",
887
+ "pronunciation_dictionaries_write",
888
+ "user_read",
889
+ "user_write",
890
+ "projects_read",
891
+ "projects_write",
892
+ "audio_native_read",
893
+ "audio_native_write",
894
+ "workspace_read",
895
+ "workspace_write",
896
+ "forced_alignment",
897
+ "convai_read",
898
+ "convai_write",
899
+ "music_generation",
900
+ "image_video_generation",
901
+ "add_voice_from_voice_library",
902
+ "create_instant_voice_clone",
903
+ "create_professional_voice_clone",
904
+ "publish_voice_to_voice_library",
905
+ "share_voice_externally",
906
+ "create_user_api_key",
907
+ "workspace_analytics_full_read",
908
+ "webhooks_write",
909
+ "service_account_write",
910
+ "group_members_manage",
911
+ "workspace_members_read",
912
+ "workspace_members_invite",
913
+ "workspace_members_remove",
914
+ "terms_of_service_accept",
915
+ "audit_log_read",
916
+ "conversation_privacy_manage",
917
+ "copy_resources_cross_workspace",
918
+ "synthid_detector",
919
+ ]);
920
+ const ElevenLabsServiceAccountPermissionsSchema = z.union([
921
+ z.array(ElevenLabsServiceAccountPermissionSchema),
922
+ z.literal("all"),
923
+ ]);
924
+ const ElevenLabsAllowedIpsSchema = z.array(z.string()).min(1).max(100);
925
+ // ---------------------------------------------------------------------------
926
+ // POST /v1/service-accounts/:service_account_user_id/api-keys
927
+ // ---------------------------------------------------------------------------
928
+ export const ElevenLabsCreateServiceAccountApiKeyRequestSchema = z.object({
929
+ name: z.string(),
930
+ permissions: ElevenLabsServiceAccountPermissionsSchema,
931
+ character_limit: z.number().int().nullable().optional(),
932
+ allowed_ips: ElevenLabsAllowedIpsSchema.nullable().optional(),
933
+ third_party_disable_allowed: z.boolean().nullable().optional(),
934
+ });
935
+ // ---------------------------------------------------------------------------
936
+ // PATCH /v1/service-accounts/:service_account_user_id/api-keys/:api_key_id
937
+ // ---------------------------------------------------------------------------
938
+ export const ElevenLabsUpdateServiceAccountApiKeyRequestSchema = z.object({
939
+ is_enabled: z.union([z.boolean(), z.literal("no_update")]).optional(),
940
+ name: z.string().nullable().optional(),
941
+ permissions: z
942
+ .union([
943
+ z.array(ElevenLabsServiceAccountPermissionSchema),
944
+ z.enum(["all", "no_update"]),
945
+ ])
946
+ .optional(),
947
+ character_limit: z
948
+ .union([z.number().int(), z.literal("no_update"), z.null()])
949
+ .optional(),
950
+ allowed_ips: z
951
+ .union([ElevenLabsAllowedIpsSchema, z.enum(["clear", "no_update"])])
952
+ .optional(),
953
+ third_party_disable_allowed: z
954
+ .union([z.boolean(), z.enum(["clear", "no_update"])])
955
+ .optional(),
956
+ });
957
+ // ---------------------------------------------------------------------------
209
958
  // Workspace analytics shared schemas
210
959
  // ---------------------------------------------------------------------------
211
960
  const ElevenLabsWorkspaceAnalyticsGroupBySchema = z.enum([
@@ -284,4 +1033,1768 @@ export const ElevenLabsPvcManualVerificationRequestSchema = z.object({
284
1033
  files: z.array(z.custom((value) => value instanceof Blob)).min(1),
285
1034
  extra_text: z.string().nullable().optional(),
286
1035
  });
1036
+ // ---------------------------------------------------------------------------
1037
+ // Agents Platform (Conversational AI) — shared
1038
+ // ---------------------------------------------------------------------------
1039
+ // The agent `conversation_config`, `platform_settings`, and `workflow` payloads
1040
+ // are large, deeply-nested config trees. We keep them as permissive records so
1041
+ // the schema stays a thin metadata surface — callers compose the nested config
1042
+ // themselves and the server passes it straight through.
1043
+ const ElevenLabsAgentConfigObjectSchema = z.record(z.string(), z.unknown());
1044
+ // ---------------------------------------------------------------------------
1045
+ // POST /v1/convai/agents/create
1046
+ // ---------------------------------------------------------------------------
1047
+ // `enable_versioning` is a query-string parameter, not a body field. We carry it
1048
+ // on the request object for ergonomics; the factory strips it out and moves it
1049
+ // to the URL query before serialising the body.
1050
+ export const ElevenLabsCreateAgentRequestSchema = z.object({
1051
+ conversation_config: ElevenLabsAgentConfigObjectSchema,
1052
+ platform_settings: ElevenLabsAgentConfigObjectSchema.nullable().optional(),
1053
+ workflow: ElevenLabsAgentConfigObjectSchema.optional(),
1054
+ name: z.string().nullable().optional(),
1055
+ tags: z.array(z.string()).nullable().optional(),
1056
+ enable_versioning: z.boolean().optional(),
1057
+ });
1058
+ // ---------------------------------------------------------------------------
1059
+ // GET /v1/convai/agents/:agent_id
1060
+ // ---------------------------------------------------------------------------
1061
+ export const ElevenLabsGetAgentRequestSchema = z.object({
1062
+ version_id: z.string().optional(),
1063
+ branch_id: z.string().optional(),
1064
+ });
1065
+ // ---------------------------------------------------------------------------
1066
+ // GET /v1/convai/agents
1067
+ // ---------------------------------------------------------------------------
1068
+ export const ElevenLabsListAgentsRequestSchema = z.object({
1069
+ page_size: z.number().int().min(1).max(100).optional(),
1070
+ search: z.string().nullable().optional(),
1071
+ archived: z.boolean().nullable().optional(),
1072
+ show_only_owned_agents: z.boolean().optional(),
1073
+ created_by_user_id: z.string().nullable().optional(),
1074
+ sort_direction: z.enum(["asc", "desc"]).optional(),
1075
+ sort_by: z
1076
+ .enum(["name", "created_at", "call_count_7d"])
1077
+ .nullable()
1078
+ .optional(),
1079
+ cursor: z.string().nullable().optional(),
1080
+ });
1081
+ // ---------------------------------------------------------------------------
1082
+ // PATCH /v1/convai/agents/:agent_id
1083
+ // ---------------------------------------------------------------------------
1084
+ // `enable_versioning_if_not_enabled` and `branch_id` are query-string params.
1085
+ // The factory strips them from the body and moves them to the URL query.
1086
+ export const ElevenLabsUpdateAgentRequestSchema = z.object({
1087
+ conversation_config: ElevenLabsAgentConfigObjectSchema.nullable().optional(),
1088
+ platform_settings: ElevenLabsAgentConfigObjectSchema.nullable().optional(),
1089
+ workflow: ElevenLabsAgentConfigObjectSchema.optional(),
1090
+ name: z.string().nullable().optional(),
1091
+ tags: z.array(z.string()).nullable().optional(),
1092
+ version_description: z.string().nullable().optional(),
1093
+ enable_versioning_if_not_enabled: z.boolean().optional(),
1094
+ branch_id: z.string().optional(),
1095
+ });
1096
+ // ---------------------------------------------------------------------------
1097
+ // GET /v1/convai/agents/:agent_id/widget
1098
+ // ---------------------------------------------------------------------------
1099
+ export const ElevenLabsGetAgentWidgetRequestSchema = z.object({
1100
+ conversation_signature: z.string().optional(),
1101
+ });
1102
+ // ---------------------------------------------------------------------------
1103
+ // GET /v1/convai/agents/:agent_id/branches
1104
+ // ---------------------------------------------------------------------------
1105
+ export const ElevenLabsListAgentBranchesRequestSchema = z.object({
1106
+ include_archived: z.boolean().optional(),
1107
+ limit: z.number().int().optional(),
1108
+ });
1109
+ // ---------------------------------------------------------------------------
1110
+ // GET /v1/convai/agents/summaries
1111
+ // ---------------------------------------------------------------------------
1112
+ export const ElevenLabsGetAgentSummariesRequestSchema = z.object({
1113
+ agent_ids: z.array(z.string()).max(100),
1114
+ });
1115
+ // ---------------------------------------------------------------------------
1116
+ // POST /v1/convai/agents/:agent_id/duplicate
1117
+ // ---------------------------------------------------------------------------
1118
+ export const ElevenLabsDuplicateAgentRequestSchema = z.object({
1119
+ name: z.string().nullable().optional(),
1120
+ });
1121
+ // ---------------------------------------------------------------------------
1122
+ // POST /v1/convai/agents/:agent_id/avatar
1123
+ // ---------------------------------------------------------------------------
1124
+ export const ElevenLabsPostAgentAvatarRequestSchema = z.object({
1125
+ avatar_file: z.custom((value) => value instanceof Blob),
1126
+ });
1127
+ // ---------------------------------------------------------------------------
1128
+ // POST /v1/convai/agents/:agent_id/simulate-conversation
1129
+ // ---------------------------------------------------------------------------
1130
+ export const ElevenLabsSimulateConversationRequestSchema = z.object({
1131
+ simulation_specification: ElevenLabsAgentConfigObjectSchema,
1132
+ extra_evaluation_criteria: z
1133
+ .array(ElevenLabsAgentConfigObjectSchema)
1134
+ .nullable()
1135
+ .optional(),
1136
+ new_turns_limit: z.number().int().optional(),
1137
+ });
1138
+ // ---------------------------------------------------------------------------
1139
+ // GET /v1/convai/agents/:agent_id/topics
1140
+ // ---------------------------------------------------------------------------
1141
+ export const ElevenLabsGetAgentTopicsRequestSchema = z.object({
1142
+ from_unix_secs: z.number().int().nullable().optional(),
1143
+ to_unix_secs: z.number().int().nullable().optional(),
1144
+ });
1145
+ // ---------------------------------------------------------------------------
1146
+ // POST /v1/convai/agent/:agent_id/llm-usage/calculate
1147
+ // ---------------------------------------------------------------------------
1148
+ export const ElevenLabsCalculateAgentLlmUsageRequestSchema = z.object({
1149
+ prompt_length: z.number().int().nullable().optional(),
1150
+ number_of_pages: z.number().int().nullable().optional(),
1151
+ rag_enabled: z.boolean().nullable().optional(),
1152
+ });
1153
+ // ---------------------------------------------------------------------------
1154
+ // POST/DELETE /v1/convai/agents/:agent_id/drafts
1155
+ // ---------------------------------------------------------------------------
1156
+ export const ElevenLabsCreateAgentDraftRequestSchema = z.object({
1157
+ branch_id: z.string(),
1158
+ conversation_config: ElevenLabsAgentConfigObjectSchema,
1159
+ platform_settings: ElevenLabsAgentConfigObjectSchema,
1160
+ workflow: ElevenLabsAgentConfigObjectSchema,
1161
+ name: z.string(),
1162
+ tags: z.array(z.string()).nullable().optional(),
1163
+ });
1164
+ export const ElevenLabsDeleteAgentDraftRequestSchema = z.object({
1165
+ branch_id: z.string(),
1166
+ });
1167
+ // ---------------------------------------------------------------------------
1168
+ // POST /v1/convai/agents/:agent_id/deployments
1169
+ // ---------------------------------------------------------------------------
1170
+ export const ElevenLabsCreateAgentDeploymentRequestSchema = z.object({
1171
+ deployment_request: z.object({
1172
+ requests: z.array(z.object({
1173
+ branch_id: z.string(),
1174
+ deployment_strategy: ElevenLabsAgentConfigObjectSchema,
1175
+ })),
1176
+ }),
1177
+ });
1178
+ // ---------------------------------------------------------------------------
1179
+ // POST/PATCH /v1/convai/agents/:agent_id/branches
1180
+ // ---------------------------------------------------------------------------
1181
+ const ElevenLabsAgentBranchProtectionStatusSchema = z.enum([
1182
+ "writer_perms_required",
1183
+ "admin_perms_required",
1184
+ ]);
1185
+ export const ElevenLabsCreateAgentBranchRequestSchema = z.object({
1186
+ parent_version_id: z.string(),
1187
+ name: z.string(),
1188
+ description: z.string(),
1189
+ conversation_config: ElevenLabsAgentConfigObjectSchema.nullable().optional(),
1190
+ platform_settings: ElevenLabsAgentConfigObjectSchema.nullable().optional(),
1191
+ workflow: ElevenLabsAgentConfigObjectSchema.nullable().optional(),
1192
+ });
1193
+ export const ElevenLabsUpdateAgentBranchRequestSchema = z.object({
1194
+ name: z.string().nullable().optional(),
1195
+ is_archived: z.boolean().nullable().optional(),
1196
+ protection_status: ElevenLabsAgentBranchProtectionStatusSchema.nullable().optional(),
1197
+ });
1198
+ export const ElevenLabsMergeAgentBranchRequestSchema = z.object({
1199
+ target_branch_id: z.string(),
1200
+ archive_source_branch: z.boolean().optional(),
1201
+ force: z.boolean().optional(),
1202
+ });
1203
+ export const ElevenLabsPreviewAgentBranchMergeRequestSchema = z.object({
1204
+ target_branch_id: z.string(),
1205
+ force: z.boolean().optional(),
1206
+ });
1207
+ // ---------------------------------------------------------------------------
1208
+ // GET /v1/convai/analytics/live-count
1209
+ // ---------------------------------------------------------------------------
1210
+ export const ElevenLabsGetLiveConversationCountRequestSchema = z.object({
1211
+ agent_id: z.string().nullable().optional(),
1212
+ });
1213
+ // ---------------------------------------------------------------------------
1214
+ // Agents Platform (Conversational AI) — Misc
1215
+ // ---------------------------------------------------------------------------
1216
+ // ---------------------------------------------------------------------------
1217
+ // GET /v1/convai/users
1218
+ // ---------------------------------------------------------------------------
1219
+ export const ElevenLabsListConversationUsersRequestSchema = z.object({
1220
+ agent_id: z.string().nullable().optional(),
1221
+ branch_id: z.string().nullable().optional(),
1222
+ call_start_before_unix: z.number().int().nullable().optional(),
1223
+ call_start_after_unix: z.number().int().nullable().optional(),
1224
+ search: z.string().nullable().optional(),
1225
+ page_size: z.number().int().min(1).max(100).optional(),
1226
+ sort_by: z.enum(["last_contact_unix_secs", "conversation_count"]).optional(),
1227
+ cursor: z.string().nullable().optional(),
1228
+ });
1229
+ // ---------------------------------------------------------------------------
1230
+ // POST /v1/convai/llm-usage/calculate
1231
+ // ---------------------------------------------------------------------------
1232
+ export const ElevenLabsCalculateLlmUsageRequestSchema = z.object({
1233
+ prompt_length: z.number().int(),
1234
+ number_of_pages: z.number().int(),
1235
+ rag_enabled: z.boolean(),
1236
+ });
1237
+ // ---------------------------------------------------------------------------
1238
+ // Agents Platform (Conversational AI) — Conversation Tags
1239
+ // ---------------------------------------------------------------------------
1240
+ // ---------------------------------------------------------------------------
1241
+ // GET /v1/convai/tags
1242
+ // ---------------------------------------------------------------------------
1243
+ export const ElevenLabsListConversationTagsRequestSchema = z.object({
1244
+ page_size: z.number().int().min(1).max(100).optional(),
1245
+ cursor: z.string().nullable().optional(),
1246
+ });
1247
+ // ---------------------------------------------------------------------------
1248
+ // POST /v1/convai/tags
1249
+ // ---------------------------------------------------------------------------
1250
+ export const ElevenLabsCreateConversationTagRequestSchema = z.object({
1251
+ title: z.string().min(1).max(120),
1252
+ description: z.string().max(1000).nullable().optional(),
1253
+ });
1254
+ // ---------------------------------------------------------------------------
1255
+ // PATCH /v1/convai/tags/:tag_id
1256
+ // ---------------------------------------------------------------------------
1257
+ export const ElevenLabsUpdateConversationTagRequestSchema = z.object({
1258
+ title: z.string().min(1).max(120).nullable().optional(),
1259
+ description: z.string().max(1000).nullable().optional(),
1260
+ });
1261
+ // ---------------------------------------------------------------------------
1262
+ // Agents Platform (Conversational AI) — Settings / Secrets / Env Variables
1263
+ // ---------------------------------------------------------------------------
1264
+ const ElevenLabsConvaiSecretLocatorSchema = z.object({
1265
+ secret_id: z.string(),
1266
+ });
1267
+ const ElevenLabsConvaiClientDataWebhookSchema = z.object({
1268
+ url: z.string(),
1269
+ request_headers: z.record(z.string(), z.union([z.string(), ElevenLabsConvaiSecretLocatorSchema])),
1270
+ });
1271
+ const ElevenLabsConvaiWebhookEventSchema = z.enum([
1272
+ "transcript",
1273
+ "audio",
1274
+ "call_initiation_failure",
1275
+ "unredacted_transcript",
1276
+ "unredacted_audio",
1277
+ ]);
1278
+ const ElevenLabsConvaiWebhookTranscriptFormatSchema = z.enum([
1279
+ "json",
1280
+ "opentelemetry",
1281
+ ]);
1282
+ const ElevenLabsConvaiWebhooksSchema = z.object({
1283
+ post_call_webhook_id: z.string().nullable().optional(),
1284
+ events: z.array(ElevenLabsConvaiWebhookEventSchema).optional(),
1285
+ transcript_format: ElevenLabsConvaiWebhookTranscriptFormatSchema.optional(),
1286
+ send_audio: z.boolean().nullable().optional(),
1287
+ });
1288
+ const ElevenLabsConvaiSettingsSchema = z.object({
1289
+ conversation_initiation_client_data_webhook: ElevenLabsConvaiClientDataWebhookSchema.nullable().optional(),
1290
+ webhooks: ElevenLabsConvaiWebhooksSchema.optional(),
1291
+ can_use_mcp_servers: z.boolean().optional(),
1292
+ rag_retention_period_days: z.number().int().min(1).max(30).optional(),
1293
+ conversation_embedding_retention_days: z
1294
+ .number()
1295
+ .int()
1296
+ .min(1)
1297
+ .max(365)
1298
+ .nullable()
1299
+ .optional(),
1300
+ default_livekit_stack: z.enum(["standard", "static"]).optional(),
1301
+ });
1302
+ // ---------------------------------------------------------------------------
1303
+ // PATCH /v1/convai/settings
1304
+ // ---------------------------------------------------------------------------
1305
+ export const ElevenLabsUpdateConvaiSettingsRequestSchema = ElevenLabsConvaiSettingsSchema;
1306
+ const ElevenLabsConvaiDashboardCallSuccessChartSchema = z.object({
1307
+ name: z.string(),
1308
+ type: z.literal("call_success").optional(),
1309
+ });
1310
+ const ElevenLabsConvaiDashboardCriteriaChartSchema = z.object({
1311
+ name: z.string(),
1312
+ type: z.literal("criteria").optional(),
1313
+ criteria_id: z.string(),
1314
+ });
1315
+ const ElevenLabsConvaiDashboardDataCollectionChartSchema = z.object({
1316
+ name: z.string(),
1317
+ type: z.literal("data_collection").optional(),
1318
+ data_collection_id: z.string(),
1319
+ });
1320
+ const ElevenLabsConvaiDashboardChartSchema = z.union([
1321
+ ElevenLabsConvaiDashboardCallSuccessChartSchema,
1322
+ ElevenLabsConvaiDashboardCriteriaChartSchema,
1323
+ ElevenLabsConvaiDashboardDataCollectionChartSchema,
1324
+ ]);
1325
+ // ---------------------------------------------------------------------------
1326
+ // PATCH /v1/convai/settings/dashboard
1327
+ // ---------------------------------------------------------------------------
1328
+ export const ElevenLabsUpdateConvaiDashboardSettingsRequestSchema = z.object({
1329
+ charts: z.array(ElevenLabsConvaiDashboardChartSchema).max(4).optional(),
1330
+ });
1331
+ // ---------------------------------------------------------------------------
1332
+ // POST /v1/convai/secrets
1333
+ // ---------------------------------------------------------------------------
1334
+ export const ElevenLabsCreateWorkspaceSecretRequestSchema = z.object({
1335
+ type: z.literal("new"),
1336
+ name: z.string(),
1337
+ value: z.string(),
1338
+ });
1339
+ // ---------------------------------------------------------------------------
1340
+ // GET /v1/convai/secrets
1341
+ // ---------------------------------------------------------------------------
1342
+ export const ElevenLabsListWorkspaceSecretsRequestSchema = z.object({
1343
+ page_size: z.number().int().min(1).max(100).nullable().optional(),
1344
+ dependency_limit: z.number().int().min(1).max(100).nullable().optional(),
1345
+ search: z.string().nullable().optional(),
1346
+ cursor: z.string().nullable().optional(),
1347
+ });
1348
+ // ---------------------------------------------------------------------------
1349
+ // PATCH /v1/convai/secrets/:secret_id
1350
+ // ---------------------------------------------------------------------------
1351
+ export const ElevenLabsUpdateWorkspaceSecretRequestSchema = z.object({
1352
+ type: z.literal("update"),
1353
+ name: z.string(),
1354
+ value: z.string(),
1355
+ });
1356
+ // ---------------------------------------------------------------------------
1357
+ // GET /v1/convai/secrets/:secret_id/dependencies/:resource_type
1358
+ // ---------------------------------------------------------------------------
1359
+ export const ElevenLabsGetSecretDependenciesRequestSchema = z.object({
1360
+ page_size: z.number().int().min(1).max(100).optional(),
1361
+ cursor: z.string().nullable().optional(),
1362
+ });
1363
+ const ElevenLabsEnvironmentVariableSecretValueRequestSchema = z.object({
1364
+ secret_id: z.string(),
1365
+ });
1366
+ const ElevenLabsEnvironmentVariableAuthConnectionValueRequestSchema = z.object({
1367
+ auth_connection_id: z.string(),
1368
+ });
1369
+ const ElevenLabsEnvironmentVariableTypeSchema = z.enum([
1370
+ "string",
1371
+ "secret",
1372
+ "auth_connection",
1373
+ ]);
1374
+ const ElevenLabsEnvironmentVariableLabelSchema = z
1375
+ .string()
1376
+ .regex(/^[a-z][a-z0-9_]{0,63}$/);
1377
+ // ---------------------------------------------------------------------------
1378
+ // GET /v1/convai/environment-variables
1379
+ // ---------------------------------------------------------------------------
1380
+ export const ElevenLabsListEnvironmentVariablesRequestSchema = z.object({
1381
+ cursor: z.string().nullable().optional(),
1382
+ page_size: z.number().int().min(1).max(100).optional(),
1383
+ label: z.string().nullable().optional(),
1384
+ environment: z.string().nullable().optional(),
1385
+ type: ElevenLabsEnvironmentVariableTypeSchema.nullable().optional(),
1386
+ });
1387
+ // ---------------------------------------------------------------------------
1388
+ // POST /v1/convai/environment-variables
1389
+ // ---------------------------------------------------------------------------
1390
+ export const ElevenLabsCreateEnvironmentVariableRequestSchema = z.discriminatedUnion("type", [
1391
+ z.object({
1392
+ type: z.literal("string"),
1393
+ label: ElevenLabsEnvironmentVariableLabelSchema,
1394
+ values: z.record(z.string(), z.string().min(1)),
1395
+ }),
1396
+ z.object({
1397
+ type: z.literal("secret"),
1398
+ label: ElevenLabsEnvironmentVariableLabelSchema,
1399
+ values: z.record(z.string(), ElevenLabsEnvironmentVariableSecretValueRequestSchema),
1400
+ }),
1401
+ z.object({
1402
+ type: z.literal("auth_connection"),
1403
+ label: ElevenLabsEnvironmentVariableLabelSchema,
1404
+ values: z.record(z.string(), ElevenLabsEnvironmentVariableAuthConnectionValueRequestSchema),
1405
+ }),
1406
+ ]);
1407
+ const ElevenLabsEnvironmentVariableUpdateValueSchema = z.union([
1408
+ z.string().min(1),
1409
+ ElevenLabsEnvironmentVariableSecretValueRequestSchema,
1410
+ ElevenLabsEnvironmentVariableAuthConnectionValueRequestSchema,
1411
+ z.null(),
1412
+ ]);
1413
+ // ---------------------------------------------------------------------------
1414
+ // PATCH /v1/convai/environment-variables/:env_var_id
1415
+ // ---------------------------------------------------------------------------
1416
+ export const ElevenLabsUpdateEnvironmentVariableRequestSchema = z.object({
1417
+ values: z.record(z.string(), ElevenLabsEnvironmentVariableUpdateValueSchema),
1418
+ });
1419
+ // ---------------------------------------------------------------------------
1420
+ // Agents Platform (Conversational AI) — Tools
1421
+ // ---------------------------------------------------------------------------
1422
+ // `tool_config` is a discriminated union over four tool types (client, webhook,
1423
+ // system, mcp), each a large nested config tree; `response_mocks` are equally
1424
+ // open-ended. We keep both as permissive records so the schema stays a thin
1425
+ // metadata surface — callers compose the nested config themselves and the
1426
+ // server passes it straight through.
1427
+ const ElevenLabsToolConfigObjectSchema = z.record(z.string(), z.unknown());
1428
+ // ---------------------------------------------------------------------------
1429
+ // POST /v1/convai/tools
1430
+ // ---------------------------------------------------------------------------
1431
+ export const ElevenLabsCreateToolRequestSchema = z.object({
1432
+ tool_config: ElevenLabsToolConfigObjectSchema,
1433
+ response_mocks: z
1434
+ .array(ElevenLabsToolConfigObjectSchema)
1435
+ .nullable()
1436
+ .optional(),
1437
+ });
1438
+ // ---------------------------------------------------------------------------
1439
+ // GET /v1/convai/tools
1440
+ // ---------------------------------------------------------------------------
1441
+ export const ElevenLabsListToolsRequestSchema = z.object({
1442
+ search: z.string().nullable().optional(),
1443
+ page_size: z.number().int().min(1).max(100).optional(),
1444
+ show_only_owned_documents: z.boolean().optional(),
1445
+ created_by_user_id: z.string().nullable().optional(),
1446
+ types: z
1447
+ .array(z.enum(["webhook", "client", "api_integration_webhook"]))
1448
+ .nullable()
1449
+ .optional(),
1450
+ sort_direction: z.enum(["asc", "desc"]).optional(),
1451
+ sort_by: z.enum(["name", "created_at"]).optional(),
1452
+ cursor: z.string().nullable().optional(),
1453
+ });
1454
+ // ---------------------------------------------------------------------------
1455
+ // PATCH /v1/convai/tools/:tool_id
1456
+ // ---------------------------------------------------------------------------
1457
+ export const ElevenLabsUpdateToolRequestSchema = z.object({
1458
+ tool_config: ElevenLabsToolConfigObjectSchema,
1459
+ response_mocks: z
1460
+ .array(ElevenLabsToolConfigObjectSchema)
1461
+ .nullable()
1462
+ .optional(),
1463
+ });
1464
+ // ---------------------------------------------------------------------------
1465
+ // GET /v1/convai/tools/:tool_id/dependent-agents
1466
+ // ---------------------------------------------------------------------------
1467
+ export const ElevenLabsGetToolDependentAgentsRequestSchema = z.object({
1468
+ cursor: z.string().nullable().optional(),
1469
+ page_size: z.number().int().min(1).max(100).optional(),
1470
+ });
1471
+ // ---------------------------------------------------------------------------
1472
+ // GET /v1/convai/tools/:tool_id/executions
1473
+ // ---------------------------------------------------------------------------
1474
+ export const ElevenLabsGetToolExecutionsRequestSchema = z.object({
1475
+ cursor: z.string().nullable().optional(),
1476
+ page_size: z.number().int().min(1).max(100).optional(),
1477
+ is_error: z.boolean().nullable().optional(),
1478
+ agent_id: z.string().nullable().optional(),
1479
+ branch_id: z.string().nullable().optional(),
1480
+ start_time: z.number().nullable().optional(),
1481
+ end_time: z.number().nullable().optional(),
1482
+ });
1483
+ // ---------------------------------------------------------------------------
1484
+ // Agents Platform (Conversational AI) — MCP Servers
1485
+ // ---------------------------------------------------------------------------
1486
+ const ElevenLabsMcpApprovalPolicySchema = z.enum([
1487
+ "auto_approve_all",
1488
+ "require_approval_all",
1489
+ "require_approval_per_tool",
1490
+ ]);
1491
+ const ElevenLabsMcpToolApprovalPolicySchema = z.enum([
1492
+ "auto_approved",
1493
+ "requires_approval",
1494
+ ]);
1495
+ const ElevenLabsMcpServerTransportSchema = z.enum(["SSE", "STREAMABLE_HTTP"]);
1496
+ const ElevenLabsPreToolSpeechModeSchema = z.enum(["auto", "force", "off"]);
1497
+ const ElevenLabsToolCallSoundTypeSchema = z.enum([
1498
+ "typing",
1499
+ "elevator1",
1500
+ "elevator2",
1501
+ "elevator3",
1502
+ "elevator4",
1503
+ ]);
1504
+ const ElevenLabsToolCallSoundBehaviorSchema = z.enum(["auto", "always"]);
1505
+ const ElevenLabsToolExecutionModeSchema = z.enum([
1506
+ "immediate",
1507
+ "post_tool_speech",
1508
+ "async",
1509
+ ]);
1510
+ const ElevenLabsMcpConfigObjectSchema = z.record(z.string(), z.unknown());
1511
+ const ElevenLabsMcpHeaderValueSchema = z.union([
1512
+ z.string(),
1513
+ ElevenLabsMcpConfigObjectSchema,
1514
+ ]);
1515
+ const ElevenLabsMcpResponseTimeoutSchema = z.number().int().min(5).max(300);
1516
+ const ElevenLabsMcpToolApprovalHashSchema = z.object({
1517
+ tool_name: z.string(),
1518
+ tool_hash: z.string(),
1519
+ approval_policy: ElevenLabsMcpToolApprovalPolicySchema.optional(),
1520
+ });
1521
+ const ElevenLabsMcpToolConfigOverrideBaseSchema = z.object({
1522
+ force_pre_tool_speech: z.boolean().nullable().optional(),
1523
+ pre_tool_speech: ElevenLabsPreToolSpeechModeSchema.nullable().optional(),
1524
+ disable_interruptions: z.boolean().nullable().optional(),
1525
+ tool_call_sound: ElevenLabsToolCallSoundTypeSchema.nullable().optional(),
1526
+ tool_call_sound_behavior: ElevenLabsToolCallSoundBehaviorSchema.nullable().optional(),
1527
+ execution_mode: ElevenLabsToolExecutionModeSchema.nullable().optional(),
1528
+ response_timeout_secs: ElevenLabsMcpResponseTimeoutSchema.nullable().optional(),
1529
+ assignments: z.array(ElevenLabsMcpConfigObjectSchema).nullable().optional(),
1530
+ input_overrides: z
1531
+ .record(z.string(), ElevenLabsMcpConfigObjectSchema)
1532
+ .nullable()
1533
+ .optional(),
1534
+ response_mocks: z
1535
+ .array(ElevenLabsMcpConfigObjectSchema)
1536
+ .nullable()
1537
+ .optional(),
1538
+ });
1539
+ const ElevenLabsMcpToolConfigOverrideWithNameSchema = ElevenLabsMcpToolConfigOverrideBaseSchema.extend({
1540
+ tool_name: z.string(),
1541
+ });
1542
+ // ---------------------------------------------------------------------------
1543
+ // POST /v1/convai/mcp-servers
1544
+ // ---------------------------------------------------------------------------
1545
+ export const ElevenLabsCreateMcpServerRequestSchema = z.object({
1546
+ config: z.object({
1547
+ approval_policy: ElevenLabsMcpApprovalPolicySchema.optional(),
1548
+ tool_approval_hashes: z
1549
+ .array(ElevenLabsMcpToolApprovalHashSchema)
1550
+ .optional(),
1551
+ transport: ElevenLabsMcpServerTransportSchema.optional(),
1552
+ url: z.union([z.string(), ElevenLabsMcpConfigObjectSchema]),
1553
+ secret_token: ElevenLabsMcpConfigObjectSchema.nullable().optional(),
1554
+ request_headers: z
1555
+ .record(z.string(), ElevenLabsMcpHeaderValueSchema)
1556
+ .optional(),
1557
+ auth_connection: ElevenLabsMcpConfigObjectSchema.nullable().optional(),
1558
+ name: z.string(),
1559
+ description: z.string().optional(),
1560
+ force_pre_tool_speech: z.boolean().optional(),
1561
+ pre_tool_speech: ElevenLabsPreToolSpeechModeSchema.optional(),
1562
+ disable_interruptions: z.boolean().optional(),
1563
+ tool_call_sound: ElevenLabsToolCallSoundTypeSchema.nullable().optional(),
1564
+ tool_call_sound_behavior: ElevenLabsToolCallSoundBehaviorSchema.optional(),
1565
+ execution_mode: ElevenLabsToolExecutionModeSchema.optional(),
1566
+ response_timeout_secs: ElevenLabsMcpResponseTimeoutSchema.optional(),
1567
+ tool_config_overrides: z
1568
+ .array(ElevenLabsMcpToolConfigOverrideWithNameSchema)
1569
+ .optional(),
1570
+ disable_compression: z.boolean().optional(),
1571
+ }),
1572
+ });
1573
+ // ---------------------------------------------------------------------------
1574
+ // PATCH /v1/convai/mcp-servers/:mcp_server_id
1575
+ // ---------------------------------------------------------------------------
1576
+ export const ElevenLabsUpdateMcpServerRequestSchema = z.object({
1577
+ approval_policy: ElevenLabsMcpApprovalPolicySchema.nullable().optional(),
1578
+ force_pre_tool_speech: z.boolean().nullable().optional(),
1579
+ pre_tool_speech: ElevenLabsPreToolSpeechModeSchema.nullable().optional(),
1580
+ disable_interruptions: z.boolean().nullable().optional(),
1581
+ tool_call_sound: ElevenLabsToolCallSoundTypeSchema.nullable().optional(),
1582
+ tool_call_sound_behavior: ElevenLabsToolCallSoundBehaviorSchema.nullable().optional(),
1583
+ execution_mode: ElevenLabsToolExecutionModeSchema.nullable().optional(),
1584
+ response_timeout_secs: ElevenLabsMcpResponseTimeoutSchema.nullable().optional(),
1585
+ request_headers: z
1586
+ .record(z.string(), ElevenLabsMcpHeaderValueSchema)
1587
+ .nullable()
1588
+ .optional(),
1589
+ disable_compression: z.boolean().nullable().optional(),
1590
+ secret_token: ElevenLabsMcpConfigObjectSchema.nullable().optional(),
1591
+ auth_connection: ElevenLabsMcpConfigObjectSchema.nullable().optional(),
1592
+ });
1593
+ // ---------------------------------------------------------------------------
1594
+ // POST /v1/convai/mcp-servers/:mcp_server_id/tool-approvals
1595
+ // ---------------------------------------------------------------------------
1596
+ export const ElevenLabsCreateMcpServerToolApprovalRequestSchema = z.object({
1597
+ tool_name: z.string(),
1598
+ tool_description: z.string(),
1599
+ input_schema: ElevenLabsMcpConfigObjectSchema.optional(),
1600
+ approval_policy: ElevenLabsMcpToolApprovalPolicySchema.optional(),
1601
+ });
1602
+ // ---------------------------------------------------------------------------
1603
+ // POST /v1/convai/mcp-servers/:mcp_server_id/tool-configs
1604
+ // ---------------------------------------------------------------------------
1605
+ export const ElevenLabsCreateMcpToolConfigOverrideRequestSchema = ElevenLabsMcpToolConfigOverrideWithNameSchema;
1606
+ // ---------------------------------------------------------------------------
1607
+ // PATCH /v1/convai/mcp-servers/:mcp_server_id/tool-configs/:tool_name
1608
+ // ---------------------------------------------------------------------------
1609
+ export const ElevenLabsUpdateMcpToolConfigOverrideRequestSchema = ElevenLabsMcpToolConfigOverrideBaseSchema;
1610
+ // ---------------------------------------------------------------------------
1611
+ // Agents Platform (Conversational AI) — Tests / Test Invocations
1612
+ // ---------------------------------------------------------------------------
1613
+ // The test payloads embed conversation transcripts, tool evaluation config,
1614
+ // simulation config, and optional ad-hoc agent overrides. Keep those nested
1615
+ // trees permissive in the same style as agent/tool config schemas above.
1616
+ const ElevenLabsAgentTestObjectSchema = z.record(z.string(), z.unknown());
1617
+ const ElevenLabsAgentTestTypeSchema = z.enum([
1618
+ "llm",
1619
+ "tool",
1620
+ "simulation",
1621
+ "folder",
1622
+ ]);
1623
+ const ElevenLabsAgentTestSharingModeSchema = z.enum(["all", "shared_with_me"]);
1624
+ const ElevenLabsAgentTestPayloadSchema = z.object({
1625
+ from_conversation_metadata: ElevenLabsAgentTestObjectSchema.nullable().optional(),
1626
+ dynamic_variables: z.record(z.string(), z.unknown()).optional(),
1627
+ chat_history: z.array(ElevenLabsAgentTestObjectSchema).max(200).optional(),
1628
+ conversation_initiation_source: z.string().nullable().optional(),
1629
+ type: z.enum(["llm", "tool", "simulation"]).optional(),
1630
+ success_condition: z.string().nullable().optional(),
1631
+ success_conditions: z.array(z.string()).max(30).optional(),
1632
+ success_examples: z.array(ElevenLabsAgentTestObjectSchema).max(5).optional(),
1633
+ failure_examples: z.array(ElevenLabsAgentTestObjectSchema).max(5).optional(),
1634
+ tool_call_parameters: ElevenLabsAgentTestObjectSchema.nullable().optional(),
1635
+ check_any_tool_matches: z.boolean().nullable().optional(),
1636
+ simulation_scenario: z.string().optional(),
1637
+ simulation_max_turns: z.number().int().min(1).max(50).optional(),
1638
+ simulation_environment: z.string().nullable().optional(),
1639
+ tool_mock_config: ElevenLabsAgentTestObjectSchema.optional(),
1640
+ evaluation_model: z
1641
+ .union([z.string(), ElevenLabsAgentTestObjectSchema])
1642
+ .nullable()
1643
+ .optional(),
1644
+ simulated_user_model: z
1645
+ .union([z.string(), ElevenLabsAgentTestObjectSchema])
1646
+ .nullable()
1647
+ .optional(),
1648
+ name: z.string(),
1649
+ parent_folder_id: z.string().nullable().optional(),
1650
+ });
1651
+ // ---------------------------------------------------------------------------
1652
+ // POST /v1/convai/agent-testing/create
1653
+ // ---------------------------------------------------------------------------
1654
+ export const ElevenLabsCreateAgentTestRequestSchema = ElevenLabsAgentTestPayloadSchema;
1655
+ // ---------------------------------------------------------------------------
1656
+ // GET /v1/convai/agent-testing
1657
+ // ---------------------------------------------------------------------------
1658
+ export const ElevenLabsListAgentTestsRequestSchema = z.object({
1659
+ cursor: z.string().nullable().optional(),
1660
+ page_size: z.number().int().min(1).max(100).optional(),
1661
+ search: z.string().nullable().optional(),
1662
+ parent_folder_id: z.string().nullable().optional(),
1663
+ types: z.array(ElevenLabsAgentTestTypeSchema).nullable().optional(),
1664
+ include_folders: z.boolean().nullable().optional(),
1665
+ sort_mode: z.enum(["default", "folders_first"]).optional(),
1666
+ sharing_mode: ElevenLabsAgentTestSharingModeSchema.optional(),
1667
+ });
1668
+ // ---------------------------------------------------------------------------
1669
+ // PUT /v1/convai/agent-testing/:test_id
1670
+ // ---------------------------------------------------------------------------
1671
+ export const ElevenLabsUpdateAgentTestRequestSchema = ElevenLabsAgentTestPayloadSchema;
1672
+ // ---------------------------------------------------------------------------
1673
+ // POST /v1/convai/agent-testing/summaries
1674
+ // ---------------------------------------------------------------------------
1675
+ export const ElevenLabsGetAgentTestSummariesRequestSchema = z.object({
1676
+ test_ids: z.array(z.string()),
1677
+ });
1678
+ // ---------------------------------------------------------------------------
1679
+ // POST /v1/convai/agent-testing/bulk-move
1680
+ // ---------------------------------------------------------------------------
1681
+ export const ElevenLabsBulkMoveAgentTestsRequestSchema = z.object({
1682
+ entity_ids: z.array(z.string()).min(1),
1683
+ move_to: z.string().nullable().optional(),
1684
+ });
1685
+ // ---------------------------------------------------------------------------
1686
+ // POST/PATCH/DELETE /v1/convai/agent-testing/folders
1687
+ // ---------------------------------------------------------------------------
1688
+ export const ElevenLabsCreateAgentTestFolderRequestSchema = z.object({
1689
+ name: z.string(),
1690
+ parent_folder_id: z.string().nullable().optional(),
1691
+ });
1692
+ export const ElevenLabsUpdateAgentTestFolderRequestSchema = z.object({
1693
+ name: z.string(),
1694
+ });
1695
+ export const ElevenLabsDeleteAgentTestFolderRequestSchema = z.object({
1696
+ force: z.boolean().optional(),
1697
+ });
1698
+ // ---------------------------------------------------------------------------
1699
+ // POST /v1/convai/agents/:agent_id/run-tests
1700
+ // ---------------------------------------------------------------------------
1701
+ export const ElevenLabsRunAgentTestsRequestSchema = z.object({
1702
+ tests: z
1703
+ .array(z.object({
1704
+ test_id: z.string(),
1705
+ workflow_node_id: z.string().nullable().optional(),
1706
+ root_folder_id: z.string().nullable().optional(),
1707
+ root_folder_name: z.string().nullable().optional(),
1708
+ }))
1709
+ .min(1)
1710
+ .max(5000),
1711
+ agent_config_override: ElevenLabsAgentTestObjectSchema.nullable().optional(),
1712
+ branch_id: z.string().nullable().optional(),
1713
+ repeat_count: z.number().int().min(1).max(50).optional(),
1714
+ });
1715
+ // ---------------------------------------------------------------------------
1716
+ // GET /v1/convai/test-invocations
1717
+ // ---------------------------------------------------------------------------
1718
+ export const ElevenLabsListTestInvocationsRequestSchema = z.object({
1719
+ agent_id: z.string().nullable().optional(),
1720
+ page_size: z.number().int().min(1).max(100).optional(),
1721
+ cursor: z.string().nullable().optional(),
1722
+ });
1723
+ // ---------------------------------------------------------------------------
1724
+ // POST /v1/convai/test-invocations/:test_invocation_id/resubmit
1725
+ // ---------------------------------------------------------------------------
1726
+ export const ElevenLabsResubmitTestsRequestSchema = z.object({
1727
+ test_run_ids: z.array(z.string()).min(1).max(5000),
1728
+ agent_config_override: ElevenLabsAgentTestObjectSchema.nullable().optional(),
1729
+ agent_id: z.string(),
1730
+ branch_id: z.string().nullable().optional(),
1731
+ });
1732
+ // ---------------------------------------------------------------------------
1733
+ // Agents Platform — Knowledge Base
1734
+ // ---------------------------------------------------------------------------
1735
+ const ElevenLabsKnowledgeBaseDocumentTypeSchema = z.enum([
1736
+ "file",
1737
+ "url",
1738
+ "text",
1739
+ "folder",
1740
+ ]);
1741
+ const ElevenLabsKnowledgeBaseEmbeddingModelSchema = z.enum([
1742
+ "e5_mistral_7b_instruct",
1743
+ "multilingual_e5_large_instruct",
1744
+ ]);
1745
+ const ElevenLabsKnowledgeBaseDependentTypeSchema = z.enum([
1746
+ "direct",
1747
+ "transitive",
1748
+ "all",
1749
+ ]);
1750
+ // ---------------------------------------------------------------------------
1751
+ // POST /v1/convai/knowledge-base/url
1752
+ // ---------------------------------------------------------------------------
1753
+ export const ElevenLabsCreateKnowledgeBaseDocumentFromUrlRequestSchema = z.object({
1754
+ url: z.string().url(),
1755
+ name: z.string().nullable().optional(),
1756
+ parent_folder_id: z.string().nullable().optional(),
1757
+ enable_auto_sync: z.boolean().optional(),
1758
+ auto_remove: z.boolean().optional(),
1759
+ });
1760
+ // ---------------------------------------------------------------------------
1761
+ // POST /v1/convai/knowledge-base/text
1762
+ // ---------------------------------------------------------------------------
1763
+ export const ElevenLabsCreateKnowledgeBaseDocumentFromTextRequestSchema = z.object({
1764
+ text: z.string(),
1765
+ name: z.string().nullable().optional(),
1766
+ parent_folder_id: z.string().nullable().optional(),
1767
+ });
1768
+ // ---------------------------------------------------------------------------
1769
+ // POST /v1/convai/knowledge-base/file
1770
+ // ---------------------------------------------------------------------------
1771
+ // Multipart form: `file` is the binary document; `name` and `parent_folder_id`
1772
+ // are optional text fields.
1773
+ export const ElevenLabsCreateKnowledgeBaseDocumentFromFileRequestSchema = z.object({
1774
+ file: z.custom(),
1775
+ name: z.string().nullable().optional(),
1776
+ parent_folder_id: z.string().nullable().optional(),
1777
+ });
1778
+ // ---------------------------------------------------------------------------
1779
+ // GET /v1/convai/knowledge-base
1780
+ // ---------------------------------------------------------------------------
1781
+ export const ElevenLabsListKnowledgeBaseDocumentsRequestSchema = z.object({
1782
+ page_size: z.number().int().min(1).max(100).optional(),
1783
+ search: z.string().nullable().optional(),
1784
+ show_only_owned_documents: z.boolean().optional(),
1785
+ created_by_user_id: z.string().nullable().optional(),
1786
+ types: z
1787
+ .array(ElevenLabsKnowledgeBaseDocumentTypeSchema)
1788
+ .nullable()
1789
+ .optional(),
1790
+ parent_folder_id: z.string().nullable().optional(),
1791
+ ancestor_folder_id: z.string().nullable().optional(),
1792
+ folders_first: z.boolean().optional(),
1793
+ sort_direction: z.enum(["asc", "desc"]).optional(),
1794
+ sort_by: z
1795
+ .enum(["name", "created_at", "updated_at", "size"])
1796
+ .nullable()
1797
+ .optional(),
1798
+ cursor: z.string().nullable().optional(),
1799
+ });
1800
+ // ---------------------------------------------------------------------------
1801
+ // GET /v1/convai/knowledge-base/:documentation_id
1802
+ // ---------------------------------------------------------------------------
1803
+ export const ElevenLabsGetKnowledgeBaseDocumentRequestSchema = z.object({
1804
+ agent_id: z.string().optional(),
1805
+ });
1806
+ // ---------------------------------------------------------------------------
1807
+ // DELETE /v1/convai/knowledge-base/:documentation_id
1808
+ // ---------------------------------------------------------------------------
1809
+ export const ElevenLabsDeleteKnowledgeBaseDocumentRequestSchema = z.object({
1810
+ force: z.boolean().optional(),
1811
+ });
1812
+ // ---------------------------------------------------------------------------
1813
+ // GET /v1/convai/knowledge-base/summaries
1814
+ // ---------------------------------------------------------------------------
1815
+ export const ElevenLabsGetKnowledgeBaseSummariesRequestSchema = z.object({
1816
+ document_ids: z.array(z.string()).min(1).max(100),
1817
+ });
1818
+ // ---------------------------------------------------------------------------
1819
+ // GET /v1/convai/knowledge-base/search
1820
+ // ---------------------------------------------------------------------------
1821
+ export const ElevenLabsSearchKnowledgeBaseContentRequestSchema = z.object({
1822
+ query: z.string(),
1823
+ page_size: z.number().int().min(1).max(100).optional(),
1824
+ types: z
1825
+ .array(ElevenLabsKnowledgeBaseDocumentTypeSchema)
1826
+ .nullable()
1827
+ .optional(),
1828
+ cursor: z.string().nullable().optional(),
1829
+ });
1830
+ // ---------------------------------------------------------------------------
1831
+ // PATCH /v1/convai/knowledge-base/:documentation_id
1832
+ // ---------------------------------------------------------------------------
1833
+ export const ElevenLabsUpdateKnowledgeBaseDocumentRequestSchema = z.object({
1834
+ name: z.string().nullable().optional(),
1835
+ content: z.string().nullable().optional(),
1836
+ });
1837
+ // ---------------------------------------------------------------------------
1838
+ // GET /v1/convai/knowledge-base/:documentation_id/chunks
1839
+ // ---------------------------------------------------------------------------
1840
+ export const ElevenLabsListKnowledgeBaseDocumentChunksRequestSchema = z.object({
1841
+ embedding_model: ElevenLabsKnowledgeBaseEmbeddingModelSchema,
1842
+ page_size: z.number().int().min(1).max(100).optional(),
1843
+ cursor: z.string().nullable().optional(),
1844
+ });
1845
+ // ---------------------------------------------------------------------------
1846
+ // GET /v1/convai/knowledge-base/:documentation_id/chunk/:chunk_id
1847
+ // ---------------------------------------------------------------------------
1848
+ export const ElevenLabsGetKnowledgeBaseDocumentChunkRequestSchema = z.object({
1849
+ embedding_model: ElevenLabsKnowledgeBaseEmbeddingModelSchema.nullable().optional(),
1850
+ });
1851
+ // ---------------------------------------------------------------------------
1852
+ // GET /v1/convai/knowledge-base/:documentation_id/dependent-agents
1853
+ // ---------------------------------------------------------------------------
1854
+ export const ElevenLabsGetKnowledgeBaseDependentAgentsRequestSchema = z.object({
1855
+ dependent_type: ElevenLabsKnowledgeBaseDependentTypeSchema.optional(),
1856
+ page_size: z.number().int().min(1).max(100).optional(),
1857
+ cursor: z.string().nullable().optional(),
1858
+ });
1859
+ // ---------------------------------------------------------------------------
1860
+ // PATCH /v1/convai/knowledge-base/:documentation_id/update-file
1861
+ // ---------------------------------------------------------------------------
1862
+ export const ElevenLabsUpdateKnowledgeBaseFileDocumentRequestSchema = z.object({
1863
+ file: z.custom(),
1864
+ });
1865
+ // ---------------------------------------------------------------------------
1866
+ // POST /v1/convai/knowledge-base/rag-index
1867
+ // ---------------------------------------------------------------------------
1868
+ export const ElevenLabsComputeKnowledgeBaseRagIndexesRequestSchema = z.object({
1869
+ items: z.array(z.object({
1870
+ document_id: z.string(),
1871
+ create_if_missing: z.boolean(),
1872
+ model: ElevenLabsKnowledgeBaseEmbeddingModelSchema,
1873
+ })),
1874
+ });
1875
+ // ---------------------------------------------------------------------------
1876
+ // POST /v1/convai/knowledge-base/:documentation_id/rag-index
1877
+ // ---------------------------------------------------------------------------
1878
+ export const ElevenLabsComputeKnowledgeBaseDocumentRagIndexRequestSchema = z.object({
1879
+ model: ElevenLabsKnowledgeBaseEmbeddingModelSchema,
1880
+ });
1881
+ // ---------------------------------------------------------------------------
1882
+ // POST /v1/convai/knowledge-base/folder
1883
+ // ---------------------------------------------------------------------------
1884
+ export const ElevenLabsCreateKnowledgeBaseFolderRequestSchema = z.object({
1885
+ name: z.string(),
1886
+ parent_folder_id: z.string().nullable().optional(),
1887
+ enable_auto_sync: z.boolean().optional(),
1888
+ auto_remove: z.boolean().optional(),
1889
+ });
1890
+ // ---------------------------------------------------------------------------
1891
+ // POST /v1/convai/knowledge-base/bulk-move
1892
+ // ---------------------------------------------------------------------------
1893
+ export const ElevenLabsBulkMoveKnowledgeBaseDocumentsRequestSchema = z.object({
1894
+ document_ids: z.array(z.string()),
1895
+ move_to: z.string().nullable().optional(),
1896
+ });
1897
+ // ---------------------------------------------------------------------------
1898
+ // POST /v1/convai/knowledge-base/:document_id/move
1899
+ // ---------------------------------------------------------------------------
1900
+ export const ElevenLabsMoveKnowledgeBaseEntityRequestSchema = z.object({
1901
+ move_to: z.string().nullable().optional(),
1902
+ });
1903
+ // ---------------------------------------------------------------------------
1904
+ // Agents Platform — Conversations
1905
+ // ---------------------------------------------------------------------------
1906
+ // ---------------------------------------------------------------------------
1907
+ // GET /v1/convai/conversations
1908
+ // ---------------------------------------------------------------------------
1909
+ // All fields are query-string filters; the factory serialises them onto the
1910
+ // URL. Array-valued filters (`evaluation_params`, `main_languages`, ...) are
1911
+ // repeated as multiple query params by `buildQueryString`.
1912
+ export const ElevenLabsListConversationsRequestSchema = z.object({
1913
+ cursor: z.string().nullable().optional(),
1914
+ agent_id: z.string().nullable().optional(),
1915
+ call_successful: z
1916
+ .enum(["success", "failure", "unknown"])
1917
+ .nullable()
1918
+ .optional(),
1919
+ call_start_before_unix: z.number().int().nullable().optional(),
1920
+ call_start_after_unix: z.number().int().nullable().optional(),
1921
+ call_duration_min_secs: z.number().int().nullable().optional(),
1922
+ call_duration_max_secs: z.number().int().nullable().optional(),
1923
+ rating_min: z.number().int().nullable().optional(),
1924
+ rating_max: z.number().int().nullable().optional(),
1925
+ has_feedback_comment: z.boolean().nullable().optional(),
1926
+ user_id: z.string().nullable().optional(),
1927
+ evaluation_params: z.array(z.string()).nullable().optional(),
1928
+ data_collection_params: z.array(z.string()).nullable().optional(),
1929
+ tool_names: z.array(z.string()).nullable().optional(),
1930
+ tool_names_successful: z.array(z.string()).nullable().optional(),
1931
+ tool_names_errored: z.array(z.string()).nullable().optional(),
1932
+ main_languages: z.array(z.string()).nullable().optional(),
1933
+ page_size: z.number().int().min(1).max(100).optional(),
1934
+ summary_mode: z.enum(["exclude", "include"]).optional(),
1935
+ search: z.string().nullable().optional(),
1936
+ text_only: z.boolean().nullable().optional(),
1937
+ branch_id: z.string().nullable().optional(),
1938
+ topic_ids: z.array(z.string()).nullable().optional(),
1939
+ exclude_statuses: z.array(z.string()).nullable().optional(),
1940
+ tag_ids: z.array(z.string()).nullable().optional(),
1941
+ termination_reasons: z.array(z.string()).nullable().optional(),
1942
+ });
1943
+ // ---------------------------------------------------------------------------
1944
+ // GET /v1/convai/conversations/:conversation_id
1945
+ // ---------------------------------------------------------------------------
1946
+ export const ElevenLabsGetConversationRequestSchema = z.object({
1947
+ format: z.enum(["json", "opentelemetry"]).optional(),
1948
+ });
1949
+ // ---------------------------------------------------------------------------
1950
+ // GET /v1/convai/conversation/get-signed-url
1951
+ // ---------------------------------------------------------------------------
1952
+ export const ElevenLabsGetSignedUrlRequestSchema = z.object({
1953
+ agent_id: z.string(),
1954
+ include_conversation_id: z.boolean().optional(),
1955
+ branch_id: z.string().nullable().optional(),
1956
+ environment: z.string().nullable().optional(),
1957
+ });
1958
+ // ---------------------------------------------------------------------------
1959
+ // GET /v1/convai/conversation/token
1960
+ // ---------------------------------------------------------------------------
1961
+ export const ElevenLabsGetConversationTokenRequestSchema = z.object({
1962
+ agent_id: z.string(),
1963
+ participant_name: z.string().nullable().optional(),
1964
+ branch_id: z.string().nullable().optional(),
1965
+ environment: z.string().nullable().optional(),
1966
+ });
1967
+ // ---------------------------------------------------------------------------
1968
+ // GET /v1/convai/conversations/messages/smart-search
1969
+ // ---------------------------------------------------------------------------
1970
+ export const ElevenLabsSmartSearchConversationMessagesRequestSchema = z.object({
1971
+ text_query: z.string(),
1972
+ agent_id: z.string().nullable().optional(),
1973
+ page_size: z.number().int().min(1).max(50).optional(),
1974
+ cursor: z.string().nullable().optional(),
1975
+ });
1976
+ // ---------------------------------------------------------------------------
1977
+ // GET /v1/convai/conversations/messages/text-search
1978
+ // ---------------------------------------------------------------------------
1979
+ export const ElevenLabsTextSearchConversationMessagesRequestSchema = z.object({
1980
+ text_query: z.string(),
1981
+ agent_id: z.string().nullable().optional(),
1982
+ call_successful: z
1983
+ .enum(["success", "failure", "unknown"])
1984
+ .nullable()
1985
+ .optional(),
1986
+ call_start_before_unix: z.number().int().nullable().optional(),
1987
+ call_start_after_unix: z.number().int().nullable().optional(),
1988
+ call_duration_min_secs: z.number().int().nullable().optional(),
1989
+ call_duration_max_secs: z.number().int().nullable().optional(),
1990
+ rating_max: z.number().int().nullable().optional(),
1991
+ rating_min: z.number().int().nullable().optional(),
1992
+ has_feedback_comment: z.boolean().nullable().optional(),
1993
+ user_id: z.string().nullable().optional(),
1994
+ evaluation_params: z.array(z.string()).nullable().optional(),
1995
+ data_collection_params: z.array(z.string()).nullable().optional(),
1996
+ tool_names: z.array(z.string()).nullable().optional(),
1997
+ tool_names_successful: z.array(z.string()).nullable().optional(),
1998
+ tool_names_errored: z.array(z.string()).nullable().optional(),
1999
+ main_languages: z.array(z.string()).nullable().optional(),
2000
+ page_size: z.number().int().min(1).max(50).optional(),
2001
+ summary_mode: z.enum(["exclude", "include"]).optional(),
2002
+ conversation_initiation_source: z
2003
+ .enum([
2004
+ "unknown",
2005
+ "android_sdk",
2006
+ "node_js_sdk",
2007
+ "react_native_sdk",
2008
+ "react_sdk",
2009
+ "js_sdk",
2010
+ "python_sdk",
2011
+ "widget",
2012
+ "sip_trunk",
2013
+ "twilio",
2014
+ "exotel",
2015
+ "genesys",
2016
+ "swift_sdk",
2017
+ "whatsapp",
2018
+ "twilio_sms",
2019
+ "flutter_sdk",
2020
+ "zendesk_integration",
2021
+ "slack_integration",
2022
+ "telegram_integration",
2023
+ "intercom_integration",
2024
+ "freshdesk_integration",
2025
+ "template_preview",
2026
+ "genesys_bot_connector",
2027
+ ])
2028
+ .nullable()
2029
+ .optional(),
2030
+ text_only: z.boolean().nullable().optional(),
2031
+ conversation_product_type: z
2032
+ .enum(["agents", "speech_engine"])
2033
+ .nullable()
2034
+ .optional(),
2035
+ branch_id: z.string().nullable().optional(),
2036
+ topic_ids: z.array(z.string()).nullable().optional(),
2037
+ sort_by: z.enum(["search_score", "created_at"]).optional(),
2038
+ cursor: z.string().nullable().optional(),
2039
+ });
2040
+ // ---------------------------------------------------------------------------
2041
+ // POST /v1/convai/conversations/:conversation_id/feedback
2042
+ // ---------------------------------------------------------------------------
2043
+ export const ElevenLabsConversationFeedbackRequestSchema = z.object({
2044
+ feedback: z.enum(["like", "dislike"]).nullable().optional(),
2045
+ });
2046
+ // ---------------------------------------------------------------------------
2047
+ // POST /v1/convai/conversations/:conversation_id/files
2048
+ // ---------------------------------------------------------------------------
2049
+ export const ElevenLabsUploadConversationFileRequestSchema = z.object({
2050
+ file: z.custom((value) => value instanceof Blob),
2051
+ });
2052
+ // ---------------------------------------------------------------------------
2053
+ // GET /v1/convai/conversations/:conversation_id/sip-messages
2054
+ // ---------------------------------------------------------------------------
2055
+ export const ElevenLabsGetConversationSipMessagesRequestSchema = z.object({
2056
+ page_size: z.number().int().min(1).max(20).optional(),
2057
+ cursor: z.string().nullable().optional(),
2058
+ });
2059
+ // ---------------------------------------------------------------------------
2060
+ // POST /v1/convai/conversations/:conversation_id/tags
2061
+ // ---------------------------------------------------------------------------
2062
+ export const ElevenLabsAssignConversationTagsRequestSchema = z.object({
2063
+ tag_ids: z.array(z.string()).min(1).max(50),
2064
+ });
2065
+ // ---------------------------------------------------------------------------
2066
+ // POST /v1/convai/conversations/:conversation_id/analysis/evaluations/run
2067
+ // ---------------------------------------------------------------------------
2068
+ export const ElevenLabsRunConversationEvaluationsRequestSchema = z.object({
2069
+ evaluation_id: z.string(),
2070
+ scope: z.enum(["conversation", "agent"]).optional(),
2071
+ });
2072
+ // ---------------------------------------------------------------------------
2073
+ // Agents Platform (Conversational AI) — batch calling / telephony
2074
+ // ---------------------------------------------------------------------------
2075
+ // SIP-trunk inbound/outbound trunk configs and the per-conversation client
2076
+ // data / telephony config are large, deeply-nested objects. We keep them as
2077
+ // permissive records so the schema stays a thin metadata surface — callers
2078
+ // compose the nested config themselves and the server passes it straight
2079
+ // through.
2080
+ const ElevenLabsConvaiConfigObjectSchema = z.record(z.string(), z.unknown());
2081
+ const ElevenLabsBatchCallWhatsAppParamsSchema = z.object({
2082
+ whatsapp_phone_number_id: z.string().nullable().optional(),
2083
+ whatsapp_call_permission_request_template_name: z.string(),
2084
+ whatsapp_call_permission_request_template_language_code: z.string(),
2085
+ });
2086
+ const ElevenLabsBatchCallTelephonyConfigSchema = z.object({
2087
+ ringing_timeout_secs: z.number().int().min(1).max(999).optional(),
2088
+ });
2089
+ const ElevenLabsBatchCallRecipientSchema = z.object({
2090
+ id: z.string().nullable().optional(),
2091
+ phone_number: z.string().nullable().optional(),
2092
+ whatsapp_user_id: z.string().nullable().optional(),
2093
+ conversation_initiation_client_data: ElevenLabsConvaiConfigObjectSchema.nullable().optional(),
2094
+ });
2095
+ // ---------------------------------------------------------------------------
2096
+ // POST /v1/convai/batch-calling/submit
2097
+ // ---------------------------------------------------------------------------
2098
+ export const ElevenLabsSubmitBatchCallRequestSchema = z.object({
2099
+ call_name: z.string(),
2100
+ agent_id: z.string(),
2101
+ recipients: z.array(ElevenLabsBatchCallRecipientSchema).max(10000),
2102
+ scheduled_time_unix: z.number().int().nullable().optional(),
2103
+ agent_phone_number_id: z.string().nullable().optional(),
2104
+ whatsapp_params: ElevenLabsBatchCallWhatsAppParamsSchema.nullable().optional(),
2105
+ timezone: z.string().nullable().optional(),
2106
+ branch_id: z.string().nullable().optional(),
2107
+ environment: z.string().nullable().optional(),
2108
+ telephony_call_config: ElevenLabsBatchCallTelephonyConfigSchema.optional(),
2109
+ target_concurrency_limit: z.number().int().min(1).nullable().optional(),
2110
+ });
2111
+ // ---------------------------------------------------------------------------
2112
+ // GET /v1/convai/batch-calling/workspace
2113
+ // ---------------------------------------------------------------------------
2114
+ export const ElevenLabsListWorkspaceBatchCallsRequestSchema = z.object({
2115
+ limit: z.number().int().optional(),
2116
+ last_doc: z.string().nullable().optional(),
2117
+ agent_id: z.string().nullable().optional(),
2118
+ });
2119
+ export const ElevenLabsPhoneNumberProvider = z.enum([
2120
+ "twilio",
2121
+ "exotel",
2122
+ "sip_trunk",
2123
+ ]);
2124
+ // ---------------------------------------------------------------------------
2125
+ // POST /v1/convai/phone-numbers
2126
+ // ---------------------------------------------------------------------------
2127
+ // Importing a phone number is a discriminated union upstream (twilio / exotel /
2128
+ // sip_trunk), each provider carrying its own credential fields. We model the
2129
+ // shared keys as required and every provider-specific field as optional so the
2130
+ // request object stays a single flat shape the MCP server can expose; callers
2131
+ // supply the fields their chosen `provider` needs.
2132
+ export const ElevenLabsCreatePhoneNumberRequestSchema = z.object({
2133
+ phone_number: z.string(),
2134
+ label: z.string(),
2135
+ provider: ElevenLabsPhoneNumberProvider,
2136
+ // Twilio
2137
+ sid: z.string().optional(),
2138
+ token: z.string().optional(),
2139
+ region_config: ElevenLabsConvaiConfigObjectSchema.nullable().optional(),
2140
+ // Exotel
2141
+ account_sid: z.string().optional(),
2142
+ api_key: z.string().optional(),
2143
+ api_token: z.string().optional(),
2144
+ api_subdomain: z
2145
+ .enum(["api.in.exotel.com", "api.exotel.com"])
2146
+ .nullable()
2147
+ .optional(),
2148
+ app_id: z.string().optional(),
2149
+ applet_url: z.string().nullable().optional(),
2150
+ // SIP trunk
2151
+ inbound_trunk_config: ElevenLabsConvaiConfigObjectSchema.nullable().optional(),
2152
+ outbound_trunk_config: ElevenLabsConvaiConfigObjectSchema.nullable().optional(),
2153
+ // Deprecated upstream, accepted for backwards compatibility.
2154
+ supports_inbound: z.boolean().nullable().optional(),
2155
+ supports_outbound: z.boolean().nullable().optional(),
2156
+ });
2157
+ // ---------------------------------------------------------------------------
2158
+ // GET /v1/convai/phone-numbers
2159
+ // ---------------------------------------------------------------------------
2160
+ export const ElevenLabsListPhoneNumbersRequestSchema = z.object({
2161
+ provider: ElevenLabsPhoneNumberProvider.optional(),
2162
+ agent_id: z.string().nullable().optional(),
2163
+ branch_id: z.string().nullable().optional(),
2164
+ });
2165
+ // ---------------------------------------------------------------------------
2166
+ // PATCH /v1/convai/phone-numbers/:phone_number_id
2167
+ // ---------------------------------------------------------------------------
2168
+ export const ElevenLabsUpdatePhoneNumberRequestSchema = z.object({
2169
+ agent_id: z.string().nullable().optional(),
2170
+ label: z.string().nullable().optional(),
2171
+ inbound_trunk_config: ElevenLabsConvaiConfigObjectSchema.nullable().optional(),
2172
+ outbound_trunk_config: ElevenLabsConvaiConfigObjectSchema.nullable().optional(),
2173
+ livekit_stack: z.string().nullable().optional(),
2174
+ store_sip_messages: z.boolean().nullable().optional(),
2175
+ environment: z.string().nullable().optional(),
2176
+ branch_id: z.string().nullable().optional(),
2177
+ });
2178
+ // ---------------------------------------------------------------------------
2179
+ // GET /v1/convai/phone-numbers/:phone_number_id/sip-messages
2180
+ // ---------------------------------------------------------------------------
2181
+ export const ElevenLabsGetPhoneNumberSipMessagesRequestSchema = ElevenLabsGetConversationSipMessagesRequestSchema;
2182
+ // ---------------------------------------------------------------------------
2183
+ // POST /v1/convai/twilio/register-call
2184
+ // ---------------------------------------------------------------------------
2185
+ const ElevenLabsTelephonyDirectionSchema = z.enum(["inbound", "outbound"]);
2186
+ const ElevenLabsTelephonyCallConfigSchema = z.object({
2187
+ ringing_timeout_secs: z.number().int().min(1).max(999).optional(),
2188
+ });
2189
+ export const ElevenLabsRegisterTwilioCallRequestSchema = z.object({
2190
+ agent_id: z.string(),
2191
+ from_number: z.string(),
2192
+ to_number: z.string(),
2193
+ direction: ElevenLabsTelephonyDirectionSchema.optional(),
2194
+ conversation_initiation_client_data: ElevenLabsConvaiConfigObjectSchema.nullable().optional(),
2195
+ });
2196
+ // ---------------------------------------------------------------------------
2197
+ // POST /v1/convai/twilio/outbound-call
2198
+ // ---------------------------------------------------------------------------
2199
+ export const ElevenLabsTwilioOutboundCallRequestSchema = z.object({
2200
+ agent_id: z.string(),
2201
+ agent_phone_number_id: z.string(),
2202
+ to_number: z.string(),
2203
+ conversation_initiation_client_data: ElevenLabsConvaiConfigObjectSchema.nullable().optional(),
2204
+ call_recording_enabled: z.boolean().nullable().optional(),
2205
+ telephony_call_config: ElevenLabsConvaiConfigObjectSchema.nullable().optional(),
2206
+ });
2207
+ // ---------------------------------------------------------------------------
2208
+ // POST /v1/convai/sip-trunk/outbound-call
2209
+ // ---------------------------------------------------------------------------
2210
+ export const ElevenLabsSipTrunkOutboundCallRequestSchema = z.object({
2211
+ agent_id: z.string(),
2212
+ agent_phone_number_id: z.string(),
2213
+ to_number: z.string(),
2214
+ conversation_initiation_client_data: ElevenLabsConvaiConfigObjectSchema.nullable().optional(),
2215
+ telephony_call_config: ElevenLabsConvaiConfigObjectSchema.nullable().optional(),
2216
+ });
2217
+ // ---------------------------------------------------------------------------
2218
+ // POST /v1/convai/exotel/outbound-call
2219
+ // ---------------------------------------------------------------------------
2220
+ export const ElevenLabsExotelOutboundCallRequestSchema = z.object({
2221
+ agent_id: z.string(),
2222
+ agent_phone_number_id: z.string(),
2223
+ to_number: z.string(),
2224
+ conversation_initiation_client_data: ElevenLabsConvaiConfigObjectSchema.nullable().optional(),
2225
+ telephony_call_config: ElevenLabsTelephonyCallConfigSchema.nullable().optional(),
2226
+ });
2227
+ // ---------------------------------------------------------------------------
2228
+ // POST /v1/convai/whatsapp/outbound-call
2229
+ // ---------------------------------------------------------------------------
2230
+ export const ElevenLabsWhatsAppOutboundCallRequestSchema = z.object({
2231
+ whatsapp_phone_number_id: z.string(),
2232
+ whatsapp_user_id: z.string(),
2233
+ whatsapp_call_permission_request_template_name: z.string(),
2234
+ whatsapp_call_permission_request_template_language_code: z.string(),
2235
+ agent_id: z.string(),
2236
+ conversation_initiation_client_data: ElevenLabsConvaiConfigObjectSchema.nullable().optional(),
2237
+ });
2238
+ // ---------------------------------------------------------------------------
2239
+ // POST /v1/convai/whatsapp/outbound-message
2240
+ // ---------------------------------------------------------------------------
2241
+ const ElevenLabsWhatsAppTemplateTextParamSchema = z.object({
2242
+ parameter_name: z.string().nullable().optional(),
2243
+ type: z.literal("text").optional(),
2244
+ text: z.string(),
2245
+ });
2246
+ const ElevenLabsWhatsAppTemplateImageParamSchema = z.object({
2247
+ type: z.literal("image").optional(),
2248
+ image: z.object({
2249
+ link: z.string(),
2250
+ }),
2251
+ });
2252
+ const ElevenLabsWhatsAppTemplateDocumentParamSchema = z.object({
2253
+ type: z.literal("document").optional(),
2254
+ document: z.object({
2255
+ link: z.string(),
2256
+ filename: z.string().nullable().optional(),
2257
+ }),
2258
+ });
2259
+ const ElevenLabsWhatsAppTemplateLocationParamSchema = z.object({
2260
+ type: z.literal("location").optional(),
2261
+ location: z.object({
2262
+ latitude: z.string(),
2263
+ longitude: z.string(),
2264
+ name: z.string(),
2265
+ address: z.string(),
2266
+ }),
2267
+ });
2268
+ const ElevenLabsWhatsAppTemplateHeaderParamSchema = z.union([
2269
+ ElevenLabsWhatsAppTemplateTextParamSchema,
2270
+ ElevenLabsWhatsAppTemplateImageParamSchema,
2271
+ ElevenLabsWhatsAppTemplateDocumentParamSchema,
2272
+ ElevenLabsWhatsAppTemplateLocationParamSchema,
2273
+ ]);
2274
+ const ElevenLabsWhatsAppTemplateComponentSchema = z.union([
2275
+ z.object({
2276
+ type: z.literal("header").optional(),
2277
+ parameters: z.array(ElevenLabsWhatsAppTemplateHeaderParamSchema),
2278
+ }),
2279
+ z.object({
2280
+ type: z.literal("body").optional(),
2281
+ parameters: z.array(ElevenLabsWhatsAppTemplateTextParamSchema),
2282
+ }),
2283
+ z.object({
2284
+ type: z.literal("button").optional(),
2285
+ parameters: z.array(ElevenLabsWhatsAppTemplateTextParamSchema),
2286
+ index: z.number().int(),
2287
+ sub_type: z.string(),
2288
+ }),
2289
+ ]);
2290
+ export const ElevenLabsWhatsAppOutboundMessageRequestSchema = z.object({
2291
+ whatsapp_phone_number_id: z.string(),
2292
+ whatsapp_user_id: z.string(),
2293
+ template_name: z.string(),
2294
+ template_language_code: z.string(),
2295
+ template_params: z.array(ElevenLabsWhatsAppTemplateComponentSchema),
2296
+ agent_id: z.string(),
2297
+ conversation_initiation_client_data: ElevenLabsConvaiConfigObjectSchema.nullable().optional(),
2298
+ });
2299
+ // ---------------------------------------------------------------------------
2300
+ // GET /v1/convai/whatsapp-accounts
2301
+ // ---------------------------------------------------------------------------
2302
+ export const ElevenLabsListWhatsAppAccountsRequestSchema = z.object({
2303
+ agent_id: z.string().nullable().optional(),
2304
+ });
2305
+ // ---------------------------------------------------------------------------
2306
+ // PATCH /v1/convai/whatsapp-accounts/:phone_number_id
2307
+ // ---------------------------------------------------------------------------
2308
+ export const ElevenLabsUpdateWhatsAppAccountRequestSchema = z.object({
2309
+ assigned_agent_id: z.string().nullable().optional(),
2310
+ enable_messaging: z.boolean().nullable().optional(),
2311
+ enable_audio_message_response: z.boolean().nullable().optional(),
2312
+ });
2313
+ // ---------------------------------------------------------------------------
2314
+ // POST /v1/text-to-voice
2315
+ // ---------------------------------------------------------------------------
2316
+ export const ElevenLabsCreateVoiceFromPreviewRequestSchema = z.object({
2317
+ voice_name: z.string(),
2318
+ voice_description: z.string().min(20).max(1000),
2319
+ generated_voice_id: z.string(),
2320
+ labels: z.record(z.string(), z.string()).nullable().optional(),
2321
+ played_not_selected_voice_ids: z.array(z.string()).nullable().optional(),
2322
+ });
2323
+ // ---------------------------------------------------------------------------
2324
+ // POST /v1/text-to-voice/design
2325
+ // ---------------------------------------------------------------------------
2326
+ export const ElevenLabsVoiceDesignRequestSchema = z.object({
2327
+ voice_description: z.string().min(20).max(1000),
2328
+ model_id: z.enum(["eleven_multilingual_ttv_v2", "eleven_ttv_v3"]).optional(),
2329
+ text: z.string().min(100).max(1000).nullable().optional(),
2330
+ auto_generate_text: z.boolean().optional(),
2331
+ loudness: z.number().min(-1.0).max(1.0).optional(),
2332
+ seed: z.number().int().min(0).max(2147483647).nullable().optional(),
2333
+ guidance_scale: z.number().min(0.0).max(100.0).optional(),
2334
+ stream_previews: z.boolean().optional(),
2335
+ should_enhance: z.boolean().optional(),
2336
+ remixing_session_id: z.string().nullable().optional(),
2337
+ remixing_session_iteration_id: z.string().nullable().optional(),
2338
+ quality: z.number().min(-1.0).max(1.0).nullable().optional(),
2339
+ reference_audio_base64: z.string().nullable().optional(),
2340
+ prompt_strength: z.number().min(0.0).max(1.0).nullable().optional(),
2341
+ output_format: z.string().optional(),
2342
+ });
2343
+ // ---------------------------------------------------------------------------
2344
+ // POST /v1/text-to-voice/:voice_id/remix
2345
+ // ---------------------------------------------------------------------------
2346
+ export const ElevenLabsVoiceRemixRequestSchema = z.object({
2347
+ voice_description: z.string().min(5).max(1000),
2348
+ text: z.string().min(100).max(1000).nullable().optional(),
2349
+ auto_generate_text: z.boolean().optional(),
2350
+ loudness: z.number().min(-1.0).max(1.0).optional(),
2351
+ seed: z.number().int().min(0).max(2147483647).nullable().optional(),
2352
+ guidance_scale: z.number().min(0.0).max(100.0).optional(),
2353
+ stream_previews: z.boolean().optional(),
2354
+ remixing_session_id: z.string().nullable().optional(),
2355
+ remixing_session_iteration_id: z.string().nullable().optional(),
2356
+ prompt_strength: z.number().min(0.0).max(1.0).nullable().optional(),
2357
+ output_format: z.string().optional(),
2358
+ });
2359
+ // ---------------------------------------------------------------------------
2360
+ // GET /v1/history
2361
+ // ---------------------------------------------------------------------------
2362
+ export const ElevenLabsHistoryListRequestSchema = z.object({
2363
+ page_size: z.number().int().max(1000).optional(),
2364
+ start_after_history_item_id: z.string().nullable().optional(),
2365
+ voice_id: z.string().nullable().optional(),
2366
+ model_id: z.string().nullable().optional(),
2367
+ date_before_unix: z.number().int().nullable().optional(),
2368
+ date_after_unix: z.number().int().nullable().optional(),
2369
+ sort_direction: z.enum(["asc", "desc"]).nullable().optional(),
2370
+ search: z.string().nullable().optional(),
2371
+ source: z.enum(["TTS", "STS", "Flows"]).nullable().optional(),
2372
+ });
2373
+ // ---------------------------------------------------------------------------
2374
+ // POST /v1/history/download
2375
+ // ---------------------------------------------------------------------------
2376
+ export const ElevenLabsHistoryDownloadRequestSchema = z.object({
2377
+ history_item_ids: z.array(z.string()),
2378
+ output_format: z.string().nullable().optional(),
2379
+ });
2380
+ // ---------------------------------------------------------------------------
2381
+ // GET /v1/dubbing
2382
+ // ---------------------------------------------------------------------------
2383
+ export const ElevenLabsListDubbingRequestSchema = z.object({
2384
+ cursor: z.string().nullable().optional(),
2385
+ page_size: z.number().int().min(1).max(200).optional(),
2386
+ dubbing_status: z.enum(["dubbing", "dubbed", "failed"]).optional(),
2387
+ dubbing_statuses: z
2388
+ .array(z.enum(["queued", "preparing", "dubbing", "dubbed", "failed"]))
2389
+ .nullable()
2390
+ .optional(),
2391
+ dubbing_models: z
2392
+ .array(z.enum(["dubbing_v1", "dubbing_v2"]))
2393
+ .nullable()
2394
+ .optional(),
2395
+ target_language_codes: z.array(z.string()).nullable().optional(),
2396
+ creation_sources: z
2397
+ .array(z.enum(["flow_node", "dubbing_ui", "dubbing_api"]))
2398
+ .nullable()
2399
+ .optional(),
2400
+ filter_by_creator: z.enum(["personal", "others", "all"]).optional(),
2401
+ order_by: z.enum(["created_at", "name"]).optional(),
2402
+ order_direction: z.enum(["DESCENDING", "ASCENDING"]).optional(),
2403
+ });
2404
+ // ---------------------------------------------------------------------------
2405
+ // POST /v1/dubbing
2406
+ // ---------------------------------------------------------------------------
2407
+ export const ElevenLabsCreateDubbingRequestSchema = z.object({
2408
+ file: z.custom().optional(),
2409
+ csv_file: z.custom().optional(),
2410
+ foreground_audio_file: z.custom().optional(),
2411
+ background_audio_file: z.custom().optional(),
2412
+ name: z.string().nullable().optional(),
2413
+ source_url: z.string().nullable().optional(),
2414
+ source_lang: z.string().optional(),
2415
+ target_lang: z.string().nullable().optional(),
2416
+ target_accent: z.string().nullable().optional(),
2417
+ num_speakers: z.number().int().optional(),
2418
+ watermark: z.boolean().optional(),
2419
+ start_time: z.number().int().nullable().optional(),
2420
+ end_time: z.number().int().nullable().optional(),
2421
+ highest_resolution: z.boolean().optional(),
2422
+ drop_background_audio: z.boolean().optional(),
2423
+ use_profanity_filter: z.boolean().nullable().optional(),
2424
+ dubbing_studio: z.boolean().optional(),
2425
+ disable_voice_cloning: z.boolean().optional(),
2426
+ mode: z.string().optional(),
2427
+ csv_fps: z.number().nullable().optional(),
2428
+ });
2429
+ // ===========================================================================
2430
+ // Studio / Projects
2431
+ // ===========================================================================
2432
+ const StudioPronunciationDictionaryLocatorSchema = z.object({
2433
+ pronunciation_dictionary_id: z.string(),
2434
+ version_id: z.string().nullable().optional(),
2435
+ });
2436
+ const StudioApplyTextNormalizationSchema = z.enum([
2437
+ "auto",
2438
+ "on",
2439
+ "off",
2440
+ "apply_english",
2441
+ ]);
2442
+ const StudioQualityPresetSchema = z.enum([
2443
+ "standard",
2444
+ "high",
2445
+ "ultra",
2446
+ "ultra_lossless",
2447
+ ]);
2448
+ // ---------------------------------------------------------------------------
2449
+ // POST /v1/studio/podcasts
2450
+ // ---------------------------------------------------------------------------
2451
+ const StudioPodcastSourceSchema = z.union([
2452
+ z.object({ type: z.literal("text"), text: z.string() }),
2453
+ z.object({ type: z.literal("url"), url: z.string() }),
2454
+ ]);
2455
+ export const ElevenLabsStudioCreatePodcastRequestSchema = z.object({
2456
+ model_id: z.string(),
2457
+ mode: z.union([
2458
+ z.object({
2459
+ type: z.literal("conversation"),
2460
+ conversation: z.object({
2461
+ host_voice_id: z.string(),
2462
+ guest_voice_id: z.string(),
2463
+ }),
2464
+ }),
2465
+ z.object({
2466
+ type: z.literal("bulletin"),
2467
+ bulletin: z.object({ host_voice_id: z.string() }),
2468
+ }),
2469
+ ]),
2470
+ source: z.union([
2471
+ StudioPodcastSourceSchema,
2472
+ z.array(StudioPodcastSourceSchema),
2473
+ ]),
2474
+ quality_preset: StudioQualityPresetSchema.optional(),
2475
+ duration_scale: z.enum(["short", "default", "long"]).optional(),
2476
+ language: z.string().length(2).nullable().optional(),
2477
+ intro: z.string().max(1500).nullable().optional(),
2478
+ outro: z.string().max(1500).nullable().optional(),
2479
+ instructions_prompt: z.string().max(3000).nullable().optional(),
2480
+ highlights: z.array(z.string().min(10).max(70)).nullable().optional(),
2481
+ callback_url: z.string().nullable().optional(),
2482
+ apply_text_normalization: StudioApplyTextNormalizationSchema.nullable().optional(),
2483
+ });
2484
+ // ---------------------------------------------------------------------------
2485
+ // GET /v1/studio/projects/{project_id}
2486
+ // ---------------------------------------------------------------------------
2487
+ export const ElevenLabsStudioGetProjectRequestSchema = z.object({
2488
+ share_id: z.string().nullable().optional(),
2489
+ });
2490
+ // ---------------------------------------------------------------------------
2491
+ // POST /v1/studio/projects (multipart/form-data)
2492
+ // ---------------------------------------------------------------------------
2493
+ export const ElevenLabsStudioCreateProjectRequestSchema = z.object({
2494
+ name: z.string(),
2495
+ default_title_voice_id: z.string().nullable().optional(),
2496
+ default_paragraph_voice_id: z.string().nullable().optional(),
2497
+ default_model_id: z.string().nullable().optional(),
2498
+ from_url: z.string().nullable().optional(),
2499
+ from_document: z.custom().nullable().optional(),
2500
+ from_content_json: z.string().optional(),
2501
+ quality_preset: StudioQualityPresetSchema.optional(),
2502
+ title: z.string().nullable().optional(),
2503
+ author: z.string().nullable().optional(),
2504
+ description: z.string().nullable().optional(),
2505
+ genres: z.array(z.string()).optional(),
2506
+ target_audience: z
2507
+ .enum(["children", "young adult", "adult", "all ages"])
2508
+ .nullable()
2509
+ .optional(),
2510
+ language: z.string().length(2).nullable().optional(),
2511
+ content_type: z.string().nullable().optional(),
2512
+ original_publication_date: z.string().nullable().optional(),
2513
+ mature_content: z.boolean().nullable().optional(),
2514
+ isbn_number: z.string().nullable().optional(),
2515
+ acx_volume_normalization: z.boolean().optional(),
2516
+ volume_normalization: z.boolean().optional(),
2517
+ pronunciation_dictionary_locators: z
2518
+ .array(StudioPronunciationDictionaryLocatorSchema)
2519
+ .optional(),
2520
+ callback_url: z.string().nullable().optional(),
2521
+ fiction: z.enum(["fiction", "non-fiction"]).nullable().optional(),
2522
+ apply_text_normalization: StudioApplyTextNormalizationSchema.nullable().optional(),
2523
+ auto_convert: z.boolean().optional(),
2524
+ auto_assign_voices: z.boolean().nullable().optional(),
2525
+ source_type: z
2526
+ .enum(["blank", "book", "article", "genfm", "video", "screenplay"])
2527
+ .nullable()
2528
+ .optional(),
2529
+ voice_settings: z.array(z.record(z.string(), z.unknown())).optional(),
2530
+ create_publishing_read: z.boolean().nullable().optional(),
2531
+ });
2532
+ // ---------------------------------------------------------------------------
2533
+ // POST /v1/studio/projects/{project_id}
2534
+ // ---------------------------------------------------------------------------
2535
+ export const ElevenLabsStudioUpdateProjectRequestSchema = z.object({
2536
+ name: z.string(),
2537
+ default_title_voice_id: z.string(),
2538
+ default_paragraph_voice_id: z.string(),
2539
+ title: z.string().nullable().optional(),
2540
+ author: z.string().nullable().optional(),
2541
+ isbn_number: z.string().nullable().optional(),
2542
+ volume_normalization: z.boolean().optional(),
2543
+ });
2544
+ // ---------------------------------------------------------------------------
2545
+ // POST /v1/studio/projects/{project_id}/content (multipart/form-data)
2546
+ // ---------------------------------------------------------------------------
2547
+ export const ElevenLabsStudioUpdateProjectContentRequestSchema = z.object({
2548
+ from_url: z.string().nullable().optional(),
2549
+ from_document: z.custom().nullable().optional(),
2550
+ from_content_json: z.string().optional(),
2551
+ auto_convert: z.boolean().optional(),
2552
+ });
2553
+ // ---------------------------------------------------------------------------
2554
+ // POST /v1/studio/projects/{project_id}/pronunciation-dictionaries
2555
+ // ---------------------------------------------------------------------------
2556
+ export const ElevenLabsStudioCreatePronunciationDictionariesRequestSchema = z.object({
2557
+ pronunciation_dictionary_locators: z.array(StudioPronunciationDictionaryLocatorSchema),
2558
+ invalidate_affected_text: z.boolean().optional(),
2559
+ });
2560
+ // ---------------------------------------------------------------------------
2561
+ // POST /v1/studio/projects/{project_id}/snapshots/{snapshot_id}/stream
2562
+ // POST .../chapters/{chapter_id}/snapshots/{chapter_snapshot_id}/stream
2563
+ // ---------------------------------------------------------------------------
2564
+ export const ElevenLabsStudioStreamAudioRequestSchema = z.object({
2565
+ convert_to_mpeg: z.boolean().optional(),
2566
+ });
2567
+ // ---------------------------------------------------------------------------
2568
+ // POST /v1/studio/projects/{project_id}/chapters
2569
+ // ---------------------------------------------------------------------------
2570
+ export const ElevenLabsStudioCreateChapterRequestSchema = z.object({
2571
+ name: z.string(),
2572
+ from_url: z.string().nullable().optional(),
2573
+ });
2574
+ // ---------------------------------------------------------------------------
2575
+ // POST /v1/studio/projects/{project_id}/chapters/{chapter_id}
2576
+ // ---------------------------------------------------------------------------
2577
+ const StudioChapterContentNodeSchema = z.object({
2578
+ type: z.string(),
2579
+ text: z.string(),
2580
+ voice_id: z.string(),
2581
+ });
2582
+ const StudioChapterContentBlockSchema = z.object({
2583
+ sub_type: z.enum(["p", "h1", "h2", "h3"]).nullable().optional(),
2584
+ nodes: z.array(StudioChapterContentNodeSchema),
2585
+ block_id: z.string().nullable().optional(),
2586
+ });
2587
+ export const ElevenLabsStudioUpdateChapterRequestSchema = z.object({
2588
+ name: z.string().nullable().optional(),
2589
+ content: z
2590
+ .object({ blocks: z.array(StudioChapterContentBlockSchema) })
2591
+ .nullable()
2592
+ .optional(),
2593
+ });
2594
+ // ---------------------------------------------------------------------------
2595
+ // Pronunciation Dictionaries
2596
+ // ---------------------------------------------------------------------------
2597
+ export const ElevenLabsListPronunciationDictionariesRequestSchema = z.object({
2598
+ cursor: z.string().optional(),
2599
+ page_size: z.number().int().min(1).max(100).optional(),
2600
+ sort: z.enum(["creation_time_unix", "name"]).optional(),
2601
+ sort_direction: z.string().optional(),
2602
+ });
2603
+ export const ElevenLabsAddPronunciationDictionaryFromFileRequestSchema = z.object({
2604
+ name: z.string(),
2605
+ file: z.any().optional(),
2606
+ description: z.string().optional(),
2607
+ workspace_access: z
2608
+ .enum(["admin", "editor", "commenter", "viewer"])
2609
+ .optional(),
2610
+ });
2611
+ export const ElevenLabsPronunciationDictionaryAliasRuleRequestSchema = z.object({
2612
+ string_to_replace: z.string(),
2613
+ case_sensitive: z.boolean().optional(),
2614
+ word_boundaries: z.boolean().optional(),
2615
+ type: z.literal("alias"),
2616
+ alias: z.string(),
2617
+ });
2618
+ export const ElevenLabsPronunciationDictionaryPhonemeRuleRequestSchema = z.object({
2619
+ string_to_replace: z.string(),
2620
+ case_sensitive: z.boolean().optional(),
2621
+ word_boundaries: z.boolean().optional(),
2622
+ type: z.literal("phoneme"),
2623
+ phoneme: z.string(),
2624
+ alphabet: z.string(),
2625
+ });
2626
+ export const ElevenLabsPronunciationDictionaryRuleRequestSchema = z.union([
2627
+ ElevenLabsPronunciationDictionaryAliasRuleRequestSchema,
2628
+ ElevenLabsPronunciationDictionaryPhonemeRuleRequestSchema,
2629
+ ]);
2630
+ export const ElevenLabsAddPronunciationDictionaryFromRulesRequestSchema = z.object({
2631
+ name: z.string(),
2632
+ description: z.string().optional(),
2633
+ workspace_access: z
2634
+ .enum(["admin", "editor", "commenter", "viewer"])
2635
+ .optional(),
2636
+ rules: z.array(ElevenLabsPronunciationDictionaryRuleRequestSchema),
2637
+ });
2638
+ export const ElevenLabsGetPronunciationDictionaryRequestSchema = z.object({});
2639
+ export const ElevenLabsUpdatePronunciationDictionaryRequestSchema = z.object({
2640
+ name: z.string().optional(),
2641
+ archived: z.boolean().optional(),
2642
+ });
2643
+ export const ElevenLabsAddPronunciationDictionaryRulesRequestSchema = z.object({
2644
+ rules: z.array(ElevenLabsPronunciationDictionaryRuleRequestSchema),
2645
+ });
2646
+ export const ElevenLabsRemovePronunciationDictionaryRulesRequestSchema = z.object({
2647
+ rule_strings: z.array(z.string()),
2648
+ });
2649
+ export const ElevenLabsSetPronunciationDictionaryRulesRequestSchema = z.object({
2650
+ rules: z.array(ElevenLabsPronunciationDictionaryRuleRequestSchema),
2651
+ });
2652
+ export const ElevenLabsDownloadPronunciationDictionaryRequestSchema = z.object({});
2653
+ // ---------------------------------------------------------------------------
2654
+ // Speech Engine
2655
+ // ---------------------------------------------------------------------------
2656
+ const ElevenLabsSpeechEngineHeaderValueSchema = z.union([
2657
+ z.string(),
2658
+ z.object({ secret_id: z.string() }),
2659
+ z.object({ variable_name: z.string() }),
2660
+ ]);
2661
+ const ElevenLabsSpeechEngineConfigSchema = z.object({
2662
+ ws_url: z.string(),
2663
+ request_headers: z
2664
+ .record(z.string(), ElevenLabsSpeechEngineHeaderValueSchema)
2665
+ .optional(),
2666
+ });
2667
+ const ElevenLabsSpeechEngineObjectConfigSchema = z.record(z.string(), z.unknown());
2668
+ // ---------------------------------------------------------------------------
2669
+ // GET /v1/speech-engine
2670
+ // ---------------------------------------------------------------------------
2671
+ export const ElevenLabsListSpeechEnginesRequestSchema = z.object({
2672
+ page_size: z.number().int().max(100).optional(),
2673
+ search: z.string().nullable().optional(),
2674
+ sort_direction: z.enum(["asc", "desc"]).optional(),
2675
+ sort_by: z
2676
+ .enum(["name", "created_at", "call_count_7d"])
2677
+ .nullable()
2678
+ .optional(),
2679
+ cursor: z.string().nullable().optional(),
2680
+ });
2681
+ // ---------------------------------------------------------------------------
2682
+ // POST /v1/speech-engine
2683
+ // ---------------------------------------------------------------------------
2684
+ export const ElevenLabsCreateSpeechEngineRequestSchema = z.object({
2685
+ name: z.string().optional(),
2686
+ speech_engine: ElevenLabsSpeechEngineConfigSchema,
2687
+ asr: ElevenLabsSpeechEngineObjectConfigSchema.optional(),
2688
+ tts: ElevenLabsSpeechEngineObjectConfigSchema.optional(),
2689
+ turn: ElevenLabsSpeechEngineObjectConfigSchema.optional(),
2690
+ conversation: ElevenLabsSpeechEngineObjectConfigSchema.optional(),
2691
+ privacy: ElevenLabsSpeechEngineObjectConfigSchema.optional(),
2692
+ call_limits: ElevenLabsSpeechEngineObjectConfigSchema.optional(),
2693
+ language: z.string().optional(),
2694
+ tags: z.array(z.string()).optional(),
2695
+ overrides: ElevenLabsSpeechEngineObjectConfigSchema.optional(),
2696
+ });
2697
+ // ---------------------------------------------------------------------------
2698
+ // PATCH /v1/speech-engine/{speechEngineId}
2699
+ // ---------------------------------------------------------------------------
2700
+ export const ElevenLabsUpdateSpeechEngineRequestSchema = z.object({
2701
+ name: z.string().nullable().optional(),
2702
+ speech_engine: ElevenLabsSpeechEngineConfigSchema.nullable().optional(),
2703
+ asr: ElevenLabsSpeechEngineObjectConfigSchema.nullable().optional(),
2704
+ tts: ElevenLabsSpeechEngineObjectConfigSchema.nullable().optional(),
2705
+ turn: ElevenLabsSpeechEngineObjectConfigSchema.nullable().optional(),
2706
+ conversation: ElevenLabsSpeechEngineObjectConfigSchema.nullable().optional(),
2707
+ privacy: ElevenLabsSpeechEngineObjectConfigSchema.nullable().optional(),
2708
+ call_limits: ElevenLabsSpeechEngineObjectConfigSchema.nullable().optional(),
2709
+ language: z.string().nullable().optional(),
2710
+ tags: z.array(z.string()).nullable().optional(),
2711
+ overrides: ElevenLabsSpeechEngineObjectConfigSchema.nullable().optional(),
2712
+ });
2713
+ // ---------------------------------------------------------------------------
2714
+ // Productions / Orders shared schemas
2715
+ // ---------------------------------------------------------------------------
2716
+ const ElevenLabsOrderRequestStateSchema = z.enum([
2717
+ "open",
2718
+ "submitted",
2719
+ "paid",
2720
+ "accepted",
2721
+ "rejected",
2722
+ "done",
2723
+ ]);
2724
+ const ElevenLabsCueOptionsRequestSchema = z.object({
2725
+ min_duration_ms: z.number().int().max(2000).optional(),
2726
+ max_duration_ms: z.number().int().min(4000).optional(),
2727
+ max_lines_per_cue: z.number().int().min(1).max(3).optional(),
2728
+ max_chars_per_line: z.number().int().min(16).max(50).optional(),
2729
+ max_chars_per_s: z.number().int().min(15).max(30).nullable().optional(),
2730
+ min_gap_between_cues_frames: z
2731
+ .number()
2732
+ .int()
2733
+ .min(0)
2734
+ .max(6)
2735
+ .nullable()
2736
+ .optional(),
2737
+ });
2738
+ const ElevenLabsDubOrderItemRequestSchema = z.object({
2739
+ kind: z.literal("dub").optional(),
2740
+ media_id: z.string(),
2741
+ source_language: z.string(),
2742
+ destination_languages: z.array(z.string()),
2743
+ include_captions: z.boolean(),
2744
+ include_source_captions: z.boolean(),
2745
+ instructions: z.string().nullable().optional(),
2746
+ captions_sdh: z.boolean().nullable().optional(),
2747
+ });
2748
+ const ElevenLabsSubtitleOrderItemRequestSchema = z.object({
2749
+ kind: z.literal("subtitles").optional(),
2750
+ media_ids: z.array(z.string()),
2751
+ source_language: z.string(),
2752
+ destination_languages: z.array(z.string()),
2753
+ cue_options: ElevenLabsCueOptionsRequestSchema.optional(),
2754
+ sdh: z.boolean().optional(),
2755
+ instructions: z.string().nullable().optional(),
2756
+ });
2757
+ const ElevenLabsOrderItemRequestSchema = z.union([
2758
+ ElevenLabsDubOrderItemRequestSchema,
2759
+ ElevenLabsSubtitleOrderItemRequestSchema,
2760
+ ]);
2761
+ // ---------------------------------------------------------------------------
2762
+ // GET /v1/productions/orders
2763
+ // ---------------------------------------------------------------------------
2764
+ export const ElevenLabsListOrdersRequestSchema = z.object({
2765
+ page_size: z.number().int().max(100).optional(),
2766
+ offset: z.number().int().min(0).optional(),
2767
+ status: z.array(ElevenLabsOrderRequestStateSchema).nullable().optional(),
2768
+ start_date: z.string().nullable().optional(),
2769
+ end_date: z.string().nullable().optional(),
2770
+ });
2771
+ // ---------------------------------------------------------------------------
2772
+ // POST /v1/productions/orders
2773
+ // ---------------------------------------------------------------------------
2774
+ export const ElevenLabsCreateOrderRequestSchema = z.object({
2775
+ sandbox: z.boolean().optional(),
2776
+ });
2777
+ // ---------------------------------------------------------------------------
2778
+ // PATCH /v1/productions/orders/{orderId}
2779
+ // ---------------------------------------------------------------------------
2780
+ export const ElevenLabsUpdateOrderRequestSchema = z.object({
2781
+ name: z.string().min(1).max(120),
2782
+ });
2783
+ // ---------------------------------------------------------------------------
2784
+ // POST /v1/productions/orders/{orderId}/items
2785
+ // ---------------------------------------------------------------------------
2786
+ export const ElevenLabsUpsertOrderItemRequestSchema = z.object({
2787
+ item: ElevenLabsOrderItemRequestSchema,
2788
+ item_id: z.string().nullable().optional(),
2789
+ });
2790
+ // ---------------------------------------------------------------------------
2791
+ // POST /v1/productions/orders/{orderId}/media
2792
+ // ---------------------------------------------------------------------------
2793
+ export const ElevenLabsRegisterOrderMediaRequestSchema = z.object({
2794
+ declared_language: z.string(),
2795
+ media: z.custom((value) => value instanceof Blob).optional(),
2796
+ media_url: z.string().nullable().optional(),
2797
+ media_url_filename: z.string().nullable().optional(),
2798
+ media_url_content_type: z.string().nullable().optional(),
2799
+ });
287
2800
  //# sourceMappingURL=zod.js.map