Poll a scene-writer job started by POST .../scenes.
curl --request GET \
--url https://api.parallellabs.app/api/v0/content/canvases/{canvasId}/scenes/jobs/{jobId} \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.parallellabs.app/api/v0/content/canvases/{canvasId}/scenes/jobs/{jobId}"
headers = {"X-API-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-Key': '<api-key>'}};
fetch('https://api.parallellabs.app/api/v0/content/canvases/{canvasId}/scenes/jobs/{jobId}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.parallellabs.app/api/v0/content/canvases/{canvasId}/scenes/jobs/{jobId}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-API-Key: <api-key>"
],
]);
$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.parallellabs.app/api/v0/content/canvases/{canvasId}/scenes/jobs/{jobId}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-Key", "<api-key>")
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.parallellabs.app/api/v0/content/canvases/{canvasId}/scenes/jobs/{jobId}")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.parallellabs.app/api/v0/content/canvases/{canvasId}/scenes/jobs/{jobId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"written": [
"<string>"
],
"failed": {},
"problems": {},
"other": [
"<string>"
],
"imageUrl": "<string>",
"seconds": 123,
"status": "<string>",
"jobId": "<string>",
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}Content
Poll a scene-writer job started by POST .../scenes.
GET
/
api
/
v0
/
content
/
canvases
/
{canvasId}
/
scenes
/
jobs
/
{jobId}
Poll a scene-writer job started by POST .../scenes.
curl --request GET \
--url https://api.parallellabs.app/api/v0/content/canvases/{canvasId}/scenes/jobs/{jobId} \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.parallellabs.app/api/v0/content/canvases/{canvasId}/scenes/jobs/{jobId}"
headers = {"X-API-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-Key': '<api-key>'}};
fetch('https://api.parallellabs.app/api/v0/content/canvases/{canvasId}/scenes/jobs/{jobId}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.parallellabs.app/api/v0/content/canvases/{canvasId}/scenes/jobs/{jobId}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-API-Key: <api-key>"
],
]);
$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.parallellabs.app/api/v0/content/canvases/{canvasId}/scenes/jobs/{jobId}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-Key", "<api-key>")
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.parallellabs.app/api/v0/content/canvases/{canvasId}/scenes/jobs/{jobId}")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.parallellabs.app/api/v0/content/canvases/{canvasId}/scenes/jobs/{jobId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"written": [
"<string>"
],
"failed": {},
"problems": {},
"other": [
"<string>"
],
"imageUrl": "<string>",
"seconds": 123,
"status": "<string>",
"jobId": "<string>",
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}Authorizations
CompanyApiKeyBearerAuth & CompanyId
Company API key - scoped to a specific company. Generate from the Integrations page in your dashboard.
Response
The scene writers' job: writing, completed (with the result) or failed (with the error)
Scenes written from briefs
Scene ids written
Scene id -> why it was not written
Scene id -> problems still open on its check frame
Problems not tied to one scene
Contact sheet with one check frame per written scene
Time the writers took
writing, completed or failed
Job to poll at GET .../scenes/jobs/ while status is writing
Why a failed job failed

