From fbd973eb98673f10fd119f27002c145ce2ac875d Mon Sep 17 00:00:00 2001
From: "stainless-app[bot]"
<142633134+stainless-app[bot]@users.noreply.github.com>
Date: Fri, 26 Jun 2026 21:17:19 +0000
Subject: [PATCH 1/4] feat(api): add magnific video upscale model
Adds magnific_video_upscaler_creative request schema to POST /v1/video_upscale.
---
.stats.yml | 8 +--
api.md | 10 +++
src/client.ts | 16 +++++
src/resources/index.ts | 5 ++
src/resources/organization.ts | 6 +-
src/resources/video-to-video.ts | 3 +-
src/resources/video-upscale.ts | 80 +++++++++++++++++++++++
tests/api-resources/video-upscale.test.ts | 37 +++++++++++
8 files changed, 158 insertions(+), 7 deletions(-)
create mode 100644 src/resources/video-upscale.ts
create mode 100644 tests/api-resources/video-upscale.test.ts
diff --git a/.stats.yml b/.stats.yml
index 9fff147..aae4eec 100644
--- a/.stats.yml
+++ b/.stats.yml
@@ -1,4 +1,4 @@
-configured_endpoints: 49
-openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/runwayml/runwayml-a71b15907f45c6c7b3cf9a277bfc7483817c1596130abd497e95b761bb14bd42.yml
-openapi_spec_hash: dd22cae2258805fbe0b4ddf9632f9ffb
-config_hash: 702846e1d30f519e56e425ca5455febe
+configured_endpoints: 50
+openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/runwayml/runwayml-656482624bcaf91bbc524b761d1b3d9a97f84ea561a5b9f84db4122f38f342d0.yml
+openapi_spec_hash: a6f0749dba9a9e3a46e75216b4d14467
+config_hash: 955a0e451964a44778c5c0f54ca1c994
diff --git a/api.md b/api.md
index cc70b48..d115033 100644
--- a/api.md
+++ b/api.md
@@ -119,6 +119,16 @@ Methods:
- client.imageUpscale.create({ ...params }) -> ImageUpscaleCreateResponse
+# VideoUpscale
+
+Types:
+
+- VideoUpscaleCreateResponse
+
+Methods:
+
+- client.videoUpscale.create({ ...params }) -> VideoUpscaleCreateResponse
+
# Organization
Types:
diff --git a/src/client.ts b/src/client.ts
index 40b43c9..361cbc1 100644
--- a/src/client.ts
+++ b/src/client.ts
@@ -111,6 +111,11 @@ import {
VideoToVideoCreateParams,
VideoToVideoCreateResponse,
} from './resources/video-to-video';
+import {
+ VideoUpscale,
+ VideoUpscaleCreateParams,
+ VideoUpscaleCreateResponse,
+} from './resources/video-upscale';
import {
VoiceDubbing,
VoiceDubbingCreateParams,
@@ -951,6 +956,10 @@ export class RunwayML {
* These endpoints all kick off tasks to create generations.
*/
imageUpscale: API.ImageUpscale = new API.ImageUpscale(this);
+ /**
+ * These endpoints all kick off tasks to create generations.
+ */
+ videoUpscale: API.VideoUpscale = new API.VideoUpscale(this);
organization: API.Organization = new API.Organization(this);
avatars: API.Avatars = new API.Avatars(this);
avatarConversations: API.AvatarConversations = new API.AvatarConversations(this);
@@ -976,6 +985,7 @@ RunwayML.VoiceIsolation = VoiceIsolation;
RunwayML.VoiceDubbing = VoiceDubbing;
RunwayML.SpeechToSpeech = SpeechToSpeech;
RunwayML.ImageUpscale = ImageUpscale;
+RunwayML.VideoUpscale = VideoUpscale;
RunwayML.Organization = Organization;
RunwayML.Avatars = Avatars;
RunwayML.AvatarConversations = AvatarConversations;
@@ -1062,6 +1072,12 @@ export declare namespace RunwayML {
type ImageUpscaleCreateParams as ImageUpscaleCreateParams,
};
+ export {
+ VideoUpscale as VideoUpscale,
+ type VideoUpscaleCreateResponse as VideoUpscaleCreateResponse,
+ type VideoUpscaleCreateParams as VideoUpscaleCreateParams,
+ };
+
export {
Organization as Organization,
type OrganizationRetrieveResponse as OrganizationRetrieveResponse,
diff --git a/src/resources/index.ts b/src/resources/index.ts
index f35b8fb..453a773 100644
--- a/src/resources/index.ts
+++ b/src/resources/index.ts
@@ -92,6 +92,11 @@ export {
type VideoToVideoCreateResponse,
type VideoToVideoCreateParams,
} from './video-to-video';
+export {
+ VideoUpscale,
+ type VideoUpscaleCreateResponse,
+ type VideoUpscaleCreateParams,
+} from './video-upscale';
export {
VoiceDubbing,
type VoiceDubbingCreateResponse,
diff --git a/src/resources/organization.ts b/src/resources/organization.ts
index 943c99a..78f4db9 100644
--- a/src/resources/organization.ts
+++ b/src/resources/organization.ts
@@ -129,6 +129,7 @@ export interface OrganizationRetrieveUsageResponse {
| 'seedance2'
| 'seedance2_fast'
| 'magnific_precision_upscaler_v2'
+ | 'magnific_video_upscaler_creative'
| 'kling2.5_turbo_pro'
| 'kling3.0_pro'
| 'kling3.0_4k'
@@ -144,6 +145,7 @@ export interface OrganizationRetrieveUsageResponse {
| 'product_ugc'
| 'marketing_stock_image'
| 'product_campaign_image'
+ | 'ad_localization'
>;
results: Array;
@@ -203,6 +205,7 @@ export namespace OrganizationRetrieveUsageResponse {
| 'seedance2'
| 'seedance2_fast'
| 'magnific_precision_upscaler_v2'
+ | 'magnific_video_upscaler_creative'
| 'kling2.5_turbo_pro'
| 'kling3.0_pro'
| 'kling3.0_4k'
@@ -217,7 +220,8 @@ export namespace OrganizationRetrieveUsageResponse {
| 'multi_shot_video'
| 'product_ugc'
| 'marketing_stock_image'
- | 'product_campaign_image';
+ | 'product_campaign_image'
+ | 'ad_localization';
}
}
}
diff --git a/src/resources/video-to-video.ts b/src/resources/video-to-video.ts
index c488051..3004650 100644
--- a/src/resources/video-to-video.ts
+++ b/src/resources/video-to-video.ts
@@ -62,8 +62,7 @@ export declare namespace VideoToVideoCreateParams {
keyframes?: Array;
/**
- * An optional string up to 1000 characters describing what should appear in the
- * output.
+ * A non-empty and optional string describing what should appear in the output.
*/
promptText?: string;
diff --git a/src/resources/video-upscale.ts b/src/resources/video-upscale.ts
new file mode 100644
index 0000000..854ac91
--- /dev/null
+++ b/src/resources/video-upscale.ts
@@ -0,0 +1,80 @@
+// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
+
+import { APIResource } from '../core/resource';
+import { APIPromise } from '../core/api-promise';
+import { RequestOptions } from '../internal/request-options';
+
+/**
+ * These endpoints all kick off tasks to create generations.
+ */
+export class VideoUpscale extends APIResource {
+ /**
+ * This endpoint starts a task to upscale a video. Set `model` to choose the
+ * upscaler.
+ *
+ * @example
+ * ```ts
+ * const videoUpscale = await client.videoUpscale.create({
+ * model: 'magnific_video_upscaler_creative',
+ * videoUri: 'https://example.com/video.mp4',
+ * });
+ * ```
+ */
+ create(body: VideoUpscaleCreateParams, options?: RequestOptions): APIPromise {
+ return this._client.post('/v1/video_upscale', { body, ...options });
+ }
+}
+
+export interface VideoUpscaleCreateResponse {
+ /**
+ * The ID of the task that was created. Use this to retrieve the task later.
+ */
+ id: string;
+}
+
+export interface VideoUpscaleCreateParams {
+ model: 'magnific_video_upscaler_creative';
+
+ /**
+ * A HTTPS URL.
+ */
+ videoUri: string;
+
+ /**
+ * How much AI-generated detail to add during upscaling, from 0 (faithful) to 100.
+ */
+ creativity?: number;
+
+ /**
+ * Processing style: `vivid` for enhanced color and detail, `natural` for faithful
+ * reproduction.
+ */
+ flavor?: 'vivid' | 'natural';
+
+ /**
+ * Whether to increase the output frame rate.
+ */
+ fpsBoost?: boolean;
+
+ /**
+ * Target output resolution from 720p to 4k. Defaults to `2k`.
+ */
+ resolution?: '720p' | '1k' | '2k' | '4k';
+
+ /**
+ * Sharpness intensity from 0 (none) to 100.
+ */
+ sharpen?: number;
+
+ /**
+ * Grain and texture enhancement from 0 to 100.
+ */
+ smartGrain?: number;
+}
+
+export declare namespace VideoUpscale {
+ export {
+ type VideoUpscaleCreateResponse as VideoUpscaleCreateResponse,
+ type VideoUpscaleCreateParams as VideoUpscaleCreateParams,
+ };
+}
diff --git a/tests/api-resources/video-upscale.test.ts b/tests/api-resources/video-upscale.test.ts
new file mode 100644
index 0000000..876ee39
--- /dev/null
+++ b/tests/api-resources/video-upscale.test.ts
@@ -0,0 +1,37 @@
+// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
+
+import RunwayML from '@runwayml/sdk';
+
+const client = new RunwayML({
+ apiKey: 'My API Key',
+ baseURL: process.env['TEST_API_BASE_URL'] ?? 'http://127.0.0.1:4010',
+});
+
+describe('resource videoUpscale', () => {
+ test('create: only required params', async () => {
+ const responsePromise = client.videoUpscale.create({
+ model: 'magnific_video_upscaler_creative',
+ videoUri: 'https://example.com/video.mp4',
+ });
+ const rawResponse = await responsePromise.asResponse();
+ expect(rawResponse).toBeInstanceOf(Response);
+ const response = await responsePromise;
+ expect(response).not.toBeInstanceOf(Response);
+ const dataAndResponse = await responsePromise.withResponse();
+ expect(dataAndResponse.data).toBe(response);
+ expect(dataAndResponse.response).toBe(rawResponse);
+ });
+
+ test('create: required and optional params', async () => {
+ const response = await client.videoUpscale.create({
+ model: 'magnific_video_upscaler_creative',
+ videoUri: 'https://example.com/video.mp4',
+ creativity: 0,
+ flavor: 'vivid',
+ fpsBoost: true,
+ resolution: '720p',
+ sharpen: 0,
+ smartGrain: 0,
+ });
+ });
+});
From 861ba9b60c22f4567adc67cce62b6582d36c6ea1 Mon Sep 17 00:00:00 2001
From: Robin Andeer
Date: Fri, 26 Jun 2026 15:04:31 -0700
Subject: [PATCH 2/4] feat(client): make video upscale waitable
---
src/resources/video-upscale.ts | 11 ++++++++---
1 file changed, 8 insertions(+), 3 deletions(-)
diff --git a/src/resources/video-upscale.ts b/src/resources/video-upscale.ts
index 854ac91..bef9bbd 100644
--- a/src/resources/video-upscale.ts
+++ b/src/resources/video-upscale.ts
@@ -1,8 +1,8 @@
// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
import { APIResource } from '../core/resource';
-import { APIPromise } from '../core/api-promise';
import { RequestOptions } from '../internal/request-options';
+import { APIPromiseWithAwaitableTask, wrapAsWaitableResource } from '../lib/polling';
/**
* These endpoints all kick off tasks to create generations.
@@ -20,8 +20,13 @@ export class VideoUpscale extends APIResource {
* });
* ```
*/
- create(body: VideoUpscaleCreateParams, options?: RequestOptions): APIPromise {
- return this._client.post('/v1/video_upscale', { body, ...options });
+ create(
+ body: VideoUpscaleCreateParams,
+ options?: RequestOptions,
+ ): APIPromiseWithAwaitableTask {
+ return wrapAsWaitableResource(this._client)(
+ this._client.post('/v1/video_upscale', { body, ...options }),
+ );
}
}
From 6431221f159570437a7e57ae23ee43f6fd87cd36 Mon Sep 17 00:00:00 2001
From: Robin Andeer
Date: Fri, 26 Jun 2026 15:10:18 -0700
Subject: [PATCH 3/4] chore(client): remove redundant video upscale class doc
---
src/resources/video-upscale.ts | 3 ---
1 file changed, 3 deletions(-)
diff --git a/src/resources/video-upscale.ts b/src/resources/video-upscale.ts
index bef9bbd..2af40a0 100644
--- a/src/resources/video-upscale.ts
+++ b/src/resources/video-upscale.ts
@@ -4,9 +4,6 @@ import { APIResource } from '../core/resource';
import { RequestOptions } from '../internal/request-options';
import { APIPromiseWithAwaitableTask, wrapAsWaitableResource } from '../lib/polling';
-/**
- * These endpoints all kick off tasks to create generations.
- */
export class VideoUpscale extends APIResource {
/**
* This endpoint starts a task to upscale a video. Set `model` to choose the
From 5ef40c73d1617159323badd3b9ba6b23fb8c90cd Mon Sep 17 00:00:00 2001
From: "stainless-app[bot]"
<142633134+stainless-app[bot]@users.noreply.github.com>
Date: Fri, 26 Jun 2026 22:10:36 +0000
Subject: [PATCH 4/4] release: 4.4.0
---
.release-please-manifest.json | 2 +-
CHANGELOG.md | 14 ++++++++++++++
package.json | 2 +-
src/version.ts | 2 +-
4 files changed, 17 insertions(+), 3 deletions(-)
diff --git a/.release-please-manifest.json b/.release-please-manifest.json
index 83f9eb8..fb1f343 100644
--- a/.release-please-manifest.json
+++ b/.release-please-manifest.json
@@ -1,3 +1,3 @@
{
- ".": "4.3.0"
+ ".": "4.4.0"
}
diff --git a/CHANGELOG.md b/CHANGELOG.md
index f39d379..0680c41 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,19 @@
# Changelog
+## 4.4.0 (2026-06-26)
+
+Full Changelog: [v4.3.0...v4.4.0](https://github.com/runwayml/sdk-node/compare/v4.3.0...v4.4.0)
+
+### Features
+
+* **api:** add magnific video upscale model ([fbd973e](https://github.com/runwayml/sdk-node/commit/fbd973eb98673f10fd119f27002c145ce2ac875d))
+* **client:** make video upscale waitable ([861ba9b](https://github.com/runwayml/sdk-node/commit/861ba9b60c22f4567adc67cce62b6582d36c6ea1))
+
+
+### Chores
+
+* **client:** remove redundant video upscale class doc ([6431221](https://github.com/runwayml/sdk-node/commit/6431221f159570437a7e57ae23ee43f6fd87cd36))
+
## 4.3.0 (2026-06-25)
Full Changelog: [v4.2.0...v4.3.0](https://github.com/runwayml/sdk-node/compare/v4.2.0...v4.3.0)
diff --git a/package.json b/package.json
index 7f20489..5871e46 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "@runwayml/sdk",
- "version": "4.3.0",
+ "version": "4.4.0",
"description": "The official TypeScript library for the RunwayML API",
"author": "RunwayML ",
"types": "dist/index.d.ts",
diff --git a/src/version.ts b/src/version.ts
index e743242..8ab2514 100644
--- a/src/version.ts
+++ b/src/version.ts
@@ -1 +1 @@
-export const VERSION = '4.3.0'; // x-release-please-version
+export const VERSION = '4.4.0'; // x-release-please-version