@picsart/ai-sdk 6.7.0 → 6.9.0

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/index.d.ts CHANGED
@@ -191,20 +191,47 @@ type ModelInputById = {
191
191
  audioUrl: string;
192
192
  voiceId?: string;
193
193
  removeBackgroundNoise?: boolean;
194
+ stability?: number;
195
+ similarityBoost?: number;
196
+ styleExaggeration?: number;
197
+ speed?: number;
194
198
  };
195
199
  "eleven-multilingual-v2": {
196
200
  prompt: string;
197
201
  voiceId?: string;
202
+ stability?: number;
203
+ similarityBoost?: number;
204
+ styleExaggeration?: number;
205
+ speed?: number;
206
+ useSpeakerBoost?: boolean;
198
207
  };
199
208
  "eleven-sts-v2": {
200
209
  audioUrl: string;
201
210
  voiceId?: string;
202
211
  removeBackgroundNoise?: boolean;
212
+ stability?: number;
213
+ similarityBoost?: number;
214
+ styleExaggeration?: number;
215
+ speed?: number;
216
+ };
217
+ "eleven-text-to-dialogue": {
218
+ dialogue: Array<{
219
+ voiceId: string;
220
+ text: string;
221
+ }>;
222
+ stability?: 0 | 0.5 | 1;
223
+ language?: string;
224
+ seed?: number;
203
225
  };
204
226
  "eleven-v3": {
205
227
  language?: string;
206
228
  prompt: string;
207
229
  voiceId?: string;
230
+ stability?: number;
231
+ similarityBoost?: number;
232
+ styleExaggeration?: number;
233
+ speed?: number;
234
+ useSpeakerBoost?: boolean;
208
235
  };
209
236
  "eleven-voice-create": {
210
237
  prompt: string;
@@ -852,6 +879,28 @@ type ModelInputById = {
852
879
  startTime?: number;
853
880
  videoUrl: string;
854
881
  };
882
+ "ltx-v2.5-fast": {
883
+ prompt: string;
884
+ duration?: 6 | 8 | 10 | 12 | 14 | 16 | 18 | 20;
885
+ resolution?: "720p" | "1080p" | "1440p" | "2160p";
886
+ aspectRatio?: "16:9" | "9:16";
887
+ fps?: 24 | 25 | 48 | 50;
888
+ cameraMotion?: "none" | "static" | "dolly_in" | "dolly_out" | "dolly_left" | "dolly_right" | "jib_up" | "jib_down" | "focus_shift";
889
+ generateAudio?: boolean;
890
+ startFrame?: string;
891
+ endFrame?: string;
892
+ };
893
+ "ltx-v2.5-pro": {
894
+ prompt: string;
895
+ duration?: 6 | 8 | 10;
896
+ resolution?: "720p" | "1080p";
897
+ aspectRatio?: "16:9" | "9:16";
898
+ fps?: 24 | 25 | 50;
899
+ cameraMotion?: "none" | "static" | "dolly_in" | "dolly_out" | "dolly_left" | "dolly_right" | "jib_up" | "jib_down" | "focus_shift";
900
+ generateAudio?: boolean;
901
+ startFrame?: string;
902
+ endFrame?: string;
903
+ };
855
904
  "luma-ray-2": {
856
905
  prompt: string;
857
906
  aspectRatio?: "16:9" | "9:16" | "1:1" | "4:3" | "3:4" | "21:9" | "9:21";
@@ -2977,6 +3026,7 @@ declare const Models: {
2977
3026
  readonly ElevenMultilingualStsV2: "eleven-multilingual-sts-v2";
2978
3027
  readonly ElevenMultilingualV2: "eleven-multilingual-v2";
2979
3028
  readonly ElevenStsV2: "eleven-sts-v2";
3029
+ readonly ElevenTextToDialogue: "eleven-text-to-dialogue";
2980
3030
  readonly ElevenV3: "eleven-v3";
2981
3031
  readonly ElevenVoiceCreate: "eleven-voice-create";
2982
3032
  readonly ElevenVoiceDesignV2: "eleven-voice-design-v2";
@@ -3073,6 +3123,8 @@ declare const Models: {
3073
3123
  readonly LtxV23Fast: "ltx-v2.3-fast";
3074
3124
  readonly LtxV23Pro: "ltx-v2.3-pro";
3075
3125
  readonly LtxV23Retake: "ltx-v2.3-retake";
3126
+ readonly LtxV25Fast: "ltx-v2.5-fast";
3127
+ readonly LtxV25Pro: "ltx-v2.5-pro";
3076
3128
  readonly LumaRay2: "luma-ray-2";
3077
3129
  readonly LumaRay2ReframeVideo: "luma-ray-2-reframe-video";
3078
3130
  readonly LumaRay32: "luma-ray-3.2";
package/index.js CHANGED
@@ -2111,6 +2111,30 @@ var LTX_RESOLUTIONS = ["1080p", "1440p", "2160p"];
2111
2111
  var LTX_23_AR = ["16:9", "9:16"];
2112
2112
  var LTX_23_FPS = [24, 25, 48, 50];
2113
2113
  var LTX_PROMPT_MAX = 5e3;
2114
+ var LTX_25_AR = ["16:9", "9:16"];
2115
+ var LTX_25_PRO_RESOLUTIONS = ["720p", "1080p"];
2116
+ var LTX_25_FAST_RESOLUTIONS = ["720p", "1080p", "1440p", "2160p"];
2117
+ var LTX_25_PRO_FPS = [24, 25, 50];
2118
+ var LTX_25_FAST_FPS = [24, 25, 48, 50];
2119
+ var LTX_25_CAMERA_MOTIONS = [
2120
+ { id: "none", label: "None" },
2121
+ { id: "static", label: "Static" },
2122
+ { id: "dolly_in", label: "Dolly In" },
2123
+ { id: "dolly_out", label: "Dolly Out" },
2124
+ { id: "dolly_left", label: "Dolly Left" },
2125
+ { id: "dolly_right", label: "Dolly Right" },
2126
+ { id: "jib_up", label: "Jib Up" },
2127
+ { id: "jib_down", label: "Jib Down" },
2128
+ { id: "focus_shift", label: "Focus Shift" }
2129
+ ];
2130
+ var LTX_25_FAST_LONG = "Videos longer than 10s render at 720p/1080p and 24 or 25 fps.";
2131
+ var ltx25FastLongConstraints = [12, 14, 16, 18, 20].map((d) => ({
2132
+ when: { duration: { is: d } },
2133
+ then: {
2134
+ resolution: { allowed: ["720p", "1080p"], reason: LTX_25_FAST_LONG },
2135
+ fps: { allowed: [24, 25], reason: LTX_25_FAST_LONG }
2136
+ }
2137
+ }));
2114
2138
  var FAST_LONG = "Videos longer than 10s render at 1080p / 25 fps.";
2115
2139
  var ltxFastLongConstraints = [12, 14, 16, 18, 20].map((d) => ({
2116
2140
  when: { duration: { is: d } },
@@ -2387,6 +2411,74 @@ var { MODELS: MODELS2 } = defineModels("ltx", [
2387
2411
  },
2388
2412
  ...params.videoInput("Source Video")
2389
2413
  }
2414
+ },
2415
+ // ── LTX 2.5 ──────────────────────────────────────────────────────
2416
+ // One entry per tier: text-to-video on `workflow`, image-to-video on
2417
+ // `editWorkflow`. A start or end frame is what routes a call to the image
2418
+ // side (see `resolvePayloadBuild`), and `end_image_url` — a transition from
2419
+ // the start frame to the end one — exists only there.
2420
+ {
2421
+ id: "ltx-v2.5-pro",
2422
+ name: "LTX 2.5 Pro",
2423
+ modelId: "fal-ai-ltx-2.5-pro",
2424
+ addedAt: "2026-09-23",
2425
+ workflow: "lightricks/ltx-2.5/text-to-video/pro",
2426
+ editWorkflow: "lightricks/ltx-2.5/image-to-video/pro",
2427
+ estimatedTime: 75,
2428
+ editEstimatedTime: 78,
2429
+ mode: "video",
2430
+ inputType: "t2v",
2431
+ description: "Quality-optimized 2.5 with synchronized native audio in a single pass \u2014 720p/1080p, 6-10s, with camera motion control.",
2432
+ features: [feat("Image Input", "input"), feat("Start Frame", "frame"), feat("End Frame", "frame"), feat("Audio", "audio"), feat("Camera Motion", "characteristic"), feat("6/8/10 sec", "duration")],
2433
+ paramConfig: {
2434
+ ...params.prompt({ maxLength: LTX_PROMPT_MAX }),
2435
+ ...params.duration(PRO_DURATIONS, 6),
2436
+ ...params.resolution(LTX_25_PRO_RESOLUTIONS, "1080p"),
2437
+ ...params.aspectRatio(LTX_25_AR),
2438
+ ...p.enum("fps", LTX_25_PRO_FPS, 25, { label: "FPS" }),
2439
+ ...p.enum("cameraMotion", LTX_25_CAMERA_MOTIONS, "none", { label: "Camera Motion" }),
2440
+ ...params.generateAudio(),
2441
+ ...params.startFrame("Start Frame"),
2442
+ ...params.endFrame()
2443
+ },
2444
+ constraints: [
2445
+ // end_image_url exists only on the I2V route, which a start frame triggers.
2446
+ { when: { startFrame: { exists: false } }, then: {
2447
+ endFrame: { disabled: true, reason: "An end frame requires a start image." }
2448
+ } }
2449
+ ]
2450
+ },
2451
+ {
2452
+ id: "ltx-v2.5-fast",
2453
+ name: "LTX 2.5 Fast",
2454
+ modelId: "fal-ai-ltx-2.5-fast",
2455
+ addedAt: "2026-09-23",
2456
+ workflow: "lightricks/ltx-2.5/text-to-video/fast",
2457
+ editWorkflow: "lightricks/ltx-2.5/image-to-video/fast",
2458
+ estimatedTime: 38,
2459
+ editEstimatedTime: 40,
2460
+ mode: "video",
2461
+ inputType: "t2v",
2462
+ description: "Speed-optimized 2.5 with synchronized native audio \u2014 up to 4K, up to 20s, with camera motion control.",
2463
+ features: [feat("Image Input", "input"), feat("Start Frame", "frame"), feat("End Frame", "frame"), feat("Fast", "duration"), feat("Up to 20s", "duration"), feat("Audio", "audio"), feat("4K", "resolution"), feat("Camera Motion", "characteristic")],
2464
+ paramConfig: {
2465
+ ...params.prompt({ maxLength: LTX_PROMPT_MAX }),
2466
+ ...params.duration(FAST_DURATIONS, 6),
2467
+ ...params.resolution(LTX_25_FAST_RESOLUTIONS, "1080p"),
2468
+ ...params.aspectRatio(LTX_25_AR),
2469
+ ...p.enum("fps", LTX_25_FAST_FPS, 25, { label: "FPS" }),
2470
+ ...p.enum("cameraMotion", LTX_25_CAMERA_MOTIONS, "none", { label: "Camera Motion" }),
2471
+ ...params.generateAudio(),
2472
+ ...params.startFrame("Start Frame"),
2473
+ ...params.endFrame()
2474
+ },
2475
+ constraints: [
2476
+ ...ltx25FastLongConstraints,
2477
+ // end_image_url exists only on the I2V route, which a start frame triggers.
2478
+ { when: { startFrame: { exists: false } }, then: {
2479
+ endFrame: { disabled: true, reason: "An end frame requires a start image." }
2480
+ } }
2481
+ ]
2390
2482
  }
2391
2483
  ]);
2392
2484
 
@@ -6344,23 +6436,12 @@ registerEditPayloads(MODELS22, {
6344
6436
  });
6345
6437
 
6346
6438
  // src/vendors/catalog/elevenlabs.ts
6347
- var buildElevenLabsTTSPayload = (modelId) => (ctx) => ({
6348
- text: ctx.prompt,
6349
- voice_id: ctx.voiceId ?? DEFAULT_VOICE_ID,
6350
- model_id: modelId,
6351
- ...ctx.language ? { language_code: ctx.language } : {}
6352
- });
6439
+ var VOICE_CATALOG = { workflow: "elevenlabs/v1/catalog/voices" };
6353
6440
  var buildElevenLabsSFXPayload = (modelId) => (ctx) => ({
6354
6441
  text: ctx.prompt,
6355
6442
  duration_seconds: ctx.duration ?? 5,
6356
6443
  model_id: modelId
6357
6444
  });
6358
- var buildElevenLabsSTSPayload = (modelId) => (ctx) => ({
6359
- audio_url: ctx.audioUrl,
6360
- voice_id: ctx.voiceId ?? DEFAULT_VOICE_ID,
6361
- model_id: modelId,
6362
- remove_background_noise: ctx.removeBackgroundNoise ?? false
6363
- });
6364
6445
  var buildElevenLabsAudioIsolationPayload = (ctx) => ({
6365
6446
  audio_url: ctx.audioUrl
6366
6447
  });
@@ -6383,13 +6464,35 @@ var buildElevenLabsVoicePreviewsPayload = (ctx) => ({
6383
6464
  voice_description: ctx.prompt,
6384
6465
  auto_generate_text: true
6385
6466
  });
6467
+ var voiceSettingsParams = (withSpeakerBoost) => ({
6468
+ stability: {
6469
+ label: "Stability",
6470
+ descriptor: { kind: "range", min: 0, max: 1, step: 0.05 }
6471
+ },
6472
+ similarityBoost: {
6473
+ label: "Similarity",
6474
+ descriptor: { kind: "range", min: 0, max: 1, step: 0.05 }
6475
+ },
6476
+ // `style` is taken on GenerationContext by the image models' style *name*,
6477
+ // so the vendor's 0–1 style exaggeration gets a key of its own.
6478
+ styleExaggeration: {
6479
+ label: "Style Exaggeration",
6480
+ descriptor: { kind: "range", min: 0, max: 1, step: 0.05 }
6481
+ },
6482
+ speed: {
6483
+ label: "Speed",
6484
+ descriptor: { kind: "range", min: 0.1, max: 5, step: 0.05 }
6485
+ },
6486
+ ...withSpeakerBoost ? { useSpeakerBoost: { label: "Speaker Boost", descriptor: { kind: "boolean", default: true } } } : {}
6487
+ });
6386
6488
  var ttsParamConfig = (promptMaxLength, withLanguage) => ({
6387
6489
  // language_code is honoured by eleven_v3 only — the vendor documents it as
6388
6490
  // "not supported for multilingual_v2 models" (silently ignored there).
6389
6491
  // No accent param anywhere: no builder ever read it.
6390
6492
  ...withLanguage ? params.language(false) : {},
6391
6493
  ...params.prompt({ maxLength: promptMaxLength }),
6392
- ...params.voiceId([], DEFAULT_VOICE_ID, { catalog: { workflow: "elevenlabs/v1/catalog/voices" } })
6494
+ ...params.voiceId([], DEFAULT_VOICE_ID, { catalog: VOICE_CATALOG }),
6495
+ ...voiceSettingsParams(true)
6393
6496
  });
6394
6497
  var { MODELS: MODELS23 } = defineModels("elevenlabs", [
6395
6498
  // ── TTS ───────────────────────────────────────────────────────────
@@ -6399,7 +6502,6 @@ var { MODELS: MODELS23 } = defineModels("elevenlabs", [
6399
6502
  modelId: "eleven_v3",
6400
6503
  addedAt: "2026-02-06",
6401
6504
  workflow: "elevenlabs/v1/text-to-speech",
6402
- buildPayload: buildElevenLabsTTSPayload("eleven_v3"),
6403
6505
  estimatedTime: 11,
6404
6506
  mode: "audio",
6405
6507
  inputType: "tts",
@@ -6414,7 +6516,6 @@ var { MODELS: MODELS23 } = defineModels("elevenlabs", [
6414
6516
  modelId: "eleven_multilingual_v2",
6415
6517
  addedAt: "2026-02-06",
6416
6518
  workflow: "elevenlabs/v1/text-to-speech",
6417
- buildPayload: buildElevenLabsTTSPayload("eleven_multilingual_v2"),
6418
6519
  estimatedTime: 9,
6419
6520
  mode: "audio",
6420
6521
  inputType: "tts",
@@ -6423,6 +6524,61 @@ var { MODELS: MODELS23 } = defineModels("elevenlabs", [
6423
6524
  features: [feat("Stable", "characteristic"), feat("Professional", "characteristic")],
6424
6525
  paramConfig: ttsParamConfig(1e4, false)
6425
6526
  },
6527
+ // ── Dialogue ──────────────────────────────────────────────────────
6528
+ {
6529
+ // `modelId` is the pricing-catalog key, not the vendor id: the worker
6530
+ // registers the operation as `eleven-text-to-dialogue` while the vendor
6531
+ // model behind it is plain `eleven_v3`.
6532
+ id: "eleven-text-to-dialogue",
6533
+ name: "Eleven Dialogue v3",
6534
+ modelId: "eleven-text-to-dialogue",
6535
+ addedAt: "2026-09-22",
6536
+ workflow: "elevenlabs/v1/text-to-dialogue",
6537
+ estimatedTime: 12,
6538
+ mode: "audio",
6539
+ inputType: "tts",
6540
+ description: "Generate a multi-speaker conversation \u2014 a voice per line \u2014 in one take.",
6541
+ features: [feat("Multi-Speaker", "characteristic"), feat("Creative Control", "characteristic")],
6542
+ paramConfig: {
6543
+ // One entry per spoken line, in order. The vendor publishes no cap on the
6544
+ // number of lines, so none is invented here.
6545
+ //
6546
+ // The 5,000-character limit is the vendor's hard cap and applies to the
6547
+ // dialogue AS A WHOLE, which a per-field maxLength cannot express — a
6548
+ // single line simply cannot exceed it either. Probed against the live
6549
+ // `elevenlabs/v1/text-to-dialogue` worker: 10,000 characters are refused
6550
+ // with "Request text length (10000) exceeds the maximum text length of
6551
+ // 5000 characters", while 2,600 generate fine. The docs' "keep it at or
6552
+ // below 2,000" is guidance, not a limit. Note the far end is slow: a
6553
+ // 5,000-character dialogue outruns the worker's 120s vendor timeout.
6554
+ dialogue: {
6555
+ label: "Dialogue",
6556
+ required: true,
6557
+ descriptor: {
6558
+ kind: "object",
6559
+ array: { min: 1 },
6560
+ fields: {
6561
+ // A plain id, not a catalog-bound picker: catalog loading resolves
6562
+ // top-level params only. Every ElevenLabs model shares one voices
6563
+ // task, so a caller lists them from any TTS model — e.g.
6564
+ // `ai.catalogs.voices('eleven-v3')` — and uses the ids here.
6565
+ voiceId: { label: "Voice ID", kind: "text", placeholder: DEFAULT_VOICE_ID },
6566
+ text: { label: "Line", kind: "text", maxLength: 5e3 }
6567
+ }
6568
+ }
6569
+ },
6570
+ // The vendor takes any 0–1 double and defaults to 0.5; eleven_v3 reads the
6571
+ // three presets below, so the picker offers those instead of a slider
6572
+ // whose in-between values the engine rounds anyway.
6573
+ ...p.enum("stability", [
6574
+ { id: 0, label: "Creative" },
6575
+ { id: 0.5, label: "Natural" },
6576
+ { id: 1, label: "Robust" }
6577
+ ], 0.5, { label: "Stability" }),
6578
+ ...params.language(false),
6579
+ ...params.seed(4294967295)
6580
+ }
6581
+ },
6426
6582
  // ── Sound Effects ─────────────────────────────────────────────────
6427
6583
  {
6428
6584
  id: "elevenlabs-sfx",
@@ -6469,7 +6625,6 @@ var { MODELS: MODELS23 } = defineModels("elevenlabs", [
6469
6625
  modelId: "eleven_english_sts_v2",
6470
6626
  addedAt: "2026-02-15",
6471
6627
  workflow: "elevenlabs/v1/speech-to-speech",
6472
- buildPayload: buildElevenLabsSTSPayload("eleven_english_sts_v2"),
6473
6628
  estimatedTime: 15,
6474
6629
  mode: "audio",
6475
6630
  inputType: "sts",
@@ -6477,8 +6632,9 @@ var { MODELS: MODELS23 } = defineModels("elevenlabs", [
6477
6632
  features: [feat("Voice Changer", "characteristic"), feat("Emotion Preserved", "characteristic")],
6478
6633
  paramConfig: {
6479
6634
  ...params.audioInput("Speech Audio", true),
6480
- ...params.voiceId([], DEFAULT_VOICE_ID, { catalog: { workflow: "elevenlabs/v1/catalog/voices" } }),
6481
- ...p.boolean("removeBackgroundNoise", false, "Remove Background Noise")
6635
+ ...params.voiceId([], DEFAULT_VOICE_ID, { catalog: VOICE_CATALOG }),
6636
+ ...p.boolean("removeBackgroundNoise", false, "Remove Background Noise"),
6637
+ ...voiceSettingsParams(false)
6482
6638
  }
6483
6639
  },
6484
6640
  {
@@ -6487,7 +6643,6 @@ var { MODELS: MODELS23 } = defineModels("elevenlabs", [
6487
6643
  modelId: "eleven_multilingual_sts_v2",
6488
6644
  addedAt: "2026-02-15",
6489
6645
  workflow: "elevenlabs/v1/speech-to-speech",
6490
- buildPayload: buildElevenLabsSTSPayload("eleven_multilingual_sts_v2"),
6491
6646
  estimatedTime: 15,
6492
6647
  mode: "audio",
6493
6648
  inputType: "sts",
@@ -6495,8 +6650,9 @@ var { MODELS: MODELS23 } = defineModels("elevenlabs", [
6495
6650
  features: [feat("Voice Changer", "characteristic"), feat("Multilingual", "characteristic"), feat("29 Languages", "characteristic")],
6496
6651
  paramConfig: {
6497
6652
  ...params.audioInput("Speech Audio", true),
6498
- ...params.voiceId([], DEFAULT_VOICE_ID, { catalog: { workflow: "elevenlabs/v1/catalog/voices" } }),
6499
- ...p.boolean("removeBackgroundNoise", false, "Remove Background Noise")
6653
+ ...params.voiceId([], DEFAULT_VOICE_ID, { catalog: VOICE_CATALOG }),
6654
+ ...p.boolean("removeBackgroundNoise", false, "Remove Background Noise"),
6655
+ ...voiceSettingsParams(false)
6500
6656
  }
6501
6657
  },
6502
6658
  // ── Audio Processing ────────────────────────────────────────────
@@ -6611,8 +6767,47 @@ var buildElevenLabsMusicPayload = (input) => ({
6611
6767
  model_id: "music_v2",
6612
6768
  force_instrumental: input.isInstrumental ?? false
6613
6769
  });
6770
+ var voiceSettings = (input) => {
6771
+ const settings = {
6772
+ ...input.stability != null ? { stability: input.stability } : {},
6773
+ ...input.similarityBoost != null ? { similarity_boost: input.similarityBoost } : {},
6774
+ ...input.styleExaggeration != null ? { style: input.styleExaggeration } : {},
6775
+ ...input.speed != null ? { speed: input.speed } : {},
6776
+ ...input.useSpeakerBoost != null ? { use_speaker_boost: input.useSpeakerBoost } : {}
6777
+ };
6778
+ return Object.keys(settings).length > 0 ? { voice_settings: settings } : {};
6779
+ };
6780
+ var buildElevenLabsTTSPayload = (modelId) => (input) => ({
6781
+ text: input.prompt,
6782
+ voice_id: input.voiceId ?? DEFAULT_VOICE_ID,
6783
+ model_id: modelId,
6784
+ ...input.language ? { language_code: input.language } : {},
6785
+ ...voiceSettings(input)
6786
+ });
6787
+ var buildElevenLabsSTSPayload = (modelId) => (input) => ({
6788
+ audio_url: input.audioUrl,
6789
+ voice_id: input.voiceId ?? DEFAULT_VOICE_ID,
6790
+ model_id: modelId,
6791
+ remove_background_noise: input.removeBackgroundNoise ?? false,
6792
+ ...voiceSettings(input)
6793
+ });
6794
+ var buildElevenLabsDialoguePayload = (input) => ({
6795
+ conversation: input.dialogue.map((line) => ({
6796
+ voice_id: line.voiceId,
6797
+ text: line.text
6798
+ })),
6799
+ model_id: "eleven_v3",
6800
+ ...input.stability != null ? { settings: { stability: input.stability } } : {},
6801
+ ...input.language ? { language_code: input.language } : {},
6802
+ ...input.seed != null ? { seed: input.seed } : {}
6803
+ });
6614
6804
  registerPayloads(MODELS23, {
6615
- "elevenlabs-music-v2": buildElevenLabsMusicPayload
6805
+ "elevenlabs-music-v2": buildElevenLabsMusicPayload,
6806
+ "eleven-v3": buildElevenLabsTTSPayload("eleven_v3"),
6807
+ "eleven-multilingual-v2": buildElevenLabsTTSPayload("eleven_multilingual_v2"),
6808
+ "eleven-sts-v2": buildElevenLabsSTSPayload("eleven_english_sts_v2"),
6809
+ "eleven-multilingual-sts-v2": buildElevenLabsSTSPayload("eleven_multilingual_sts_v2"),
6810
+ "eleven-text-to-dialogue": buildElevenLabsDialoguePayload
6616
6811
  });
6617
6812
 
6618
6813
  // src/vendors/catalog/heygen.ts
@@ -9539,6 +9734,81 @@ registerPayloads(MODELS3, {
9539
9734
  "creatify-boreal": buildCreatifyBorealPayload
9540
9735
  });
9541
9736
 
9737
+ // src/vendors/catalog/ltx.payloads.ts
9738
+ function requireStartFrame(input) {
9739
+ if (!input.startFrame) {
9740
+ throw new ApiError("LTX 2.5: an end frame requires a start image.", {
9741
+ status: 400,
9742
+ code: "validation_error"
9743
+ });
9744
+ }
9745
+ return input.startFrame;
9746
+ }
9747
+ var buildLtx25ProT2VPayload = (input) => ({
9748
+ prompt: input.prompt,
9749
+ ...input.duration != null ? { duration: input.duration } : {},
9750
+ ...input.resolution ? { resolution: input.resolution } : {},
9751
+ ...input.aspectRatio ? { aspect_ratio: input.aspectRatio } : {},
9752
+ ...input.fps != null ? { fps: input.fps } : {},
9753
+ // `none` is the paramConfig sentinel for "leave the camera alone": the wire
9754
+ // has no such value and omitting the field is the vendor's default. Spelled
9755
+ // out per builder rather than shared, so the check narrows the literal union
9756
+ // instead of widening it to `string`. (`static` is a real, locked-off camera.)
9757
+ ...input.cameraMotion && input.cameraMotion !== "none" ? { camera_motion: input.cameraMotion } : {},
9758
+ generate_audio: input.generateAudio ?? true
9759
+ });
9760
+ var buildLtx25ProI2VPayload = (input) => ({
9761
+ prompt: input.prompt,
9762
+ image_url: requireStartFrame(input),
9763
+ ...input.endFrame ? { end_image_url: input.endFrame } : {},
9764
+ ...input.duration != null ? { duration: input.duration } : {},
9765
+ ...input.resolution ? { resolution: input.resolution } : {},
9766
+ ...input.aspectRatio ? { aspect_ratio: input.aspectRatio } : {},
9767
+ ...input.fps != null ? { fps: input.fps } : {},
9768
+ // `none` is the paramConfig sentinel for "leave the camera alone": the wire
9769
+ // has no such value and omitting the field is the vendor's default. Spelled
9770
+ // out per builder rather than shared, so the check narrows the literal union
9771
+ // instead of widening it to `string`. (`static` is a real, locked-off camera.)
9772
+ ...input.cameraMotion && input.cameraMotion !== "none" ? { camera_motion: input.cameraMotion } : {},
9773
+ generate_audio: input.generateAudio ?? true
9774
+ });
9775
+ var buildLtx25FastT2VPayload = (input) => ({
9776
+ prompt: input.prompt,
9777
+ ...input.duration != null ? { duration: input.duration } : {},
9778
+ ...input.resolution ? { resolution: input.resolution } : {},
9779
+ ...input.aspectRatio ? { aspect_ratio: input.aspectRatio } : {},
9780
+ ...input.fps != null ? { fps: input.fps } : {},
9781
+ // `none` is the paramConfig sentinel for "leave the camera alone": the wire
9782
+ // has no such value and omitting the field is the vendor's default. Spelled
9783
+ // out per builder rather than shared, so the check narrows the literal union
9784
+ // instead of widening it to `string`. (`static` is a real, locked-off camera.)
9785
+ ...input.cameraMotion && input.cameraMotion !== "none" ? { camera_motion: input.cameraMotion } : {},
9786
+ generate_audio: input.generateAudio ?? true
9787
+ });
9788
+ var buildLtx25FastI2VPayload = (input) => ({
9789
+ prompt: input.prompt,
9790
+ image_url: requireStartFrame(input),
9791
+ ...input.endFrame ? { end_image_url: input.endFrame } : {},
9792
+ ...input.duration != null ? { duration: input.duration } : {},
9793
+ ...input.resolution ? { resolution: input.resolution } : {},
9794
+ ...input.aspectRatio ? { aspect_ratio: input.aspectRatio } : {},
9795
+ ...input.fps != null ? { fps: input.fps } : {},
9796
+ // `none` is the paramConfig sentinel for "leave the camera alone": the wire
9797
+ // has no such value and omitting the field is the vendor's default. Spelled
9798
+ // out per builder rather than shared, so the check narrows the literal union
9799
+ // instead of widening it to `string`. (`static` is a real, locked-off camera.)
9800
+ ...input.cameraMotion && input.cameraMotion !== "none" ? { camera_motion: input.cameraMotion } : {},
9801
+ generate_audio: input.generateAudio ?? true
9802
+ });
9803
+ registerPayloads(MODELS2, {
9804
+ "ltx-v2.5-pro": buildLtx25ProT2VPayload,
9805
+ "ltx-v2.5-fast": buildLtx25FastT2VPayload
9806
+ });
9807
+ registerEditPayloads(MODELS2, {
9808
+ "ltx-v2.5-pro": buildLtx25ProI2VPayload,
9809
+ "ltx-v2.5-fast": buildLtx25FastI2VPayload
9810
+ });
9811
+
9542
9812
  // src/vendors/catalog/index.ts
9543
9813
  var ALL_MODELS = [
9544
9814
  ...MODELS,
@@ -12107,6 +12377,7 @@ var ElevenDubbing = "eleven-dubbing";
12107
12377
  var ElevenMultilingualStsV2 = "eleven-multilingual-sts-v2";
12108
12378
  var ElevenMultilingualV2 = "eleven-multilingual-v2";
12109
12379
  var ElevenStsV2 = "eleven-sts-v2";
12380
+ var ElevenTextToDialogue = "eleven-text-to-dialogue";
12110
12381
  var ElevenV3 = "eleven-v3";
12111
12382
  var ElevenVoiceCreate = "eleven-voice-create";
12112
12383
  var ElevenVoiceDesignV2 = "eleven-voice-design-v2";
@@ -12203,6 +12474,8 @@ var LtxV23Extend = "ltx-v2.3-extend";
12203
12474
  var LtxV23Fast = "ltx-v2.3-fast";
12204
12475
  var LtxV23Pro = "ltx-v2.3-pro";
12205
12476
  var LtxV23Retake = "ltx-v2.3-retake";
12477
+ var LtxV25Fast = "ltx-v2.5-fast";
12478
+ var LtxV25Pro = "ltx-v2.5-pro";
12206
12479
  var LumaRay2 = "luma-ray-2";
12207
12480
  var LumaRay2ReframeVideo = "luma-ray-2-reframe-video";
12208
12481
  var LumaRay32 = "luma-ray-3.2";
@@ -12347,6 +12620,7 @@ var Models = {
12347
12620
  ElevenMultilingualStsV2,
12348
12621
  ElevenMultilingualV2,
12349
12622
  ElevenStsV2,
12623
+ ElevenTextToDialogue,
12350
12624
  ElevenV3,
12351
12625
  ElevenVoiceCreate,
12352
12626
  ElevenVoiceDesignV2,
@@ -12443,6 +12717,8 @@ var Models = {
12443
12717
  LtxV23Fast,
12444
12718
  LtxV23Pro,
12445
12719
  LtxV23Retake,
12720
+ LtxV25Fast,
12721
+ LtxV25Pro,
12446
12722
  LumaRay2,
12447
12723
  LumaRay2ReframeVideo,
12448
12724
  LumaRay32,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@picsart/ai-sdk",
3
- "version": "6.7.0",
3
+ "version": "6.9.0",
4
4
  "type": "module",
5
5
  "description": "Type-safe SDK for 100+ AI models — image, video, audio, and text generation with Picsart",
6
6
  "license": "MIT",