curl --request GET \
--url https://pria.praxislxp.com/api/user/presentations/availability \
--header 'x-access-token: <api-key>'import requests
url = "https://pria.praxislxp.com/api/user/presentations/availability"
headers = {"x-access-token": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'x-access-token': '<api-key>'}};
fetch('https://pria.praxislxp.com/api/user/presentations/availability', 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://pria.praxislxp.com/api/user/presentations/availability",
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-access-token: <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://pria.praxislxp.com/api/user/presentations/availability"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-access-token", "<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://pria.praxislxp.com/api/user/presentations/availability")
.header("x-access-token", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://pria.praxislxp.com/api/user/presentations/availability")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["x-access-token"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"success": true,
"available": true,
"startAvailable": true,
"startEstimate": {
"low": 10,
"high": 15
},
"startEstimateCredits": 15,
"cancelAvailable": true,
"startCostIncluded": true,
"exportAvailable": true,
"shareAvailable": true,
"shareAudiences": [
"public",
"twin"
],
"brandsAvailable": true,
"brandImportAvailable": true,
"lengths": [
{
"seconds": 180,
"label": "3 minutes",
"estimate": {
"low": 35,
"high": 50
},
"gateCredits": 50,
"affordable": true
}
]
}Whether this Digital Twin can make presentation videos
Whether presentation videos are available to you in your current Digital Twin (the feature is switched on for the platform and for this twin). exportAvailable: MP4 export is set up too (export task image, internal callback address and media bucket configured). shareAudiences: who a new share link may be for in this twin right now (public = anyone with the link, twin = people in this Digital Twin) — empty when share links are off for the platform or the twin’s admins allow none; shareAvailable is false exactly then. startAvailable: you can start a new video from the chat in this session — videos are available, the twin runs multi-step answers (subagents), and you are signed in to the app as yourself (not through an API key, an agent or a consent link, not as a visitor of the twin’s public page, and not in a Canvas launch as a student), and you have confirmed your sign-in with a code if the app asked you for one. startEstimate: about how many credits one 1-minute video costs you, as a range (low–high, about 10–15: writing the script, the voice-over and the presenter); present only with startAvailable and when it can be worked out. startEstimateCredits: the high end of that range, as one number. cancelAvailable: a video you are making can be stopped (POST /api/user/presentations/{id}/cancel). startCostIncluded: your plan includes videos (you are not charged for them), so no estimate is sent. lengths: only when videos can be made in more than one length (for example 1 and 3 minutes): each length with its label, its estimate (null when your plan includes videos or it cannot be worked out) and affordable (your credits — or the Digital Twin’s, when it pays — cover what that length needs to start; a 3-minute video needs the high end of its range). To make a video of another length, send the chosen seconds as requestArgs.presentationSeconds (60 or 180) with the chat message (POST /api/ai/personal/qanda); without it the video is 1 minute. The server checks the length again and refuses one that is not available (nothing is started or charged).
curl --request GET \
--url https://pria.praxislxp.com/api/user/presentations/availability \
--header 'x-access-token: <api-key>'import requests
url = "https://pria.praxislxp.com/api/user/presentations/availability"
headers = {"x-access-token": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'x-access-token': '<api-key>'}};
fetch('https://pria.praxislxp.com/api/user/presentations/availability', 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://pria.praxislxp.com/api/user/presentations/availability",
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-access-token: <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://pria.praxislxp.com/api/user/presentations/availability"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-access-token", "<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://pria.praxislxp.com/api/user/presentations/availability")
.header("x-access-token", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://pria.praxislxp.com/api/user/presentations/availability")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["x-access-token"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"success": true,
"available": true,
"startAvailable": true,
"startEstimate": {
"low": 10,
"high": 15
},
"startEstimateCredits": 15,
"cancelAvailable": true,
"startCostIncluded": true,
"exportAvailable": true,
"shareAvailable": true,
"shareAudiences": [
"public",
"twin"
],
"brandsAvailable": true,
"brandImportAvailable": true,
"lengths": [
{
"seconds": 180,
"label": "3 minutes",
"estimate": {
"low": 35,
"high": 50
},
"gateCredits": 50,
"affordable": true
}
]
}Authorizations
JWT token passed in x-access-token header
Response
Availability
true
true
You can start a new video from the chat in this session
true
About how many credits one 1-minute video costs you, as a range (absent when it cannot be worked out)
Show child attributes
Show child attributes
The high end of startEstimate, as one number (absent when it cannot be worked out)
15
Present (true) where videos are available: a video can be stopped with /{id}/cancel
true
Present (true) when your plan includes videos (you are not charged for them); then there is no startEstimate or startEstimateCredits
true
true
true
public, twin ["public", "twin"]
Present (true) only while brand colours are switched on: the video page shows the Brand panel
true
Present (true) only while importing brand colours from a website is switched on too: the Brand panel shows Import from website
true
Present only when more than one video length can be made; shortest first
Show child attributes
Show child attributes
Was this page helpful?