curl --request POST \
--url https://api.apimart.ai/v1/videos/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "pixverse-v6",
"prompt": "A cinematic shot of a corgi running through a sunflower field at golden hour",
"size": "16:9",
"resolution": "540p",
"duration": 5
}'
import requests
url = "https://api.apimart.ai/v1/videos/generations"
payload = {
"model": "pixverse-v6",
"prompt": "A cinematic shot of a corgi running through a sunflower field at golden hour",
"size": "16:9",
"resolution": "540p",
"duration": 5
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.json())
const url = "https://api.apimart.ai/v1/videos/generations";
const payload = {
model: "pixverse-v6",
prompt: "A cinematic shot of a corgi running through a sunflower field at golden hour",
size: "16:9",
resolution: "540p",
duration: 5
};
const headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
};
fetch(url, {
method: "POST",
headers: headers,
body: JSON.stringify(payload)
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error("Error:", error));
{
"code": 200,
"data": [
{
"status": "submitted",
"task_id": "task_01JWXXXXXXXXXXXX"
}
]
}
{
"error": {
"type": "invalid_request_error",
"message": "invalid duration 20, allowed range: 1-15 seconds"
}
}
{
"error": {
"code": 401,
"message": "Falha na autenticação, verifique sua chave de API",
"type": "authentication_error"
}
}
{
"error": {
"code": 403,
"message": "insufficient quota: balance=0, required=0.25",
"type": "quota_not_enough"
}
}
{
"error": {
"code": 429,
"message": "Muitas requisições, tente novamente mais tarde",
"type": "rate_limit_error"
}
}
Pixverse v6
Pixverse v6 Geração de Vídeo
- Modelo unificado de geração de vídeo Pixverse v6
- Suporta texto-para-vídeo, imagem-para-vídeo, transição entre primeiro/último frame, fusão de múltiplas imagens de referência e extensão de vídeo
- Suporta resoluções 360p/540p/720p/1080p, duração de 1–15 segundos
- API de tarefas assíncronas: após o envio, consulte o resultado pelo ID da tarefa
POST
/
v1
/
videos
/
generations
curl --request POST \
--url https://api.apimart.ai/v1/videos/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "pixverse-v6",
"prompt": "A cinematic shot of a corgi running through a sunflower field at golden hour",
"size": "16:9",
"resolution": "540p",
"duration": 5
}'
import requests
url = "https://api.apimart.ai/v1/videos/generations"
payload = {
"model": "pixverse-v6",
"prompt": "A cinematic shot of a corgi running through a sunflower field at golden hour",
"size": "16:9",
"resolution": "540p",
"duration": 5
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.json())
const url = "https://api.apimart.ai/v1/videos/generations";
const payload = {
model: "pixverse-v6",
prompt: "A cinematic shot of a corgi running through a sunflower field at golden hour",
size: "16:9",
resolution: "540p",
duration: 5
};
const headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
};
fetch(url, {
method: "POST",
headers: headers,
body: JSON.stringify(payload)
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error("Error:", error));
{
"code": 200,
"data": [
{
"status": "submitted",
"task_id": "task_01JWXXXXXXXXXXXX"
}
]
}
{
"error": {
"type": "invalid_request_error",
"message": "invalid duration 20, allowed range: 1-15 seconds"
}
}
{
"error": {
"code": 401,
"message": "Falha na autenticação, verifique sua chave de API",
"type": "authentication_error"
}
}
{
"error": {
"code": 403,
"message": "insufficient quota: balance=0, required=0.25",
"type": "quota_not_enough"
}
}
{
"error": {
"code": 429,
"message": "Muitas requisições, tente novamente mais tarde",
"type": "rate_limit_error"
}
}
curl --request POST \
--url https://api.apimart.ai/v1/videos/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "pixverse-v6",
"prompt": "A cinematic shot of a corgi running through a sunflower field at golden hour",
"size": "16:9",
"resolution": "540p",
"duration": 5
}'
import requests
url = "https://api.apimart.ai/v1/videos/generations"
payload = {
"model": "pixverse-v6",
"prompt": "A cinematic shot of a corgi running through a sunflower field at golden hour",
"size": "16:9",
"resolution": "540p",
"duration": 5
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.json())
const url = "https://api.apimart.ai/v1/videos/generations";
const payload = {
model: "pixverse-v6",
prompt: "A cinematic shot of a corgi running through a sunflower field at golden hour",
size: "16:9",
resolution: "540p",
duration: 5
};
const headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
};
fetch(url, {
method: "POST",
headers: headers,
body: JSON.stringify(payload)
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error("Error:", error));
{
"code": 200,
"data": [
{
"status": "submitted",
"task_id": "task_01JWXXXXXXXXXXXX"
}
]
}
{
"error": {
"type": "invalid_request_error",
"message": "invalid duration 20, allowed range: 1-15 seconds"
}
}
{
"error": {
"code": 401,
"message": "Falha na autenticação, verifique sua chave de API",
"type": "authentication_error"
}
}
{
"error": {
"code": 403,
"message": "insufficient quota: balance=0, required=0.25",
"type": "quota_not_enough"
}
}
{
"error": {
"code": 429,
"message": "Muitas requisições, tente novamente mais tarde",
"type": "rate_limit_error"
}
}
Autenticação
string
obrigatório
Todos os endpoints requerem autenticação via Bearer Token.Obter uma API Key:Acesse a página de gerenciamento de API Key para obter sua API Key.Adicione o seguinte cabeçalho à requisição:
Authorization: Bearer YOUR_API_KEY
Parâmetros da requisição
string
obrigatório
Nome do modelo de geração de vídeo. Fixo em
pixverse-v6.boolean
padrão:"false"
Define se o conteúdo deve ser moderado antes do envio da tarefa de vídeo.
true: verificar prompts e imagens de entrada comomni-moderation-latestfalseou omitido: não enviar solicitação de moderação, sem custo nem latência adicionais de moderação (padrão)
string
obrigatório
Descrição do conteúdo do vídeo, até 5000 caracteres. Obrigatório em todos os modos.
string
padrão:"540p"
Nível de resolução do vídeo. Afeta diretamente a cobrança.
360p: SD540p: Padrão (padrão)720p: HD1080p: Full HD
Outros valores de resolução retornam erro de parâmetro.
integer
padrão:"5"
Duração do vídeo em segundos, faixa
1–15.O modo de transição entre primeiro/último frame só suporta
5 ou 8 segundos.string
padrão:"16:9"
Proporção do vídeo. Efetivo apenas nos modos texto-para-vídeo e fusão de múltiplas referências.
16:9: Paisagem widescreen (padrão)4:3: Paisagem 4:31:1: Quadrado3:4: Retrato 3:49:16: Retrato vertical2:3: Retrato 2:33:2: Paisagem 3:221:9: Cinema widescreen
integer
padrão:"0"
Semente aleatória, faixa
0–2147483647. Mesmo prompt e seed reproduzem resultados similares.string
Prompt negativo para excluir conteúdo indesejado. Até 2048 caracteres.
boolean
padrão:"false"
Indica se uma trilha de áudio deve ser gerada.
true: Gerar áudio (aumenta o preço)false: Sem áudio (padrão)
boolean
padrão:"false"
Indica se uma marca d’água deve ser adicionada no canto inferior direito do vídeo.
true: Adicionar marca d’águafalse: Sem marca d’água (padrão)
string
Modo de movimento.
normal: Modo padrão (pixverse-v6suporta apenas este valor)
fast aplica-se apenas a modelos legados e será rejeitado pelo upstream para pixverse-v6.boolean
padrão:"false"
Indica se um vídeo contínuo de múltiplos clipes deve ser gerado. Suportado apenas em texto-para-vídeo e imagem-para-vídeo.
true: Gerar vídeo contínuo de múltiplos clipesfalse: Clipe único (padrão)
array<url>
Array de URLs de imagens de entrada para imagem-para-vídeo. Apenas a primeira é usada.As imagens devem ser URLs HTTP/HTTPS publicamente acessíveis.
url
URL do primeiro frame no modo de transição. Deve ser fornecido junto com
last_frame_image.url
URL do último frame no modo de transição. Deve ser fornecido junto com
first_frame_image.array<url>
Array de URLs de imagens de referência para o modo de fusão de múltiplas referências. Suporta 1–7 imagens.Fornecer este campo aciona o modo de fusão de múltiplas imagens de referência.
string
ID da tarefa de origem para extensão de vídeo. Fornecer este campo aciona o modo de extensão.A tarefa de origem deve pertencer ao usuário atual, usar o modelo
pixverse-v6 e ter status completed.Modos de geração
O adaptador despacha automaticamente para o modo de geração correspondente conforme os campos da requisição. A correspondência segue a ordem de prioridade; o primeiro a corresponder vence.| Modo | Condição de ativação | Descrição |
|---|---|---|
| Texto-para-vídeo | Sem campos de imagem ou extensão | Gera vídeo a partir do prompt |
| Imagem-para-vídeo | image_urls com uma imagem | Usa a primeira imagem como entrada |
| Transição primeiro/último frame | first_frame_image e last_frame_image juntos | Gera transição suave entre dois frames |
| Fusão de múltiplas referências | Array img_references fornecido | Funde 1–7 imagens de referência em um vídeo |
| Extensão de vídeo | extend_from_task_id fornecido | Continua a partir de uma tarefa Pixverse concluída |
Todas as entradas de imagem aceitam apenas URLs HTTP/HTTPS publicamente acessíveis. base64 e Data URI não são suportados. Se você só tiver imagens locais, faça o upload para um object storage e forneça a URL.
Regras de parâmetros
| Limite | Descrição |
|---|---|
| Duração | 1 ≤ duration ≤ 15 segundos; modo de transição apenas 5 ou 8 segundos |
| Resolução | Apenas 360p, 540p, 720p, 1080p são suportadas |
| Proporção | size é efetivo apenas em texto-para-vídeo e fusão de múltiplas referências |
| Tamanho do prompt | prompt até 5000 caracteres, negative_prompt até 2048 caracteres |
| Imagem-para-vídeo | image_urls usa apenas a primeira imagem |
| Transição | first_frame_image e last_frame_image devem ser enviados juntos |
| Modo de movimento | pixverse-v6 suporta apenas normal |
| Fusão de múltiplas referências | img_references suporta 1–7 imagens |
| Extensão de vídeo | extend_from_task_id deve apontar para uma tarefa pixverse-v6 completed do usuário atual |
Resposta
integer
Código de status da resposta.
200 em caso de sucesso.array
Consulta do resultado da tarefa
A geração de vídeo é uma tarefa assíncrona. Após o envio, umtask_id é retornado. Use o endpoint Obter status da tarefa para consultar progresso e resultado.
cURL
curl --request GET \
--url https://api.apimart.ai/v1/tasks/task_01JWXXXXXXXXXXXX \
--header 'Authorization: Bearer <token>'
completed ou failed.
Exemplo de sucesso
{
"code": 200,
"data": {
"id": "task_01KSPX48B8V1M6C2ZN0D0T4BKB",
"status": "completed",
"progress": 100,
"cost": 0.2,
"credits_cost": 2,
"created": 1779958948,
"completed": 1779958999,
"estimated_time": 100,
"actual_time": 51,
"result": {
"videos": [
{
"url": ["https://upload.apimart.ai/f/video/xxxx.mp4"],
"expires_at": 1780045399
}
]
}
}
}
data.result.videos[0].url[0]. O campo url é, ele mesmo, um array. Os links de vídeo geralmente expiram após 24 horas — baixe ou transfira-os a tempo.
Exemplo de falha
{
"code": 200,
"data": {
"id": "task_01KSPX48B8V1M6C2ZN0D0T4BKB",
"status": "failed",
"progress": 100,
"cost": 0,
"credits_cost": 0,
"created": 1779958948,
"completed": 1779958960,
"error": {
"code": "task_failed",
"message": "pixverse error 400063: moderation failed",
"type": "task_failed"
}
}
}
cost geralmente é 0. A causa do erro está em data.error.message.
Casos de uso
Caso 1: Texto-para-vídeo
{
"model": "pixverse-v6",
"prompt": "A neon-lit alley in Tokyo at night, light rain, anamorphic lens flare",
"size": "21:9",
"resolution": "720p",
"duration": 8,
"seed": 42,
"audio": true
}
Caso 2: Imagem-para-vídeo
{
"model": "pixverse-v6",
"prompt": "Camera slowly zooms in, gentle wind moves the leaves",
"image_urls": ["https://example.com/first-frame.jpg"],
"resolution": "540p",
"duration": 5
}
Caso 3: Transição primeiro/último frame
{
"model": "pixverse-v6",
"prompt": "transform smoothly from a puppy to a cat",
"first_frame_image": "https://example.com/puppy.jpg",
"last_frame_image": "https://example.com/cat.jpg",
"resolution": "540p",
"duration": 5,
"motion_mode": "normal"
}
Caso 4: Fusão de múltiplas referências
{
"model": "pixverse-v6",
"prompt": "A girl wearing the outfit from image 2, holding the cat from image 3",
"img_references": [
"https://example.com/character.jpg",
"https://example.com/outfit.jpg",
"https://example.com/cat.jpg"
],
"size": "9:16",
"resolution": "720p",
"duration": 5
}
Caso 5: Extensão de vídeo
{
"model": "pixverse-v6",
"prompt": "the character now walks into a forest",
"extend_from_task_id": "task_01JWXXXXXXXXXXXX",
"resolution": "540p",
"duration": 5
}