- Fully generated C# SDK based on official Runway OpenAPI specification using AutoSDK
- Same day update to support new features
- Updated and supported automatically if there are no breaking changes
- All modern .NET features - nullability, trimming, NativeAOT, etc.
using Runway;
using var client = new RunwayClient(apiKey);
var response = await client.StartGenerating.CreateImageToVideoAsync(
xRunwayVersion: "2024-11-06",
request: new RequestGen3aTurbo
{
PromptImage = "https://example.com/photo.jpg",
PromptText = "The girl smiles a little",
Seed = 999999999,
Model = "gen3a_turbo",
Duration = 5,
Ratio = RequestGen3aTurboRatio.x1280_768,
});
// Poll until complete
Response taskDetail;
do
{
taskDetail = await client.TaskManagement.GetTasksByIdAsync(
id: response.Id,
xRunwayVersion: "2024-11-06");
await Task.Delay(TimeSpan.FromSeconds(10));
}
while (!taskDetail.IsFailed && !taskDetail.IsSucceeded && !taskDetail.IsCancelled);
foreach (var output in taskDetail.Succeeded!.Output)
{
Console.WriteLine($"Video URL: {output}");
}Generate video from a text prompt using Veo 3.1 Fast.
var response = await client.StartGenerating.CreateTextToVideoAsync(
xRunwayVersion: "2024-11-06",
request: new RequestVeo31Fast2
{
PromptText = "A calm ocean with gentle waves under a starlit sky",
Ratio = RequestVeo31FastRatio2.x1280_720,
Duration = 5,
});Generate images from text using Gen4 Image Turbo.
var response = await client.StartGenerating.CreateTextToImageAsync(
xRunwayVersion: "2024-11-06",
request: new RequestGen4ImageTurbo
{
PromptText = "A vibrant coral reef teeming with tropical fish",
Ratio = RequestGen4ImageTurboRatio.x1280_720,
ReferenceImages = [],
});Choose from 48 preset voices including Maya, Arjun, Eleanor, Bernard, and more.
var response = await client.StartGenerating.CreateTextToSpeechAsync(
xRunwayVersion: "2024-11-06",
request: new RequestElevenMultilingualV2
{
PromptText = "Hello! Welcome to Runway's text-to-speech API.",
Voice = new RequestElevenMultilingualV2VoiceRunwayPresetVoice
{
PresetId = RequestElevenMultilingualV2VoiceRunwayPresetVoicePresetId.Maya,
},
});Generate sound effects from text descriptions (0.5–30 seconds, optional seamless looping).
var response = await client.StartGenerating.CreateSoundEffectAsync(
xRunwayVersion: "2024-11-06",
request: new RequestElevenTextToSoundV2
{
PromptText = "A thunderstorm with heavy rain and distant thunder rumbling",
Duration = 10.0,
Loop = false,
});Dub audio to a target language with automatic voice cloning.
var response = await client.StartGenerating.CreateVoiceDubbingAsync(
xRunwayVersion: "2024-11-06",
request: new RequestElevenVoiceDubbing
{
AudioUri = "https://example.com/audio.mp3",
TargetLang = RequestElevenVoiceDubbingTargetLang.Es,
DisableVoiceCloning = false,
DropBackgroundAudio = false,
});Transform the voice in an audio file while preserving the original speech content.
var response = await client.StartGenerating.CreateSpeechToSpeechAsync(
xRunwayVersion: "2024-11-06",
request: new RequestElevenMultilingualStsV2
{
Media = new RequestElevenMultilingualStsV2MediaSpeechToSpeechAudio
{
Uri = "https://example.com/speech.mp3",
},
Voice = new RequestElevenMultilingualStsV2VoiceRunwayPresetVoice
{
PresetId = RequestElevenMultilingualStsV2VoiceRunwayPresetVoicePresetId.Eleanor,
},
RemoveBackgroundNoise = true,
});All generation APIs return async tasks. Check for failures or cancel running tasks.
// Check for failures with machine-readable error codes
if (taskDetail.IsFailed)
{
Console.WriteLine($"Failure: {taskDetail.Failed!.Failure}");
Console.WriteLine($"Code: {taskDetail.Failed.FailureCode}");
}
// Cancel a running task or delete a completed one
await client.TaskManagement.DeleteTasksByIdAsync(
id: taskId,
xRunwayVersion: "2024-11-06");Priority place for bugs: https://github.com/tryAGI/Runway/issues
Priority place for ideas and general questions: https://github.com/tryAGI/Runway/discussions
Discord: https://discord.gg/Ca2xhfBf3v
This project is supported by JetBrains through the Open Source Support Program.
