@picsart/ai-sdk 6.23.0 → 6.25.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
@@ -342,8 +342,8 @@ type ModelInputById = {
342
342
  };
343
343
  "flux-3-image": {
344
344
  prompt: string;
345
- aspectRatio?: "auto" | "21:9" | "2:1" | "16:9" | "3:2" | "7:5" | "4:3" | "5:4" | "1:1" | "4:5" | "3:4" | "5:7" | "2:3" | "9:16" | "1:2";
346
- resolution?: "512sq" | "768sq" | "1k" | "2k" | "4k";
345
+ aspectRatio?: "auto" | "21:9" | "2:1" | "16:9" | "3:2" | "7:5" | "4:3" | "5:4" | "1:1" | "4:5" | "3:4" | "5:7" | "2:3" | "9:16" | "9:21" | "1:2";
346
+ resolution?: "768sq" | "1k" | "1.5k" | "2k" | "4k";
347
347
  count?: 1 | 2 | 4 | 6 | 8 | 10;
348
348
  imageUrls?: string[];
349
349
  safetyTolerance?: number;
@@ -759,6 +759,18 @@ type ModelInputById = {
759
759
  voiceId: string;
760
760
  prompt: string;
761
761
  };
762
+ "heygen-video-1": {
763
+ prompt: string;
764
+ startFrame?: string;
765
+ imageUrls?: string[];
766
+ videoUrls?: string[];
767
+ audioUrls?: string[];
768
+ resolution?: "480p" | "768p";
769
+ duration?: number;
770
+ aspectRatio?: "adaptive" | "21:9" | "16:9" | "4:3" | "1:1" | "3:4" | "9:16";
771
+ promptEnhancement?: "turbo" | "quality" | "disabled";
772
+ seed?: number;
773
+ };
762
774
  "heygen-video-avatar": {
763
775
  videoId: string;
764
776
  engine?: "avatar_iv" | "avatar_v";
@@ -1073,19 +1085,6 @@ type ModelInputById = {
1073
1085
  startFrame?: string;
1074
1086
  endFrame?: string;
1075
1087
  };
1076
- "luma-ray-2": {
1077
- prompt: string;
1078
- aspectRatio?: "16:9" | "9:16" | "1:1" | "4:3" | "3:4" | "21:9" | "9:21";
1079
- resolution?: "540p" | "720p" | "1080p" | "4k";
1080
- duration?: 5 | 9;
1081
- startFrame?: string;
1082
- endFrame?: string;
1083
- };
1084
- "luma-ray-2-reframe-video": {
1085
- prompt?: string;
1086
- aspectRatio?: "16:9" | "9:16" | "1:1" | "4:3" | "3:4" | "21:9" | "9:21";
1087
- videoUrl: string;
1088
- };
1089
1088
  "luma-ray-3.2": {
1090
1089
  prompt: string;
1091
1090
  aspectRatio?: "9:16" | "3:4" | "1:1" | "4:3" | "16:9" | "21:9";
@@ -1112,19 +1111,6 @@ type ModelInputById = {
1112
1111
  videoUrl: string;
1113
1112
  resolution?: "540p" | "720p" | "1080p";
1114
1113
  };
1115
- "luma-ray-flash-2": {
1116
- prompt: string;
1117
- aspectRatio?: "16:9" | "9:16" | "1:1" | "4:3" | "3:4" | "21:9" | "9:21";
1118
- resolution?: "540p" | "720p" | "1080p" | "4k";
1119
- duration?: 5 | 9;
1120
- startFrame: string;
1121
- endFrame?: string;
1122
- };
1123
- "luma-ray-flash-2-reframe-video": {
1124
- prompt?: string;
1125
- aspectRatio?: "16:9" | "9:16" | "1:1" | "4:3" | "3:4" | "21:9" | "9:21";
1126
- videoUrl: string;
1127
- };
1128
1114
  "luma-uni-1": {
1129
1115
  prompt: string;
1130
1116
  aspectRatio?: "3:1" | "2:1" | "16:9" | "3:2" | "1:1" | "2:3" | "9:16" | "1:2" | "1:3";
@@ -3387,6 +3373,7 @@ declare const Models: {
3387
3373
  readonly Happyhorse11R2v: "happyhorse-1.1-r2v";
3388
3374
  readonly Happyhorse11T2v: "happyhorse-1.1-t2v";
3389
3375
  readonly HeygenTalkingPhoto: "heygen-talking-photo";
3376
+ readonly HeygenVideo1: "heygen-video-1";
3390
3377
  readonly HeygenVideoAvatar: "heygen-video-avatar";
3391
3378
  readonly HunyuanV3: "hunyuan-v3";
3392
3379
  readonly Ideogram45: "ideogram-4-5";
@@ -3423,13 +3410,9 @@ declare const Models: {
3423
3410
  readonly LtxV23Retake: "ltx-v2.3-retake";
3424
3411
  readonly LtxV25Fast: "ltx-v2.5-fast";
3425
3412
  readonly LtxV25Pro: "ltx-v2.5-pro";
3426
- readonly LumaRay2: "luma-ray-2";
3427
- readonly LumaRay2ReframeVideo: "luma-ray-2-reframe-video";
3428
3413
  readonly LumaRay32: "luma-ray-3.2";
3429
3414
  readonly LumaRay32Edit: "luma-ray-3.2-edit";
3430
3415
  readonly LumaRay32ReframeVideo: "luma-ray-3.2-reframe-video";
3431
- readonly LumaRayFlash2: "luma-ray-flash-2";
3432
- readonly LumaRayFlash2ReframeVideo: "luma-ray-flash-2-reframe-video";
3433
3416
  readonly LumaUni1: "luma-uni-1";
3434
3417
  readonly LumaUni1Max: "luma-uni-1-max";
3435
3418
  readonly Lyria3Clip: "lyria-3-clip";
package/index.js CHANGED
@@ -3881,52 +3881,7 @@ registerPayloads(MODELS11, {
3881
3881
  });
3882
3882
 
3883
3883
  // src/vendors/catalog/luma.ts
3884
- var buildLumaRay2Payload = (ctx) => {
3885
- const keyframes = {};
3886
- if (ctx.startFrame) keyframes.frame0 = { type: "image", url: ctx.startFrame };
3887
- if (ctx.endFrame) keyframes.frame1 = { type: "image", url: ctx.endFrame };
3888
- return {
3889
- prompt: ctx.prompt,
3890
- model: "ray-2",
3891
- ...Object.keys(keyframes).length ? { keyframes } : {},
3892
- aspect_ratio: ctx.aspectRatio ?? "16:9",
3893
- resolution: ctx.resolution ?? "720p",
3894
- duration: `${ctx.duration ?? 5}s`
3895
- };
3896
- };
3897
- var buildLumaFlash2I2VPayload = (ctx) => {
3898
- const keyframes = {};
3899
- if (ctx.startFrame) keyframes.frame0 = { type: "image", url: ctx.startFrame };
3900
- if (ctx.endFrame) keyframes.frame1 = { type: "image", url: ctx.endFrame };
3901
- return {
3902
- prompt: ctx.prompt,
3903
- model: "ray-flash-2",
3904
- ...Object.keys(keyframes).length ? { keyframes } : {},
3905
- aspect_ratio: ctx.aspectRatio ?? "16:9",
3906
- resolution: ctx.resolution ?? "720p",
3907
- duration: `${ctx.duration ?? 5}s`
3908
- };
3909
- };
3910
- var WORKFLOW = "luma-image-to-video-generation";
3911
- var REFRAME_WORKFLOW = "luma-media-reframe";
3912
- var makeReframeVideoPayload = (model) => (ctx) => ({
3913
- generation_type: "reframe_video",
3914
- model,
3915
- media: { url: ctx.videoUrl ?? "" },
3916
- aspect_ratio: ctx.aspectRatio ?? "16:9",
3917
- ...ctx.prompt ? { prompt: ctx.prompt } : {}
3918
- });
3919
- var buildLumaRay2ReframeVideoPayload = makeReframeVideoPayload("ray-2");
3920
- var buildLumaRayFlash2ReframeVideoPayload = makeReframeVideoPayload("ray-flash-2");
3921
- var LUMA_AR = ["16:9", "9:16", "1:1", "4:3", "3:4", "21:9", "9:21"];
3922
- var LUMA_RESOLUTIONS = ["540p", "720p", "1080p", "4k"];
3923
3884
  var LUMA_PROMPT_MAX = 5e3;
3924
- var lumaParamConfig = {
3925
- ...params.prompt({ maxLength: LUMA_PROMPT_MAX }),
3926
- ...params.aspectRatio(LUMA_AR),
3927
- ...params.resolution(LUMA_RESOLUTIONS, "720p"),
3928
- ...params.duration([5, 9], 5)
3929
- };
3930
3885
  var LUMA_UNI1_AR = ["3:1", "2:1", "16:9", "3:2", "1:1", "2:3", "9:16", "1:2", "1:3"];
3931
3886
  var LUMA_UNI1_STYLES = [
3932
3887
  { id: "auto", label: "Auto" },
@@ -4025,71 +3980,6 @@ var ray32EditConstraints = [
4025
3980
  } }
4026
3981
  ];
4027
3982
  var { MODELS: MODELS12 } = defineModels("luma", [
4028
- {
4029
- id: "luma-ray-2",
4030
- name: "Luma Ray 2",
4031
- addedAt: "2026-02-06",
4032
- workflow: WORKFLOW,
4033
- editWorkflow: WORKFLOW,
4034
- buildPayload: buildLumaRay2Payload,
4035
- estimatedTime: 18,
4036
- editEstimatedTime: 24,
4037
- mode: "video",
4038
- inputType: "t2v",
4039
- description: "Smooth video with a dreamy, polished aesthetic \u2014 up to 4K resolution.",
4040
- features: [feat("Image Input", "input"), feat("Start/End Frame", "frame"), feat("Up to 4K", "resolution"), feat("5/9 sec", "duration")],
4041
- paramConfig: { ...lumaParamConfig, ...params.startFrame(), ...params.endFrame() }
4042
- },
4043
- {
4044
- id: "luma-ray-flash-2",
4045
- name: "Luma Flash 2",
4046
- addedAt: "2026-02-06",
4047
- workflow: WORKFLOW,
4048
- buildPayload: buildLumaFlash2I2VPayload,
4049
- estimatedTime: 9,
4050
- mode: "video",
4051
- inputType: "i2v",
4052
- description: "Quick image-to-video with smooth, stylized motion \u2014 up to 4K.",
4053
- features: [feat("Image Input", "input"), feat("Start/End Frame", "frame"), feat("Up to 4K", "resolution"), feat("5/9 sec", "duration")],
4054
- paramConfig: { ...lumaParamConfig, ...params.startFrame("Start Frame", true), ...params.endFrame() }
4055
- },
4056
- // ── Reframe video (ray-2 + ray-flash-2; image reframe not supported) ──
4057
- {
4058
- id: "luma-ray-2-reframe-video",
4059
- name: "Luma Ray 2 Reframe",
4060
- modelId: "luma-ray-2",
4061
- addedAt: "2026-05-21",
4062
- workflow: REFRAME_WORKFLOW,
4063
- buildPayload: buildLumaRay2ReframeVideoPayload,
4064
- estimatedTime: 20,
4065
- mode: "video",
4066
- inputType: "v2v",
4067
- description: "Reframe a video to a new aspect ratio using Luma Ray 2.",
4068
- features: [feat("Video Input", "input"), feat("Reframe", "characteristic")],
4069
- paramConfig: {
4070
- ...params.prompt({ required: false, maxLength: LUMA_PROMPT_MAX }),
4071
- ...params.aspectRatio(LUMA_AR, "16:9"),
4072
- ...params.videoInput("Source Video")
4073
- }
4074
- },
4075
- {
4076
- id: "luma-ray-flash-2-reframe-video",
4077
- name: "Luma Flash 2 Reframe",
4078
- modelId: "luma-ray-flash-2",
4079
- addedAt: "2026-05-21",
4080
- workflow: REFRAME_WORKFLOW,
4081
- buildPayload: buildLumaRayFlash2ReframeVideoPayload,
4082
- estimatedTime: 12,
4083
- mode: "video",
4084
- inputType: "v2v",
4085
- description: "Reframe a video to a new aspect ratio using Luma Flash 2.",
4086
- features: [feat("Video Input", "input"), feat("Reframe", "characteristic")],
4087
- paramConfig: {
4088
- ...params.prompt({ required: false, maxLength: LUMA_PROMPT_MAX }),
4089
- ...params.aspectRatio(LUMA_AR, "16:9"),
4090
- ...params.videoInput("Source Video")
4091
- }
4092
- },
4093
3983
  {
4094
3984
  id: "luma-uni-1",
4095
3985
  name: "Luma UNI-1",
@@ -6231,9 +6121,10 @@ var flux3ImageAspectRatios = [
6231
6121
  "5:7",
6232
6122
  "2:3",
6233
6123
  "9:16",
6124
+ "9:21",
6234
6125
  "1:2"
6235
6126
  ];
6236
- var flux3ImageResolutions = ["512sq", "768sq", "1k", "2k", "4k"];
6127
+ var flux3ImageResolutions = ["768sq", "1k", "1.5k", "2k", "4k"];
6237
6128
  var buildFluxV2Payload = (modelId) => (ctx) => ({
6238
6129
  prompt: ctx.prompt,
6239
6130
  model: modelId,
@@ -6402,7 +6293,7 @@ var { MODELS: MODELS21 } = defineModels("flux", [
6402
6293
  // count (up to 10) samples further into the tail. Stage has seen 4+ minutes,
6403
6294
  // and one 512sq run took 287s. Over-estimating only makes the bar finish
6404
6295
  // early; under-estimating parks it at 99%.
6405
- estimatedTime: { "512sq": 90, "768sq": 110, "1k": 150, "2k": 240, "4k": 360 },
6296
+ estimatedTime: { "768sq": 110, "1k": 150, "1.5k": 195, "2k": 240, "4k": 360 },
6406
6297
  description: "Generate and edit images with up to 10 references \u2014 multi-reference composition, precise local edits and text rendering, natively up to 4K.",
6407
6298
  features: [
6408
6299
  feat("Multi-Image Input", "input"),
@@ -7859,6 +7750,32 @@ var dynamicVoiceConfig = {
7859
7750
  catalog: { workflow: "heygen/v1/catalog/voices" }
7860
7751
  })
7861
7752
  };
7753
+ var VIDEO1_MODE_EXCLUSIVE = "A first frame and references cannot be combined \u2014 each picks a different mode.";
7754
+ var VIDEO1_RATIO_FOLLOWS_FRAME = "Aspect ratio follows the first-frame image.";
7755
+ var VIDEO1_ADAPTIVE_NEEDS_REFS = "Adaptive aspect ratio follows the references \u2014 add one to use it.";
7756
+ var VIDEO1_RATIOS = ["21:9", "16:9", "4:3", "1:1", "3:4", "9:16"];
7757
+ var heygenVideo1Constraints = [
7758
+ { when: { startFrame: { exists: true } }, then: {
7759
+ imageUrls: { disabled: true, reason: VIDEO1_MODE_EXCLUSIVE },
7760
+ videoUrls: { disabled: true, reason: VIDEO1_MODE_EXCLUSIVE },
7761
+ audioUrls: { disabled: true, reason: VIDEO1_MODE_EXCLUSIVE },
7762
+ // image_to_video always follows the first frame — the ratio is not a choice.
7763
+ aspectRatio: { disabled: true, reason: VIDEO1_RATIO_FOLLOWS_FRAME }
7764
+ } },
7765
+ { when: { imageUrls: { exists: true } }, then: {
7766
+ startFrame: { disabled: true, reason: VIDEO1_MODE_EXCLUSIVE }
7767
+ } },
7768
+ { when: { videoUrls: { exists: true } }, then: {
7769
+ startFrame: { disabled: true, reason: VIDEO1_MODE_EXCLUSIVE }
7770
+ } },
7771
+ { when: { audioUrls: { exists: true } }, then: {
7772
+ startFrame: { disabled: true, reason: VIDEO1_MODE_EXCLUSIVE }
7773
+ } },
7774
+ // 'adaptive' means "follow the first reference" — no meaning without one.
7775
+ { when: { imageUrls: { exists: false }, videoUrls: { exists: false }, audioUrls: { exists: false } }, then: {
7776
+ aspectRatio: { allowed: [...VIDEO1_RATIOS], reason: VIDEO1_ADAPTIVE_NEEDS_REFS }
7777
+ } }
7778
+ ];
7862
7779
  var { MODELS: MODELS25 } = defineModels("heygen", [
7863
7780
  // ── Photo Avatar (i2v) ────────────────────────────────────────────
7864
7781
  {
@@ -7913,9 +7830,73 @@ var { MODELS: MODELS25 } = defineModels("heygen", [
7913
7830
  ...dynamicVoiceConfig,
7914
7831
  ...params.prompt({ minLength: 20, maxLength: 5e3, placeholder: "Write the script your avatar will speak (at least 20 characters)..." })
7915
7832
  }
7833
+ },
7834
+ // ── HeyGen Video (t2v / i2v / r2v) ────────────────────────────────
7835
+ {
7836
+ // One entry for all three modes: the inputs pick it — a first-frame image
7837
+ // animates that image, references generate from references, a bare prompt
7838
+ // generates from text. Payload assembly lives in heygen.payloads.ts.
7839
+ id: "heygen-video-1",
7840
+ name: "HeyGen Video",
7841
+ addedAt: "2026-10-05",
7842
+ workflow: "heygen/v1/models/video/generate",
7843
+ estimatedTime: 60,
7844
+ mode: "video",
7845
+ inputType: "t2v",
7846
+ description: "HeyGen Video \u2014 video with native audio from text, a first-frame image, or up to 12 reference images, videos and audio. Refer to references in the prompt as Picture 1, Video 1, in input order. Up to 15s at 768p.",
7847
+ features: [
7848
+ feat("Start Frame", "frame"),
7849
+ feat("Multi-Image Input", "input"),
7850
+ feat("Video Input", "input"),
7851
+ feat("Audio Input", "input"),
7852
+ feat("Audio", "audio"),
7853
+ feat("5-15 sec", "duration")
7854
+ ],
7855
+ paramConfig: {
7856
+ ...params.prompt({ maxLength: 32e3 }),
7857
+ ...params.startFrame("Start Frame", false),
7858
+ // Reference slots, reference-to-video route. The ≤12 files combined
7859
+ // across images + videos + audios stay backend-enforced.
7860
+ ...params.imageInput(9, "Reference Images", false, "reference"),
7861
+ ...params.videoInputs(3, "Reference Videos"),
7862
+ ...params.audioInputs(3, "Reference Audios"),
7863
+ ...params.resolution(["480p", "768p"], "768p"),
7864
+ ...params.durationRange(5, 15, 5),
7865
+ // 'adaptive' means "follow the references" — constrained below.
7866
+ ...params.aspectRatio(["adaptive", "21:9", "16:9", "4:3", "1:1", "3:4", "9:16"], "16:9"),
7867
+ ...p.enum("promptEnhancement", ["turbo", "quality", "disabled"], "turbo", { label: "Prompt Enhancement" }),
7868
+ // Unsigned 32-bit per the schema; sent only when the user sets it.
7869
+ ...params.seed(4294967295)
7870
+ },
7871
+ constraints: heygenVideo1Constraints
7916
7872
  }
7917
7873
  ]);
7918
7874
 
7875
+ // src/vendors/catalog/heygen.payloads.ts
7876
+ var asMediaRef = (url) => ({ type: "url", url });
7877
+ var buildHeygenVideo1Payload = (input) => {
7878
+ const hasFrame = !!input.startFrame;
7879
+ const hasReferences = !!(input.imageUrls?.length || input.videoUrls?.length || input.audioUrls?.length);
7880
+ return {
7881
+ model: "heygen-video-1",
7882
+ prompt: input.prompt,
7883
+ duration: input.duration ?? 5,
7884
+ resolution: input.resolution ?? "768p",
7885
+ prompt_enhancement: input.promptEnhancement ?? "turbo",
7886
+ // With references the default is 'adaptive' (follow the first one); from
7887
+ // the prompt alone it is 16:9.
7888
+ ...hasFrame ? {} : { aspect_ratio: input.aspectRatio ?? (hasReferences ? "adaptive" : "16:9") },
7889
+ ...input.startFrame ? { image: asMediaRef(input.startFrame) } : {},
7890
+ ...input.imageUrls?.length ? { reference_images: input.imageUrls.map(asMediaRef) } : {},
7891
+ ...input.videoUrls?.length ? { reference_videos: input.videoUrls.map(asMediaRef) } : {},
7892
+ ...input.audioUrls?.length ? { reference_audio: input.audioUrls.map(asMediaRef) } : {},
7893
+ ...input.seed != null ? { seed: input.seed } : {}
7894
+ };
7895
+ };
7896
+ registerPayloads(MODELS25, {
7897
+ "heygen-video-1": buildHeygenVideo1Payload
7898
+ });
7899
+
7919
7900
  // src/vendors/catalog/minimax.payloads.ts
7920
7901
  var buildMinimaxMusicV3Payload = (input) => ({
7921
7902
  prompt: input.prompt,
@@ -13579,6 +13560,7 @@ var Happyhorse10VideoEdit = "happyhorse-1.0-video-edit";
13579
13560
  var Happyhorse11R2v = "happyhorse-1.1-r2v";
13580
13561
  var Happyhorse11T2v = "happyhorse-1.1-t2v";
13581
13562
  var HeygenTalkingPhoto = "heygen-talking-photo";
13563
+ var HeygenVideo1 = "heygen-video-1";
13582
13564
  var HeygenVideoAvatar = "heygen-video-avatar";
13583
13565
  var HunyuanV3 = "hunyuan-v3";
13584
13566
  var Ideogram45 = "ideogram-4-5";
@@ -13615,13 +13597,9 @@ var LtxV23Reframe = "ltx-v2.3-reframe";
13615
13597
  var LtxV23Retake = "ltx-v2.3-retake";
13616
13598
  var LtxV25Fast = "ltx-v2.5-fast";
13617
13599
  var LtxV25Pro = "ltx-v2.5-pro";
13618
- var LumaRay2 = "luma-ray-2";
13619
- var LumaRay2ReframeVideo = "luma-ray-2-reframe-video";
13620
13600
  var LumaRay32 = "luma-ray-3.2";
13621
13601
  var LumaRay32Edit = "luma-ray-3.2-edit";
13622
13602
  var LumaRay32ReframeVideo = "luma-ray-3.2-reframe-video";
13623
- var LumaRayFlash2 = "luma-ray-flash-2";
13624
- var LumaRayFlash2ReframeVideo = "luma-ray-flash-2-reframe-video";
13625
13603
  var LumaUni1 = "luma-uni-1";
13626
13604
  var LumaUni1Max = "luma-uni-1-max";
13627
13605
  var Lyria3Clip = "lyria-3-clip";
@@ -13838,6 +13816,7 @@ var Models = {
13838
13816
  Happyhorse11R2v,
13839
13817
  Happyhorse11T2v,
13840
13818
  HeygenTalkingPhoto,
13819
+ HeygenVideo1,
13841
13820
  HeygenVideoAvatar,
13842
13821
  HunyuanV3,
13843
13822
  Ideogram45,
@@ -13874,13 +13853,9 @@ var Models = {
13874
13853
  LtxV23Retake,
13875
13854
  LtxV25Fast,
13876
13855
  LtxV25Pro,
13877
- LumaRay2,
13878
- LumaRay2ReframeVideo,
13879
13856
  LumaRay32,
13880
13857
  LumaRay32Edit,
13881
13858
  LumaRay32ReframeVideo,
13882
- LumaRayFlash2,
13883
- LumaRayFlash2ReframeVideo,
13884
13859
  LumaUni1,
13885
13860
  LumaUni1Max,
13886
13861
  Lyria3Clip,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@picsart/ai-sdk",
3
- "version": "6.23.0",
3
+ "version": "6.25.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",