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
}创建视频
创建异步视频生成任务。每20秒轮询返回的polling_url,直到任务达到终态。
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
}授权
Bearer 令牌身份验证
请求体
所需时长(秒),取决于提供商/模型。
源视频时长(秒)。提供商对源视频时长与生成输出分别计费时必填。
0 < x <= 3600声明的源音频时长(秒),用于验证提供商允许的范围。不报告权威使用量的提供商可能按其支持的输入时长上限计费。
2 <= x <= 20明确尺寸(例如1280x720)。不能与resolution或aspect_ratio组合使用。
480p、720p、1080p、1K、2K、4K。可与aspect_ratio组合使用。不能与size组合使用。
宽高比,如16:9、9:16、1:1。可与resolution组合使用。不能与size组合使用。
1 <= x <= 4用于控制生成的HTTPS图像、音频或视频输入。支持的类型、角色、数量和组合取决于所选模型。提交任务前请检查GET /videos/models。此架构中省略的单数兼容别名input_reference接受multipart图像,或恰好包含file_id或image_url其中一个的对象。支持情况取决于提供商。
带类型的HTTPS媒体输入。图像使用image_url,音频或视频使用media_url。角色描述模型应如何使用输入;支持情况因提供商和模型而异。
- Option 1
- Option 2
Show child attributes
Show child attributes
首帧/尾帧的HTTPS图像。每个frame_type只能出现一次。不要同时提供input_reference或input_references中的帧角色。
1 - 2 elementsShow child attributes
Show child attributes
仅限提供商特定扩展。完整请求透传以及重复的路由、提示词、回调或计费字段会被拒绝。
以规范提供商ID(如atlascloud或byteplus)为键的扩展。仅转发所选提供商的选项。不能与provider_params组合使用。路由、提示词、回调、时长、分辨率和输出数量必须使用经过验证的顶层字段。
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
用于网关选择的提供商路由偏好设置。
Show child attributes
Show child attributes
响应
视频响应
用于订阅标准化异步任务生命周期更新的WebSocket URL。
queued, processing, completed, failed, cancelled, expired 供轮询、WebSocket和Webhook使用方使用的标准化异步生命周期状态。
pending, running, completed, failed, cancelled, expired 为兼容性保留;目前始终为null。
bytes, signed_url, both 与网关自有ID不同时的提供商原生视频/任务ID。
"video"
20
当output_access包含bytes时存在(需认证的端点)。
状态为completed时用于直接下载的第一方签名URL。
签名download_url过期的Unix时间戳(秒)。
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
已清理的异步Webhook配置及投递状态。绝不返回密钥;has_secret表示是否启用签名投递。签名投递包含x-phaseo-signature、x-phaseo-timestamp、x-phaseo-event-id、x-phaseo-event-type、x-phaseo-delivery-key、x-phaseo-attempt和x-phaseo-max-attempts请求头。
Show child attributes
Show child attributes
下一次计划用户Webhook重试的ISO时间戳(如已排队)。
最近向Webhook使用方发送的粗略进度区间。
最近一次Webhook进度区间发送的ISO时间戳。
最近一次Webhook发送尝试的ISO时间戳。
Show child attributes
Show child attributes