Render the canvas's saved HTML to a permanent public PNG (charged at DATA_CREDIT_COST_CANVAS).
curl --request POST \
--url https://api.parallellabs.app/api/v0/content/canvases/{canvas_id}/render \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.parallellabs.app/api/v0/content/canvases/{canvas_id}/render"
headers = {"X-API-Key": "<api-key>"}
response = requests.post(url, headers=headers)
print(response.text)const options = {method: 'POST', headers: {'X-API-Key': '<api-key>'}};
fetch('https://api.parallellabs.app/api/v0/content/canvases/{canvas_id}/render', 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/{canvas_id}/render",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
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/{canvas_id}/render"
req, _ := http.NewRequest("POST", 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.post("https://api.parallellabs.app/api/v0/content/canvases/{canvas_id}/render")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.parallellabs.app/api/v0/content/canvases/{canvas_id}/render")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-API-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"id": "<string>",
"companyId": "<string>",
"name": "<string>",
"width": 123,
"height": 123,
"format": "<string>",
"htmlContent": "<string>",
"animated": true,
"videoDuration": 123,
"imageId": "<string>",
"imageUrl": "<string>",
"videoId": "<string>",
"videoUrl": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}Content
Render the canvas's saved HTML to a permanent public PNG (charged at DATA_CREDIT_COST_CANVAS).
POST
/
api
/
v0
/
content
/
canvases
/
{canvas_id}
/
render
Render the canvas's saved HTML to a permanent public PNG (charged at DATA_CREDIT_COST_CANVAS).
curl --request POST \
--url https://api.parallellabs.app/api/v0/content/canvases/{canvas_id}/render \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.parallellabs.app/api/v0/content/canvases/{canvas_id}/render"
headers = {"X-API-Key": "<api-key>"}
response = requests.post(url, headers=headers)
print(response.text)const options = {method: 'POST', headers: {'X-API-Key': '<api-key>'}};
fetch('https://api.parallellabs.app/api/v0/content/canvases/{canvas_id}/render', 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/{canvas_id}/render",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
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/{canvas_id}/render"
req, _ := http.NewRequest("POST", 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.post("https://api.parallellabs.app/api/v0/content/canvases/{canvas_id}/render")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.parallellabs.app/api/v0/content/canvases/{canvas_id}/render")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-API-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"id": "<string>",
"companyId": "<string>",
"name": "<string>",
"width": 123,
"height": 123,
"format": "<string>",
"htmlContent": "<string>",
"animated": true,
"videoDuration": 123,
"imageId": "<string>",
"imageUrl": "<string>",
"videoId": "<string>",
"videoUrl": "<string>"
}{
"error": "<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.
Path Parameters
Response
Canvas with its rendered PNG url
Canvas design
Canvas ID
Company ID
Canvas name
Canvas width in pixels
Canvas height in pixels
Named canvas format id, when the size came from one
The standalone HTML document for the canvas
Whether the canvas is animated (exports a looping MP4 instead of a PNG)
Loop length in seconds for animated canvases
Images table id of the last render
Public PNG URL of the last render
Videos table id of the last recording (animated canvases)
Public MP4 URL of the last recording (animated canvases)

