Upscale to 4K the Gen-3 Alpha and Gen-3 Alpha Turbo videos

January 10, 2025

Table of contents

  1. Request Headers
  2. Request Body
  3. Responses
  4. Model
  5. Examples
  6. Try It

Use this endpoint to Upscale to 4K videos generated by

https://api.useapi.net/v1/runwayml/gen3alpha/upscale

Request Headers
Authorization: Bearer {API token}
Content-Type: application/json
# Alternatively you can use multipart/form-data
# Content-Type: multipart/form-data
Request Body
{
    "assetId": "Required assetId of Gen-3 Alpha or Gen-3 Alpha Turbo video asset you want to upscale",
    "exploreMode": true,
    "replyUrl": "Place your call back URL here",
    "replyRef": "Place your reference id here",
    "maxJobs": 5,
}
  • assetId is required. Specify the Gen-3 Alpha or Gen-3 Alpha Turbo video assetId you want upscale. Use GET /assets/?mediaType=video to see the list of video assets.

  • exploreMode is optional. Set to true if you have a Runway Unlimited plan and wish to execute relaxed generation. You are not charged credits for Explore mode generations.

  • replyUrl is optional, if not provided value from account will be used.
    Place here your callback URL. API will call the provided replyUrl once Runway task completed or failed.
    Maximum length 1024 characters.
    We recommend using sites like webhook.site to test callback URL functionality.

  • replyRef is optional, place here your reference id which will be stored and returned along with this Runway task response / result.
    Maximum length 1024 characters.

  • maxJobs is optional, if not provided value for referenced by video assetId account will be used.
    Valid range: 1…10.

Responses
  • 200 OK

    Use returned taskId to retrieve task status and results using GET /tasks/taskId. The generated video url can be found in the artifacts array of the task with the status SUCCEEDED.

    If you specify the optional parameter replyUrl the API will call the provided replyUrl with task progress updates until the task is complete or fails.

    {
        "taskId": "user:user_id-runwayml:account_email-task:task_uuid",
        "id": "<uuid>",
        "name": "<name>",
        "image": null,
        "createdAt": "2025-01-10T02:55:10.654Z",
        "updatedAt": "2025-01-10T02:55:10.691Z",
        "taskType": "harrods",
        "options": {
            "name": "<name>",
            "task_artifact_id": "<uuid>",
            "exploreMode": true,
            "asset_url": "https://runway-...mp4",
            "asset_type": "video",
            "scale_factor": 4,
            "video_name": "<video name>",
            "parent_asset_group_id": "<uuid>",
            "asset_preview_urls": [
                "https://runway-...jpg",
                "https://runway-...jpg",
                "https://runway-...jpg",
                "https://runway-...jpg",
                "https://runway-...jpg"
            ]
        },
        "status": "PENDING",
        "error": null,
        "progressText": null,
        "progressRatio": null,
        "estimatedTimeToStartSeconds": 0,
        "artifacts": [],
        "sharedAsset": null,
        "sourceAssetId": null,
        "features": {
            "storageGB": 500,
            "numPlanCredits_permitted": 2250,
            "numPlanCredits_used": 1315
        },
      "replyUrl": "https://webhook.site/abc",
      "replyRef": "<your optional reference id>",
      "code": 200
    }
    
  • 400 Bad Request

    {
      "error": "<Error message>",
      "code": 400
    }
    
  • 401 Unauthorized

    {
      "error": "Unauthorized",
      "code": 401
    }
    
  • 404 Not Found

    {
        "error": "Unable to retrieve assetId <uuid> (Not found.)",
        "code": 404
    }
    
  • 412 Insufficient credits

    You do not have enough credits to run this task.

    {
        "error": "You do not have enough credits to run this task."
    }
    
  • 429 Too Many Requests

    Wait in a loop for at least 10..30 seconds and retry again.

    There are two possible cases for API response 429:

    {
        "error": "Account <Runway account email> is busy executing <Account maxJobs> tasks",
        "runningTasks": {
            "<Runway account email>": [
                {
                    "email": "<Runway account email>",
                    "taskId": "user:user_id-runwayml:account_email-task:task_#1_uuid",
                    "id": "<uuid>",
                    "replyUrl": "<replyUrl if provided>",
                    "replyRef": "<replyRef if provided>"
                },
                {
                    "email": "<Runway account email>",
                    "taskId": "user:user_id-runwayml:account_email-task:task_#N_uuid",
                    "id": "<uuid>",
                    "replyUrl": "<replyUrl if provided>",
                    "replyRef": "<replyRef if provided>"
                }
            ]
        },
        "code": 429
    }
    
    • The API received an HTTP response status 429 from Runway. Runway has dynamic query management and may limit the number of simultaneously executed tasks based on internal service load and policies.
    {
        "error": "You have too many tasks running or pending. Please wait for some of them to finish before starting more."
    }
    
Model
{ // TypeScript, all fields are optional
    id: string
    taskId: string
    name: string
    image: any
    createdAt: string
    updatedAt: string
    taskType: string
    options: {
        name: string
        task_artifact_id: string
        exploreMode: boolean
        asset_url: string
        asset_type: string
        scale_factor: number
        video_name: string
        parent_asset_group_id: string
        asset_preview_urls: string[]
    }
    status: string
    error: {
      errorMessage: string,
      reason: string,
      message: string,
      moderation_category: string,
      tally_asimov: boolean
    },
    progressText: string 
    progressRatio: number
    estimatedTimeToStartSeconds: number
    artifacts: any[]
    sharedAsset: any
    sourceAssetId: any
    features: {
        storageGB: number
        numPlanCredits_permitted: number
        numPlanCredits_used: number
    }
    code: number
    replyUrl: string
    replyRef: string
}
Examples
  • curl -H "Accept: application/json" \
         -H "Content-Type: application/json" \
         -H "Authorization: Bearer …" \
         -X POST "https://api.useapi.net/v1/runwayml/gen3alpha/upscale" \
         -d '{"assetId": "…" }'
    
  • const assetId = "assetId of video asset";      
    const apiUrl = `https://api.useapi.net/v1/runwayml/gen3alpha/upscale`; 
    const token = "API token";
    const data = { 
      method: 'POST',
      headers: {
        'Authorization': `Bearer ${token}`,
        'Content-Type': 'application/json' }
    };
    data.body = JSON.stringify({ 
      assetId
    });
    const response = await fetch(apiUrl, data);
    const result = await response.json();
    console.log("response", {response, result});
    
  • import requests
    assetId = "assetId of video asset"      
    apiUrl = f"https://api.useapi.net/v1/runwayml/gen3alpha/upscale" 
    token = "API token"
    headers = {
        "Content-Type": "application/json", 
        "Authorization" : f"Bearer {token}"
    }
    body = {
        "assetId": f"{assetId}"
    }
    response = requests.post(apiUrl, headers=headers, json=body)
    print(response, response.json())
    
Try It