@blitzreels/sdk 0.1.3 → 0.1.5

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/index.d.ts CHANGED
@@ -1,3 +1,6 @@
1
+ import { type AiEditResource } from "./resources/ai-edit.js";
2
+ import { type CaptionsResource } from "./resources/captions.js";
3
+ import { type TimelineResource } from "./resources/timeline.js";
1
4
  export type HttpMethod = "GET" | "POST" | "PATCH" | "DELETE";
2
5
  export type JsonObject = Record<string, unknown>;
3
6
  export type QueryValue = string | number | boolean | null | undefined;
@@ -20,11 +23,16 @@ export type BlitzReelsErrorOptions = {
20
23
  status: number;
21
24
  requestId: string | null;
22
25
  body: unknown;
26
+ code?: BlitzReelsErrorCode;
27
+ retryable?: boolean;
23
28
  };
29
+ export type BlitzReelsErrorCode = "api_error" | "auth_error" | "not_found" | "conflict" | "validation_error" | "rate_limited" | "timeout" | "server_error";
24
30
  export declare class BlitzReelsError extends Error {
25
31
  status: number;
26
32
  requestId: string | null;
27
33
  body: unknown;
34
+ code: BlitzReelsErrorCode;
35
+ retryable: boolean;
28
36
  constructor(options: BlitzReelsErrorOptions);
29
37
  }
30
38
  export type AuthValidation = {
@@ -43,9 +51,22 @@ export type AuthValidation = {
43
51
  };
44
52
  };
45
53
  export type ProjectContextMode = "summary" | "assets" | "timeline" | "transcript" | "full";
54
+ export type ProjectContextCollectionBounds = {
55
+ name: string;
56
+ offset: number;
57
+ limit: number;
58
+ total: number;
59
+ returned: number;
60
+ hasMore: boolean;
61
+ truncated: boolean;
62
+ };
63
+ export type ProjectContextBounds = {
64
+ collections: ProjectContextCollectionBounds[];
65
+ };
46
66
  export type ProjectContext = {
47
67
  mode: ProjectContextMode;
48
68
  data: unknown;
69
+ bounds: ProjectContextBounds;
49
70
  };
50
71
  export type Project = {
51
72
  id: string;
@@ -170,6 +191,8 @@ export type MediaAttachResult = {
170
191
  timeline_item_id: string | null;
171
192
  message: string | null;
172
193
  animation_applied: string | null;
194
+ layer_index: number | null;
195
+ warnings?: string[];
173
196
  }>;
174
197
  summary: {
175
198
  total: number;
@@ -177,8 +200,92 @@ export type MediaAttachResult = {
177
200
  already_in_timeline: number;
178
201
  failed: number;
179
202
  };
203
+ warnings?: string[];
180
204
  message: string;
181
205
  };
206
+ export type MediaShortSuggestionList = {
207
+ saved: JsonObject[];
208
+ drafts: JsonObject[];
209
+ };
210
+ export type GenerateMediaShortSuggestionsOptions = {
211
+ assetId: string;
212
+ contentProfile: "auto" | "podcast" | "tutorial" | "generic" | undefined;
213
+ autoTrimSilence: boolean | undefined;
214
+ };
215
+ export type ApplyMediaShortSuggestionOptions = {
216
+ assetId: string;
217
+ suggestionId: string;
218
+ projectId: string;
219
+ captionStyleId: string | null | undefined;
220
+ markSaved: boolean | undefined;
221
+ allowUnverifiedExport: boolean | undefined;
222
+ automaticLayout: JsonObject | undefined;
223
+ };
224
+ export type ApplyMediaShortSuggestionResult = {
225
+ success: boolean;
226
+ project_id: string;
227
+ asset_id: string;
228
+ suggestion_id: string;
229
+ timeline_item_id: string;
230
+ [key: string]: unknown;
231
+ };
232
+ export type ClipSelectionMode = "auto_best" | "suggestion" | "time_range";
233
+ export type ClipLayoutMode = "auto" | "prefer_split" | "prefer_focus";
234
+ export type ClipContentTypeHint = "auto" | "podcast" | "tutorial" | "generic";
235
+ export type ClipQaMode = "required" | "permissive";
236
+ export type ClipTargetOptions = {
237
+ minDurationSeconds: number | null | undefined;
238
+ maxDurationSeconds: number;
239
+ };
240
+ export type CreateClipOptions = {
241
+ projectName: string | null | undefined;
242
+ source: {
243
+ sourceType: "asset" | "youtube";
244
+ assetId: string | null | undefined;
245
+ youtubeUrl: string | null | undefined;
246
+ };
247
+ selection: {
248
+ mode: ClipSelectionMode;
249
+ suggestionId: string | null | undefined;
250
+ startSeconds: number | null | undefined;
251
+ endSeconds: number | null | undefined;
252
+ };
253
+ target: ClipTargetOptions & {
254
+ aspectRatio: "9:16";
255
+ };
256
+ layout: {
257
+ mode: ClipLayoutMode;
258
+ contentTypeHint: ClipContentTypeHint | undefined;
259
+ };
260
+ captions: {
261
+ enabled: boolean;
262
+ styleId: string | null | undefined;
263
+ };
264
+ qa: {
265
+ mode: ClipQaMode;
266
+ };
267
+ export: {
268
+ autoExport: boolean;
269
+ };
270
+ };
271
+ export type ReselectClipOptions = {
272
+ clipId: string;
273
+ selection: CreateClipOptions["selection"];
274
+ target: ClipTargetOptions | null | undefined;
275
+ };
276
+ export type RepairClipOptions = {
277
+ clipId: string;
278
+ repairMode: "auto" | "prefer_split" | "prefer_focus" | "prefer_tutorial" | "move_captions_off_faces";
279
+ };
280
+ export type ExportClipOptions = {
281
+ clipId: string;
282
+ resolution: "720p" | "1080p";
283
+ format: "mp4" | "mov";
284
+ allowBlockingQaBypass: boolean;
285
+ };
286
+ export type ClipEnvelope = {
287
+ clip: JsonObject;
288
+ };
182
289
  export type MediaAssetDetails = {
183
290
  asset: {
184
291
  id: string;
@@ -192,6 +299,26 @@ export type MediaAssetDetails = {
192
299
  aiMood: string | null;
193
300
  aiCameraMovement: string | null;
194
301
  fileSizeBytes: number;
302
+ processingStatus: string | null | undefined;
303
+ processingSubstage: string | null;
304
+ processingError: string | null;
305
+ processingErrors: JsonObject;
306
+ processingAttempts: number | null;
307
+ retryable: boolean;
308
+ providerRequestIds: {
309
+ processJobRunId: string | null;
310
+ transcribeJobRunId: string | null;
311
+ providerRequestId: string | null;
312
+ };
313
+ processing_substage: string | null;
314
+ processing_error: string | null;
315
+ processing_errors: JsonObject;
316
+ processing_attempts: number | null;
317
+ provider_request_ids: {
318
+ process_job_run_id: string | null;
319
+ transcribe_job_run_id: string | null;
320
+ provider_request_id: string | null;
321
+ };
195
322
  durationSeconds: number | null;
196
323
  dimensionsWidth: number | null;
197
324
  dimensionsHeight: number | null;
@@ -257,6 +384,24 @@ export type InsertAudioResult = {
257
384
  };
258
385
  txid: number | null;
259
386
  };
387
+ export type UpdateAudioResult = {
388
+ success: boolean;
389
+ timeline_item_id: string;
390
+ duration_seconds: number;
391
+ volume: number;
392
+ fade_in_seconds: number;
393
+ fade_out_seconds: number;
394
+ txid: number | null;
395
+ };
396
+ export type UpdateMediaOverlayResult = {
397
+ success: boolean;
398
+ timelineItemId: string;
399
+ updated: JsonObject;
400
+ animationApplied: string | null;
401
+ keyframeCount: number;
402
+ warnings?: string[];
403
+ message: string;
404
+ };
260
405
  export type TimelineEditResult = {
261
406
  action: string;
262
407
  result: unknown;
@@ -281,6 +426,51 @@ export type TimelineDeleteOptions = {
281
426
  timelineItemIds: string[];
282
427
  autoPack: boolean | undefined;
283
428
  };
429
+ export type TimelineSplitOptions = {
430
+ projectId: string;
431
+ timelineItemId: string;
432
+ splitAtSeconds: number;
433
+ snapToFrame: boolean | undefined;
434
+ };
435
+ export type TimelineTrimOptions = {
436
+ projectId: string;
437
+ timelineItemId: string;
438
+ trimStartDeltaSeconds: number | undefined;
439
+ trimEndDeltaSeconds: number | undefined;
440
+ snapToFrame: boolean | undefined;
441
+ };
442
+ export type TimelineBatchMoveOptions = {
443
+ projectId: string;
444
+ items: Array<{
445
+ timelineItemId: string;
446
+ newStartSeconds: number;
447
+ newLayerIndex: number | undefined;
448
+ }>;
449
+ };
450
+ export type TimelineBatchTrimOptions = {
451
+ projectId: string;
452
+ items: Array<{
453
+ timelineItemId: string;
454
+ trimStartDeltaSeconds: number | undefined;
455
+ trimEndDeltaSeconds: number | undefined;
456
+ }>;
457
+ snapToFrame: boolean | undefined;
458
+ };
459
+ export type TimelineBatchTransformOptions = {
460
+ projectId: string;
461
+ items: Array<Omit<TimelineTransformOptions, "projectId">>;
462
+ };
463
+ export type TimelineCutOptions = {
464
+ projectId: string;
465
+ timelineItemId: string;
466
+ cuts: Array<{
467
+ startSeconds: number;
468
+ endSeconds: number;
469
+ trimFollowingSeconds: number | undefined;
470
+ }>;
471
+ snapToFrame: boolean | undefined;
472
+ ripple: boolean | undefined;
473
+ };
284
474
  export type TimelineItemDeleteResult = {
285
475
  success: boolean;
286
476
  deleted_item_id: string;
@@ -312,6 +502,7 @@ export type CaptionWordBatchTextResult = {
312
502
  export type CaptionWordCountResult = {
313
503
  success: boolean;
314
504
  updated_count: number;
505
+ updated_word_ids: string[] | undefined;
315
506
  emphasis: boolean | undefined;
316
507
  message: string | undefined;
317
508
  };
@@ -325,10 +516,54 @@ export type CaptionWordMutationResult = {
325
516
  words: JsonObject[];
326
517
  message: string;
327
518
  };
519
+ export type CaptionTrackSelectorOptions = {
520
+ projectId: string;
521
+ all: boolean | undefined;
522
+ captionId: string | undefined;
523
+ timelineItemId: string | undefined;
524
+ fromSeconds: number | undefined;
525
+ toSeconds: number | undefined;
526
+ };
527
+ export type CaptionTrackMutationResult = {
528
+ success: boolean;
529
+ action: "delete" | "hide" | "show";
530
+ affected_count: number;
531
+ caption_ids: string[];
532
+ timeline_item_ids: string[];
533
+ message: string;
534
+ };
328
535
  export type CaptionThemeList = {
329
536
  themes: JsonObject[];
330
537
  total: number;
331
538
  };
539
+ export type CaptionTheme = JsonObject;
540
+ export type CaptionPresetList = {
541
+ presets: JsonObject[];
542
+ total: number;
543
+ };
544
+ export type CaptionLookList = {
545
+ looks: JsonObject[];
546
+ total: number;
547
+ };
548
+ export type CaptionStyle = {
549
+ success: boolean;
550
+ settings: JsonObject;
551
+ hint: string | undefined;
552
+ };
553
+ export type UpdateCaptionStyleOptions = {
554
+ projectId: string;
555
+ lookId: string | undefined;
556
+ presetId: string | undefined;
557
+ clearWordOverrides: boolean | undefined;
558
+ style: JsonObject;
559
+ };
560
+ export type CaptionStyleUpdateResult = {
561
+ success: boolean;
562
+ updated_properties: string[];
563
+ look_id: string | null | undefined;
564
+ preset_id: string | null | undefined;
565
+ message: string | undefined;
566
+ };
332
567
  export type CaptionThemePreview = {
333
568
  preview_url: string;
334
569
  expires_at: string;
@@ -340,12 +575,198 @@ export type ExportStartResult = {
340
575
  job_id: string;
341
576
  status: string;
342
577
  };
578
+ export type AiEditStyleId = "mirage-black" | "clean-founder";
579
+ export type AiEditQualityTarget = "fast" | "premium" | "frontier";
580
+ export type AiEditControllerKind = "api" | "cli" | "codex" | "claude_code" | "platform" | "unknown";
581
+ export type AiEditRunStatus = "queued" | "understanding" | "planning" | "applying" | "rendering" | "critiquing" | "repairing" | "completed" | "failed" | "needs_review";
582
+ export type AiEditStylesList = {
583
+ styles: Array<{
584
+ id: AiEditStyleId;
585
+ name: string;
586
+ description: string;
587
+ preview_image_path: string;
588
+ manual_skill: {
589
+ type: "local_skill";
590
+ path: string;
591
+ style_json_path: string;
592
+ };
593
+ spec: JsonObject;
594
+ }>;
595
+ total: number;
596
+ };
597
+ export type AiEditRunEnvelope = {
598
+ run: {
599
+ id: string;
600
+ project_id: string;
601
+ organization_id: string;
602
+ user_id: string;
603
+ api_key_id: string | null;
604
+ execution_mode: "external_controller" | "hosted_agent";
605
+ credit_mode: "external" | "platform_credits" | "byok";
606
+ controller_kind: AiEditControllerKind;
607
+ status: AiEditRunStatus;
608
+ style_id: AiEditStyleId;
609
+ quality_target: AiEditQualityTarget;
610
+ run_config: JsonObject;
611
+ budget_receipt: JsonObject;
612
+ summary: string | null;
613
+ failure_message: string | null;
614
+ completed_at: string | null;
615
+ created_at: string;
616
+ updated_at: string;
617
+ };
618
+ context: JsonObject;
619
+ };
620
+ export type AiEditRunLog = {
621
+ id: string;
622
+ run_id: string;
623
+ organization_id: string;
624
+ project_id: string;
625
+ kind: string;
626
+ status: string;
627
+ input: JsonObject;
628
+ output: JsonObject;
629
+ error_message: string | null;
630
+ created_at: string;
631
+ };
632
+ export type AiEditRunArtifact = {
633
+ id: string;
634
+ run_id: string;
635
+ organization_id: string;
636
+ project_id: string;
637
+ artifact_type: string;
638
+ time_seconds: number | null;
639
+ url: string | null;
640
+ storage_key: string | null;
641
+ metadata: JsonObject;
642
+ created_at: string;
643
+ };
644
+ export type AiEditRunLogsOptions = {
645
+ runId: string;
646
+ limit: number | undefined;
647
+ offset: number | undefined;
648
+ };
649
+ export type AiEditRunLogsEnvelope = {
650
+ run_id: string;
651
+ project_id: string;
652
+ logs: AiEditRunLog[];
653
+ artifacts: AiEditRunArtifact[];
654
+ bounds: {
655
+ logs: {
656
+ offset: number;
657
+ limit: number;
658
+ returned: number;
659
+ truncated: boolean;
660
+ };
661
+ };
662
+ };
663
+ export type AiEditAppendRunLogOptions = {
664
+ runId: string;
665
+ kind: string;
666
+ status: "queued" | "running" | "completed" | "failed" | "skipped";
667
+ message: string;
668
+ metadata: JsonObject;
669
+ dryRun: boolean | undefined;
670
+ };
671
+ export type AiEditAppendRunLogResult = {
672
+ success: true;
673
+ dry_run: boolean;
674
+ run_id: string;
675
+ log: AiEditRunLog | null;
676
+ };
677
+ export type AiEditCreateRunOptions = {
678
+ projectId: string;
679
+ styleId: AiEditStyleId;
680
+ qualityTarget: AiEditQualityTarget | undefined;
681
+ controllerKind: AiEditControllerKind | undefined;
682
+ dryRun: boolean | undefined;
683
+ };
684
+ export type AiEditApplyStyleOptions = {
685
+ runId: string;
686
+ dryRun: boolean | undefined;
687
+ titleText: string | null | undefined;
688
+ };
689
+ export type AiEditApplyStyleResult = {
690
+ success: true;
691
+ dry_run: boolean;
692
+ run_id: string;
693
+ project_id: string;
694
+ style_id: AiEditStyleId;
695
+ receipts: Array<{
696
+ action: string;
697
+ target_id: string;
698
+ dry_run: boolean;
699
+ changes: JsonObject;
700
+ }>;
701
+ txid: number | null;
702
+ };
703
+ export type AiEditSnapshotTime = "start" | "hook" | "middle" | "end";
704
+ export type AiEditRenderSnapshotsOptions = {
705
+ runId: string;
706
+ dryRun: boolean | undefined;
707
+ times: Array<number | AiEditSnapshotTime> | undefined;
708
+ targetWidth: number | undefined;
709
+ imageFormat: "jpeg" | "png" | undefined;
710
+ };
711
+ export type AiEditSnapshotsResult = {
712
+ success: true;
713
+ dry_run: boolean;
714
+ run_id: string;
715
+ project_id: string;
716
+ snapshots: Array<{
717
+ artifact_id: string | null;
718
+ preview_url: string | null;
719
+ storage_key: string | null;
720
+ frame: number | null;
721
+ time_seconds: number;
722
+ width: number | null;
723
+ height: number | null;
724
+ image_format: "jpeg" | "png";
725
+ }>;
726
+ };
727
+ export type AiEditValidateOptions = {
728
+ runId: string;
729
+ dryRun: boolean | undefined;
730
+ };
731
+ export type AiEditValidationResult = {
732
+ success: true;
733
+ dry_run: boolean;
734
+ run_id: string;
735
+ project_id: string;
736
+ passed: boolean;
737
+ checks: Array<{
738
+ rule: string;
739
+ passed: boolean;
740
+ message: string;
741
+ }>;
742
+ };
743
+ export type AiEditCompleteOptions = {
744
+ runId: string;
745
+ status: "completed" | "needs_review" | "failed";
746
+ summary: string;
747
+ dryRun: boolean | undefined;
748
+ };
749
+ export type AiEditCompleteResult = {
750
+ success: true;
751
+ dry_run: boolean;
752
+ run_id: string;
753
+ status: "completed" | "needs_review" | "failed";
754
+ summary: string;
755
+ };
343
756
  export type ExportStatus = {
344
757
  export_id: string;
345
758
  status: string;
346
759
  download_url: string | null;
347
760
  short_download_url: string | null;
348
761
  thumbnail_url: string | null;
762
+ thumbnail: {
763
+ url: string | null;
764
+ frame: number | null;
765
+ frame_seconds: number | null;
766
+ selection_mode: string | null;
767
+ rationale: string | null;
768
+ } | null;
769
+ platform_metadata: JsonObject | null;
349
770
  expires_at: string | null;
350
771
  file_size_bytes: number | null;
351
772
  duration_seconds: number | null;
@@ -381,6 +802,19 @@ export type SnapshotBatchOptions = {
381
802
  export type InspectProjectOptions = {
382
803
  projectId: string;
383
804
  mode: ProjectContextMode;
805
+ assetLimit?: number;
806
+ assetOffset?: number;
807
+ timelineLimit?: number;
808
+ timelineOffset?: number;
809
+ transcriptLimit?: number;
810
+ transcriptOffset?: number;
811
+ captionWordLimit?: number;
812
+ captionWordOffset?: number;
813
+ };
814
+ export type ProjectTimelineOptions = {
815
+ projectId: string;
816
+ limit?: number;
817
+ offset?: number;
384
818
  };
385
819
  export type ListProjectsOptions = {
386
820
  limit: number | undefined;
@@ -466,6 +900,7 @@ export type AttachMediaToProjectOptions = {
466
900
  positionY: number | undefined;
467
901
  widthPx: number | undefined;
468
902
  heightPx: number | undefined;
903
+ keepAspectRatio: boolean | undefined;
469
904
  scale: number | undefined;
470
905
  opacity: number | undefined;
471
906
  animationPreset: MediaAnimationPreset | undefined;
@@ -501,6 +936,7 @@ export type UpdateTextOptions = {
501
936
  text: string | undefined;
502
937
  name: string | undefined;
503
938
  spec: JsonObject | undefined;
939
+ durationSeconds: number | undefined;
504
940
  };
505
941
  export type RemoveTextOptions = {
506
942
  projectId: string;
@@ -516,14 +952,217 @@ export type AddAudioOptions = {
516
952
  fadeOutSeconds: number | undefined;
517
953
  loop: boolean | undefined;
518
954
  };
519
- export type MediaPositionPreset = "center" | "top-left" | "top-right" | "bottom-left" | "bottom-right" | "full-screen";
520
- export type MediaAnimationPreset = "none" | "fadeIn" | "fadeOut" | "zoomIn" | "slideIn" | "popIn" | "bounce" | "spin";
955
+ export type UpdateAudioOptions = {
956
+ projectId: string;
957
+ timelineItemId: string;
958
+ durationSeconds: number | undefined;
959
+ volume: number | undefined;
960
+ fadeInSeconds: number | undefined;
961
+ fadeOutSeconds: number | undefined;
962
+ };
963
+ export type AudioLibraryProvider = "openverse" | "freesound" | "wikimedia";
964
+ export type AudioLibraryProviderFilter = AudioLibraryProvider | "all";
965
+ export type AudioLibraryLicenseFilter = "cc0" | "public_domain" | "attribution" | "all";
966
+ export type AudioLibraryTypeFilter = "music" | "sound_effect" | "ambient" | "other";
967
+ export type StockMediaProvider = "pexels" | "freesound";
968
+ export type StockMediaAssetType = "image" | "video" | "audio";
969
+ export type StockMediaOrientation = "landscape" | "portrait" | "square";
970
+ export type StockAudioType = "sound_effect" | "ambient" | "background_music" | "other";
971
+ export type GlobalBrollLibraryAssetType = "image" | "video" | "audio";
972
+ export type GlobalBrollLibraryAudioType = "music" | "sound_effect" | "ambient" | "background_music" | "other";
973
+ export type AudioLibraryItem = {
974
+ provider: AudioLibraryProvider;
975
+ external_id: string;
976
+ title: string;
977
+ creator_name: string | null;
978
+ creator_url: string | null;
979
+ source_url: string;
980
+ preview_url: string | null;
981
+ download_url: string | null;
982
+ duration_seconds: number | null;
983
+ license_code: string;
984
+ license_url: string | null;
985
+ requires_attribution: boolean;
986
+ attribution_text: string | null;
987
+ commercial_use_allowed: boolean;
988
+ tags: string[];
989
+ };
990
+ export type SearchAudioLibraryOptions = {
991
+ query: string;
992
+ provider: AudioLibraryProviderFilter | undefined;
993
+ license: AudioLibraryLicenseFilter | undefined;
994
+ audioType: AudioLibraryTypeFilter | undefined;
995
+ minDurationSeconds: number | null | undefined;
996
+ maxDurationSeconds: number | null | undefined;
997
+ limit: number | undefined;
998
+ page: number | undefined;
999
+ };
1000
+ export type SearchAudioLibraryResult = {
1001
+ items: AudioLibraryItem[];
1002
+ warnings: string[];
1003
+ providers: AudioLibraryProvider[];
1004
+ };
1005
+ export type ImportAudioLibraryAssetOptions = {
1006
+ provider: AudioLibraryProvider;
1007
+ externalId: string;
1008
+ folderId: string | null | undefined;
1009
+ projectId: string | null | undefined;
1010
+ startSeconds: number | undefined;
1011
+ durationSeconds: number | null | undefined;
1012
+ volume: number | undefined;
1013
+ fadeInSeconds: number | undefined;
1014
+ fadeOutSeconds: number | undefined;
1015
+ loop: boolean | undefined;
1016
+ audioType: AudioLibraryTypeFilter | undefined;
1017
+ };
1018
+ export type ImportAudioLibraryAssetResult = {
1019
+ asset: {
1020
+ id: string;
1021
+ name: string;
1022
+ asset_type: "audio";
1023
+ audio_type: string;
1024
+ duration_seconds: number | null;
1025
+ source_url: string;
1026
+ license_code: string;
1027
+ license_url: string | null;
1028
+ attribution_text: string | null;
1029
+ };
1030
+ imported: boolean;
1031
+ deduped: boolean;
1032
+ timeline_item_id: string | null;
1033
+ txid: number | null;
1034
+ };
1035
+ export type StockMediaVariant = {
1036
+ id: string;
1037
+ label: string;
1038
+ url: string;
1039
+ mime_type: string;
1040
+ width: number | null;
1041
+ height: number | null;
1042
+ quality: string | null;
1043
+ };
1044
+ export type StockMediaItem = {
1045
+ provider: StockMediaProvider;
1046
+ provider_asset_id: string;
1047
+ asset_type: StockMediaAssetType;
1048
+ title: string;
1049
+ preview_url: string | null;
1050
+ thumbnail_url: string | null;
1051
+ source_url: string;
1052
+ author_name: string | null;
1053
+ author_url: string | null;
1054
+ license_code: string;
1055
+ license_url: string | null;
1056
+ requires_attribution: boolean;
1057
+ width: number | null;
1058
+ height: number | null;
1059
+ duration_seconds: number | null;
1060
+ variants: StockMediaVariant[];
1061
+ };
1062
+ export type SearchStockMediaOptions = {
1063
+ query: string;
1064
+ assetType: StockMediaAssetType;
1065
+ provider: StockMediaProvider | null | undefined;
1066
+ orientation: StockMediaOrientation | null | undefined;
1067
+ page: number | undefined;
1068
+ limit: number | undefined;
1069
+ };
1070
+ export type SearchStockMediaResult = {
1071
+ items: StockMediaItem[];
1072
+ warnings: string[];
1073
+ };
1074
+ export type ImportStockMediaOptions = {
1075
+ provider: StockMediaProvider;
1076
+ providerAssetId: string;
1077
+ assetType: StockMediaAssetType;
1078
+ variantId: string | null | undefined;
1079
+ folderId: string | null | undefined;
1080
+ audioType: StockAudioType | undefined;
1081
+ };
1082
+ export type ImportStockMediaResult = {
1083
+ asset: {
1084
+ id: string;
1085
+ name: string;
1086
+ asset_type: StockMediaAssetType;
1087
+ processing_status: string;
1088
+ source_url: string;
1089
+ license_code: string;
1090
+ license_url: string | null;
1091
+ };
1092
+ imported: boolean;
1093
+ deduped: boolean;
1094
+ };
1095
+ export type GlobalBrollLibraryItem = {
1096
+ id: string;
1097
+ asset_type: GlobalBrollLibraryAssetType;
1098
+ title: string;
1099
+ description: string;
1100
+ tags: string[];
1101
+ preview_url: string | null;
1102
+ thumbnail_url: string | null;
1103
+ mime_type: string;
1104
+ file_size_bytes: number;
1105
+ duration_seconds: number | null;
1106
+ width: number | null;
1107
+ height: number | null;
1108
+ audio_type: GlobalBrollLibraryAudioType;
1109
+ license_code: string;
1110
+ license_url: string | null;
1111
+ requires_attribution: boolean;
1112
+ attribution_text: string | null;
1113
+ source_url: string | null;
1114
+ };
1115
+ export type SearchGlobalBrollLibraryOptions = {
1116
+ query: string | null | undefined;
1117
+ assetType: GlobalBrollLibraryAssetType | null | undefined;
1118
+ audioType: GlobalBrollLibraryAudioType | null | undefined;
1119
+ limit: number | undefined;
1120
+ offset: number | undefined;
1121
+ };
1122
+ export type SearchGlobalBrollLibraryResult = {
1123
+ items: GlobalBrollLibraryItem[];
1124
+ };
1125
+ export type ImportGlobalBrollLibraryAssetOptions = {
1126
+ libraryAssetId: string;
1127
+ folderId: string | null | undefined;
1128
+ };
1129
+ export type ImportGlobalBrollLibraryAssetResult = {
1130
+ asset: {
1131
+ id: string;
1132
+ name: string;
1133
+ asset_type: GlobalBrollLibraryAssetType;
1134
+ processing_status: string;
1135
+ library_asset_id: string;
1136
+ };
1137
+ imported: boolean;
1138
+ deduped: boolean;
1139
+ };
1140
+ export type MediaPositionPreset = "center" | "top-left" | "top-right" | "bottom-left" | "bottom-right" | "fullscreen" | "full-screen";
1141
+ export type MediaAnimationPreset = "none" | "fadeIn" | "fadeOut" | "zoomIn" | "zoomOut" | "slideIn" | "slideLeft" | "slideRight" | "slideUp" | "slideDown" | "popIn" | "bounce" | "spin";
1142
+ export type UpdateMediaOverlayOptions = {
1143
+ projectId: string;
1144
+ timelineItemId: string;
1145
+ positionPreset: MediaPositionPreset | undefined;
1146
+ positionX: number | undefined;
1147
+ positionY: number | undefined;
1148
+ widthPx: number | undefined;
1149
+ heightPx: number | undefined;
1150
+ keepAspectRatio: boolean | undefined;
1151
+ scale: number | undefined;
1152
+ opacity: number | undefined;
1153
+ animationPreset: MediaAnimationPreset | undefined;
1154
+ removeAnimations: boolean | undefined;
1155
+ blurredBackground: boolean | undefined;
1156
+ };
521
1157
  export type CaptionWordSelectorOptions = {
522
1158
  projectId: string;
523
1159
  wordIds: string[] | undefined;
524
1160
  matchText: string | undefined;
525
1161
  matchPattern: "numbers" | "caps" | "exclamations" | undefined;
526
1162
  timelineItemId: string | undefined;
1163
+ all: boolean | undefined;
1164
+ fromSeconds: number | undefined;
1165
+ toSeconds: number | undefined;
527
1166
  };
528
1167
  export type ListCaptionWordsOptions = {
529
1168
  projectId: string;
@@ -553,7 +1192,11 @@ export type SetCaptionWordEmphasisOptions = CaptionWordSelectorOptions & {
553
1192
  };
554
1193
  export type DeleteCaptionWordsOptions = {
555
1194
  projectId: string;
556
- wordIds: string[];
1195
+ wordIds: string[] | undefined;
1196
+ timelineItemId: string | undefined;
1197
+ all: boolean | undefined;
1198
+ fromSeconds: number | undefined;
1199
+ toSeconds: number | undefined;
557
1200
  };
558
1201
  export type MergeCaptionWordsOptions = {
559
1202
  projectId: string;
@@ -572,11 +1215,17 @@ export type PreviewCaptionThemeOptions = {
572
1215
  targetWidth: number | undefined;
573
1216
  imageFormat: "png" | "jpeg" | undefined;
574
1217
  };
1218
+ export type UpdateCaptionThemeOptions = {
1219
+ themeId: string;
1220
+ name: string | undefined;
1221
+ description: string | undefined;
1222
+ settings: JsonObject | undefined;
1223
+ };
575
1224
  export type StartExportOptions = {
576
1225
  projectId: string;
577
1226
  resolution: string | undefined;
578
1227
  format: string | undefined;
579
- includeCaptions: boolean | undefined;
1228
+ coverFrameSeconds?: number | null;
580
1229
  };
581
1230
  export type WaitExportOptions = {
582
1231
  exportId: string;
@@ -585,7 +1234,9 @@ export type WaitExportOptions = {
585
1234
  };
586
1235
  export type SilencePlanOptions = {
587
1236
  projectId: string;
588
- timelineItemId: string;
1237
+ timelineItemId: string | undefined;
1238
+ allMediaItems: boolean | undefined;
1239
+ strategy: "audio" | "caption-gaps" | undefined;
589
1240
  paddingMs: number | undefined;
590
1241
  silenceThresholdDb: number | undefined;
591
1242
  minSilenceDurationSeconds: number | undefined;
@@ -595,6 +1246,11 @@ export type SilencePlanOptions = {
595
1246
  export type SilenceApplyOptions = SilencePlanOptions & {
596
1247
  deleteSilentClips: boolean | undefined;
597
1248
  manualSegmentOverrides: Record<string, "keep" | "cut"> | undefined;
1249
+ segments: Array<{
1250
+ timelineItemId: string | undefined;
1251
+ startSeconds: number;
1252
+ endSeconds: number;
1253
+ }> | undefined;
598
1254
  previewConfirmed: true;
599
1255
  };
600
1256
  export type MistakePlanOptions = {
@@ -607,6 +1263,63 @@ export type MistakeApplyOptions = MistakePlanOptions & {
607
1263
  deleteMistakes: boolean | undefined;
608
1264
  previewConfirmed: true;
609
1265
  };
1266
+ export type EffectEasing = "linear" | "easeIn" | "easeOut" | "easeInOut";
1267
+ export type ZoomEffectSettings = {
1268
+ scale: {
1269
+ start: number;
1270
+ end: number;
1271
+ } | undefined;
1272
+ translate: {
1273
+ start: {
1274
+ x: number;
1275
+ y: number;
1276
+ };
1277
+ end: {
1278
+ x: number;
1279
+ y: number;
1280
+ };
1281
+ } | undefined;
1282
+ anchor: {
1283
+ x: number;
1284
+ y: number;
1285
+ } | undefined;
1286
+ style: "transition" | "hard" | undefined;
1287
+ phase: "in" | "out" | "both" | "none" | undefined;
1288
+ inDurationSeconds: number | undefined;
1289
+ outDurationSeconds: number | null | undefined;
1290
+ outScale: number | null | undefined;
1291
+ };
1292
+ export type MaskEffectSettings = JsonObject;
1293
+ export type ColorGradeEffectSettings = JsonObject;
1294
+ export type AddEffectOptions<TSettings> = {
1295
+ projectId: string;
1296
+ timelineItemId: string | undefined;
1297
+ contentItemId: string | undefined;
1298
+ effectId: string | undefined;
1299
+ name: string | undefined;
1300
+ startTimeSeconds: number | undefined;
1301
+ durationSeconds: number | undefined;
1302
+ easing: EffectEasing | undefined;
1303
+ layerIndex: number | undefined;
1304
+ orderIndex: number | undefined;
1305
+ settings: TSettings | undefined;
1306
+ };
1307
+ export type UpdateEffectOptions<TSettings> = {
1308
+ projectId: string;
1309
+ timelineItemId: string;
1310
+ durationSeconds: number | undefined;
1311
+ easing: EffectEasing | undefined;
1312
+ settings: TSettings | undefined;
1313
+ };
1314
+ export type EffectMutationResult = {
1315
+ success: true;
1316
+ project_id: string;
1317
+ timeline_item_id: string;
1318
+ content_item_id: string;
1319
+ effect_id: string;
1320
+ effect_type: "zoom" | "mask" | "colorgrade";
1321
+ txid: number | null;
1322
+ };
610
1323
  export declare class BlitzReelsClient {
611
1324
  private apiKey;
612
1325
  private baseUrl;
@@ -628,20 +1341,24 @@ export declare class BlitzReelsClient {
628
1341
  success: true;
629
1342
  }>;
630
1343
  inspect: (options: InspectProjectOptions) => Promise<ProjectContext>;
631
- timeline: (options: {
632
- projectId: string;
633
- }) => Promise<ProjectContext>;
1344
+ timeline: (options: ProjectTimelineOptions) => Promise<ProjectContext>;
634
1345
  renderSnapshot: (options: SnapshotOptions) => Promise<PreviewFrame>;
635
1346
  renderSnapshots: (options: SnapshotBatchOptions) => Promise<PreviewFrames>;
636
1347
  };
637
- timeline: {
638
- transform: (options: TimelineTransformOptions) => Promise<TimelineEditResult>;
639
- move: (options: TimelineMoveOptions) => Promise<TimelineEditResult>;
640
- delete: (options: TimelineDeleteOptions) => Promise<TimelineEditResult>;
641
- deleteItem: (options: {
642
- projectId: string;
643
- timelineItemId: string;
644
- }) => Promise<TimelineItemDeleteResult>;
1348
+ timeline: TimelineResource;
1349
+ effects: {
1350
+ zoom: {
1351
+ add: (options: AddEffectOptions<ZoomEffectSettings>) => Promise<EffectMutationResult>;
1352
+ update: (options: UpdateEffectOptions<ZoomEffectSettings>) => Promise<EffectMutationResult>;
1353
+ };
1354
+ mask: {
1355
+ add: (options: AddEffectOptions<MaskEffectSettings>) => Promise<EffectMutationResult>;
1356
+ update: (options: UpdateEffectOptions<MaskEffectSettings>) => Promise<EffectMutationResult>;
1357
+ };
1358
+ colorgrade: {
1359
+ add: (options: AddEffectOptions<ColorGradeEffectSettings>) => Promise<EffectMutationResult>;
1360
+ update: (options: UpdateEffectOptions<ColorGradeEffectSettings>) => Promise<EffectMutationResult>;
1361
+ };
645
1362
  };
646
1363
  workspace: {
647
1364
  getSettings: () => Promise<WorkspaceSettings>;
@@ -652,6 +1369,10 @@ export declare class BlitzReelsClient {
652
1369
  get: (options: {
653
1370
  assetId: string;
654
1371
  }) => Promise<MediaAssetDetails>;
1372
+ clippingStatus: (options: {
1373
+ assetId: string;
1374
+ projectId: string | undefined;
1375
+ }) => Promise<JsonObject>;
655
1376
  delete: (options: {
656
1377
  assetId: string;
657
1378
  }) => Promise<{
@@ -663,6 +1384,16 @@ export declare class BlitzReelsClient {
663
1384
  update: (options: UpdateMediaOptions) => Promise<MediaAssetUpdateResult>;
664
1385
  move: (options: MoveMediaOptions) => Promise<MediaMoveResult>;
665
1386
  attachToProject: (options: AttachMediaToProjectOptions) => Promise<MediaAttachResult>;
1387
+ updateOverlay: (options: UpdateMediaOverlayOptions) => Promise<UpdateMediaOverlayResult>;
1388
+ shorts: {
1389
+ list: (options: {
1390
+ assetId: string;
1391
+ }) => Promise<MediaShortSuggestionList>;
1392
+ generate: (options: GenerateMediaShortSuggestionsOptions) => Promise<{
1393
+ run_id: string;
1394
+ }>;
1395
+ apply: (options: ApplyMediaShortSuggestionOptions) => Promise<ApplyMediaShortSuggestionResult>;
1396
+ };
666
1397
  folders: {
667
1398
  list: (options: ListMediaFoldersOptions) => Promise<MediaFoldersList>;
668
1399
  create: (options: CreateMediaFolderOptions) => Promise<{
@@ -681,6 +1412,15 @@ export declare class BlitzReelsClient {
681
1412
  }>;
682
1413
  };
683
1414
  };
1415
+ clips: {
1416
+ create: (options: CreateClipOptions) => Promise<ClipEnvelope>;
1417
+ get: (options: {
1418
+ clipId: string;
1419
+ }) => Promise<ClipEnvelope>;
1420
+ reselect: (options: ReselectClipOptions) => Promise<ClipEnvelope>;
1421
+ repair: (options: RepairClipOptions) => Promise<ClipEnvelope>;
1422
+ export: (options: ExportClipOptions) => Promise<ClipEnvelope>;
1423
+ };
684
1424
  text: {
685
1425
  add: (options: AddTextOptions) => Promise<CreateContentItemResult>;
686
1426
  list: (options: {
@@ -695,6 +1435,19 @@ export declare class BlitzReelsClient {
695
1435
  };
696
1436
  audio: {
697
1437
  add: (options: AddAudioOptions) => Promise<InsertAudioResult>;
1438
+ update: (options: UpdateAudioOptions) => Promise<UpdateAudioResult>;
1439
+ };
1440
+ audioLibrary: {
1441
+ search: (options: SearchAudioLibraryOptions) => Promise<SearchAudioLibraryResult>;
1442
+ importAsset: (options: ImportAudioLibraryAssetOptions) => Promise<ImportAudioLibraryAssetResult>;
1443
+ };
1444
+ stockMedia: {
1445
+ search: (options: SearchStockMediaOptions) => Promise<SearchStockMediaResult>;
1446
+ importAsset: (options: ImportStockMediaOptions) => Promise<ImportStockMediaResult>;
1447
+ };
1448
+ library: {
1449
+ search: (options: SearchGlobalBrollLibraryOptions) => Promise<SearchGlobalBrollLibraryResult>;
1450
+ importAsset: (options: ImportGlobalBrollLibraryAssetOptions) => Promise<ImportGlobalBrollLibraryAssetResult>;
698
1451
  };
699
1452
  silence: {
700
1453
  plan: (options: SilencePlanOptions) => Promise<unknown>;
@@ -704,30 +1457,8 @@ export declare class BlitzReelsClient {
704
1457
  plan: (options: MistakePlanOptions) => Promise<unknown>;
705
1458
  apply: (options: MistakeApplyOptions) => Promise<unknown>;
706
1459
  };
707
- captions: {
708
- listWords: (options: ListCaptionWordsOptions) => Promise<CaptionWordsList>;
709
- updateWordText: (options: UpdateCaptionWordTextOptions) => Promise<CaptionWordTextResult>;
710
- batchUpdateWordText: (options: BatchUpdateCaptionWordTextOptions) => Promise<CaptionWordBatchTextResult>;
711
- setWordStyle: (options: SetCaptionWordStyleOptions) => Promise<CaptionWordCountResult>;
712
- setWordEmphasis: (options: SetCaptionWordEmphasisOptions) => Promise<CaptionWordCountResult>;
713
- deleteWords: (options: DeleteCaptionWordsOptions) => Promise<CaptionWordMutationResult>;
714
- mergeWords: (options: MergeCaptionWordsOptions) => Promise<CaptionWordMutationResult>;
715
- splitWord: (options: SplitCaptionWordOptions) => Promise<CaptionWordMutationResult>;
716
- listThemes: () => Promise<CaptionThemeList>;
717
- setDefaultTheme: (options: {
718
- themeId: string;
719
- }) => Promise<{
720
- success: boolean;
721
- }>;
722
- setProjectTheme: (options: {
723
- projectId: string;
724
- themeId: string;
725
- }) => Promise<{
726
- success: boolean;
727
- theme_id: string;
728
- }>;
729
- previewTheme: (options: PreviewCaptionThemeOptions) => Promise<CaptionThemePreview>;
730
- };
1460
+ aiEdit: AiEditResource;
1461
+ captions: CaptionsResource;
731
1462
  exports: {
732
1463
  start: (options: StartExportOptions) => Promise<ExportStartResult>;
733
1464
  get: (options: {