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