@picsart/ai-sdk 6.9.0 → 6.10.1

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.
@@ -111,7 +111,7 @@ interface SpeakerVoiceConfig$2 {
111
111
  speaker: string;
112
112
  voiceConfig: VoiceConfig$2;
113
113
  }
114
- type GeminiModel$1 = "gemini-2.5-pro" | "gemini-2.5-flash" | "gemini-embedding-exp" | "gemini-3-pro" | "gemini-3-pro-preview" | "gemini-3.1-pro-preview" | "gemini-3.1-flash-lite" | "gemini-3.5-flash-lite" | "gemini-3.6-flash" | "gemini-3.7-flash" | "gemini-3.8-flash" | "gemini-3.1-flash-lite-preview";
114
+ type GeminiModel$1 = "gemini-2.5-pro" | "gemini-2.5-flash" | "gemini-embedding-exp" | "gemini-2.5-flash-image" | "gemini-3-pro-image" | "gemini-3-pro-image-preview" | "gemini-3.1-flash-image" | "gemini-3.1-flash-image-preview" | "gemini-3-pro" | "gemini-3-pro-preview" | "gemini-3.1-pro-preview" | "gemini-3.1-flash-lite" | "gemini-3.5-flash-lite" | "gemini-3.6-flash" | "gemini-3.7-flash" | "gemini-3.8-flash" | "gemini-3.1-flash-lite-preview";
115
115
  interface GeminiResult$1 {
116
116
  id: string;
117
117
  status: "ACCEPTED" | "IN_PROGRESS" | "COMPLETED" | "FAILED";
@@ -476,7 +476,7 @@ interface SpeakerVoiceConfig$1 {
476
476
  speaker: string;
477
477
  voiceConfig: VoiceConfig$1;
478
478
  }
479
- type GeminiModel = "gemini-2.5-pro" | "gemini-2.5-flash" | "gemini-embedding-exp" | "gemini-3-pro" | "gemini-3-pro-preview" | "gemini-3.1-pro-preview" | "gemini-3.1-flash-lite" | "gemini-3.5-flash-lite" | "gemini-3.6-flash" | "gemini-3.7-flash" | "gemini-3.8-flash" | "gemini-3.1-flash-lite-preview";
479
+ type GeminiModel = "gemini-2.5-pro" | "gemini-2.5-flash" | "gemini-embedding-exp" | "gemini-2.5-flash-image" | "gemini-3-pro-image" | "gemini-3-pro-image-preview" | "gemini-3.1-flash-image" | "gemini-3.1-flash-image-preview" | "gemini-3-pro" | "gemini-3-pro-preview" | "gemini-3.1-pro-preview" | "gemini-3.1-flash-lite" | "gemini-3.5-flash-lite" | "gemini-3.6-flash" | "gemini-3.7-flash" | "gemini-3.8-flash" | "gemini-3.1-flash-lite-preview";
480
480
  interface GeminiResult {
481
481
  id: string;
482
482
  status: "ACCEPTED" | "IN_PROGRESS" | "COMPLETED" | "FAILED";
@@ -776,7 +776,7 @@ interface ClaudeV1MessagesCommand {
776
776
  context_management?: ClaudeContextManagement;
777
777
  options?: GenAIOptions$2A;
778
778
  }
779
- type ClaudeV1Models = "claude-opus-4-8" | "claude-opus-5" | "claude-sonnet-4-5" | "claude-sonnet-4-6" | "claude-sonnet-5" | "claude-3-7-sonnet" | "claude-3-5-sonnet" | "claude-3-5-haiku-latest" | "claude-haiku-4-5" | "claude-sonnet-4-0" | "claude-opus-4-0" | "claude-opus-4-5" | "claude-fable-5" | "claude-fable-5-1";
779
+ type ClaudeV1Models = "claude-opus-4-8" | "claude-opus-5" | "claude-sonnet-4-5" | "claude-sonnet-4-6" | "claude-sonnet-5" | "claude-haiku-4-5" | "claude-fable-5" | "claude-fable-5-1";
780
780
  interface ClaudeMessageParam {
781
781
  role: string;
782
782
  content: ClaudeContentBlock[];
@@ -5568,6 +5568,7 @@ interface GeneratedImageResult$4 {
5568
5568
  interface SeedanceCommand {
5569
5569
  model?: SeedanceModelAlias;
5570
5570
  content?: ContentItem[];
5571
+ draft?: boolean;
5571
5572
  resolution?: Resolution;
5572
5573
  ratio?: Ratio;
5573
5574
  output_format?: OutputFormat;
@@ -5585,9 +5586,10 @@ interface ContentItem {
5585
5586
  image_url?: ImageUrl;
5586
5587
  video_url?: VideoUrl;
5587
5588
  audio_url?: AudioUrl;
5589
+ draft_task?: DraftTask;
5588
5590
  role?: FrameRole;
5589
5591
  }
5590
- type ContentType = "text" | "image_url" | "video_url" | "audio_url";
5592
+ type ContentType = "text" | "image_url" | "video_url" | "audio_url" | "draft_task";
5591
5593
  interface ImageUrl {
5592
5594
  url: string;
5593
5595
  }
@@ -5597,6 +5599,11 @@ interface VideoUrl {
5597
5599
  interface AudioUrl {
5598
5600
  url: string;
5599
5601
  }
5602
+ interface DraftTask {
5603
+ id: string;
5604
+ video_input: boolean;
5605
+ signature: string;
5606
+ }
5600
5607
  type FrameRole = "first_frame" | "last_frame" | "reference_image" | "reference_video" | "reference_audio";
5601
5608
  type Resolution = "480p" | "720p" | "1080p" | "4k";
5602
5609
  type Ratio = "16:9" | "4:3" | "1:1" | "3:4" | "9:16" | "21:9" | "adaptive";
@@ -5628,6 +5635,7 @@ interface GeneratedVideoResult$3 {
5628
5635
  video_url: string;
5629
5636
  last_frame_url?: string;
5630
5637
  output_format?: string;
5638
+ draft_task?: Record<string, unknown>;
5631
5639
  mimeType?: string;
5632
5640
  driveFile?: Record<string, unknown>;
5633
5641
  }
@@ -8904,7 +8912,6 @@ interface SegmentAnythingSam3Command {
8904
8912
  prompt: string;
8905
8913
  score_threshold?: number;
8906
8914
  mask_threshold?: number;
8907
- model?: string;
8908
8915
  }
8909
8916
  interface SegmentAnythingSam3Response {
8910
8917
  id: string;
@@ -12118,6 +12125,96 @@ interface LTXV23ImageToVideoFastResponse {
12118
12125
  };
12119
12126
  }
12120
12127
 
12128
+ interface LTXV23ReframeVideoRequest {
12129
+ resolution?: "720p" | "1080p";
12130
+ aspect_ratio?: "1:1" | "4:5" | "5:4" | "9:16" | "16:9";
12131
+ video_url: string;
12132
+ options?: {
12133
+ safety_checks?: {
12134
+ enabled?: boolean;
12135
+ };
12136
+ drive?: {
12137
+ name: string;
12138
+ attributes?: Record<string, string>;
12139
+ folder?: {
12140
+ path?: string;
12141
+ id?: string;
12142
+ };
12143
+ };
12144
+ };
12145
+ }
12146
+ interface Ltx23ReframeResponse {
12147
+ id: string;
12148
+ status: "ACCEPTED" | "IN_PROGRESS" | "COMPLETED" | "FAILED";
12149
+ result: LTXV23ReframeVideoResponse;
12150
+ }
12151
+ interface LTXV23ReframeVideoResponse {
12152
+ video: {
12153
+ content_type?: string | unknown;
12154
+ fps?: number | unknown;
12155
+ width?: number | unknown;
12156
+ num_frames?: number | unknown;
12157
+ file_size?: number | unknown;
12158
+ file_name?: string | unknown;
12159
+ duration?: number | unknown;
12160
+ height?: number | unknown;
12161
+ url: string;
12162
+ };
12163
+ }
12164
+
12165
+ interface LTX23QualityOutpaintInput {
12166
+ guidance_scale?: number;
12167
+ enable_prompt_expansion?: boolean;
12168
+ num_inference_steps?: number;
12169
+ prompt: string;
12170
+ generate_audio?: boolean;
12171
+ enable_safety_checker?: boolean;
12172
+ frames_per_second?: number;
12173
+ seed?: number | unknown;
12174
+ video_url: string;
12175
+ num_frames?: number;
12176
+ resolution?: {
12177
+ height?: number;
12178
+ width?: number;
12179
+ } | "auto" | "square_hd" | "square" | "portrait_4_3" | "portrait_16_9" | "landscape_4_3" | "landscape_16_9";
12180
+ output_resolution?: "480p" | "720p" | "1080p";
12181
+ negative_prompt?: string;
12182
+ video_strength?: number;
12183
+ aspect_ratio?: "21:9" | "16:9" | "4:3" | "1:1" | "3:4" | "9:16" | "9:21";
12184
+ sync_mode?: boolean;
12185
+ video_write_mode?: "fast" | "balanced" | "small";
12186
+ video_quality?: "low" | "medium" | "high" | "maximum";
12187
+ source_scale?: number;
12188
+ options?: {
12189
+ safety_checks?: {
12190
+ enabled?: boolean;
12191
+ };
12192
+ drive?: {
12193
+ name: string;
12194
+ attributes?: Record<string, string>;
12195
+ folder?: {
12196
+ path?: string;
12197
+ id?: string;
12198
+ };
12199
+ };
12200
+ };
12201
+ }
12202
+ interface Ltx23QualityOutpaintResponse {
12203
+ id: string;
12204
+ status: "ACCEPTED" | "IN_PROGRESS" | "COMPLETED" | "FAILED";
12205
+ result: LTX23QualityOutput;
12206
+ }
12207
+ interface LTX23QualityOutput {
12208
+ prompt: string;
12209
+ seed: number;
12210
+ video: {
12211
+ url: string;
12212
+ content_type?: string | unknown;
12213
+ file_size?: number | unknown;
12214
+ file_name?: string | unknown;
12215
+ };
12216
+ }
12217
+
12121
12218
  interface WorkflowTypes {
12122
12219
  'check-text': {
12123
12220
  params: CheckTextCommand;
@@ -13227,6 +13324,14 @@ interface WorkflowTypes {
13227
13324
  params: LTXV25ImageToVideoFastRequest;
13228
13325
  result: LightricksLtx25ImageToVideoFastResponse;
13229
13326
  };
13327
+ 'ltx-2.3/reframe': {
13328
+ params: LTXV23ReframeVideoRequest;
13329
+ result: Ltx23ReframeResponse;
13330
+ };
13331
+ 'ltx-2.3-quality/outpaint': {
13332
+ params: LTX23QualityOutpaintInput;
13333
+ result: Ltx23QualityOutpaintResponse;
13334
+ };
13230
13335
  }
13231
13336
 
13232
13337
  export type { WorkflowTypes };
package/index.d.ts CHANGED
@@ -862,6 +862,25 @@ type ModelInputById = {
862
862
  imageUrls?: string[];
863
863
  endFrame?: string;
864
864
  };
865
+ "ltx-v2.3-outpaint": {
866
+ prompt: string;
867
+ videoUrl: string;
868
+ negativePrompt?: string;
869
+ aspectRatio?: "21:9" | "16:9" | "4:3" | "1:1" | "3:4" | "9:16" | "9:21";
870
+ resolution?: "480p" | "720p" | "1080p";
871
+ numFrames?: number;
872
+ fps?: number;
873
+ sourceScale?: number;
874
+ videoStrength?: number;
875
+ cfgScale?: number;
876
+ numInferenceSteps?: number;
877
+ videoQuality?: "low" | "medium" | "high" | "maximum";
878
+ videoWriteMode?: "fast" | "balanced" | "small";
879
+ enhancePrompt?: boolean;
880
+ generateAudio?: boolean;
881
+ enableSafetyChecker?: boolean;
882
+ seed?: number;
883
+ };
865
884
  "ltx-v2.3-pro": {
866
885
  prompt: string;
867
886
  duration?: 6 | 8 | 10;
@@ -872,6 +891,11 @@ type ModelInputById = {
872
891
  imageUrls?: string[];
873
892
  endFrame?: string;
874
893
  };
894
+ "ltx-v2.3-reframe": {
895
+ videoUrl: string;
896
+ resolution?: "720p" | "1080p";
897
+ aspectRatio?: "16:9" | "9:16" | "1:1" | "4:5" | "5:4";
898
+ };
875
899
  "ltx-v2.3-retake": {
876
900
  prompt: string;
877
901
  duration?: number;
@@ -1583,7 +1607,7 @@ type ModelInputById = {
1583
1607
  videoUrls: [string, ...string[]];
1584
1608
  };
1585
1609
  "seedance-2.5": {
1586
- prompt: string;
1610
+ prompt?: string;
1587
1611
  aspectRatio?: "16:9" | "9:16" | "1:1" | "4:3" | "3:4" | "21:9" | "adaptive";
1588
1612
  resolution?: "480p" | "720p" | "1080p";
1589
1613
  duration?: number;
@@ -1591,6 +1615,12 @@ type ModelInputById = {
1591
1615
  returnLastFrame?: boolean;
1592
1616
  outputFormat?: "mp4" | "mov";
1593
1617
  colorDepth?: "10bit" | "8bit";
1618
+ draft?: boolean;
1619
+ draftTask?: {
1620
+ id: string;
1621
+ video_input: boolean;
1622
+ signature: string;
1623
+ };
1594
1624
  imageUrls?: string[];
1595
1625
  videoUrls?: string[];
1596
1626
  audioUrls?: string[];
@@ -1605,6 +1635,7 @@ type ModelInputById = {
1605
1635
  returnLastFrame?: boolean;
1606
1636
  outputFormat?: "mp4" | "mov";
1607
1637
  colorDepth?: "10bit" | "8bit";
1638
+ draft?: boolean;
1608
1639
  videoUrl: string;
1609
1640
  imageUrls?: string[];
1610
1641
  };
@@ -1616,10 +1647,11 @@ type ModelInputById = {
1616
1647
  generateAudio?: boolean;
1617
1648
  outputFormat?: "mp4" | "mov";
1618
1649
  colorDepth?: "10bit" | "8bit";
1650
+ draft?: boolean;
1619
1651
  videoUrls: [string, ...string[]];
1620
1652
  };
1621
1653
  "seedance-2.5-without-moderation": {
1622
- prompt: string;
1654
+ prompt?: string;
1623
1655
  aspectRatio?: "16:9" | "9:16" | "1:1" | "4:3" | "3:4" | "21:9" | "adaptive";
1624
1656
  resolution?: "480p" | "720p" | "1080p";
1625
1657
  duration?: number;
@@ -1627,6 +1659,12 @@ type ModelInputById = {
1627
1659
  returnLastFrame?: boolean;
1628
1660
  outputFormat?: "mp4" | "mov";
1629
1661
  colorDepth?: "10bit" | "8bit";
1662
+ draft?: boolean;
1663
+ draftTask?: {
1664
+ id: string;
1665
+ video_input: boolean;
1666
+ signature: string;
1667
+ };
1630
1668
  imageUrls?: string[];
1631
1669
  videoUrls?: string[];
1632
1670
  audioUrls?: string[];
@@ -1641,6 +1679,7 @@ type ModelInputById = {
1641
1679
  returnLastFrame?: boolean;
1642
1680
  outputFormat?: "mp4" | "mov";
1643
1681
  colorDepth?: "10bit" | "8bit";
1682
+ draft?: boolean;
1644
1683
  videoUrl: string;
1645
1684
  imageUrls?: string[];
1646
1685
  };
@@ -1652,6 +1691,7 @@ type ModelInputById = {
1652
1691
  generateAudio?: boolean;
1653
1692
  outputFormat?: "mp4" | "mov";
1654
1693
  colorDepth?: "10bit" | "8bit";
1694
+ draft?: boolean;
1655
1695
  videoUrls: [string, ...string[]];
1656
1696
  };
1657
1697
  "seedance-i2v": {
@@ -2683,6 +2723,17 @@ interface GenerateResultItemMetadata {
2683
2723
  /** URL of the generated video's last frame, when the model was asked for it
2684
2724
  * (`returnLastFrame`, seedance) — the seed for frame-chaining flows. */
2685
2725
  lastFrameUrl?: string;
2726
+ /** The draft a Seedance 2.5 Draft generation produced — pass it back
2727
+ * unchanged as `draftTask` to the matching `-draft-final` model to render
2728
+ * the final 1080p video (valid 7 days). Wire field names on purpose: the
2729
+ * worker signs it, so any change is rejected. */
2730
+ draftTask?: SeedanceDraftTask;
2731
+ }
2732
+ /** A Seedance 2.5 draft reference, as the worker issues it. */
2733
+ interface SeedanceDraftTask {
2734
+ id: string;
2735
+ video_input: boolean;
2736
+ signature: string;
2686
2737
  }
2687
2738
 
2688
2739
  /**
@@ -3121,7 +3172,9 @@ declare const Models: {
3121
3172
  readonly LtxV2Retake: "ltx-v2-retake";
3122
3173
  readonly LtxV23Extend: "ltx-v2.3-extend";
3123
3174
  readonly LtxV23Fast: "ltx-v2.3-fast";
3175
+ readonly LtxV23Outpaint: "ltx-v2.3-outpaint";
3124
3176
  readonly LtxV23Pro: "ltx-v2.3-pro";
3177
+ readonly LtxV23Reframe: "ltx-v2.3-reframe";
3125
3178
  readonly LtxV23Retake: "ltx-v2.3-retake";
3126
3179
  readonly LtxV25Fast: "ltx-v2.5-fast";
3127
3180
  readonly LtxV25Pro: "ltx-v2.5-pro";
@@ -3390,4 +3443,4 @@ declare const getModel: (id: string) => ModelDefinition | undefined;
3390
3443
  */
3391
3444
  declare const findModel: (ref: string) => ModelDefinition | undefined;
3392
3445
 
3393
- export { ALL_MODELS, type AiClient, ApiError, type ApiErrorCode, type ApiErrorInit, type ApiResponse, type ApiRunOptions, type ApiSchemas, type ApisClient, type AppIdentity, type AppType, type AuthenticatedFetch, type AvatarOption, type BooleanDescriptor, type BooleanEntry, type CatalogDescriptor, type CatalogEntry, type CatalogItem, type CatalogPage, type CatalogPageOptions, type CatalogPreview, type CatalogQuery, type CatalogResult, type CatalogSource, type CatalogsClient, type CatalogsOptions, type ClientConfig, type CreditRange, type CreditRangeContext, type CreditTier, type CreditUsage, DEFAULT_VISIBLE_RELEASES, type DeepLinkResult, type DriveAttributes, type DriveClient, type DriveConfig, type DriveFile, type DriveFileDetails, type DriveFolder, type DriveMediaItem, type DriveSaveResult, type EntryMeta, type EnumDescriptor, type EnumEntry, type EnumOption, type FileDescriptor, type FileEntry, type FlatParamEntry, type GenerateOptions, type GenerateResult, type GenerateResultItem, type GenerateResultItemMetadata, type GenerateTextResult, type GenerationContext, type GenerationEvent, GenerationEventType, type GenerationFile, type GenerationMode, type GenerationOptions, type GenerationProgress, type ListOptions, type MediaModelId, type MediaTypeFilter, Model, type ModelDefinition, type ModelDescriptor, type ModelFilter, type ModelInput, type ModelInputById, type ModelMeta, type ModelParams, type ModelParamsAccessor, Models, type ObjectDescriptor, type ObjectEntry, type ParamDescriptor, type ParamEntry, type ParamOption, type PayloadDriveFolderOptions, type PayloadDriveOptions, type PayloadInputsTransformationOptions, type PricingOptions, type ProviderInfo, type RangeDescriptor, type RangeEntry, type ReleaseTag, type SaveParams, type SdkPayload, type SdkTransport, type TextDescriptor, type TextEntry, type TextModelId, type TextModelInputById, type ToolUsage, type TransportPollOptions, type TransportResult, type TypedModelId, type UserReaction, type ValidationResult, type VoiceOption, type WorkflowJobHandle, type WorkflowSubmitRequest, buildFilename, buildGenerationAttributes, catalog, createClient, decodeDeepLinkPayload, encodeDeepLinkPayload, findModel, getModel, getModelsByMode, getVoiceById, inferResourceType, isVisibleForReleases, parseGeneration, releaseOf, toAvatarOption, toVoiceOption };
3446
+ export { ALL_MODELS, type AiClient, ApiError, type ApiErrorCode, type ApiErrorInit, type ApiResponse, type ApiRunOptions, type ApiSchemas, type ApisClient, type AppIdentity, type AppType, type AuthenticatedFetch, type AvatarOption, type BooleanDescriptor, type BooleanEntry, type CatalogDescriptor, type CatalogEntry, type CatalogItem, type CatalogPage, type CatalogPageOptions, type CatalogPreview, type CatalogQuery, type CatalogResult, type CatalogSource, type CatalogsClient, type CatalogsOptions, type ClientConfig, type CreditRange, type CreditRangeContext, type CreditTier, type CreditUsage, DEFAULT_VISIBLE_RELEASES, type DeepLinkResult, type DriveAttributes, type DriveClient, type DriveConfig, type DriveFile, type DriveFileDetails, type DriveFolder, type DriveMediaItem, type DriveSaveResult, type EntryMeta, type EnumDescriptor, type EnumEntry, type EnumOption, type FileDescriptor, type FileEntry, type FlatParamEntry, type GenerateOptions, type GenerateResult, type GenerateResultItem, type GenerateResultItemMetadata, type GenerateTextResult, type GenerationContext, type GenerationEvent, GenerationEventType, type GenerationFile, type GenerationMode, type GenerationOptions, type GenerationProgress, type ListOptions, type MediaModelId, type MediaTypeFilter, Model, type ModelDefinition, type ModelDescriptor, type ModelFilter, type ModelInput, type ModelInputById, type ModelMeta, type ModelParams, type ModelParamsAccessor, Models, type ObjectDescriptor, type ObjectEntry, type ParamDescriptor, type ParamEntry, type ParamOption, type PayloadDriveFolderOptions, type PayloadDriveOptions, type PayloadInputsTransformationOptions, type PricingOptions, type ProviderInfo, type RangeDescriptor, type RangeEntry, type ReleaseTag, type SaveParams, type SdkPayload, type SdkTransport, type SeedanceDraftTask, type TextDescriptor, type TextEntry, type TextModelId, type TextModelInputById, type ToolUsage, type TransportPollOptions, type TransportResult, type TypedModelId, type UserReaction, type ValidationResult, type VoiceOption, type WorkflowJobHandle, type WorkflowSubmitRequest, buildFilename, buildGenerationAttributes, catalog, createClient, decodeDeepLinkPayload, encodeDeepLinkPayload, findModel, getModel, getModelsByMode, getVoiceById, inferResourceType, isVisibleForReleases, parseGeneration, releaseOf, toAvatarOption, toVoiceOption };
package/index.js CHANGED
@@ -2111,6 +2111,10 @@ 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_23_REFRAME_RESOLUTIONS = ["720p", "1080p"];
2115
+ var LTX_23_REFRAME_AR = ["16:9", "9:16", "1:1", "4:5", "5:4"];
2116
+ var LTX_23_OUTPAINT_RESOLUTIONS = ["480p", "720p", "1080p"];
2117
+ var LTX_23_OUTPAINT_AR = ["21:9", "16:9", "4:3", "1:1", "3:4", "9:16", "9:21"];
2114
2118
  var LTX_25_AR = ["16:9", "9:16"];
2115
2119
  var LTX_25_PRO_RESOLUTIONS = ["720p", "1080p"];
2116
2120
  var LTX_25_FAST_RESOLUTIONS = ["720p", "1080p", "1440p", "2160p"];
@@ -2412,6 +2416,60 @@ var { MODELS: MODELS2 } = defineModels("ltx", [
2412
2416
  ...params.videoInput("Source Video")
2413
2417
  }
2414
2418
  },
2419
+ {
2420
+ id: "ltx-v2.3-reframe",
2421
+ name: "LTX 2.3 Reframe",
2422
+ modelId: "fal-ai-ltx-2.3-reframe",
2423
+ addedAt: "2026-09-23",
2424
+ workflow: "ltx-2.3/reframe",
2425
+ estimatedTime: 45,
2426
+ mode: "video",
2427
+ inputType: "v2v",
2428
+ description: "Reframe a video into a new aspect ratio \u2014 the source is re-cropped and the newly exposed edges are generated to match. Takes no prompt.",
2429
+ features: [feat("Video Input", "input"), feat("Aspect Ratio", "characteristic"), feat("Up to 1080p", "resolution")],
2430
+ paramConfig: {
2431
+ ...params.videoInput("Source Video", "asset", true),
2432
+ ...params.resolution(LTX_23_REFRAME_RESOLUTIONS, "1080p"),
2433
+ ...params.aspectRatio(LTX_23_REFRAME_AR)
2434
+ }
2435
+ },
2436
+ {
2437
+ // fal serves this one from the `ltx-2.3-quality` model id, hence the
2438
+ // workflow path; `modelId` mirrors it so the pricing key reads the same.
2439
+ id: "ltx-v2.3-outpaint",
2440
+ name: "LTX 2.3 Outpaint",
2441
+ modelId: "fal-ai-ltx-2.3-quality-outpaint",
2442
+ addedAt: "2026-09-23",
2443
+ workflow: "ltx-2.3-quality/outpaint",
2444
+ estimatedTime: 180,
2445
+ mode: "video",
2446
+ inputType: "v2v",
2447
+ description: "Expand a video past its original frame \u2014 the source stays put inside a wider canvas and the surrounding region is generated to match.",
2448
+ features: [feat("Video Input", "input"), feat("Outpaint", "characteristic"), feat("Audio", "audio"), feat("Up to 1080p", "resolution")],
2449
+ paramConfig: {
2450
+ ...params.prompt({ maxLength: LTX_PROMPT_MAX }),
2451
+ ...params.videoInput("Source Video", "asset", true),
2452
+ ...params.negativePrompt(),
2453
+ ...params.aspectRatio(LTX_23_OUTPAINT_AR),
2454
+ ...params.resolution(LTX_23_OUTPAINT_RESOLUTIONS, "720p"),
2455
+ ...p.range("numFrames", 9, 481, 121, { label: "Frames" }),
2456
+ ...p.range("fps", 1, 60, 24, { label: "FPS" }),
2457
+ // 1.0 fits the source as large as the canvas allows; lower values zoom it
2458
+ // out and leave a wider generated border, which the vendor calls less stable.
2459
+ ...p.range("sourceScale", 0.25, 1, 1, { step: 0.05, label: "Source Scale" }),
2460
+ // How strongly the original content is preserved inside the new canvas.
2461
+ ...p.range("videoStrength", 0, 1, 1, { step: 0.05, label: "Source Strength" }),
2462
+ ...params.cfgScale(1, 20, 1),
2463
+ ...p.range("numInferenceSteps", 8, 30, 15, { label: "Inference Steps" }),
2464
+ ...p.enum("videoQuality", ["low", "medium", "high", "maximum"], "high", { label: "Video Quality" }),
2465
+ ...p.enum("videoWriteMode", ["fast", "balanced", "small"], "balanced", { label: "Write Mode" }),
2466
+ ...params.enhancePrompt(),
2467
+ ...params.generateAudio(),
2468
+ ...p.boolean("enableSafetyChecker", true, "Safety Checker"),
2469
+ // Default-less on purpose: unset means the vendor picks a random seed.
2470
+ ...params.seed()
2471
+ }
2472
+ },
2415
2473
  // ── LTX 2.5 ──────────────────────────────────────────────────────
2416
2474
  // One entry per tier: text-to-video on `workflow`, image-to-video on
2417
2475
  // `editWorkflow`. A start or end frame is what routes a call to the image
@@ -3993,7 +4051,61 @@ var seedance25OutputFormat = (ctx) => {
3993
4051
  if (ctx.outputFormat === "mov") return "mov";
3994
4052
  return ctx.colorDepth === "8bit" ? "mp4_8bit" : "mp4";
3995
4053
  };
3996
- var buildSeedance25PayloadFor = (modelAlias) => (ctx) => {
4054
+ var SEEDANCE_25_DRAFT_RESOLUTION = "480p";
4055
+ var SEEDANCE_25_DRAFT_FINAL_RESOLUTION = "1080p";
4056
+ var withSeedance25DraftMode = (modelAlias, build) => (ctx) => {
4057
+ const { draft, draftTask } = ctx;
4058
+ if (draftTask) {
4059
+ const sentContent = build(ctx).content ?? [];
4060
+ return {
4061
+ model: modelAlias,
4062
+ content: [{ type: "draft_task", draft_task: draftTask }, ...sentContent],
4063
+ resolution: ctx.resolution ?? SEEDANCE_25_DRAFT_FINAL_RESOLUTION,
4064
+ output_format: seedance25OutputFormat(ctx),
4065
+ ...ctx.returnLastFrame ? { return_last_frame: true } : {},
4066
+ ...ctx.aspectRatio !== void 0 ? { ratio: ctx.aspectRatio } : {},
4067
+ ...ctx.duration !== void 0 ? { duration: ctx.duration } : {},
4068
+ ...ctx.generateAudio !== void 0 ? { generate_audio: ctx.generateAudio } : {},
4069
+ ...draft !== void 0 ? { draft } : {}
4070
+ };
4071
+ }
4072
+ const payload = build(ctx);
4073
+ return draft ? { ...payload, draft: true, resolution: ctx.resolution ?? SEEDANCE_25_DRAFT_RESOLUTION } : payload;
4074
+ };
4075
+ var SEEDANCE_25_DRAFT_RESOLUTION_REASON = "Draft previews render at 480p only.";
4076
+ var SEEDANCE_25_DRAFT_FINAL_RESOLUTION_REASON = "The final video from a draft renders at 1080p only.";
4077
+ var SEEDANCE_25_DRAFT_REUSED_REASON = "A final from a draft reuses the draft's settings.";
4078
+ var seedance25DraftConstraints = [
4079
+ {
4080
+ when: { draft: { is: true } },
4081
+ then: { resolution: { allowed: [SEEDANCE_25_DRAFT_RESOLUTION], reason: SEEDANCE_25_DRAFT_RESOLUTION_REASON } }
4082
+ }
4083
+ ];
4084
+ var seedance25DraftFinalConstraints = [
4085
+ ...seedance25DraftConstraints,
4086
+ {
4087
+ when: { draftTask: { exists: true } },
4088
+ then: {
4089
+ resolution: { allowed: [SEEDANCE_25_DRAFT_FINAL_RESOLUTION], reason: SEEDANCE_25_DRAFT_FINAL_RESOLUTION_REASON },
4090
+ draft: { disabled: true, reason: "A final video is rendered from a draft, not as one." },
4091
+ ...Object.fromEntries([
4092
+ "prompt",
4093
+ "imageUrls",
4094
+ "videoUrls",
4095
+ "audioUrls",
4096
+ "startFrame",
4097
+ "endFrame",
4098
+ "aspectRatio",
4099
+ "duration",
4100
+ "generateAudio"
4101
+ ].map((key) => [
4102
+ key,
4103
+ { disabled: true, reason: SEEDANCE_25_DRAFT_REUSED_REASON }
4104
+ ]))
4105
+ }
4106
+ }
4107
+ ];
4108
+ var buildSeedance25PayloadFor = (modelAlias) => withSeedance25DraftMode(modelAlias, (ctx) => {
3997
4109
  const refImages = ctx.imageUrls ?? [];
3998
4110
  const refVideos = ctx.videoUrls ?? [];
3999
4111
  const refAudios = ctx.audioUrls ?? [];
@@ -4018,7 +4130,9 @@ var buildSeedance25PayloadFor = (modelAlias) => (ctx) => {
4018
4130
  role: "reference_audio"
4019
4131
  })),
4020
4132
  ...ctx.endFrame ? [{ type: "image_url", image_url: { url: ctx.endFrame }, role: "last_frame" }] : [],
4021
- { type: "text", text: ctx.prompt }
4133
+ // The prompt is optional on 2.5 (media-only input is valid); an empty
4134
+ // text item is not sent.
4135
+ ...ctx.prompt?.trim() ? [{ type: "text", text: ctx.prompt }] : []
4022
4136
  ],
4023
4137
  ratio: usesFrame ? "adaptive" : ctx.aspectRatio ?? "16:9",
4024
4138
  duration: ctx.duration ?? 5,
@@ -4027,8 +4141,8 @@ var buildSeedance25PayloadFor = (modelAlias) => (ctx) => {
4027
4141
  output_format: seedance25OutputFormat(ctx),
4028
4142
  ...ctx.returnLastFrame ? { return_last_frame: true } : {}
4029
4143
  };
4030
- };
4031
- var buildSeedance25VideoEditPayloadFor = (modelAlias) => (ctx) => ({
4144
+ });
4145
+ var buildSeedance25VideoEditPayloadFor = (modelAlias) => withSeedance25DraftMode(modelAlias, (ctx) => ({
4032
4146
  model: modelAlias,
4033
4147
  content: [
4034
4148
  { type: "text", text: ctx.prompt },
@@ -4045,8 +4159,8 @@ var buildSeedance25VideoEditPayloadFor = (modelAlias) => (ctx) => ({
4045
4159
  generate_audio: ctx.generateAudio ?? true,
4046
4160
  output_format: seedance25OutputFormat(ctx),
4047
4161
  ...ctx.returnLastFrame ? { return_last_frame: true } : {}
4048
- });
4049
- var buildSeedance25VideoExtendPayloadFor = (modelAlias) => (ctx) => ({
4162
+ }));
4163
+ var buildSeedance25VideoExtendPayloadFor = (modelAlias) => withSeedance25DraftMode(modelAlias, (ctx) => ({
4050
4164
  model: modelAlias,
4051
4165
  content: [
4052
4166
  { type: "text", text: ctx.prompt },
@@ -4061,12 +4175,27 @@ var buildSeedance25VideoExtendPayloadFor = (modelAlias) => (ctx) => ({
4061
4175
  resolution: ctx.resolution ?? "1080p",
4062
4176
  generate_audio: ctx.generateAudio ?? true,
4063
4177
  output_format: seedance25OutputFormat(ctx)
4064
- });
4178
+ }));
4065
4179
  var SEEDANCE_AR = ["16:9", "9:16", "1:1", "4:3", "3:4", "21:9", "adaptive"];
4066
4180
  var SEEDANCE_25_FORMATS = ["mp4", "mov"];
4067
4181
  var SEEDANCE_25_COLOR_DEPTHS = ["10bit", "8bit"];
4068
4182
  var SEEDANCE_V2_DURATIONS = [4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15];
4069
4183
  var SEEDANCE_25_DURATION = { min: 4, max: 30 };
4184
+ var seedance25DraftParam = p.boolean("draft", false, "Draft");
4185
+ var seedance25DraftTaskParam = {
4186
+ draftTask: {
4187
+ label: "Draft",
4188
+ required: false,
4189
+ descriptor: {
4190
+ kind: "object",
4191
+ fields: {
4192
+ id: { kind: "text" },
4193
+ video_input: { kind: "boolean", default: false },
4194
+ signature: { kind: "text" }
4195
+ }
4196
+ }
4197
+ }
4198
+ };
4070
4199
  var { MODELS: MODELS12 } = defineModels("seedance", [
4071
4200
  {
4072
4201
  id: "seedance-2.5",
@@ -4075,7 +4204,7 @@ var { MODELS: MODELS12 } = defineModels("seedance", [
4075
4204
  addedAt: "2026-08-06",
4076
4205
  workflow: "seedance",
4077
4206
  buildPayload: buildSeedance25PayloadFor("seedance_2_5"),
4078
- constraints: seedance25Constraints,
4207
+ constraints: [...seedance25Constraints, ...seedance25DraftFinalConstraints],
4079
4208
  estimatedTime: 20,
4080
4209
  mode: "video",
4081
4210
  inputType: "t2v",
@@ -4083,7 +4212,9 @@ var { MODELS: MODELS12 } = defineModels("seedance", [
4083
4212
  description: "Latest cinematic video with audio, multi-reference input, and mp4/mov output in 10- or 8-bit. Up to 30s.",
4084
4213
  features: [feat("Reference Image", "frame"), feat("Start/End Frame", "frame"), feat("Audio", "audio"), feat("1080p", "resolution"), feat("4-30 sec", "duration")],
4085
4214
  paramConfig: {
4086
- ...params.prompt(),
4215
+ // Optional on 2.5 (media-only input is valid) — and a final from a
4216
+ // draft must not carry one (the vendor refuses it).
4217
+ ...params.prompt({ required: false }),
4087
4218
  ...params.aspectRatio(SEEDANCE_AR),
4088
4219
  ...params.resolution(["480p", "720p", "1080p"], "1080p"),
4089
4220
  ...params.durationRange(SEEDANCE_25_DURATION.min, SEEDANCE_25_DURATION.max, 5),
@@ -4091,6 +4222,8 @@ var { MODELS: MODELS12 } = defineModels("seedance", [
4091
4222
  ...params.returnLastFrame(),
4092
4223
  ...p.enum("outputFormat", SEEDANCE_25_FORMATS, "mp4", { label: "Format" }),
4093
4224
  ...p.enum("colorDepth", SEEDANCE_25_COLOR_DEPTHS, "10bit", { label: "Color Depth" }),
4225
+ ...seedance25DraftParam,
4226
+ ...seedance25DraftTaskParam,
4094
4227
  // 2.5 lifts the reference caps to 30 images / 10 videos / 10 audios.
4095
4228
  ...params.imageInput(30, "Reference Images", false, "reference", SEEDANCE_IMAGE_BOUNDS),
4096
4229
  ...params.videoInputs(10, "Reference Videos", false, SEEDANCE_25_VIDEO_BOUNDS),
@@ -4110,7 +4243,7 @@ var { MODELS: MODELS12 } = defineModels("seedance", [
4110
4243
  release: "preview",
4111
4244
  workflow: "seedance",
4112
4245
  buildPayload: buildSeedance25PayloadFor("seedance_2_5_without_moderation"),
4113
- constraints: seedance25Constraints,
4246
+ constraints: [...seedance25Constraints, ...seedance25DraftFinalConstraints],
4114
4247
  estimatedTime: 20,
4115
4248
  mode: "video",
4116
4249
  inputType: "t2v",
@@ -4118,7 +4251,9 @@ var { MODELS: MODELS12 } = defineModels("seedance", [
4118
4251
  description: "Seedance 2.5 with vendor moderation disabled \u2014 cinematic video with audio, multi-reference input, and mp4/mov output in 10- or 8-bit. Up to 30s.",
4119
4252
  features: [feat("Reference Image", "frame"), feat("Start/End Frame", "frame"), feat("Audio", "audio"), feat("1080p", "resolution"), feat("4-30 sec", "duration")],
4120
4253
  paramConfig: {
4121
- ...params.prompt(),
4254
+ // Optional on 2.5 (media-only input is valid) — and a final from a
4255
+ // draft must not carry one (the vendor refuses it).
4256
+ ...params.prompt({ required: false }),
4122
4257
  ...params.aspectRatio(SEEDANCE_AR),
4123
4258
  ...params.resolution(["480p", "720p", "1080p"], "1080p"),
4124
4259
  ...params.durationRange(SEEDANCE_25_DURATION.min, SEEDANCE_25_DURATION.max, 5),
@@ -4126,6 +4261,8 @@ var { MODELS: MODELS12 } = defineModels("seedance", [
4126
4261
  ...params.returnLastFrame(),
4127
4262
  ...p.enum("outputFormat", SEEDANCE_25_FORMATS, "mp4", { label: "Format" }),
4128
4263
  ...p.enum("colorDepth", SEEDANCE_25_COLOR_DEPTHS, "10bit", { label: "Color Depth" }),
4264
+ ...seedance25DraftParam,
4265
+ ...seedance25DraftTaskParam,
4129
4266
  // 2.5 lifts the reference caps to 30 images / 10 videos / 10 audios.
4130
4267
  ...params.imageInput(30, "Reference Images", false, "reference", SEEDANCE_IMAGE_BOUNDS),
4131
4268
  ...params.videoInputs(10, "Reference Videos", false, SEEDANCE_25_VIDEO_BOUNDS),
@@ -4141,7 +4278,7 @@ var { MODELS: MODELS12 } = defineModels("seedance", [
4141
4278
  addedAt: "2026-08-06",
4142
4279
  workflow: "seedance",
4143
4280
  buildPayload: buildSeedance25VideoEditPayloadFor("seedance_2_5"),
4144
- constraints: seedance25ColorDepthConstraints,
4281
+ constraints: [...seedance25ColorDepthConstraints, ...seedance25DraftConstraints],
4145
4282
  estimatedTime: 60,
4146
4283
  mode: "video",
4147
4284
  inputType: "v2v",
@@ -4158,6 +4295,7 @@ var { MODELS: MODELS12 } = defineModels("seedance", [
4158
4295
  ...params.returnLastFrame(),
4159
4296
  ...p.enum("outputFormat", SEEDANCE_25_FORMATS, "mp4", { label: "Format" }),
4160
4297
  ...p.enum("colorDepth", SEEDANCE_25_COLOR_DEPTHS, "10bit", { label: "Color Depth" }),
4298
+ ...seedance25DraftParam,
4161
4299
  // Every limit rides in `bounds`; the positional maxDuration / maxShortSide
4162
4300
  // / maxBytes args predate it and are skipped rather than duplicated.
4163
4301
  ...params.videoInput("Source Video", "reference", true, void 0, void 0, void 0, SEEDANCE_25_VIDEO_BOUNDS),
@@ -4172,7 +4310,7 @@ var { MODELS: MODELS12 } = defineModels("seedance", [
4172
4310
  release: "preview",
4173
4311
  workflow: "seedance",
4174
4312
  buildPayload: buildSeedance25VideoEditPayloadFor("seedance_2_5_without_moderation"),
4175
- constraints: seedance25ColorDepthConstraints,
4313
+ constraints: [...seedance25ColorDepthConstraints, ...seedance25DraftConstraints],
4176
4314
  estimatedTime: 60,
4177
4315
  mode: "video",
4178
4316
  inputType: "v2v",
@@ -4189,6 +4327,7 @@ var { MODELS: MODELS12 } = defineModels("seedance", [
4189
4327
  ...params.returnLastFrame(),
4190
4328
  ...p.enum("outputFormat", SEEDANCE_25_FORMATS, "mp4", { label: "Format" }),
4191
4329
  ...p.enum("colorDepth", SEEDANCE_25_COLOR_DEPTHS, "10bit", { label: "Color Depth" }),
4330
+ ...seedance25DraftParam,
4192
4331
  // Every limit rides in `bounds`; the positional maxDuration / maxShortSide
4193
4332
  // / maxBytes args predate it and are skipped rather than duplicated.
4194
4333
  ...params.videoInput("Source Video", "reference", true, void 0, void 0, void 0, SEEDANCE_25_VIDEO_BOUNDS),
@@ -4202,7 +4341,7 @@ var { MODELS: MODELS12 } = defineModels("seedance", [
4202
4341
  addedAt: "2026-08-06",
4203
4342
  workflow: "seedance",
4204
4343
  buildPayload: buildSeedance25VideoExtendPayloadFor("seedance_2_5"),
4205
- constraints: seedance25ColorDepthConstraints,
4344
+ constraints: [...seedance25ColorDepthConstraints, ...seedance25DraftConstraints],
4206
4345
  estimatedTime: 200,
4207
4346
  mode: "video",
4208
4347
  inputType: "v2v",
@@ -4219,6 +4358,7 @@ var { MODELS: MODELS12 } = defineModels("seedance", [
4219
4358
  ...params.generateAudio(),
4220
4359
  ...p.enum("outputFormat", SEEDANCE_25_FORMATS, "mp4", { label: "Format" }),
4221
4360
  ...p.enum("colorDepth", SEEDANCE_25_COLOR_DEPTHS, "10bit", { label: "Color Depth" }),
4361
+ ...seedance25DraftParam,
4222
4362
  ...params.videoInputs(10, "Source Videos", true, SEEDANCE_25_VIDEO_BOUNDS)
4223
4363
  }
4224
4364
  },
@@ -4230,7 +4370,7 @@ var { MODELS: MODELS12 } = defineModels("seedance", [
4230
4370
  release: "preview",
4231
4371
  workflow: "seedance",
4232
4372
  buildPayload: buildSeedance25VideoExtendPayloadFor("seedance_2_5_without_moderation"),
4233
- constraints: seedance25ColorDepthConstraints,
4373
+ constraints: [...seedance25ColorDepthConstraints, ...seedance25DraftConstraints],
4234
4374
  estimatedTime: 200,
4235
4375
  mode: "video",
4236
4376
  inputType: "v2v",
@@ -4247,6 +4387,7 @@ var { MODELS: MODELS12 } = defineModels("seedance", [
4247
4387
  ...params.generateAudio(),
4248
4388
  ...p.enum("outputFormat", SEEDANCE_25_FORMATS, "mp4", { label: "Format" }),
4249
4389
  ...p.enum("colorDepth", SEEDANCE_25_COLOR_DEPTHS, "10bit", { label: "Color Depth" }),
4390
+ ...seedance25DraftParam,
4250
4391
  ...params.videoInputs(10, "Source Videos", true, SEEDANCE_25_VIDEO_BOUNDS)
4251
4392
  }
4252
4393
  },
@@ -9800,9 +9941,35 @@ var buildLtx25FastI2VPayload = (input) => ({
9800
9941
  ...input.cameraMotion && input.cameraMotion !== "none" ? { camera_motion: input.cameraMotion } : {},
9801
9942
  generate_audio: input.generateAudio ?? true
9802
9943
  });
9944
+ var buildLtx23ReframePayload = (input) => ({
9945
+ video_url: input.videoUrl,
9946
+ ...input.resolution ? { resolution: input.resolution } : {},
9947
+ ...input.aspectRatio ? { aspect_ratio: input.aspectRatio } : {}
9948
+ });
9949
+ var buildLtx23OutpaintPayload = (input) => ({
9950
+ prompt: input.prompt,
9951
+ video_url: input.videoUrl,
9952
+ ...input.negativePrompt ? { negative_prompt: input.negativePrompt } : {},
9953
+ ...input.aspectRatio ? { aspect_ratio: input.aspectRatio } : {},
9954
+ ...input.resolution ? { output_resolution: input.resolution } : {},
9955
+ ...input.numFrames != null ? { num_frames: input.numFrames } : {},
9956
+ ...input.fps != null ? { frames_per_second: input.fps } : {},
9957
+ ...input.sourceScale != null ? { source_scale: input.sourceScale } : {},
9958
+ ...input.videoStrength != null ? { video_strength: input.videoStrength } : {},
9959
+ ...input.cfgScale != null ? { guidance_scale: input.cfgScale } : {},
9960
+ ...input.numInferenceSteps != null ? { num_inference_steps: input.numInferenceSteps } : {},
9961
+ ...input.videoQuality ? { video_quality: input.videoQuality } : {},
9962
+ ...input.videoWriteMode ? { video_write_mode: input.videoWriteMode } : {},
9963
+ ...input.seed != null ? { seed: input.seed } : {},
9964
+ enable_prompt_expansion: input.enhancePrompt ?? true,
9965
+ generate_audio: input.generateAudio ?? true,
9966
+ enable_safety_checker: input.enableSafetyChecker ?? true
9967
+ });
9803
9968
  registerPayloads(MODELS2, {
9804
9969
  "ltx-v2.5-pro": buildLtx25ProT2VPayload,
9805
- "ltx-v2.5-fast": buildLtx25FastT2VPayload
9970
+ "ltx-v2.5-fast": buildLtx25FastT2VPayload,
9971
+ "ltx-v2.3-reframe": buildLtx23ReframePayload,
9972
+ "ltx-v2.3-outpaint": buildLtx23OutpaintPayload
9806
9973
  });
9807
9974
  registerEditPayloads(MODELS2, {
9808
9975
  "ltx-v2.5-pro": buildLtx25ProI2VPayload,
@@ -10084,6 +10251,10 @@ var extractAllResults = (result) => {
10084
10251
  }
10085
10252
  return items.length > 0 ? items : void 0;
10086
10253
  };
10254
+ var isSeedanceDraftTask = (value) => {
10255
+ const v = value;
10256
+ return !!v && typeof v === "object" && typeof v.id === "string" && typeof v.video_input === "boolean" && typeof v.signature === "string";
10257
+ };
10087
10258
  function buildItemMetadata(parsed, item, _index, provider) {
10088
10259
  const meta = {};
10089
10260
  const top = parsed && typeof parsed === "object" ? parsed : void 0;
@@ -10092,6 +10263,10 @@ function buildItemMetadata(parsed, item, _index, provider) {
10092
10263
  if (provider === "elevenlabs" && typeof it?.generated_voice_id === "string") meta.generatedVoiceId = it.generated_voice_id;
10093
10264
  const lastFrame = it?.last_frame_url ?? top?.last_frame_url;
10094
10265
  if (typeof lastFrame === "string") meta.lastFrameUrl = lastFrame;
10266
+ const draftTask = top?.draft_task;
10267
+ if (provider === "seedance" && isSeedanceDraftTask(draftTask)) {
10268
+ meta.draftTask = { id: draftTask.id, video_input: draftTask.video_input, signature: draftTask.signature };
10269
+ }
10095
10270
  return Object.keys(meta).length > 0 ? meta : void 0;
10096
10271
  }
10097
10272
  function toCompletedStatus(handle, result, raw, usage) {
@@ -12472,7 +12647,9 @@ var LtxV2Fast = "ltx-v2-fast";
12472
12647
  var LtxV2Retake = "ltx-v2-retake";
12473
12648
  var LtxV23Extend = "ltx-v2.3-extend";
12474
12649
  var LtxV23Fast = "ltx-v2.3-fast";
12650
+ var LtxV23Outpaint = "ltx-v2.3-outpaint";
12475
12651
  var LtxV23Pro = "ltx-v2.3-pro";
12652
+ var LtxV23Reframe = "ltx-v2.3-reframe";
12476
12653
  var LtxV23Retake = "ltx-v2.3-retake";
12477
12654
  var LtxV25Fast = "ltx-v2.5-fast";
12478
12655
  var LtxV25Pro = "ltx-v2.5-pro";
@@ -12715,7 +12892,9 @@ var Models = {
12715
12892
  LtxV2Retake,
12716
12893
  LtxV23Extend,
12717
12894
  LtxV23Fast,
12895
+ LtxV23Outpaint,
12718
12896
  LtxV23Pro,
12897
+ LtxV23Reframe,
12719
12898
  LtxV23Retake,
12720
12899
  LtxV25Fast,
12721
12900
  LtxV25Pro,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@picsart/ai-sdk",
3
- "version": "6.9.0",
3
+ "version": "6.10.1",
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",