Documentação da API
- Início
- Desenvolver
- API
Texto
Mídia
Voz
Outros
Plataforma
Agentes
A API da Zubnet oferece acesso programático a 408 modelos de IA para geração de texto, imagem, vídeo, música, voz e código. É totalmente compatível com a especificação da API OpenAI — se você já usa a OpenAI, pode mudar para a Zubnet alterando sua URL base e chave de API.
https://api.zubnet.com/v1
# Using curl curl https://api.zubnet.com/v1/chat/completions \ -H "Authorization: Bearer $ZUBNET_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "claude-sonnet-5", "messages": [{"role": "user", "content": "Hello!"}] }'
# Using Python with OpenAI SDK from openai import OpenAI client = OpenAI( api_key="your-zubnet-api-key", base_url="https://api.zubnet.com/v1" ) response = client.chat.completions.create( model="claude-sonnet-5", messages=[{"role": "user", "content": "Hello!"}] ) print(response.choices[0].message.content)
Todas as requisições da API exigem autenticação via token Bearer no cabeçalho Authorization.
Authorization: Bearer YOUR_API_KEY
Você pode gerar chaves de API nas suas configurações da conta. Mantenha suas chaves seguras — elas concedem acesso total à sua conta.
Você pode usar suas próprias chaves de API de provedores compatíveis. Adicione-as nas configurações do seu espaço de trabalho e elas serão usadas automaticamente para requisições a esses provedores — sem custo adicional. BYOK está disponível nos planos que o suportam.
Quando uma chave BYOK está configurada para um provedor, ela tem prioridade sobre a chave da plataforma. Nenhuma alteração é necessária nas suas requisições de API — a resolução da chave é totalmente transparente.
Lista todos os modelos disponíveis.
curl https://api.zubnet.com/v1/models \
-H "Authorization: Bearer $ZUBNET_API_KEY"
{
"object": "list",
"data": [
{
"id": "claude-sonnet-5",
"object": "model",
"created": 1699900000,
"owned_by": "anthropic"
},
{
"id": "deepseek-chat",
"object": "model",
"created": 1699900000,
"owned_by": "deepseek"
},
...
]
}
Crie uma completion de chat. Este é o endpoint principal para geração de texto, compatível com o formato de chat completions da OpenAI.
| Parâmetro | Tipo | Descrição |
|---|---|---|
modelobrigatório |
string | ID do modelo a usar (ex.: "claude-sonnet-5", "deepseek-chat", "gemini-2.5-pro") |
messagesobrigatório |
array | Array de objetos de mensagem com role e content |
temperatureopcional |
número | Temperatura de amostragem (0-2). Padrão: 0.7 |
max_tokensopcional |
número inteiro | Máximo de tokens a gerar (1-128000). Padrão: 4096 |
streamopcional |
booleano | Transmitir respostas via SSE. Padrão: true |
top_popcional |
número | Parâmetro de amostragem por núcleo (0-1). Padrão: 1 |
frequency_penaltyopcional |
número | Penalidade de frequência (-2 a 2). Padrão: 0 |
presence_penaltyopcional |
número | Penalidade de presença (-2 a 2). Padrão: 0 |
stopopcional |
string/array | Sequências de parada |
curl https://api.zubnet.com/v1/chat/completions \ -H "Authorization: Bearer $ZUBNET_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "claude-sonnet-5", "messages": [ {"role": "system", "content": "You are a helpful assistant."}, {"role": "user", "content": "What is the capital of France?"} ], "temperature": 0.7, "max_tokens": 150 }'
{
"id": "chatcmpl-abc123",
"object": "chat.completion",
"created": 1699900000,
"model": "claude-sonnet-5",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "The capital of France is Paris."
},
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 25,
"completion_tokens": 8,
"total_tokens": 33
}
}
Quando stream é true, a resposta é entregue como Server-Sent Events (SSE). Cada evento tem um tipo nomeado e um payload JSON:
| Evento | Descrição |
|---|---|
token |
Um token/delta de texto do modelo |
reasoning-token |
Um token de raciocínio estendido (para modelos que suportam reasoning) |
call |
Uma chamada de ferramenta/função com nome e parâmetros |
message |
Objeto de mensagem final completo (enviado quando o stream termina) |
error |
Mensagem de erro caso o streaming falhe |
// SSE event format event: token data: {"data": "Hello", "attributes": {}} event: token data: {"data": " world", "attributes": {}} event: message data: {"id": "msg-uuid", "content": "Hello world", ...}
Gere código a partir de um prompt em linguagem natural. Retorna uma resposta em streaming via Server-Sent Events (SSE).
| Parâmetro | Tipo | Descrição |
|---|---|---|
promptobrigatório |
string | Descrição em linguagem natural do código a gerar |
languageobrigatório |
string | Linguagem de programação (ex.: "python", "javascript", "rust") |
temperatureopcional |
número | Temperatura de amostragem (0-2) |
max_tokensopcional |
número inteiro | Máximo de tokens a gerar (1-128000) |
curl https://zubnet.com/api/ai/completions/code \ -H "Authorization: Bearer $ZUBNET_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "prompt": "A function that checks if a number is prime", "language": "python" }'
chunk eventos com conteúdo incremental, seguidos por um document evento final com o código gerado completo.
{
"object": "code_document",
"id": "550e8400-e29b-41d4-a716-446655440000",
"model": "claude-sonnet-5",
"cost": 1,
"title": "Prime Number Checker",
"content": "def is_prime(n): ..."
}
Gere imagens a partir de prompts de texto usando modelos do FLUX, Stable Diffusion, Ideogram e mais.
| Parâmetro | Tipo | Descrição |
|---|---|---|
modelobrigatório |
string | Modelo de imagem a usar |
promptobrigatório |
string | Descrição textual da imagem a gerar |
nopcional |
número inteiro | Número de imagens a gerar. Padrão: 1 |
sizeopcional |
string | Tamanho da imagem (ex.: "1024x1024", "1792x1024") |
response_formatopcional |
string | "url" ou "b64_json". Padrão: "url" |
curl https://api.zubnet.com/v1/images/generations \ -H "Authorization: Bearer $ZUBNET_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "flux-pro-1.1-ultra", "prompt": "A serene mountain lake at sunset, photorealistic", "n": 1, "size": "1024x1024" }'
{
"created": 1699900000,
"data": [
{
"url": "https://zubnet.com/files/abc123.png",
"revised_prompt": "A serene mountain lake..."
}
]
}
Alguns modelos (FLUX, Runway, Luma, Kling, Leonardo, Vidu, Bria enhance/upscale) geram de forma assíncrona: aceitam o trabalho e o concluem instantes depois. Para eles, o endpoint responde 202 Accepted com um identificador de consulta em vez da imagem — uma extensão deliberada do contrato da OpenAI, que não tem essa rota:
{
"id": "01934f2e-7c1b-7e55-9f3a-2d1c0b4a8f66",
"status": "queued",
"poll": "/v1/images/01934f2e-7c1b-7e55-9f3a-2d1c0b4a8f66"
}
Consulte uma geração iniciada de forma assíncrona. Informa queued, processing, completed ou failed; quando concluída, a URL da imagem aparece no mesmo formato data da resposta síncrona. Restrito ao workspace da chave de API chamadora — um id que não existe ou pertence a outro workspace responde o mesmo 404.
{
"id": "01934f2e-7c1b-7e55-9f3a-2d1c0b4a8f66",
"status": "completed",
"created": 1699900000,
"data": [
{
"url": "https://zubnet.com/files/abc123.png"
}
]
}
Edite uma imagem com um prompt de texto — o contrato images.edit da OpenAI, enviado como multipart/form-data. Disponível nos modelos que aceitam uma imagem de entrada (a ficha do modelo lista edição de imagens): gpt-image-2.5-sunburst, gpt-image-2.5-flare, gpt-image-2, p-image-edit, gen4_image, luma/photon-1 e outros. Qualquer outro modelo responde 400. Modelos síncronos e assíncronos seguem os mesmos contratos 200 / 202 das gerações.
| Campo | Tipo | Descrição |
|---|---|---|
modelobrigatório |
string | Um modelo de imagem que aceita uma imagem de entrada |
promptobrigatório |
string | O que alterar |
imageobrigatório |
arquivo | A imagem a editar (PNG, JPEG ou WebP). Envie image[] para passar várias onde o modelo permitir |
maskopcional |
arquivo | PNG com canal alfa, do mesmo tamanho da imagem; os pixels transparentes marcam o que será repintado. Apenas modelos gpt-image |
sizeopcional |
string | Tamanho de saída (ex.: "1024x1024", "1536x1024") |
qualityopcional |
string | "low", "medium" ou "high" na família gpt-image |
nopcional |
número inteiro | Número de edições a gerar. Padrão: 1 |
curl https://api.zubnet.com/v1/images/edits \ -H "Authorization: Bearer $ZUBNET_API_KEY" \ -F "model=gpt-image-2.5-sunburst" \ -F "prompt=Turn the sky into a starry night, keep everything else" \ -F "image=@photo.png"
{
"created": 1699900000,
"data": [
{
"url": "https://zubnet.com/files/def456.png",
"revised_prompt": "Turn the sky into a starry night, keep everything else"
}
]
}
Gere vídeos a partir de prompts de texto ou imagens. Suporta fluxos de texto para vídeo, imagem para vídeo e vídeo para vídeo.
| Parâmetro | Tipo | Descrição |
|---|---|---|
modelobrigatório |
string | Modelo de vídeo a usar |
promptobrigatório* |
string | Descrição textual do vídeo. *Não obrigatório para modelos de lip-sync ou upscale |
framesopcional |
file[] | Imagens de entrada para imagem-para-vídeo. Máx. 10MB cada (jpg, png, webp) |
videoopcional |
arquivo | Vídeo de entrada para vídeo-para-vídeo. Máx. 100MB (mp4, webm, mov) |
audioopcional |
arquivo | Arquivo de áudio para modelos de lip-sync. Máx. 25MB |
aspect_ratioopcional |
string | Proporção (ex.: "16:9", "9:16", "1:1") |
durationopcional |
número inteiro | Duração do vídeo em segundos |
negative_promptopcional |
string | O que evitar no vídeo (conforme o modelo) |
resolutionopcional |
string | Resolução de saída, ex.: "480p", "720p", "1080p", "4k" (conforme o modelo) |
qualityopcional |
string | Nível qualidade/velocidade quando suportado (ex.: "speed" ou "quality") |
audioopcional |
string | "on"/"off" — áudio nativo sincronizado nos modelos compatíveis (Seedance 2.0, Kling, PixVerse, CogVideoX…) |
seedopcional |
número inteiro | Semente de reprodutibilidade quando suportada |
styleopcional |
string | Predefinição de estilo em modelos compatíveis (ex.: Vidu: "general"/"anime") |
| Cada modelo aceita também suas opções específicas (fps, multi_clip, mode, loop, motion_mode, proporções…) — exatamente os seletores exibidos para o modelo no app. Parâmetros desconhecidos são ignorados. | ||
curl https://zubnet.com/api/ai/videos \ -H "Authorization: Bearer $ZUBNET_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "veo-3.1-generate-001", "prompt": "A drone shot flying over a coral reef at golden hour", "aspect_ratio": "16:9", "duration": 8 }'
curl https://zubnet.com/api/ai/videos \ -H "Authorization: Bearer $ZUBNET_API_KEY" \ -F "model=kling-v2-5-turbo" \ -F "prompt=Camera slowly zooms in" \ -F "frames=@my-image.png"
state campo (“processando”, “concluído”, “falhou”) e uma progress de porcentagem. Consulte o endpoint da biblioteca para verificar o status de conclusão.
{
"object": "video",
"id": "550e8400-e29b-41d4-a716-446655440000",
"model": "veo-3.1-generate-001",
"state": "processing",
"progress": 0,
"cost": 5,
"output_file": null,
"created_at": "2026-02-25T12:00:00Z"
}
Analise conteúdo de vídeo usando IA. Envie uma URL de vídeo para análise e consulte os resultados. Suporta vários tipos de análise.
Envie um vídeo para análise com IA. Retorna um ID de tarefa que pode ser consultado para resultados.
| Parâmetro | Tipo | Descrição |
|---|---|---|
video_urlobrigatório |
string | URL HTTPS pública do vídeo a analisar |
typeopcional |
string | Tipo de análise: summary (padrão), topics, chapters, ou highlights |
curl https://zubnet.com/api/ai/video-understanding \ -H "Authorization: Bearer $ZUBNET_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "video_url": "https://example.com/video.mp4", "type": "summary" }'
{
"job_id": "550e8400-e29b-41d4-a716-446655440000",
"status": "queued"
}
Verifique o status de uma tarefa de análise de vídeo.
{
"status": "completed",
"result": {
"type": "summary",
"content": "The video shows a product demonstration..."
}
}
Gere músicas originais a partir de descrições textuais, letras ou tags de estilo.
| Parâmetro | Tipo | Descrição |
|---|---|---|
modelobrigatório |
string | Modelo de música a usar |
promptopcional |
string | Descrição da música ou letras a definir |
tagsopcional |
string | Tags de gênero e estilo (ex.: "lo-fi, chill, jazz") |
instrumentalopcional |
booleano | Gerar apenas instrumental (sem vocais). Padrão: false |
curl https://zubnet.com/api/ai/compositions \ -H "Authorization: Bearer $ZUBNET_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "suno/v5", "prompt": "An upbeat synthwave track about coding at 3am", "tags": "synthwave, electronic, upbeat", "instrumental": true }'
[
{
"object": "composition",
"id": "550e8400-e29b-41d4-a716-446655440000",
"model": "suno/v5",
"title": "Midnight Code",
"tags": "synthwave, electronic, upbeat",
"cost": 2,
"output_file": {
"url": "https://zubnet.com/files/abc123.mp3"
}
},
{
"object": "composition",
"id": "550e8400-e29b-41d4-a716-446655440001",
// ... second variant
}
]
Gere efeitos sonoros a partir de descrições textuais.
| Parâmetro | Tipo | Descrição |
|---|---|---|
modelobrigatório |
string | Modelo de efeito sonoro a usar |
promptobrigatório |
string | Descrição do efeito sonoro a gerar |
curl https://zubnet.com/api/ai/sound-effects \ -H "Authorization: Bearer $ZUBNET_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "sound-effect-model", "prompt": "Thunder rumbling in the distance followed by heavy rain" }'
{
"object": "sound_effect",
"id": "550e8400-e29b-41d4-a716-446655440000",
"model": "sound-effect-model",
"cost": 1,
"output_file": {
"url": "https://zubnet.com/files/abc123.mp3"
}
}
Converta texto em áudio de fala natural usando vozes da ElevenLabs, Cartesia, Speechify e mais.
| Parâmetro | Tipo | Descrição |
|---|---|---|
modelobrigatório |
string | Modelo de TTS (ex.: "tts-1", "tts-1-hd", "elevenlabs") |
inputobrigatório |
string | Texto para converter em fala (máx. 5000 caracteres) |
voiceobrigatório |
string | ID da voz a usar (ex.: "alloy", "echo", "nova" ou um ID de voz personalizado) |
response_formatopcional |
string | Formato de áudio: mp3, opus, aac, flac. Padrão: mp3 |
curl https://api.zubnet.com/v1/audio/speech \ -H "Authorization: Bearer $ZUBNET_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "tts-1-hd", "input": "Welcome to Zubnet, the future of AI.", "voice": "nova" }' --output speech.mp3
Transcreva áudio para texto.
| Parâmetro | Tipo | Descrição |
|---|---|---|
modelobrigatório |
string | Modelo de transcrição (ex.: "whisper-1") |
fileobrigatório |
arquivo | Arquivo de áudio para transcrever. Máx. 25MB (mp3, mp4, wav, webm, ogg, flac) |
languageopcional |
string | Código do idioma (ex.: "en", "fr", "es") |
curl https://api.zubnet.com/v1/audio/transcriptions \ -H "Authorization: Bearer $ZUBNET_API_KEY" \ -F "model=whisper-1" \ -F "file=@recording.mp3"
{
"object": "transcription",
"id": "550e8400-e29b-41d4-a716-446655440000",
"model": "whisper-1",
"content": "Hello, this is a test recording..."
}
Extraia vocais limpos do áudio, removendo ruído de fundo e música. Powered by ElevenLabs.
| Parâmetro | Tipo | Descrição |
|---|---|---|
fileobrigatório |
arquivo | Arquivo de áudio. Máx. 25MB (mp3, mp4, wav, m4a, webm, ogg, flac) |
curl https://zubnet.com/api/ai/isolated-voices \ -H "Authorization: Bearer $ZUBNET_API_KEY" \ -F "file=@noisy-recording.mp3"
{
"object": "isolated_voice",
"id": "550e8400-e29b-41d4-a716-446655440000",
"cost": 1,
"input_file": {
"url": "https://zubnet.com/files/input.mp3"
},
"output_file": {
"url": "https://zubnet.com/files/isolated.mp3"
}
}
Separe o áudio em faixas individuais (vocais, bateria, baixo, guitarra, piano, outros). Powered by ElevenLabs.
| Parâmetro | Tipo | Descrição |
|---|---|---|
fileobrigatório |
arquivo | Arquivo de áudio. Máx. 25MB (mp3, mp4, wav, m4a, webm, ogg, flac) |
stem_variationopcional |
string | Modo de separação. Padrão: "six_stems_v1" (vocais, bateria, baixo, guitarra, piano, outros) |
curl https://zubnet.com/api/ai/stem-separations \ -H "Authorization: Bearer $ZUBNET_API_KEY" \ -F "file=@song.mp3"
{
"object": "stem_separation",
"id": "550e8400-e29b-41d4-a716-446655440000",
"cost": 1,
"input_file": {
"url": "https://zubnet.com/files/song.mp3"
},
"output_file": {
"url": "https://zubnet.com/files/stems.zip"
}
}
Crie e gerencie vozes personalizadas para geração de texto para fala.
Crie uma voz personalizada fazendo upload de amostras de áudio.
Liste todas as vozes disponíveis no seu espaço de trabalho, incluindo vozes personalizadas que você criou.
Atualize uma voz personalizada (nome, configurações).
Excluir uma voz personalizada.
voice parâmetro do endpoint de Texto para Fala.
Crie embeddings de texto para busca semântica e similaridade.
| Parâmetro | Tipo | Descrição |
|---|---|---|
modelobrigatório |
string | Modelo de embedding (ex.: "text-embedding-3-small") |
inputobrigatório |
string/array | Texto para gerar embedding (string ou array de strings) |
curl https://api.zubnet.com/v1/embeddings \ -H "Authorization: Bearer $ZUBNET_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "text-embedding-3-small", "input": "The quick brown fox jumps over the lazy dog" }'
Crie e gerencie bases de conhecimento para geração aumentada por recuperação (RAG). Faça upload de documentos (PDF, DOCX, TXT, Markdown) ou adicione URLs da web e texto bruto, e depois consulte-os nas suas completions de chat.
Crie uma nova base de conhecimento.
| Parâmetro | Tipo | Descrição |
|---|---|---|
nameobrigatório |
string | Nome da base de conhecimento |
descriptionopcional |
string | Descrição da base de conhecimento |
curl https://zubnet.com/api/knowledge-bases \ -H "Authorization: Bearer $ZUBNET_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "name": "My KB", "description": "Optional description" }'
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"name": "My KB",
"description": "Optional description",
"status": "active"
}
Liste todas as bases de conhecimento no seu espaço de trabalho.
[
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"name": "My KB",
"description": "Optional description",
"status": "active"
},
...
]
Obtenha detalhes de uma base de conhecimento específica, incluindo seus documentos.
Excluir uma base de conhecimento e todos os seus documentos.
Ingira um documento em uma base de conhecimento. Suporta upload de arquivos, URLs e texto bruto.
| Parâmetro | Tipo | Descrição |
|---|---|---|
fileopção 1 |
arquivo | Upload de arquivo multipart (PDF, DOCX, TXT, MD — máx. 10MB) |
titleobrigatório |
string | Título do documento (obrigatório para tipos URL e texto) |
typeopção 2/3 |
string | "url" ou "text" (para ingestão sem arquivo) |
urlopção 2 |
string | URL para buscar e ingerir (quando o tipo é "url") |
contentopção 3 |
string | Conteúdo de texto bruto para ingerir (quando o tipo é "text") |
curl https://zubnet.com/api/knowledge-bases/550e8400-.../documents \ -H "Authorization: Bearer $ZUBNET_API_KEY" \ -F "file=@report.pdf"
curl https://zubnet.com/api/knowledge-bases/550e8400-.../documents \ -H "Authorization: Bearer $ZUBNET_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "title": "Zubnet Docs", "type": "url", "url": "https://zubnet.com/developers.html" }'
curl https://zubnet.com/api/knowledge-bases/550e8400-.../documents \ -H "Authorization: Bearer $ZUBNET_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "title": "Company Policy", "type": "text", "content": "All employees must complete security training annually..." }'
Liste todos os documentos em uma base de conhecimento.
Exclua um documento específico de uma base de conhecimento.
Leia o conteúdo de texto extraído de um documento específico.
Reordene uma lista de documentos por relevância a uma consulta. Útil para melhorar resultados de busca, pipelines RAG e sistemas de recomendação.
| Parâmetro | Tipo | Descrição |
|---|---|---|
modelobrigatório |
string | Modelo de reranking a usar |
queryobrigatório |
string | A consulta de busca para classificar documentos |
documentsobrigatório |
array | Array de strings de documentos para reordenar |
top_nopcional |
número inteiro | Número de resultados principais a retornar. Padrão: todos |
curl https://api.zubnet.com/v1/reranking \ -H "Authorization: Bearer $ZUBNET_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "rerank-v4.0-pro", "query": "How do I reset my password?", "documents": [ "To reset your password, go to Settings > Security > Change Password.", "Our pricing plans start at $9/month for individuals.", "Password requirements: minimum 8 characters, one uppercase letter.", "Contact support at help@example.com for account issues." ], "top_n": 3 }'
{
"object": "list",
"results": [
{
"index": 0,
"relevance_score": 0.953
},
{
"index": 2,
"relevance_score": 0.714
},
{
"index": 3,
"relevance_score": 0.389
}
],
"model": "rerank-v4.0-pro"
}
index campo refere-se à posição de cada documento no array de entrada original.
A biblioteca é onde todo o conteúdo gerado fica — imagens, vídeos, composições, documentos de código, transcrições e mais. Use-a para listar itens, verificar o status de geração assíncrona, atualizar metadados e gerenciar seu conteúdo.
Liste itens da sua biblioteca por tipo de conteúdo.
| Parâmetro | Tipo | Descrição |
|---|---|---|
limitopcional |
número inteiro | Resultados por página (máx. 100) |
starting_afteropcional |
string | Cursor para paginação para frente (UUID do item) |
ending_beforeopcional |
string | Cursor para paginação para trás (UUID do item) |
sortopcional |
string | Campo e direção de ordenação (ex.: "created_at:desc") |
queryopcional |
string | Busca de texto completo (máx. 255 caracteres) |
modelopcional |
string | Filtrar por modelo usado para geração |
{
"object": "list",
"data": [
{
"id": "550e8400-...",
"object": "video",
"model": "veo-3.1-generate-001",
"title": "Coral reef drone shot",
"state": 3,
"progress": 100,
"cost": 5,
"output_file": {
"url": "https://zubnet.com/files/abc123.mp4",
"size": 8421376,
"extension": "mp4"
},
"created_at": "2026-03-01T12:00:00Z"
},
...
]
}
Obtenha um único item da biblioteca por ID. Este é o endpoint principal para consultando status de geração assíncrona.
| Estado | Valor | Descrição |
|---|---|---|
draft |
0 | Ainda não enviado |
queued |
1 | Aguardando processamento |
processing |
2 | Gerando no momento |
completed |
3 | Concluído — output_file está disponível |
failed |
4 | Falha na geração |
# 1. Start async generation curl -X POST https://zubnet.com/api/ai/videos \ -H "Authorization: Bearer $ZUBNET_API_KEY" \ -H "Content-Type: application/json" \ -d '{"model": "veo-3.1-generate-001", "prompt": "A coral reef"}' # Returns: {"id": "550e8400-...", "state": 1, ...} # 2. Poll for completion curl https://zubnet.com/api/library/videos/550e8400-... \ -H "Authorization: Bearer $ZUBNET_API_KEY" # Returns: {"state": 2, "progress": 45, ...} (still processing) # Returns: {"state": 3, "progress": 100, "output_file": {"url": "..."}} (done!)
id do último item em starting_after para obter a próxima página. Não há parâmetros de offset/página.
Atualize os metadados de um item da biblioteca.
| Parâmetro | Tipo | Descrição |
|---|---|---|
titleopcional |
string | Título do item |
visibilityopcional |
número inteiro | 0 (privado) ou 1 (público) |
is_favoritedopcional |
booleano | Adicionar ou remover dos favoritos |
metaopcional |
objeto | Metadados personalizados (gênero, humor, tags, descrição, autor, etc.) |
Excluir um item da biblioteca e seus arquivos associados.
Obtenha a contagem total de itens para um tipo de conteúdo. Suporta os mesmos query e model filtros do endpoint de listagem.
Assistentes são presets de chat reutilizáveis com nome personalizado, modelo, prompt de sistema e configurações. Use-os para criar personas de IA especializadas para diferentes tarefas.
Crie um novo assistente.
Liste todos os assistentes no seu espaço de trabalho.
Atualize a configuração de um assistente (nome, modelo, prompt do sistema, configurações).
Excluir um assistente.
Navegue e ative servidores MCP (Model Context Protocol) para dar aos seus agentes capacidades estendidas de ferramentas — desde busca na web e acesso a dados até execução de código e integrações de terceiros.
Navegue pelo catálogo de servidores MCP.
| Parâmetro | Tipo | Descrição |
|---|---|---|
categoryopcional |
string | Filtrar por categoria (search, data, developer, infrastructure, communication, commerce, creative, productivity, social, utilities) |
queryopcional |
string | Buscar por nome ou descrição |
{
"object": "list",
"data": [
{
"id": "550e8400-...",
"name": "GitHub",
"description": "Access GitHub repositories, issues, and pull requests",
"category": "developer",
"config_schema": [
{"name": "api_key", "type": "secret", "label": "API Key", "required": true}
],
"tools": ["list_repos", "create_issue", "search_code"],
"is_official": true
},
...
]
}
Ative um servidor MCP para o seu espaço de trabalho. Forneça valores de configuração (chaves de API, etc.) conforme definido pelo config_schema.
| Parâmetro | Tipo | Descrição |
|---|---|---|
server_idobrigatório |
string | UUID do servidor MCP a ativar |
configopcional |
objeto | Valores de configuração correspondentes ao config_schema do servidor |
curl https://zubnet.com/api/mcp-store/activations \ -H "Authorization: Bearer $ZUBNET_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "server_id": "550e8400-e29b-41d4-a716-446655440000", "config": { "api_key": "ghp_xxxxxxxxxxxx" } }'
{
"id": "act-uuid-...",
"server_id": "550e8400-...",
"status": 1,
"config": {
"api_key": "••••••••"
},
"server": {
"name": "GitHub",
...
},
"created_at": "2026-03-01T12:00:00Z"
}
id é o activation_id que você usa ao vincular servidores MCP a agentes.
Liste todos os servidores MCP ativados no seu espaço de trabalho.
Atualize a configuração ou status de uma ativação.
Desative um servidor MCP do seu espaço de trabalho.
Crie e gerencie agentes de IA autônomos que operam em canais de comunicação. Os agentes podem responder a mensagens no Telegram e Discord, executar com gatilhos agendados e aproveitar bases de conhecimento e servidores MCP para capacidades aprimoradas.
Crie um novo agente.
| Parâmetro | Tipo | Descrição |
|---|---|---|
nameobrigatório |
string | Nome do agente (máx. 64 caracteres) |
modelobrigatório |
string | ID do modelo a usar (ex.: "claude-sonnet-5", "deepseek-chat") |
system_promptopcional |
string | Prompt de sistema personalizado definindo o comportamento e personalidade do agente |
modeopcional |
string | "quick" ou "advanced". Default: "quick" |
avataropcional |
string | URL do avatar (máx. 512 caracteres) |
curl https://zubnet.com/api/agents \ -H "Authorization: Bearer $ZUBNET_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "name": "Support Bot", "model": "claude-sonnet-5", "system_prompt": "You are a friendly support agent. Answer questions clearly and concisely.", "mode": "advanced" }'
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"name": "Support Bot",
"slug": "support-bot",
"avatar": null,
"model": "claude-sonnet-5",
"system_prompt": "You are a friendly support agent...",
"status": 1,
"mode": "advanced",
"permissions": {
"time_windows": [],
"frequency_cap": {
"max_messages_per_hour": 60,
"max_messages_per_day": 500
},
"channel_preferences": {},
"allowed_actions": {
"can_use_tools": true,
"can_access_kb": true,
"max_tool_calls_per_message": 5
}
},
"cost": 0,
"last_active_at": null,
"created_at": 1709136000,
"updated_at": null,
"user": {
"id": "a1b2c3d4-...",
"first_name": "Jane",
"last_name": "Doe",
"avatar": "https://zubnet.com/files/avatar.jpg"
},
"channels": []
}
Liste todos os agentes no espaço de trabalho. Suporta paginação e filtragem.
| Parâmetro | Tipo | Descrição |
|---|---|---|
limitconsulta |
número inteiro | Resultados por página. Padrão: 25 |
cursorconsulta |
string | Cursor de paginação |
sortconsulta |
string | "name", "created_at" ou "last_active_at". Padrão: "created_at" |
directionconsulta |
string | "asc" ou "desc" |
statusconsulta |
número inteiro | Filtrar por status: 0 (inativo), 1 (ativo), 2 (pausado) |
{
"object": "list",
"data": [
{
"id": "550e8400-...",
"name": "Support Bot",
"slug": "support-bot",
"model": "claude-sonnet-5",
"status": 1,
"mode": "advanced",
"cost": 12.50,
"last_active_at": 1709222400,
"created_at": 1709136000,
...
}
]
}
Obtenha detalhes completos de um agente específico, incluindo seus canais, servidores MCP vinculados e bases de conhecimento.
Atualize um agente. Todos os campos são opcionais — apenas os campos fornecidos são alterados.
| Parâmetro | Tipo | Descrição |
|---|---|---|
nameopcional |
string | Nome do agente (máx. 64) |
modelopcional |
string | ID do Modelo |
system_promptopcional |
string|null | Prompt de sistema (defina como null para limpar) |
statusopcional |
número inteiro | 0 (inativo), 1 (ativo) ou 2 (pausado) |
modeopcional |
string | "quick" ou "advanced" |
permissionsopcional |
objeto | Permissões do agente (veja abaixo) |
{
"permissions": {
"time_windows": [
{
"days": [1, 2, 3, 4, 5], // 0=Sun, 6=Sat
"timezone": "America/New_York",
"start_hour": 9, // 0-23
"end_hour": 17 // 1-24
}
],
"frequency_cap": {
"max_messages_per_hour": 60, // 1-1000
"max_messages_per_day": 500 // 1-10000
},
"channel_preferences": {
"default_channel": "telegram",
"proactive_channels": ["telegram", "discord"]
},
"allowed_actions": {
"can_use_tools": true,
"can_access_kb": true,
"max_tool_calls_per_message": 5 // 0-50
}
}
}
Exclua um agente. Isso também remove todos os seus canais, gatilhos, mensagens e integrações.
Vincule uma base de conhecimento a um agente para respostas com RAG. Body: { "knowledge_base_id": "uuid" }
Desvincule uma base de conhecimento de um agente.
Vincule um servidor MCP a um agente para uso estendido de ferramentas. Body: { "activation_id": "uuid" }
Desvincule um servidor MCP de um agente.
Recupere o histórico de conversas de um agente.
| Parâmetro | Tipo | Descrição |
|---|---|---|
limitconsulta |
número inteiro | Número de mensagens a retornar. Padrão: 25, máx.: 100 |
{
"object": "list",
"data": [
{
"id": "msg-uuid-...",
"direction": "inbound",
"content": "How do I reset my password?",
"external_user_name": "john_doe",
"cost": 0,
"model": null,
"created_at": 1709222400
},
{
"id": "msg-uuid-...",
"direction": "outbound",
"content": "Go to Settings > Security > Change Password...",
"cost": 0.25,
"model": "claude-sonnet-5",
"created_at": 1709222401
}
]
}
Conecte agentes a plataformas de comunicação. Cada agente suporta um canal por tipo (um bot Telegram, um bot Discord).
Adicione um canal de comunicação a um agente.
| Parâmetro | Tipo | Descrição |
|---|---|---|
typeobrigatório |
string | "telegram" ou "discord" |
tokenobrigatório |
string | Token do bot do Telegram BotFather ou Portal de Desenvolvedor Discord (máx. 256) |
curl https://zubnet.com/api/agents/550e8400-.../channels \ -H "Authorization: Bearer $ZUBNET_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "type": "telegram", "token": "7123456789:AAH..." }'
{
"id": "ch-uuid-...",
"type": "telegram",
"status": 1,
"metadata": {},
"last_error": null,
"last_message_at": null,
"created_at": 1709136000
}
Liste todos os canais conectados a um agente.
Remova um canal de um agente.
Automatize ações do agente com gatilhos. Gatilhos agendados usam expressões cron para executar em horários específicos; gatilhos de evento disparam em resposta a eventos externos.
Crie um gatilho automatizado para um agente.
| Parâmetro | Tipo | Descrição |
|---|---|---|
nameobrigatório |
string | Nome do gatilho (máx. 128) |
typeobrigatório |
string | "scheduled" ou "event" |
promptobrigatório |
string | O prompt enviado ao agente quando o gatilho dispara |
cron_expressionopcional |
string | Agendamento cron (ex.: "0 9 * * 1-5" para dias úteis às 9h) |
timezoneopcional |
string | Fuso horário IANA para avaliação cron. Padrão: "UTC" |
channel_idopcional |
string | Canal para enviar a saída do gatilho |
curl https://zubnet.com/api/agents/550e8400-.../triggers \ -H "Authorization: Bearer $ZUBNET_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "name": "Daily Summary", "type": "scheduled", "prompt": "Summarize the key metrics for today and send them to the team.", "cron_expression": "0 18 * * 1-5", "timezone": "America/New_York" }'
{
"id": "tr-uuid-...",
"name": "Daily Summary",
"type": "scheduled",
"status": 1,
"cron_expression": "0 18 * * 1-5",
"timezone": "America/New_York",
"prompt": "Summarize the key metrics for today...",
"channel_id": null,
"last_run_at": null,
"next_run_at": 1709236800,
"run_count": 0,
"created_at": 1709136000
}
Liste todos os gatilhos de um agente.
Atualize um gatilho. Todos os campos são opcionais. Defina status como 0 para desabilitar ou 1 para habilitar.
Excluir um gatilho.
Espaços de trabalho são a unidade organizacional da sua equipe. Cada espaço de trabalho tem seu próprio saldo de créditos, assinatura, chaves de API e membros. Gerencie espaços de trabalho, convide membros da equipe e acompanhe o uso.
Crie um novo espaço de trabalho.
| Parâmetro | Tipo | Descrição |
|---|---|---|
nameobrigatório |
string | Nome do espaço de trabalho (máx. 50 caracteres) |
{
"id": "550e8400-...",
"name": "My Team",
"subscription": null,
"api_spending_limit": null,
"api_spending_current": 0,
"owner": { "id": "...", "email": "..." },
"created_at": "2026-03-01T12:00:00Z"
}
Atualize as configurações de um espaço de trabalho. Requer permissão de gerenciamento do espaço de trabalho.
| Parâmetro | Tipo | Descrição |
|---|---|---|
nameopcional |
string | Nome do espaço de trabalho (máx. 50 caracteres) |
api_spending_limitopcional |
número | Limite mensal de gastos com API (null para ilimitado) |
{provider}_api_keyopcional |
string | Chave de API BYOK para um provedor (ex.: openai_api_key, anthropic_api_key) |
Excluir um espaço de trabalho. Requer permissão de gerenciamento do espaço de trabalho.
Convide um usuário para entrar no espaço de trabalho por e-mail. Máximo de 20 convites pendentes por espaço de trabalho.
| Parâmetro | Tipo | Descrição |
|---|---|---|
emailobrigatório |
string | Endereço de e-mail do usuário a convidar |
Cancele um convite pendente.
Remova um membro do espaço de trabalho, ou saia do espaço de trabalho usando seu próprio ID de usuário.
Liste estatísticas de uso agregadas do espaço de trabalho. Suporta paginação baseada em cursor.
Liste entradas de uso detalhadas (itens da biblioteca concluídos com custo > 0). Cada entrada inclui tipo, modelo, título, custo e timestamp.
Obtenha a contagem total de itens de uso.
Conversas agrupam mensagens de chat em sessões. Crie uma conversa primeiro e depois envie mensagens para ela. As conversas também podem ser gerenciadas através da Biblioteca API usando o conversations tipo de conteúdo.
Crie uma nova conversa. Retorna o objeto de conversa com uma lista de mensagens vazia.
{
"object": "conversation",
"id": "550e8400-...",
"title": null,
"cost": 0,
"messages": [],
"created_at": "2026-03-01T12:00:00Z"
}
Envie uma mensagem para uma conversa e receba uma resposta de IA via Server-Sent Events (SSE). Veja a Completions de Chat seção para detalhes do formato de eventos SSE.
| Parâmetro | Tipo | Descrição |
|---|---|---|
modelobrigatório |
string | Modelo a usar para a resposta |
contentopcional |
string | Texto da mensagem |
assistant_idopcional |
string | UUID de um assistente a usar para esta mensagem |
parent_idopcional |
string | UUID de uma mensagem pai (para conversas ramificadas) |
fileopcional |
arquivo | Anexo (imagens, documentos, áudio/vídeo — máx. 25MB) |
recordingopcional |
arquivo | Gravação de voz (mp3, wav, webm, ogg — máx. 10MB) |
curl https://zubnet.com/api/ai/conversations/550e8400-.../messages \ -H "Authorization: Bearer $ZUBNET_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "gpt-4.1", "content": "Explain quantum computing in simple terms" }'
multipart/form-data ao fazer upload de arquivos. Para listar ou excluir conversas, use a Biblioteca API com tipo conversations.
Gerencie seu perfil de usuário e gere chaves de API programaticamente.
Atualize as informações do seu perfil.
| Parâmetro | Tipo | Descrição |
|---|---|---|
first_nameopcional |
string | Primeiro nome (máx. 50 caracteres) |
last_nameopcional |
string | Sobrenome (máx. 50 caracteres) |
languageopcional |
string | Código do idioma preferido (ex.: "en", "fr") |
preferencesopcional |
objeto | Configurações de preferências do usuário |
Gere uma nova chave de API. Requer confirmação de senha por segurança. A chave de API completa é retornada apenas uma vez nesta resposta — armazene-a com segurança.
| Parâmetro | Tipo | Descrição |
|---|---|---|
current_passwordobrigatório |
string | Sua senha atual da conta |
{
"id": "550e8400-...",
"first_name": "Jane",
"last_name": "Doe",
"email": "jane@example.com",
"api_key": "zub_live_a1b2c3d4e5f6..."
}
api_key é mostrado completo apenas nesta resposta. Chamadas de API subsequentes retornam uma versão mascarada. Trate-o como uma senha.
Explore os planos disponíveis, veja o histórico de pedidos, inicie o checkout e gerencie assinaturas.
Lista os planos de assinatura disponíveis.
| Parâmetro | Tipo | Descrição |
|---|---|---|
billing_cycleopcional |
string | Filtrar por ciclo de faturamento |
Liste pedidos do espaço de trabalho atual. Suporta paginação baseada em cursor.
| Parâmetro | Tipo | Descrição |
|---|---|---|
statusopcional |
string | Filtrar por status do pedido |
billing_cycleopcional |
string | Filtrar por ciclo de faturamento |
Inicie um checkout para um plano de assinatura ou compra de créditos. Requer permissão de gerenciamento do espaço de trabalho.
| Parâmetro | Tipo | Descrição |
|---|---|---|
idopcional |
string | UUID do plano para assinar (obrigatório se não houver amount) |
amountopcional |
número inteiro | Valor de compra de créditos em centavos (mín. 1000, obrigatório se não houver id) |
gatewayopcional |
string | Gateway de pagamento: stripe ou paypal |
Cancele a assinatura atual do espaço de trabalho. Requer permissão de gerenciamento do espaço de trabalho.
Denuncie conteúdo inadequado ou que viole as políticas na biblioteca pública.
Envie uma denúncia de conteúdo. Cada usuário pode denunciar um determinado item apenas uma vez.
| Parâmetro | Tipo | Descrição |
|---|---|---|
item_idobrigatório |
string | UUID do item da biblioteca a denunciar |
reasonobrigatório |
número inteiro | Código do motivo: 0 (spam), 1 (assédio), 2 (violência), 3 (conteúdo sexual), 4 (outro) |
descriptionopcional |
string | Detalhes adicionais (máx. 2000 caracteres) |
{
"id": "550e8400-e29b-41d4-a716-446655440000"
}
409 Conflict erro.
A superfície completa vai além das seções acima. Estes endpoints estão ativos e usam a mesma autenticação:
POST /api/ai/three-d | Geração de modelos 3D (Tripo, Meshy…) |
POST /api/ai/tts · POST /api/ai/speeches | Texto para fala (superfície nativa + predefinições) |
POST /api/ai/transcriptions | Transcrição de áudio em lote (seletor de modelo) |
GET /api/ai/transcriptions/realtime/token · POST /api/ai/transcriptions/realtime/save | Transcrição ao vivo do microfone (token de sessão + salvar) |
POST /api/ai/translations · GET /api/ai/translation-languages | Tradução de texto + idiomas suportados |
POST /api/ai/document-extractions | Extração de texto de documentos (OCR) |
GET /api/ai/video-understanding/{jobId} | Status da análise de vídeo |
/api/library-stacks | Stacks da biblioteca (coleções) — CRUD completo |
/api/chatroom | Salas de equipe (conversas de IA compartilhadas) |
/api/automation | Fluxos de automação (criar + executar) |
A API usa códigos de status HTTP padrão e retorna mensagens de erro detalhadas.
| Código | Descrição |
|---|---|
400 |
Requisição Inválida — Parâmetros inválidos |
401 |
Não autorizado — Chave de API inválida ou ausente |
403 |
Proibido — Créditos insuficientes ou modelo não disponível no seu plano |
404 |
Não encontrado — Modelo ou recurso não encontrado |
413 |
Payload Too Large — O arquivo excede o limite de tamanho |
429 |
Muitas Requisições — Limite de taxa excedido |
500 |
Erro Interno do Servidor |
503 |
Serviço Indisponível — Sobrecarga temporária |
{
"error": {
"message": "Invalid API key provided",
"type": "authentication_error",
"code": "invalid_api_key"
}
}
Os limites de requisição variam por plano. Cabeçalhos são incluídos em cada resposta:
| Cabeçalho | Descrição |
|---|---|
X-RateLimit-Limit |
Requisições permitidas por minuto |
X-RateLimit-Remaining |
Requisições restantes na janela atual |
X-RateLimit-Reset |
Timestamp Unix de quando o limite é reiniciado |
Se você atingir um limite de requisição, aguarde até o momento de reinicialização ou entre em contato conosco para aumentar seus limites.
Dúvidas sobre a API? Confira nosso FAQ ou entre em contato diretamente.