curl --request PATCH \
--url https://backend.tensorpix.ai/api/v2/real-estate/projects/{project_id}/shots/{shot_id}/ \
--header 'Authorization: <api-key>' \
--header 'Content-Type: application/json' \
--data '
{
"first_frame": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"original_first_frame": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"animation_prompt_asset_text": "<string>",
"vfx_prompt": "<string>",
"playback_speed": 1.375,
"video_start_time_s": 123,
"video_end_time_s": 123
}
'import requests
url = "https://backend.tensorpix.ai/api/v2/real-estate/projects/{project_id}/shots/{shot_id}/"
payload = {
"first_frame": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"original_first_frame": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"animation_prompt_asset_text": "<string>",
"vfx_prompt": "<string>",
"playback_speed": 1.375,
"video_start_time_s": 123,
"video_end_time_s": 123
}
headers = {
"Authorization": "<api-key>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
first_frame: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
original_first_frame: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
animation_prompt_asset_text: '<string>',
vfx_prompt: '<string>',
playback_speed: 1.375,
video_start_time_s: 123,
video_end_time_s: 123
})
};
fetch('https://backend.tensorpix.ai/api/v2/real-estate/projects/{project_id}/shots/{shot_id}/', 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://backend.tensorpix.ai/api/v2/real-estate/projects/{project_id}/shots/{shot_id}/",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'first_frame' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'original_first_frame' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'animation_prompt_asset_text' => '<string>',
'vfx_prompt' => '<string>',
'playback_speed' => 1.375,
'video_start_time_s' => 123,
'video_end_time_s' => 123
]),
CURLOPT_HTTPHEADER => [
"Authorization: <api-key>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://backend.tensorpix.ai/api/v2/real-estate/projects/{project_id}/shots/{shot_id}/"
payload := strings.NewReader("{\n \"first_frame\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"original_first_frame\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"animation_prompt_asset_text\": \"<string>\",\n \"vfx_prompt\": \"<string>\",\n \"playback_speed\": 1.375,\n \"video_start_time_s\": 123,\n \"video_end_time_s\": 123\n}")
req, _ := http.NewRequest("PATCH", url, payload)
req.Header.Add("Authorization", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.patch("https://backend.tensorpix.ai/api/v2/real-estate/projects/{project_id}/shots/{shot_id}/")
.header("Authorization", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"first_frame\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"original_first_frame\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"animation_prompt_asset_text\": \"<string>\",\n \"vfx_prompt\": \"<string>\",\n \"playback_speed\": 1.375,\n \"video_start_time_s\": 123,\n \"video_end_time_s\": 123\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://backend.tensorpix.ai/api/v2/real-estate/projects/{project_id}/shots/{shot_id}/")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Authorization"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"first_frame\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"original_first_frame\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"animation_prompt_asset_text\": \"<string>\",\n \"vfx_prompt\": \"<string>\",\n \"playback_speed\": 1.375,\n \"video_start_time_s\": 123,\n \"video_end_time_s\": 123\n}"
response = http.request(request)
puts response.read_body{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"project_real_estate": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"order": 123,
"created_at": "2023-11-07T05:31:56Z",
"image": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"file": "<string>",
"thumbnail": "<string>",
"external_url": "<string>",
"width": 123,
"height": 123,
"file_size": 123,
"tags": [
"<string>"
],
"name_tag": "<string>"
},
"first_frame": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"file": "<string>",
"thumbnail": "<string>",
"external_url": "<string>",
"width": 123,
"height": 123,
"file_size": 123,
"tags": [
"<string>"
],
"name_tag": "<string>"
},
"original_first_frame": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"file": "<string>",
"thumbnail": "<string>",
"external_url": "<string>",
"width": 123,
"height": 123,
"file_size": 123,
"tags": [
"<string>"
],
"name_tag": "<string>"
},
"animation_prompt": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"created_at": "2023-11-07T05:31:56Z",
"text": "<string>"
},
"vfx_prompt": "<string>",
"description_job": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"camera_movement": "auto",
"transition_in": "none",
"transition_out": "none",
"playback_speed": 123,
"requested_duration_s": 123,
"duration_s": 123,
"crop_x": 123,
"crop_y": 123,
"crop_width": 123,
"crop_height": 123,
"video_start_time_s": 123,
"video_end_time_s": 123,
"selected_video": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"name_tag": "<string>",
"tags": [
"<string>"
],
"created_at": "2023-11-07T05:31:56Z",
"file": "<string>",
"external_url": "<string>",
"thumbnail": "<string>",
"last_frame": "<string>",
"width": 123,
"height": 123,
"file_size": 123,
"num_frames": 123,
"framerate": 123,
"duration_s": 123,
"bitrate": 123,
"codec_id": "<string>",
"bit_depth": 123,
"chroma_subsampling": "<string>",
"color_space": "<string>"
},
"rendered_video": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"name_tag": "<string>",
"tags": [
"<string>"
],
"created_at": "2023-11-07T05:31:56Z",
"file": "<string>",
"external_url": "<string>",
"thumbnail": "<string>",
"last_frame": "<string>",
"width": 123,
"height": 123,
"file_size": 123,
"num_frames": 123,
"framerate": 123,
"duration_s": 123,
"bitrate": 123,
"codec_id": "<string>",
"bit_depth": 123,
"chroma_subsampling": "<string>",
"color_space": "<string>"
}
}{
"detail": "<unknown>",
"error_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}{
"detail": "<string>",
"error_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}{
"detail": "<string>",
"error_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}{
"detail": "<string>",
"error_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}{
"detail": "<string>",
"error_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}{
"error": "<string>",
"error_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}Update a real estate shot
Update one shot. A first frame or original frame change clears the selected video, rendered video, image description, and generated animation prompt. A crop change clears the image description and generated animation prompt. A camera movement or visual effect prompt change clears the generated animation prompt. Create a new shot video after any of those changes. Trim, playback speed, and transition_in only change the next final render. Use animation_prompt_asset_text to set the animation prompt directly.
curl --request PATCH \
--url https://backend.tensorpix.ai/api/v2/real-estate/projects/{project_id}/shots/{shot_id}/ \
--header 'Authorization: <api-key>' \
--header 'Content-Type: application/json' \
--data '
{
"first_frame": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"original_first_frame": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"animation_prompt_asset_text": "<string>",
"vfx_prompt": "<string>",
"playback_speed": 1.375,
"video_start_time_s": 123,
"video_end_time_s": 123
}
'import requests
url = "https://backend.tensorpix.ai/api/v2/real-estate/projects/{project_id}/shots/{shot_id}/"
payload = {
"first_frame": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"original_first_frame": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"animation_prompt_asset_text": "<string>",
"vfx_prompt": "<string>",
"playback_speed": 1.375,
"video_start_time_s": 123,
"video_end_time_s": 123
}
headers = {
"Authorization": "<api-key>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
first_frame: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
original_first_frame: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
animation_prompt_asset_text: '<string>',
vfx_prompt: '<string>',
playback_speed: 1.375,
video_start_time_s: 123,
video_end_time_s: 123
})
};
fetch('https://backend.tensorpix.ai/api/v2/real-estate/projects/{project_id}/shots/{shot_id}/', 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://backend.tensorpix.ai/api/v2/real-estate/projects/{project_id}/shots/{shot_id}/",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'first_frame' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'original_first_frame' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'animation_prompt_asset_text' => '<string>',
'vfx_prompt' => '<string>',
'playback_speed' => 1.375,
'video_start_time_s' => 123,
'video_end_time_s' => 123
]),
CURLOPT_HTTPHEADER => [
"Authorization: <api-key>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://backend.tensorpix.ai/api/v2/real-estate/projects/{project_id}/shots/{shot_id}/"
payload := strings.NewReader("{\n \"first_frame\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"original_first_frame\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"animation_prompt_asset_text\": \"<string>\",\n \"vfx_prompt\": \"<string>\",\n \"playback_speed\": 1.375,\n \"video_start_time_s\": 123,\n \"video_end_time_s\": 123\n}")
req, _ := http.NewRequest("PATCH", url, payload)
req.Header.Add("Authorization", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.patch("https://backend.tensorpix.ai/api/v2/real-estate/projects/{project_id}/shots/{shot_id}/")
.header("Authorization", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"first_frame\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"original_first_frame\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"animation_prompt_asset_text\": \"<string>\",\n \"vfx_prompt\": \"<string>\",\n \"playback_speed\": 1.375,\n \"video_start_time_s\": 123,\n \"video_end_time_s\": 123\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://backend.tensorpix.ai/api/v2/real-estate/projects/{project_id}/shots/{shot_id}/")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Authorization"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"first_frame\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"original_first_frame\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"animation_prompt_asset_text\": \"<string>\",\n \"vfx_prompt\": \"<string>\",\n \"playback_speed\": 1.375,\n \"video_start_time_s\": 123,\n \"video_end_time_s\": 123\n}"
response = http.request(request)
puts response.read_body{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"project_real_estate": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"order": 123,
"created_at": "2023-11-07T05:31:56Z",
"image": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"file": "<string>",
"thumbnail": "<string>",
"external_url": "<string>",
"width": 123,
"height": 123,
"file_size": 123,
"tags": [
"<string>"
],
"name_tag": "<string>"
},
"first_frame": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"file": "<string>",
"thumbnail": "<string>",
"external_url": "<string>",
"width": 123,
"height": 123,
"file_size": 123,
"tags": [
"<string>"
],
"name_tag": "<string>"
},
"original_first_frame": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"file": "<string>",
"thumbnail": "<string>",
"external_url": "<string>",
"width": 123,
"height": 123,
"file_size": 123,
"tags": [
"<string>"
],
"name_tag": "<string>"
},
"animation_prompt": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"created_at": "2023-11-07T05:31:56Z",
"text": "<string>"
},
"vfx_prompt": "<string>",
"description_job": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"camera_movement": "auto",
"transition_in": "none",
"transition_out": "none",
"playback_speed": 123,
"requested_duration_s": 123,
"duration_s": 123,
"crop_x": 123,
"crop_y": 123,
"crop_width": 123,
"crop_height": 123,
"video_start_time_s": 123,
"video_end_time_s": 123,
"selected_video": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"name_tag": "<string>",
"tags": [
"<string>"
],
"created_at": "2023-11-07T05:31:56Z",
"file": "<string>",
"external_url": "<string>",
"thumbnail": "<string>",
"last_frame": "<string>",
"width": 123,
"height": 123,
"file_size": 123,
"num_frames": 123,
"framerate": 123,
"duration_s": 123,
"bitrate": 123,
"codec_id": "<string>",
"bit_depth": 123,
"chroma_subsampling": "<string>",
"color_space": "<string>"
},
"rendered_video": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"name_tag": "<string>",
"tags": [
"<string>"
],
"created_at": "2023-11-07T05:31:56Z",
"file": "<string>",
"external_url": "<string>",
"thumbnail": "<string>",
"last_frame": "<string>",
"width": 123,
"height": 123,
"file_size": 123,
"num_frames": 123,
"framerate": 123,
"duration_s": 123,
"bitrate": 123,
"codec_id": "<string>",
"bit_depth": 123,
"chroma_subsampling": "<string>",
"color_space": "<string>"
}
}{
"detail": "<unknown>",
"error_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}{
"detail": "<string>",
"error_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}{
"detail": "<string>",
"error_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}{
"detail": "<string>",
"error_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}{
"detail": "<string>",
"error_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}{
"error": "<string>",
"error_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}Authorizations
Token-based authentication with required prefix "Token"
Body
Serializer for updating a real-estate shot.
Project image asset used as the current shot frame. Changing it clears the selected video and derived description.
Original project image asset kept as the restore source.
Animation prompt text sent to the next shot video generation.
Visual effect text added when the animation prompt is generated.
5000Camera movement used when the animation prompt is generated.
auto- Autostatic- Staticpan_left- Pan Leftpan_right- Pan Rightorbit_left_to_right- Orbit Left To Rightorbit_right_to_left- Orbit Right To Lefttruck_left- Truck Lefttruck_right- Truck Rightdolly_in- Dolly Indolly_out- Dolly Outtilt_up- Tilt Uptilt_down- Tilt Down
auto, static, pan_left, pan_right, orbit_left_to_right, orbit_right_to_left, truck_left, truck_right, dolly_in, dolly_out, tilt_up, tilt_down Transition applied when this shot enters the final timeline.
none- Nonefade- Fade
none, fade Playback speed used during final rendering.
0.75 <= x <= 2Start offset in seconds within the source video.
End offset in seconds within the source video.
Full normalized crop box used by the next shot video generation.
Show child attributes
Show child attributes
Response
Serializer for real-estate shot detail responses.
Real-estate project this shot belongs to.
Zero based position in the project timeline.
Datetime when the record was created.
Original shot frame, or the current first frame when no original is saved.
Show child attributes
Show child attributes
Serializer for ImageAsset with basic fields.
Show child attributes
Show child attributes
Serializer for ImageAsset with basic fields.
Show child attributes
Show child attributes
Serializer for TextAsset with basic fields.
Show child attributes
Show child attributes
Original VFX prompt sent by the client for this shot.
Job that stores the current first frame description, when one exists.
Camera motion directive used for real-estate shot video generation.
auto- Autostatic- Staticpan_left- Pan Leftpan_right- Pan Rightorbit_left_to_right- Orbit Left To Rightorbit_right_to_left- Orbit Right To Lefttruck_left- Truck Lefttruck_right- Truck Rightdolly_in- Dolly Indolly_out- Dolly Outtilt_up- Tilt Uptilt_down- Tilt Down
auto, static, pan_left, pan_right, orbit_left_to_right, orbit_right_to_left, truck_left, truck_right, dolly_in, dolly_out, tilt_up, tilt_down Transition effect used when this shot enters the project timeline.
none- Nonefade- Fade
none, fade Reserved transition effect used when this shot leaves the project timeline.
none- Nonefade- Fade
none, fade Render-time playback speed for the selected video.
Read only source range duration before playback speed.
Final shot duration after playback speed.
Saved crop left coordinate in relative image units from 0.0 to 1.0.
Saved crop top coordinate in relative image units from 0.0 to 1.0.
Saved crop width in relative image units from 0.0 to 1.0.
Saved crop height in relative image units from 0.0 to 1.0.
Start offset in seconds within the selected source video.
End offset in seconds within the selected source video.
Serializer for VideoAsset with basic fields.
Show child attributes
Show child attributes
Serializer for VideoAsset with basic fields.
Show child attributes
Show child attributes
Was this page helpful?