Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .release-please-manifest.json
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
{
".": "4.3.0"
".": "4.4.0"
}
8 changes: 4 additions & 4 deletions .stats.yml
Original file line number Diff line number Diff line change
@@ -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
14 changes: 14 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -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)
Expand Down
10 changes: 10 additions & 0 deletions api.md
Original file line number Diff line number Diff line change
Expand Up @@ -119,6 +119,16 @@ Methods:

- <code title="post /v1/image_upscale">client.imageUpscale.<a href="./src/resources/image-upscale.ts">create</a>({ ...params }) -> ImageUpscaleCreateResponse</code>

# VideoUpscale

Types:

- <code><a href="./src/resources/video-upscale.ts">VideoUpscaleCreateResponse</a></code>

Methods:

- <code title="post /v1/video_upscale">client.videoUpscale.<a href="./src/resources/video-upscale.ts">create</a>({ ...params }) -> VideoUpscaleCreateResponse</code>

# Organization

Types:
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -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 <dev-feedback@runwayml.com>",
"types": "dist/index.d.ts",
Expand Down
16 changes: 16 additions & 0 deletions src/client.ts
Original file line number Diff line number Diff line change
Expand Up @@ -111,6 +111,11 @@ import {
VideoToVideoCreateParams,
VideoToVideoCreateResponse,
} from './resources/video-to-video';
import {
VideoUpscale,
VideoUpscaleCreateParams,
VideoUpscaleCreateResponse,
} from './resources/video-upscale';
import {
VoiceDubbing,
VoiceDubbingCreateParams,
Expand Down Expand Up @@ -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);
Expand All @@ -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;
Expand Down Expand Up @@ -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,
Expand Down
5 changes: 5 additions & 0 deletions src/resources/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down
6 changes: 5 additions & 1 deletion src/resources/organization.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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'
Expand All @@ -144,6 +145,7 @@ export interface OrganizationRetrieveUsageResponse {
| 'product_ugc'
| 'marketing_stock_image'
| 'product_campaign_image'
| 'ad_localization'
>;

results: Array<OrganizationRetrieveUsageResponse.Result>;
Expand Down Expand Up @@ -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'
Expand All @@ -217,7 +220,8 @@ export namespace OrganizationRetrieveUsageResponse {
| 'multi_shot_video'
| 'product_ugc'
| 'marketing_stock_image'
| 'product_campaign_image';
| 'product_campaign_image'
| 'ad_localization';
}
}
}
Expand Down
3 changes: 1 addition & 2 deletions src/resources/video-to-video.ts
Original file line number Diff line number Diff line change
Expand Up @@ -62,8 +62,7 @@ export declare namespace VideoToVideoCreateParams {
keyframes?: Array<Variant0.UnionMember0 | Variant0.UnionMember1>;

/**
* 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;

Expand Down
82 changes: 82 additions & 0 deletions src/resources/video-upscale.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.

import { APIResource } from '../core/resource';
import { RequestOptions } from '../internal/request-options';
import { APIPromiseWithAwaitableTask, wrapAsWaitableResource } from '../lib/polling';

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,
): APIPromiseWithAwaitableTask<VideoUpscaleCreateResponse> {
return wrapAsWaitableResource<VideoUpscaleCreateResponse>(this._client)(
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,
};
}
2 changes: 1 addition & 1 deletion src/version.ts
Original file line number Diff line number Diff line change
@@ -1 +1 @@
export const VERSION = '4.3.0'; // x-release-please-version
export const VERSION = '4.4.0'; // x-release-please-version
37 changes: 37 additions & 0 deletions tests/api-resources/video-upscale.test.ts
Original file line number Diff line number Diff line change
@@ -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,
});
});
});
Loading