const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
model: '<string>',
prompt: '<string>',
duration: 123,
input_video_duration: 1800,
input_audio_duration: 11,
size: '<string>',
resolution: '<string>',
aspect_ratio: '<string>',
seed: 123,
sample_count: 2,
negative_prompt: '<string>',
generate_audio: true,
enhance_prompt: true,
compression_quality: 123,
person_generation: '<string>',
resize_mode: '<string>',
input_references: [{type: 'image_url', image_url: {url: '<string>'}, reference_type: '<string>'}],
frame_images: [{type: 'image_url', image_url: {url: '<string>'}}],
provider_params: {},
provider_options: {},
output: {access: 'both'},
provider: {
order: ['<string>'],
only: ['<string>'],
ignore: ['<string>'],
include_alpha: true,
allow_fallbacks: true,
require_parameters: true,
required_execution_region: '<string>',
required_data_region: '<string>',
require_zero_data_retention: true,
zdr: true,
enforce_distillable_text: true,
quantizations: ['<string>'],
sort: '<string>',
max_price: {prompt: 123, completion: 123, image: 123, audio: 123, request: 123},
preferred_min_throughput: 123,
preferred_max_latency: 123
}
})
};
fetch('https://api.phaseo.app/v1/videos', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.phaseo.app/v1/videos"
payload = {
"model": "<string>",
"prompt": "<string>",
"duration": 123,
"input_video_duration": 1800,
"input_audio_duration": 11,
"size": "<string>",
"resolution": "<string>",
"aspect_ratio": "<string>",
"seed": 123,
"sample_count": 2,
"negative_prompt": "<string>",
"generate_audio": True,
"enhance_prompt": True,
"compression_quality": 123,
"person_generation": "<string>",
"resize_mode": "<string>",
"input_references": [
{
"type": "image_url",
"image_url": { "url": "<string>" },
"reference_type": "<string>"
}
],
"frame_images": [
{
"type": "image_url",
"image_url": { "url": "<string>" }
}
],
"provider_params": {},
"provider_options": {},
"output": { "access": "both" },
"provider": {
"order": ["<string>"],
"only": ["<string>"],
"ignore": ["<string>"],
"include_alpha": True,
"allow_fallbacks": True,
"require_parameters": True,
"required_execution_region": "<string>",
"required_data_region": "<string>",
"require_zero_data_retention": True,
"zdr": True,
"enforce_distillable_text": True,
"quantizations": ["<string>"],
"sort": "<string>",
"max_price": {
"prompt": 123,
"completion": 123,
"image": 123,
"audio": 123,
"request": 123
},
"preferred_min_throughput": 123,
"preferred_max_latency": 123
}
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)curl --request POST \
--url https://api.phaseo.app/v1/videos \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"model": "<string>",
"prompt": "<string>",
"duration": 123,
"input_video_duration": 1800,
"input_audio_duration": 11,
"size": "<string>",
"resolution": "<string>",
"aspect_ratio": "<string>",
"seed": 123,
"sample_count": 2,
"negative_prompt": "<string>",
"generate_audio": true,
"enhance_prompt": true,
"compression_quality": 123,
"person_generation": "<string>",
"resize_mode": "<string>",
"input_references": [
{
"type": "image_url",
"image_url": {
"url": "<string>"
},
"reference_type": "<string>"
}
],
"frame_images": [
{
"type": "image_url",
"image_url": {
"url": "<string>"
}
}
],
"provider_params": {},
"provider_options": {},
"output": {
"access": "both"
},
"provider": {
"order": [
"<string>"
],
"only": [
"<string>"
],
"ignore": [
"<string>"
],
"include_alpha": true,
"allow_fallbacks": true,
"require_parameters": true,
"required_execution_region": "<string>",
"required_data_region": "<string>",
"require_zero_data_retention": true,
"zdr": true,
"enforce_distillable_text": true,
"quantizations": [
"<string>"
],
"sort": "<string>",
"max_price": {
"prompt": 123,
"completion": 123,
"image": 123,
"audio": 123,
"request": 123
},
"preferred_min_throughput": 123,
"preferred_max_latency": 123
}
}
'package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.phaseo.app/v1/videos"
payload := strings.NewReader("{\n \"model\": \"<string>\",\n \"prompt\": \"<string>\",\n \"duration\": 123,\n \"input_video_duration\": 1800,\n \"input_audio_duration\": 11,\n \"size\": \"<string>\",\n \"resolution\": \"<string>\",\n \"aspect_ratio\": \"<string>\",\n \"seed\": 123,\n \"sample_count\": 2,\n \"negative_prompt\": \"<string>\",\n \"generate_audio\": true,\n \"enhance_prompt\": true,\n \"compression_quality\": 123,\n \"person_generation\": \"<string>\",\n \"resize_mode\": \"<string>\",\n \"input_references\": [\n {\n \"type\": \"image_url\",\n \"image_url\": {\n \"url\": \"<string>\"\n },\n \"reference_type\": \"<string>\"\n }\n ],\n \"frame_images\": [\n {\n \"type\": \"image_url\",\n \"image_url\": {\n \"url\": \"<string>\"\n }\n }\n ],\n \"provider_params\": {},\n \"provider_options\": {},\n \"output\": {\n \"access\": \"both\"\n },\n \"provider\": {\n \"order\": [\n \"<string>\"\n ],\n \"only\": [\n \"<string>\"\n ],\n \"ignore\": [\n \"<string>\"\n ],\n \"include_alpha\": true,\n \"allow_fallbacks\": true,\n \"require_parameters\": true,\n \"required_execution_region\": \"<string>\",\n \"required_data_region\": \"<string>\",\n \"require_zero_data_retention\": true,\n \"zdr\": true,\n \"enforce_distillable_text\": true,\n \"quantizations\": [\n \"<string>\"\n ],\n \"sort\": \"<string>\",\n \"max_price\": {\n \"prompt\": 123,\n \"completion\": 123,\n \"image\": 123,\n \"audio\": 123,\n \"request\": 123\n },\n \"preferred_min_throughput\": 123,\n \"preferred_max_latency\": 123\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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.post("https://api.phaseo.app/v1/videos")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"model\": \"<string>\",\n \"prompt\": \"<string>\",\n \"duration\": 123,\n \"input_video_duration\": 1800,\n \"input_audio_duration\": 11,\n \"size\": \"<string>\",\n \"resolution\": \"<string>\",\n \"aspect_ratio\": \"<string>\",\n \"seed\": 123,\n \"sample_count\": 2,\n \"negative_prompt\": \"<string>\",\n \"generate_audio\": true,\n \"enhance_prompt\": true,\n \"compression_quality\": 123,\n \"person_generation\": \"<string>\",\n \"resize_mode\": \"<string>\",\n \"input_references\": [\n {\n \"type\": \"image_url\",\n \"image_url\": {\n \"url\": \"<string>\"\n },\n \"reference_type\": \"<string>\"\n }\n ],\n \"frame_images\": [\n {\n \"type\": \"image_url\",\n \"image_url\": {\n \"url\": \"<string>\"\n }\n }\n ],\n \"provider_params\": {},\n \"provider_options\": {},\n \"output\": {\n \"access\": \"both\"\n },\n \"provider\": {\n \"order\": [\n \"<string>\"\n ],\n \"only\": [\n \"<string>\"\n ],\n \"ignore\": [\n \"<string>\"\n ],\n \"include_alpha\": true,\n \"allow_fallbacks\": true,\n \"require_parameters\": true,\n \"required_execution_region\": \"<string>\",\n \"required_data_region\": \"<string>\",\n \"require_zero_data_retention\": true,\n \"zdr\": true,\n \"enforce_distillable_text\": true,\n \"quantizations\": [\n \"<string>\"\n ],\n \"sort\": \"<string>\",\n \"max_price\": {\n \"prompt\": 123,\n \"completion\": 123,\n \"image\": 123,\n \"audio\": 123,\n \"request\": 123\n },\n \"preferred_min_throughput\": 123,\n \"preferred_max_latency\": 123\n }\n}")
.asString();<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.phaseo.app/v1/videos",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'model' => '<string>',
'prompt' => '<string>',
'duration' => 123,
'input_video_duration' => 1800,
'input_audio_duration' => 11,
'size' => '<string>',
'resolution' => '<string>',
'aspect_ratio' => '<string>',
'seed' => 123,
'sample_count' => 2,
'negative_prompt' => '<string>',
'generate_audio' => true,
'enhance_prompt' => true,
'compression_quality' => 123,
'person_generation' => '<string>',
'resize_mode' => '<string>',
'input_references' => [
[
'type' => 'image_url',
'image_url' => [
'url' => '<string>'
],
'reference_type' => '<string>'
]
],
'frame_images' => [
[
'type' => 'image_url',
'image_url' => [
'url' => '<string>'
]
]
],
'provider_params' => [
],
'provider_options' => [
],
'output' => [
'access' => 'both'
],
'provider' => [
'order' => [
'<string>'
],
'only' => [
'<string>'
],
'ignore' => [
'<string>'
],
'include_alpha' => true,
'allow_fallbacks' => true,
'require_parameters' => true,
'required_execution_region' => '<string>',
'required_data_region' => '<string>',
'require_zero_data_retention' => true,
'zdr' => true,
'enforce_distillable_text' => true,
'quantizations' => [
'<string>'
],
'sort' => '<string>',
'max_price' => [
'prompt' => 123,
'completion' => 123,
'image' => 123,
'audio' => 123,
'request' => 123
],
'preferred_min_throughput' => 123,
'preferred_max_latency' => 123
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}require 'uri'
require 'net/http'
url = URI("https://api.phaseo.app/v1/videos")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"model\": \"<string>\",\n \"prompt\": \"<string>\",\n \"duration\": 123,\n \"input_video_duration\": 1800,\n \"input_audio_duration\": 11,\n \"size\": \"<string>\",\n \"resolution\": \"<string>\",\n \"aspect_ratio\": \"<string>\",\n \"seed\": 123,\n \"sample_count\": 2,\n \"negative_prompt\": \"<string>\",\n \"generate_audio\": true,\n \"enhance_prompt\": true,\n \"compression_quality\": 123,\n \"person_generation\": \"<string>\",\n \"resize_mode\": \"<string>\",\n \"input_references\": [\n {\n \"type\": \"image_url\",\n \"image_url\": {\n \"url\": \"<string>\"\n },\n \"reference_type\": \"<string>\"\n }\n ],\n \"frame_images\": [\n {\n \"type\": \"image_url\",\n \"image_url\": {\n \"url\": \"<string>\"\n }\n }\n ],\n \"provider_params\": {},\n \"provider_options\": {},\n \"output\": {\n \"access\": \"both\"\n },\n \"provider\": {\n \"order\": [\n \"<string>\"\n ],\n \"only\": [\n \"<string>\"\n ],\n \"ignore\": [\n \"<string>\"\n ],\n \"include_alpha\": true,\n \"allow_fallbacks\": true,\n \"require_parameters\": true,\n \"required_execution_region\": \"<string>\",\n \"required_data_region\": \"<string>\",\n \"require_zero_data_retention\": true,\n \"zdr\": true,\n \"enforce_distillable_text\": true,\n \"quantizations\": [\n \"<string>\"\n ],\n \"sort\": \"<string>\",\n \"max_price\": {\n \"prompt\": 123,\n \"completion\": 123,\n \"image\": 123,\n \"audio\": 123,\n \"request\": 123\n },\n \"preferred_min_throughput\": 123,\n \"preferred_max_latency\": 123\n }\n}"
response = http.request(request)
puts response.read_body{
"id": "<string>",
"polling_url": "<string>",
"websocket_url": "<string>",
"model": "<string>",
"request_id": "<string>",
"session_id": "<string>",
"status": "queued",
"lifecycle_status": "pending",
"cancel_url": "<string>",
"output_access": "bytes",
"generation_id": "<string>",
"native_video_id": "<string>",
"created_at": 123,
"started_at": 123,
"completed_at": 123,
"object": "video",
"poll_after_seconds": 20,
"provider": "<string>",
"seconds": 123,
"size": "<string>",
"audio": true,
"content_url": "<string>",
"download_url": "<string>",
"expires_at": 123,
"progress": 123,
"progress_source": "<string>",
"asset": {
"id": "<string>",
"mime_type": "<string>",
"bytes": 123,
"sha256": "<string>",
"width": 123,
"height": 123,
"duration_seconds": 123
},
"outputs": [
{
"index": 123,
"mime_type": "<string>",
"bytes_available": true,
"content_url": "<string>",
"download_url": "<string>",
"expires_at": 123
}
],
"billing": {
"currency": "<string>",
"estimated_provider_cost": "<string>",
"estimated_user_cost": "<string>",
"settled_provider_cost": "<string>",
"settled_user_cost": "<string>",
"state": "pending",
"billable": true,
"total_nanos": 123,
"estimated_nanos": 123,
"reserved_nanos": 123,
"reservation_id": "<string>",
"reservation_status": "<string>",
"charge_reason": "<string>",
"charged": true,
"billed_at": "<string>"
},
"webhook": {
"url": "<string>",
"events": [
"<string>"
],
"has_secret": true,
"delivery": {
"total_attempts": 123,
"delivered_events": 123,
"delivered_event_types": [
"video.completed"
],
"pending_retries": 123,
"next_retry_at": "<string>",
"last_attempt_at": "<string>",
"last_attempt_status": "delivered",
"last_response_status": 123,
"last_delivered_at": "<string>",
"last_failure_at": "<string>",
"last_error_message": "<string>"
},
"attempts": [
{
"id": "<string>",
"delivery_key": "video.completed",
"event_type": "video.completed",
"status": "delivered",
"attempt_number": 123,
"max_attempts": 123,
"tried_at": "<string>",
"delivered_at": "<string>",
"next_retry_at": "<string>",
"response_status": 123,
"error_message": "<string>",
"response_body_preview": "<string>"
}
]
},
"next_webhook_retry_at": "<string>",
"last_webhook_progress": 123,
"last_webhook_progress_at": "<string>",
"last_webhook_dispatched_at": "<string>",
"usage": {
"cost": 123,
"is_byok": true
},
"error": null
}Criar vídeo
Cria um trabalho de geração assíncrona de vídeo. Consulte a polling_url retornada a cada 20 segundos até o trabalho atingir um status final.
const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
model: '<string>',
prompt: '<string>',
duration: 123,
input_video_duration: 1800,
input_audio_duration: 11,
size: '<string>',
resolution: '<string>',
aspect_ratio: '<string>',
seed: 123,
sample_count: 2,
negative_prompt: '<string>',
generate_audio: true,
enhance_prompt: true,
compression_quality: 123,
person_generation: '<string>',
resize_mode: '<string>',
input_references: [{type: 'image_url', image_url: {url: '<string>'}, reference_type: '<string>'}],
frame_images: [{type: 'image_url', image_url: {url: '<string>'}}],
provider_params: {},
provider_options: {},
output: {access: 'both'},
provider: {
order: ['<string>'],
only: ['<string>'],
ignore: ['<string>'],
include_alpha: true,
allow_fallbacks: true,
require_parameters: true,
required_execution_region: '<string>',
required_data_region: '<string>',
require_zero_data_retention: true,
zdr: true,
enforce_distillable_text: true,
quantizations: ['<string>'],
sort: '<string>',
max_price: {prompt: 123, completion: 123, image: 123, audio: 123, request: 123},
preferred_min_throughput: 123,
preferred_max_latency: 123
}
})
};
fetch('https://api.phaseo.app/v1/videos', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.phaseo.app/v1/videos"
payload = {
"model": "<string>",
"prompt": "<string>",
"duration": 123,
"input_video_duration": 1800,
"input_audio_duration": 11,
"size": "<string>",
"resolution": "<string>",
"aspect_ratio": "<string>",
"seed": 123,
"sample_count": 2,
"negative_prompt": "<string>",
"generate_audio": True,
"enhance_prompt": True,
"compression_quality": 123,
"person_generation": "<string>",
"resize_mode": "<string>",
"input_references": [
{
"type": "image_url",
"image_url": { "url": "<string>" },
"reference_type": "<string>"
}
],
"frame_images": [
{
"type": "image_url",
"image_url": { "url": "<string>" }
}
],
"provider_params": {},
"provider_options": {},
"output": { "access": "both" },
"provider": {
"order": ["<string>"],
"only": ["<string>"],
"ignore": ["<string>"],
"include_alpha": True,
"allow_fallbacks": True,
"require_parameters": True,
"required_execution_region": "<string>",
"required_data_region": "<string>",
"require_zero_data_retention": True,
"zdr": True,
"enforce_distillable_text": True,
"quantizations": ["<string>"],
"sort": "<string>",
"max_price": {
"prompt": 123,
"completion": 123,
"image": 123,
"audio": 123,
"request": 123
},
"preferred_min_throughput": 123,
"preferred_max_latency": 123
}
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)curl --request POST \
--url https://api.phaseo.app/v1/videos \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"model": "<string>",
"prompt": "<string>",
"duration": 123,
"input_video_duration": 1800,
"input_audio_duration": 11,
"size": "<string>",
"resolution": "<string>",
"aspect_ratio": "<string>",
"seed": 123,
"sample_count": 2,
"negative_prompt": "<string>",
"generate_audio": true,
"enhance_prompt": true,
"compression_quality": 123,
"person_generation": "<string>",
"resize_mode": "<string>",
"input_references": [
{
"type": "image_url",
"image_url": {
"url": "<string>"
},
"reference_type": "<string>"
}
],
"frame_images": [
{
"type": "image_url",
"image_url": {
"url": "<string>"
}
}
],
"provider_params": {},
"provider_options": {},
"output": {
"access": "both"
},
"provider": {
"order": [
"<string>"
],
"only": [
"<string>"
],
"ignore": [
"<string>"
],
"include_alpha": true,
"allow_fallbacks": true,
"require_parameters": true,
"required_execution_region": "<string>",
"required_data_region": "<string>",
"require_zero_data_retention": true,
"zdr": true,
"enforce_distillable_text": true,
"quantizations": [
"<string>"
],
"sort": "<string>",
"max_price": {
"prompt": 123,
"completion": 123,
"image": 123,
"audio": 123,
"request": 123
},
"preferred_min_throughput": 123,
"preferred_max_latency": 123
}
}
'package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.phaseo.app/v1/videos"
payload := strings.NewReader("{\n \"model\": \"<string>\",\n \"prompt\": \"<string>\",\n \"duration\": 123,\n \"input_video_duration\": 1800,\n \"input_audio_duration\": 11,\n \"size\": \"<string>\",\n \"resolution\": \"<string>\",\n \"aspect_ratio\": \"<string>\",\n \"seed\": 123,\n \"sample_count\": 2,\n \"negative_prompt\": \"<string>\",\n \"generate_audio\": true,\n \"enhance_prompt\": true,\n \"compression_quality\": 123,\n \"person_generation\": \"<string>\",\n \"resize_mode\": \"<string>\",\n \"input_references\": [\n {\n \"type\": \"image_url\",\n \"image_url\": {\n \"url\": \"<string>\"\n },\n \"reference_type\": \"<string>\"\n }\n ],\n \"frame_images\": [\n {\n \"type\": \"image_url\",\n \"image_url\": {\n \"url\": \"<string>\"\n }\n }\n ],\n \"provider_params\": {},\n \"provider_options\": {},\n \"output\": {\n \"access\": \"both\"\n },\n \"provider\": {\n \"order\": [\n \"<string>\"\n ],\n \"only\": [\n \"<string>\"\n ],\n \"ignore\": [\n \"<string>\"\n ],\n \"include_alpha\": true,\n \"allow_fallbacks\": true,\n \"require_parameters\": true,\n \"required_execution_region\": \"<string>\",\n \"required_data_region\": \"<string>\",\n \"require_zero_data_retention\": true,\n \"zdr\": true,\n \"enforce_distillable_text\": true,\n \"quantizations\": [\n \"<string>\"\n ],\n \"sort\": \"<string>\",\n \"max_price\": {\n \"prompt\": 123,\n \"completion\": 123,\n \"image\": 123,\n \"audio\": 123,\n \"request\": 123\n },\n \"preferred_min_throughput\": 123,\n \"preferred_max_latency\": 123\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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.post("https://api.phaseo.app/v1/videos")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"model\": \"<string>\",\n \"prompt\": \"<string>\",\n \"duration\": 123,\n \"input_video_duration\": 1800,\n \"input_audio_duration\": 11,\n \"size\": \"<string>\",\n \"resolution\": \"<string>\",\n \"aspect_ratio\": \"<string>\",\n \"seed\": 123,\n \"sample_count\": 2,\n \"negative_prompt\": \"<string>\",\n \"generate_audio\": true,\n \"enhance_prompt\": true,\n \"compression_quality\": 123,\n \"person_generation\": \"<string>\",\n \"resize_mode\": \"<string>\",\n \"input_references\": [\n {\n \"type\": \"image_url\",\n \"image_url\": {\n \"url\": \"<string>\"\n },\n \"reference_type\": \"<string>\"\n }\n ],\n \"frame_images\": [\n {\n \"type\": \"image_url\",\n \"image_url\": {\n \"url\": \"<string>\"\n }\n }\n ],\n \"provider_params\": {},\n \"provider_options\": {},\n \"output\": {\n \"access\": \"both\"\n },\n \"provider\": {\n \"order\": [\n \"<string>\"\n ],\n \"only\": [\n \"<string>\"\n ],\n \"ignore\": [\n \"<string>\"\n ],\n \"include_alpha\": true,\n \"allow_fallbacks\": true,\n \"require_parameters\": true,\n \"required_execution_region\": \"<string>\",\n \"required_data_region\": \"<string>\",\n \"require_zero_data_retention\": true,\n \"zdr\": true,\n \"enforce_distillable_text\": true,\n \"quantizations\": [\n \"<string>\"\n ],\n \"sort\": \"<string>\",\n \"max_price\": {\n \"prompt\": 123,\n \"completion\": 123,\n \"image\": 123,\n \"audio\": 123,\n \"request\": 123\n },\n \"preferred_min_throughput\": 123,\n \"preferred_max_latency\": 123\n }\n}")
.asString();<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.phaseo.app/v1/videos",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'model' => '<string>',
'prompt' => '<string>',
'duration' => 123,
'input_video_duration' => 1800,
'input_audio_duration' => 11,
'size' => '<string>',
'resolution' => '<string>',
'aspect_ratio' => '<string>',
'seed' => 123,
'sample_count' => 2,
'negative_prompt' => '<string>',
'generate_audio' => true,
'enhance_prompt' => true,
'compression_quality' => 123,
'person_generation' => '<string>',
'resize_mode' => '<string>',
'input_references' => [
[
'type' => 'image_url',
'image_url' => [
'url' => '<string>'
],
'reference_type' => '<string>'
]
],
'frame_images' => [
[
'type' => 'image_url',
'image_url' => [
'url' => '<string>'
]
]
],
'provider_params' => [
],
'provider_options' => [
],
'output' => [
'access' => 'both'
],
'provider' => [
'order' => [
'<string>'
],
'only' => [
'<string>'
],
'ignore' => [
'<string>'
],
'include_alpha' => true,
'allow_fallbacks' => true,
'require_parameters' => true,
'required_execution_region' => '<string>',
'required_data_region' => '<string>',
'require_zero_data_retention' => true,
'zdr' => true,
'enforce_distillable_text' => true,
'quantizations' => [
'<string>'
],
'sort' => '<string>',
'max_price' => [
'prompt' => 123,
'completion' => 123,
'image' => 123,
'audio' => 123,
'request' => 123
],
'preferred_min_throughput' => 123,
'preferred_max_latency' => 123
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}require 'uri'
require 'net/http'
url = URI("https://api.phaseo.app/v1/videos")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"model\": \"<string>\",\n \"prompt\": \"<string>\",\n \"duration\": 123,\n \"input_video_duration\": 1800,\n \"input_audio_duration\": 11,\n \"size\": \"<string>\",\n \"resolution\": \"<string>\",\n \"aspect_ratio\": \"<string>\",\n \"seed\": 123,\n \"sample_count\": 2,\n \"negative_prompt\": \"<string>\",\n \"generate_audio\": true,\n \"enhance_prompt\": true,\n \"compression_quality\": 123,\n \"person_generation\": \"<string>\",\n \"resize_mode\": \"<string>\",\n \"input_references\": [\n {\n \"type\": \"image_url\",\n \"image_url\": {\n \"url\": \"<string>\"\n },\n \"reference_type\": \"<string>\"\n }\n ],\n \"frame_images\": [\n {\n \"type\": \"image_url\",\n \"image_url\": {\n \"url\": \"<string>\"\n }\n }\n ],\n \"provider_params\": {},\n \"provider_options\": {},\n \"output\": {\n \"access\": \"both\"\n },\n \"provider\": {\n \"order\": [\n \"<string>\"\n ],\n \"only\": [\n \"<string>\"\n ],\n \"ignore\": [\n \"<string>\"\n ],\n \"include_alpha\": true,\n \"allow_fallbacks\": true,\n \"require_parameters\": true,\n \"required_execution_region\": \"<string>\",\n \"required_data_region\": \"<string>\",\n \"require_zero_data_retention\": true,\n \"zdr\": true,\n \"enforce_distillable_text\": true,\n \"quantizations\": [\n \"<string>\"\n ],\n \"sort\": \"<string>\",\n \"max_price\": {\n \"prompt\": 123,\n \"completion\": 123,\n \"image\": 123,\n \"audio\": 123,\n \"request\": 123\n },\n \"preferred_min_throughput\": 123,\n \"preferred_max_latency\": 123\n }\n}"
response = http.request(request)
puts response.read_body{
"id": "<string>",
"polling_url": "<string>",
"websocket_url": "<string>",
"model": "<string>",
"request_id": "<string>",
"session_id": "<string>",
"status": "queued",
"lifecycle_status": "pending",
"cancel_url": "<string>",
"output_access": "bytes",
"generation_id": "<string>",
"native_video_id": "<string>",
"created_at": 123,
"started_at": 123,
"completed_at": 123,
"object": "video",
"poll_after_seconds": 20,
"provider": "<string>",
"seconds": 123,
"size": "<string>",
"audio": true,
"content_url": "<string>",
"download_url": "<string>",
"expires_at": 123,
"progress": 123,
"progress_source": "<string>",
"asset": {
"id": "<string>",
"mime_type": "<string>",
"bytes": 123,
"sha256": "<string>",
"width": 123,
"height": 123,
"duration_seconds": 123
},
"outputs": [
{
"index": 123,
"mime_type": "<string>",
"bytes_available": true,
"content_url": "<string>",
"download_url": "<string>",
"expires_at": 123
}
],
"billing": {
"currency": "<string>",
"estimated_provider_cost": "<string>",
"estimated_user_cost": "<string>",
"settled_provider_cost": "<string>",
"settled_user_cost": "<string>",
"state": "pending",
"billable": true,
"total_nanos": 123,
"estimated_nanos": 123,
"reserved_nanos": 123,
"reservation_id": "<string>",
"reservation_status": "<string>",
"charge_reason": "<string>",
"charged": true,
"billed_at": "<string>"
},
"webhook": {
"url": "<string>",
"events": [
"<string>"
],
"has_secret": true,
"delivery": {
"total_attempts": 123,
"delivered_events": 123,
"delivered_event_types": [
"video.completed"
],
"pending_retries": 123,
"next_retry_at": "<string>",
"last_attempt_at": "<string>",
"last_attempt_status": "delivered",
"last_response_status": 123,
"last_delivered_at": "<string>",
"last_failure_at": "<string>",
"last_error_message": "<string>"
},
"attempts": [
{
"id": "<string>",
"delivery_key": "video.completed",
"event_type": "video.completed",
"status": "delivered",
"attempt_number": 123,
"max_attempts": 123,
"tried_at": "<string>",
"delivered_at": "<string>",
"next_retry_at": "<string>",
"response_status": 123,
"error_message": "<string>",
"response_body_preview": "<string>"
}
]
},
"next_webhook_retry_at": "<string>",
"last_webhook_progress": 123,
"last_webhook_progress_at": "<string>",
"last_webhook_dispatched_at": "<string>",
"usage": {
"cost": 123,
"is_byok": true
},
"error": null
}Autorizações
Autenticação com token Bearer
Corpo
Duração desejada em segundos (depende do provedor/modelo).
Duração do vídeo de origem em segundos. Obrigatória quando o provedor cobra a duração do vídeo de origem separadamente da saída gerada.
0 < x <= 3600Duração declarada do áudio de origem em segundos, usada para validar a faixa do provedor. Provedores que não informam uso definitivo podem cobrar pelo teto de duração de entrada suportado.
2 <= x <= 20Dimensões explícitas (por exemplo, 1280x720). Não pode ser combinado com resolution ou aspect_ratio.
480p, 720p, 1080p, 1K, 2K, 4K. Pode ser combinado com aspect_ratio. Não pode ser combinado com size.
Proporção como 16:9, 9:16 ou 1:1. Pode ser combinado com resolution. Não pode ser combinado com size.
1 <= x <= 4Entradas HTTPS de imagem, áudio ou vídeo que condicionam a geração. Tipos, funções, quantidades e combinações suportados dependem do modelo selecionado. Consulte GET /videos/models antes de enviar um trabalho. O alias singular de compatibilidade input_reference, omitido deste esquema, aceita uma imagem multipart ou um objeto com exatamente um dos campos file_id ou image_url. O suporte depende do provedor.
Entrada de mídia HTTPS tipada. Use image_url para imagens e media_url para áudio ou vídeo. As funções descrevem como o modelo deve usar a entrada; o suporte varia por provedor e modelo.
- Option 1
- Option 2
Show child attributes
Show child attributes
Imagens HTTPS do primeiro/último quadro. Cada frame_type pode aparecer uma vez. Não forneça também input_reference nem funções de quadro em input_references.
1 - 2 elementsShow child attributes
Show child attributes
Somente extensões específicas do provedor. O repasse completo da solicitação e campos duplicados de roteamento, prompt, callback ou cobrança são rejeitados.
Extensões indexadas pelo ID canônico do provedor (por exemplo, atlascloud ou byteplus). Somente as opções do provedor selecionado são encaminhadas. Não pode ser combinado com provider_params. Campos de roteamento, prompt, callback, duração, resolução e quantidade de saídas devem usar campos validados de nível superior.
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Preferências de roteamento de provedores para seleção pelo gateway.
Show child attributes
Show child attributes
Resposta
Resposta de vídeo
URL de WebSocket para assinar atualizações normalizadas do ciclo de vida de trabalhos assíncronos.
queued, processing, completed, failed, cancelled, expired Status normalizado do ciclo de vida assíncrono para consumidores de polling, WebSocket e webhooks.
pending, running, completed, failed, cancelled, expired Reservado para compatibilidade; atualmente sempre null.
bytes, signed_url, both ID nativo de vídeo/trabalho do provedor quando difere do ID do gateway.
"video"
20
Presente quando output_access inclui bytes (endpoint autenticado).
URL assinada de primeira parte para download direto quando o status é completed.
Timestamp Unix (segundos) de expiração da download_url assinada.
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Configuração sanitizada do webhook assíncrono e estado de entrega. Segredos nunca são retornados; has_secret indica se entregas assinadas estão habilitadas. Entregas assinadas incluem os cabeçalhos x-phaseo-signature, x-phaseo-timestamp, x-phaseo-event-id, x-phaseo-event-type, x-phaseo-delivery-key, x-phaseo-attempt e x-phaseo-max-attempts.
Show child attributes
Show child attributes
Timestamp ISO da próxima tentativa agendada do webhook do usuário, quando enfileirada.
Última faixa aproximada de progresso enviada aos consumidores de webhooks.
Timestamp ISO do envio da faixa de progresso mais recente do webhook.
Timestamp ISO da tentativa de envio do webhook mais recente.
Show child attributes
Show child attributes
Esta página foi útil?