Tasks
Get a Runway task
Retrieve image, video, or audio task status and output URLs for Runway requests through CometAPI.
GET
/
runwayml
/
v1
/
tasks
/
{id}
cURL
TASK_ID="<task_id>"
curl "https://api.cometapi.com/runwayml/v1/tasks/$TASK_ID" \
--header "Authorization: Bearer $COMETAPI_KEY"import os
import requests
task_id = "<task_id>"
response = requests.get(
f"https://api.cometapi.com/runwayml/v1/tasks/{task_id}",
headers={"Authorization": "Bearer " + os.environ["COMETAPI_KEY"]},
timeout=60,
)
response.raise_for_status()
print(response.json())
const taskId = "<task_id>";
const response = await fetch(
`https://api.cometapi.com/runwayml/v1/tasks/${taskId}`,
{ headers: { Authorization: `Bearer ${process.env.COMETAPI_KEY}` } },
);
if (!response.ok) throw new Error(await response.text());
console.log(await response.json());
<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.cometapi.com/runwayml/v1/tasks/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.cometapi.com/runwayml/v1/tasks/{id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.cometapi.com/runwayml/v1/tasks/{id}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.cometapi.com/runwayml/v1/tasks/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"id": "00000000-0000-4000-8000-000000000001"
}Use this endpoint with the
A freshly submitted task can briefly return HTTP
id returned by any /runwayml/v1 creation
request. Authenticate with a CometAPI API key from the same account that
created the task.
Follow the task state
The response is a task object. Readid, status, and output directly
from the response, without a data envelope.
status | Next step |
|---|---|
Missing, PENDING, or THROTTLED | Wait a few seconds and request the task again. |
RUNNING | Continue polling. progress, when present, is a fraction from 0 to 1. |
SUCCEEDED | Read result URLs from output. |
FAILED | Stop polling and inspect failure and failureCode, when present. |
CANCELLED | Stop polling; the task was cancelled. |
400 with
code: "task_not_exist". Wait a few seconds and retry using the same id.
If it continues, check the task ID and the account used for authentication.
Do not submit the creation request again to check its status.
Store the output
Theoutput array contains image, video, or audio URLs according to the
creation endpoint and selected format. Download completed assets promptly
and store them in your own storage. The result URLs are temporary.
For a new integration, choose a model and creation endpoint in the
Runway overview.Response
Task details. Fields vary with the task state.
Last modified on September 21, 2026
⌘I
cURL
TASK_ID="<task_id>"
curl "https://api.cometapi.com/runwayml/v1/tasks/$TASK_ID" \
--header "Authorization: Bearer $COMETAPI_KEY"import os
import requests
task_id = "<task_id>"
response = requests.get(
f"https://api.cometapi.com/runwayml/v1/tasks/{task_id}",
headers={"Authorization": "Bearer " + os.environ["COMETAPI_KEY"]},
timeout=60,
)
response.raise_for_status()
print(response.json())
const taskId = "<task_id>";
const response = await fetch(
`https://api.cometapi.com/runwayml/v1/tasks/${taskId}`,
{ headers: { Authorization: `Bearer ${process.env.COMETAPI_KEY}` } },
);
if (!response.ok) throw new Error(await response.text());
console.log(await response.json());
<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.cometapi.com/runwayml/v1/tasks/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.cometapi.com/runwayml/v1/tasks/{id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.cometapi.com/runwayml/v1/tasks/{id}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.cometapi.com/runwayml/v1/tasks/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"id": "00000000-0000-4000-8000-000000000001"
}