cURL
curl https://api.apipod.ai/v1/videos/generations \
-H "Authorization: Bearer $APIPOD_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "wan2.7-t2v",
"prompt": "A premium product photograph on a dark studio set, precise typography, soft rim lighting, highly detailed.",
"resolution": "1080P",
"aspect_ratio": "16:9",
"duration": 5
}'import os
import requests
payload = {
"model": "wan2.7-t2v",
"prompt": "A premium product photograph on a dark studio set, precise typography, soft rim lighting, highly detailed.",
"resolution": "1080P",
"aspect_ratio": "16:9",
"duration": 5
}
response = requests.post(
"https://api.apipod.ai/v1/videos/generations",
headers={
"Authorization": f"Bearer {os.environ['APIPOD_API_KEY']}",
"Content-Type": "application/json",
},
json=payload,
timeout=60,
)
response.raise_for_status()
print(response.json())package main
import (
"bytes"
"encoding/json"
"fmt"
"net/http"
"os"
)
func main() {
payload := map[string]any{}
if err := json.Unmarshal([]byte(`{
"model": "wan2.7-t2v",
"prompt": "A premium product photograph on a dark studio set, precise typography, soft rim lighting, highly detailed.",
"resolution": "1080P",
"aspect_ratio": "16:9",
"duration": 5
}`), &payload); err != nil {
panic(err)
}
body, err := json.Marshal(payload)
if err != nil {
panic(err)
}
req, err := http.NewRequest(http.MethodPost, "https://api.apipod.ai/v1/videos/generations", bytes.NewReader(body))
if err != nil {
panic(err)
}
req.Header.Set("Authorization", "Bearer "+os.Getenv("APIPOD_API_KEY"))
req.Header.Set("Content-Type", "application/json")
resp, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
fmt.Println(resp.Status)
}use reqwest::Client;
use serde_json::json;
use std::env;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let payload = json!({
"model": "wan2.7-t2v",
"prompt": "A premium product photograph on a dark studio set, precise typography, soft rim lighting, highly detailed.",
"resolution": "1080P",
"aspect_ratio": "16:9",
"duration": 5
});
let response = Client::new()
.post("https://api.apipod.ai/v1/videos/generations")
.bearer_auth(env::var("APIPOD_API_KEY")?)
.json(&payload)
.send()
.await?
.error_for_status()?;
println!("{}", response.text().await?);
Ok(())
}const response = await fetch("https://api.apipod.ai/v1/videos/generations", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.APIPOD_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify(
{
"model": "wan2.7-t2v",
"prompt": "A premium product photograph on a dark studio set, precise typography, soft rim lighting, highly detailed.",
"resolution": "1080P",
"aspect_ratio": "16:9",
"duration": 5
}
),
});
if (!response.ok) {
throw new Error(`APIPod request failed: ${response.status} ${await response.text()}`);
}
console.log(await response.json());{
"code": 200,
"message": "success",
"data": {
"task_id": "vid_task_01JEXAMPLE"
}
}Wan 2.7
WAN 2.7 Text to Video
Wan 2.7 文生视频是阿里 Wan Video模型的独立任务模式,直接根据文本提示词生成视频,不要求源媒体。
POST
https://api.apipod.ai
/
v1
/
videos
/
generations
cURL
curl https://api.apipod.ai/v1/videos/generations \
-H "Authorization: Bearer $APIPOD_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "wan2.7-t2v",
"prompt": "A premium product photograph on a dark studio set, precise typography, soft rim lighting, highly detailed.",
"resolution": "1080P",
"aspect_ratio": "16:9",
"duration": 5
}'import os
import requests
payload = {
"model": "wan2.7-t2v",
"prompt": "A premium product photograph on a dark studio set, precise typography, soft rim lighting, highly detailed.",
"resolution": "1080P",
"aspect_ratio": "16:9",
"duration": 5
}
response = requests.post(
"https://api.apipod.ai/v1/videos/generations",
headers={
"Authorization": f"Bearer {os.environ['APIPOD_API_KEY']}",
"Content-Type": "application/json",
},
json=payload,
timeout=60,
)
response.raise_for_status()
print(response.json())package main
import (
"bytes"
"encoding/json"
"fmt"
"net/http"
"os"
)
func main() {
payload := map[string]any{}
if err := json.Unmarshal([]byte(`{
"model": "wan2.7-t2v",
"prompt": "A premium product photograph on a dark studio set, precise typography, soft rim lighting, highly detailed.",
"resolution": "1080P",
"aspect_ratio": "16:9",
"duration": 5
}`), &payload); err != nil {
panic(err)
}
body, err := json.Marshal(payload)
if err != nil {
panic(err)
}
req, err := http.NewRequest(http.MethodPost, "https://api.apipod.ai/v1/videos/generations", bytes.NewReader(body))
if err != nil {
panic(err)
}
req.Header.Set("Authorization", "Bearer "+os.Getenv("APIPOD_API_KEY"))
req.Header.Set("Content-Type", "application/json")
resp, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
fmt.Println(resp.Status)
}use reqwest::Client;
use serde_json::json;
use std::env;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let payload = json!({
"model": "wan2.7-t2v",
"prompt": "A premium product photograph on a dark studio set, precise typography, soft rim lighting, highly detailed.",
"resolution": "1080P",
"aspect_ratio": "16:9",
"duration": 5
});
let response = Client::new()
.post("https://api.apipod.ai/v1/videos/generations")
.bearer_auth(env::var("APIPOD_API_KEY")?)
.json(&payload)
.send()
.await?
.error_for_status()?;
println!("{}", response.text().await?);
Ok(())
}const response = await fetch("https://api.apipod.ai/v1/videos/generations", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.APIPOD_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify(
{
"model": "wan2.7-t2v",
"prompt": "A premium product photograph on a dark studio set, precise typography, soft rim lighting, highly detailed.",
"resolution": "1080P",
"aspect_ratio": "16:9",
"duration": 5
}
),
});
if (!response.ok) {
throw new Error(`APIPod request failed: ${response.status} ${await response.text()}`);
}
console.log(await response.json());{
"code": 200,
"message": "success",
"data": {
"task_id": "vid_task_01JEXAMPLE"
}
}授权
在 Authorization 请求头中使用 Bearer APIPod_API_KEY。
请求体
application/json
APIPod 公开模型 ID。
Allowed value:
"wan2.7-t2v"生成或编辑指令。 最大字符串长度:5000。
是否启用智能提示词改写。启用后会使用大模型改写输入提示词,可改善短提示词的生成效果,但会增加处理时间。
negative_prompt
string
默认值:low resolution, errors, worst quality, poor quality, incomplete, extra fingers, poor aspect ratio.
Describe the content you do not wish to see in the video frame, which can be used to restrict the video frame. 最大字符串长度:500。
模型使用该音频生成视频。音频长于视频时长时会截取前段,音频短于视频时长时,超出音频长度的部分将保持静音。
输出分辨率档位。
可用选项:
720P, 1080P 输出宽高比。
可用选项:
16:9, 9:16, 1:1, 4:3, 3:4 视频时长,单位为秒。 最小值:2。 最大值:15。
添加上游水印。
⌘I