Documentación API

Introducción

La API de Zubnet te da acceso programático a 408 modelos de IA para generación de texto, imágenes, video, música, voz y código. Es completamente compatible con la especificación de la API de OpenAI — si ya estás usando OpenAI, puedes cambiar a Zubnet modificando tu URL base y clave API.

URL Base

https://api.zubnet.com/v1

Inicio Rápido

# 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)

Autenticación

Todas las solicitudes a la API requieren autenticación mediante un token Bearer en el encabezado Authorization.

Authorization: Bearer YOUR_API_KEY

Puedes generar claves API desde la configuración de tu cuenta. Mantén tus claves seguras — otorgan acceso completo a tu cuenta.

Uso de Claves Propias de Proveedores (BYOK)

También puedes usar tus propias claves API de proveedores como Anthropic, Google y más de 40 otros. Agrégalas en la configuración de tu workspace y se usarán automáticamente para solicitudes a esos proveedores — sin ningún recargo.

Cuando se configura una clave BYOK para un proveedor, esta tiene prioridad sobre la clave de la plataforma. No se necesitan cambios en tus solicitudes API — la resolución de la clave es completamente transparente.

Proveedores BYOK Compatibles

Anthropic Google Gemini DeepSeek Mistral Cohere AI21 Nvidia Alibaba Moonshot MiniMax Sambanova Zhipu ElevenLabs Speechify Hume Cartesia Resemble StabilityAI Black Forest Labs Ideogram HiDream PixVerse Vidu Kling Suno ByteDance

Modelos

GET /v1/models

Lista todos los modelos disponibles.

curl https://api.zubnet.com/v1/models \
  -H "Authorization: Bearer $ZUBNET_API_KEY"
Respuesta
{
  "object": "list",
  "data": [
    {
      "id": "claude-sonnet-5",
      "object": "model",
      "created": 1699900000,
      "owned_by": "anthropic"
    },
    {
      "id": "deepseek-chat",
      "object": "model",
      "created": 1699900000,
      "owned_by": "deepseek"
    },
    ...
  ]
}

Completaciones de Chat

POST /v1/chat/completions

Crea una completación de chat. Este es el endpoint principal para generación de texto, compatible con el formato de completaciones de chat de OpenAI.

Cuerpo de la Solicitud

Parámetro Tipo Descripción
modelrequerido Descripci ID del modelo a usar (ej., "claude-sonnet-5", "deepseek-chat", "gemini-2.5-pro")
messagesrequerido string Array de objetos de mensaje con role y content
temperatureopcional L Temperatura de muestreo (0-2). Por defecto: 0.7
max_tokensopcional string Máximo de tokens a generar (1-128000). Por defecto: 4096
streamopcional booleano Transmitir respuestas vía SSE. Por defecto: true
top_popcional L Parámetro de muestreo nucleus (0-1). Por defecto: 1
frequency_penaltyopcional L Penalización de frecuencia (-2 a 2). Por defecto: 0
presence_penaltyopcional L Penalización de presencia (-2 a 2). Por defecto: 0
stopopcional string/array Secuencias de parada

Ejemplo de Solicitud

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
  }'
Respuesta
{
  "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
  }
}

Transmisión

Cuando stream es true, la respuesta se entrega como Server-Sent Events (SSE). Cada evento tiene un tipo con nombre y una carga útil JSON:

Evento Descripción
token Un token/delta de texto del modelo
reasoning-token Un token de pensamiento extendido (para modelos que admiten razonamiento)
call Una llamada a herramienta/función con nombre y parámetros
message Objeto de mensaje final completo (enviado cuando finaliza la transmisión)
error Mensaje de error si falla la transmisión
// SSE event format
event: token
data: {"data": "Hello", "attributes": {}}

event: token
data: {"data": " world", "attributes": {}}

event: message
data: {"id": "msg-uuid", "content": "Hello world", ...}

Generación de Código

POST /api/ai/completions/code

Genera código a partir de un prompt en lenguaje natural. Devuelve una respuesta en streaming vía Server-Sent Events (SSE).

Cuerpo de la Solicitud

Parámetro Tipo Descripción
promptrequerido Descripci Descripción en lenguaje natural del código a generar
languagerequerido Descripci Lenguaje de programación (ej., "python", "javascript", "rust")
temperatureopcional L Temperatura de muestreo (0-2)
max_tokensopcional string Máximo de tokens a generar (1-128000)

Ejemplo de Solicitud

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"
  }'
Este endpoint transmite vía SSE. Recibirás eventos chunk con contenido incremental, seguidos de un evento document final con el código generado completo.
Objeto de Respuesta Final
{
  "object": "code_document",
  "id": "550e8400-e29b-41d4-a716-446655440000",
  "model": "claude-sonnet-5",
  "cost": 1,
  "title": "Prime Number Checker",
  "content": "def is_prime(n): ..."
}

Generación de Imágenes

POST /v1/images/generations

Genera imágenes a partir de prompts de texto usando modelos de FLUX, Stable Diffusion, Ideogram y más.

Modelos Disponibles

seedream-5.0-pro flux-pro-1.1-ultra gemini-2.5-flash-image grok-imagine-image qwen-image-2.0 ideogram-3.0 glm-image recraftv4

Cuerpo de la Solicitud

Parámetro Tipo Descripción
modelrequerido Descripci Modelo de imagen a usar
promptrequerido Descripci Descripción de texto de la imagen a generar
nopcional string Número de imágenes a generar. Por defecto: 1
sizeopcional Descripci Tamaño de imagen (ej., "1024x1024", "1792x1024")
response_formatopcional Descripci "url" o "b64_json". Por defecto: "url"

Ejemplo de Solicitud

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"
  }'
Respuesta
{
  "created": 1699900000,
  "data": [
    {
      "url": "https://zubnet.com/files/abc123.png",
      "revised_prompt": "A serene mountain lake..."
    }
  ]
}

Modelos asíncronos — 202 Accepted

Algunos modelos (FLUX, Runway, Luma, Kling, Leonardo, Vidu, Bria enhance/upscale) generan de forma asíncrona: aceptan el trabajo y lo completan momentos después. Para ellos, el endpoint responde 202 Accepted con un identificador de sondeo en lugar de la imagen — una extensión deliberada del contrato de OpenAI, que no tiene esta ruta:

Respuesta — 202 Accepted
{
  "id": "01934f2e-7c1b-7e55-9f3a-2d1c0b4a8f66",
  "status": "queued",
  "poll": "/v1/images/01934f2e-7c1b-7e55-9f3a-2d1c0b4a8f66"
}
GET /v1/images/{id}

Consulta una generación iniciada de forma asíncrona. Informa queued, processing, completed o failed; una vez completada, la URL de la imagen aparece con la misma forma data que la respuesta síncrona. Limitado al espacio de trabajo de la clave API que llama — un id que no existe o que pertenece a otro espacio de trabajo responde el mismo 404.

Respuesta — completada
{
  "id": "01934f2e-7c1b-7e55-9f3a-2d1c0b4a8f66",
  "status": "completed",
  "created": 1699900000,
  "data": [
    {
      "url": "https://zubnet.com/files/abc123.png"
    }
  ]
}
POST /v1/images/edits

Edita una imagen con un prompt de texto — el contrato images.edit de OpenAI, enviado como multipart/form-data. Disponible en los modelos que aceptan una imagen de entrada (su ficha de modelo indica edición de imágenes): gpt-image-2.5-sunburst, gpt-image-2.5-flare, gpt-image-2, p-image-edit, gen4_image, luma/photon-1 y otros. Cualquier otro modelo responde 400. Los modelos síncronos y asíncronos siguen los mismos contratos 200 / 202 que las generaciones.

Campos del formulario

Campo Tipo Descripción
modelrequerido Descripci Un modelo de imagen que acepta una imagen de entrada
promptrequerido Descripci Qué cambiar
imagerequerido string La imagen a editar (PNG, JPEG o WebP). Envía image[] para pasar varias donde el modelo lo permita
maskopcional string PNG con canal alfa, del mismo tamaño que la imagen; los píxeles transparentes marcan lo que se repinta. Solo modelos gpt-image
sizeopcional Descripci Tamaño de salida (p. ej., "1024x1024", "1536x1024")
qualityopcional Descripci "low", "medium" o "high" en la familia gpt-image
nopcional string Número de ediciones a generar. Por defecto: 1

Ejemplo de Solicitud

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"
Respuesta
{
  "created": 1699900000,
  "data": [
    {
      "url": "https://zubnet.com/files/def456.png",
      "revised_prompt": "Turn the sky into a starry night, keep everything else"
    }
  ]
}

Generación de Videos

POST /api/ai/videos

Genera videos a partir de prompts de texto o imágenes. Soporta flujos de trabajo de texto a video, imagen a video y video a video.

Modelos Disponibles

sora-2 seedance-2.0 kling-v3-pro veo-3.1-generate-001 grok-imagine-video-1.5 minimax/hailuo-2.3 pixverse-v6 vidu-q3-pro

Cuerpo de la Solicitud

Parámetro Tipo Descripción
modelrequerido Descripci Modelo de video a usar
promptrequerido* Descripci Descripción de texto del video. *No requerido para modelos de lip-sync o upscale
framesopcional file[] Imágenes de entrada para imagen a video. Máx 10MB cada una (jpg, png, webp)
videoopcional string Video de entrada para video a video. Máx 100MB (mp4, webm, mov)
audioopcional string Archivo de audio para modelos de lip-sync. Máx 25MB
aspect_ratioopcional Descripci Relación de aspecto (ej., "16:9", "9:16", "1:1")
durationopcional string Duración del video en segundos
negative_promptopcional Descripci Qué evitar en el video (según el modelo)
resolutionopcional Descripci Resolución de salida, p. ej. "480p", "720p", "1080p", "4k" (según el modelo)
qualityopcional Descripci Nivel calidad/velocidad si se admite (p. ej. "speed" o "quality")
audioopcional Descripci "on"/"off" — audio nativo sincronizado en los modelos compatibles (Seedance 2.0, Kling, PixVerse, CogVideoX…)
seedopcional string Semilla de reproducibilidad si se admite
styleopcional Descripci Preajuste de estilo en modelos compatibles (p. ej. Vidu: "general"/"anime")
Cada modelo acepta además sus opciones específicas (fps, multi_clip, mode, loop, motion_mode, ratios…) — exactamente los selectores que muestra la app para ese modelo. Los parámetros desconocidos se ignoran.

Ejemplo: Texto a Video

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
  }'

Ejemplo: Imagen a Video

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"
La generación de video es asíncrona. La respuesta incluye un campo state (“procesamiento”, “completado”, “fallido”) y un porcentaje de progress. Consulta el endpoint de la biblioteca para verificar el estado de finalización.
Respuesta
{
  "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"
}

Comprensi

lisis.

POST /api/ai/video-understanding

Enviar un video para an

Cuerpo de la Solicitud

Parámetro Tipo Descripción
video_urlrequerido Descripci URL HTTPS p
typeopcional Descripci lisis: summary (predeterminado), topics, chapterso highlights

Ejemplo de Solicitud

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"
  }'
Respuesta
{
  "job_id": "550e8400-e29b-41d4-a716-446655440000",
  "status": "queued"
}
GET /api/ai/video-understanding/{jobId}

Verificar el estado de una tarea de an

blicamente. Las URL privadas/internas se rechazan por seguridad. Los resultados se almacenan en cach
{
  "status": "completed",
  "result": {
    "type": "summary",
    "content": "The video shows a product demonstration..."
  }
}
durante 1 hora.

n de Video

POST /api/ai/compositions

Genera música original a partir de descripciones de texto, letras o etiquetas de estilo.

Modelos Disponibles

suno/v5 lyria-3-clip-preview minimax/music-2.0 stable-audio-2

Cuerpo de la Solicitud

Parámetro Tipo Descripción
modelrequerido Descripci Modelo de música a usar
promptopcional Descripci Descripción de la música o letras a musicalizar
tagsopcional Descripci Etiquetas de género y estilo (ej., "lo-fi, chill, jazz")
instrumentalopcional booleano Generar solo instrumental (sin voces). Por defecto: false

Ejemplo de Solicitud

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
  }'
Los modelos Suno típicamente devuelven 2 variantes de composición por solicitud. Lyria devuelve un solo clip de 30 segundos a 48kHz.
Respuesta
[
  {
    "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
  }
]

Composición Musical

POST /api/ai/sound-effects

Generar efectos de sonido a partir de descripciones de texto.

Cuerpo de la Solicitud

Parámetro Tipo Descripción
modelrequerido Descripci Modelo de efectos de sonido
promptrequerido Descripci n del efecto de sonido a generar

Ejemplo de Solicitud

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"
  }'
Respuesta
{
  "object": "sound_effect",
  "id": "550e8400-e29b-41d4-a716-446655440000",
  "model": "sound-effect-model",
  "cost": 1,
  "output_file": {
    "url": "https://zubnet.com/files/abc123.mp3"
  }
}

Texto a Voz

POST /v1/audio/speech

Convierte texto en audio de voz con sonido natural usando voces de ElevenLabs, Cartesia, Speechify y más.

Parámetro Tipo Descripción
modelrequerido Descripci Modelo TTS (ej., "tts-1", "tts-1-hd", "elevenlabs")
inputrequerido Descripci Texto a convertir en voz (máx 5000 caracteres)
voicerequerido Descripci ID de voz a usar (ej., "alloy", "echo", "nova", o un ID de voz personalizado)
response_formatopcional Descripci Formato de audio: mp3, opus, aac, flac. Por defecto: mp3

Ejemplo de Solicitud

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

Transcripción

POST /v1/audio/transcriptions

Transcribe audio a texto.

Parámetro Tipo Descripción
modelrequerido Descripci Modelo de transcripción (ej., "whisper-1")
filerequerido string Archivo de audio a transcribir. Máx 25MB (mp3, mp4, wav, webm, ogg, flac)
languageopcional Descripci Código de idioma (ej., "en", "fr", "es")

Ejemplo de Solicitud

curl https://api.zubnet.com/v1/audio/transcriptions \
  -H "Authorization: Bearer $ZUBNET_API_KEY" \
  -F "model=whisper-1" \
  -F "file=@recording.mp3"
Respuesta
{
  "object": "transcription",
  "id": "550e8400-e29b-41d4-a716-446655440000",
  "model": "whisper-1",
  "content": "Hello, this is a test recording..."
}

Aislamiento de Voz

POST /api/ai/isolated-voices

Extrae voces limpias del audio, eliminando ruido de fondo y música. Desarrollado por ElevenLabs.

Parámetro Tipo Descripción
filerequerido string Archivo de audio. Máx 25MB (mp3, mp4, wav, m4a, webm, ogg, flac)

Ejemplo de Solicitud

curl https://zubnet.com/api/ai/isolated-voices \
  -H "Authorization: Bearer $ZUBNET_API_KEY" \
  -F "file=@noisy-recording.mp3"
Respuesta
{
  "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"
  }
}

Separación de Pistas

POST /api/ai/stem-separations

Separa el audio en pistas individuales (voces, batería, bajo, guitarra, piano, otros). Desarrollado por ElevenLabs.

Parámetro Tipo Descripción
filerequerido string Archivo de audio. Máx 25MB (mp3, mp4, wav, m4a, webm, ogg, flac)
stem_variationopcional Descripci Modo de separación. Por defecto: "six_stems_v1" (voces, batería, bajo, guitarra, piano, otros)

Ejemplo de Solicitud

curl https://zubnet.com/api/ai/stem-separations \
  -H "Authorization: Bearer $ZUBNET_API_KEY" \
  -F "file=@song.mp3"
Respuesta
{
  "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"
  }
}

Voces

Cree y gestione voces personalizadas para la s

POST /api/voices

Crear una voz personalizada.

GET /api/voices

Listar todas las voces disponibles en su espacio de trabajo.

PUT /api/voices/{id}

Actualizar una voz personalizada.

DELETE /api/voices/{id}

Eliminar una voz personalizada.

metro voice del endpoint Texto a Voz.

Embeddings

POST /v1/embeddings

Crea embeddings de texto para búsqueda semántica y similitud.

Parámetro Tipo Descripción
modelrequerido Descripci Modelo de embedding (ej., "text-embedding-3-small")
inputrequerido string/array Texto a convertir en embedding (string o array de strings)

Ejemplo de Solicitud

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"
  }'

Bases de conocimiento

Crea y gestiona bases de conocimiento para la generaci

POST /api/knowledge-bases

Crear una nueva base de conocimiento.

Cuerpo de la Solicitud

Parámetro Tipo Descripción
namerequerido Descripci Nombre de la base de conocimiento
descriptionopcional Descripci n de la base de conocimiento

Ejemplo: Crear una base de conocimiento

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"
  }'
Respuesta
{
  "id": "550e8400-e29b-41d4-a716-446655440000",
  "name": "My KB",
  "description": "Optional description",
  "status": "active"
}
GET /api/knowledge-bases

Listar todas las bases de conocimiento en tu espacio de trabajo.

Respuesta
[
  {
    "id": "550e8400-e29b-41d4-a716-446655440000",
    "name": "My KB",
    "description": "Optional description",
    "status": "active"
  },
  ...
]
GET /api/knowledge-bases/{id}

Obtener los detalles de una base de conocimiento espec

DELETE /api/knowledge-bases/{id}

Eliminar una base de conocimiento y todos sus documentos.

POST /api/knowledge-bases/{id}/documents

Ingerir un documento en una base de conocimiento. Soporta carga de archivos, URLs y texto sin formato.

Cuerpo de la Solicitud

Parámetro Tipo Descripción
filerequerido string Nombre del agente (m — x. 64 caracteres)
titlerequerido Descripci ID del modelo (ej. "claude-sonnet-5", "deepseek-chat")
typeopcional Descripci Prompt de sistema que define el comportamiento y personalidad del agente
urlopcional Descripci "quick" o "advanced". Por defecto: "quick"
contentopcional Descripci URL del avatar (m

Ejemplo de solicitud

curl https://zubnet.com/api/knowledge-bases/550e8400-.../documents \
  -H "Authorization: Bearer $ZUBNET_API_KEY" \
  -F "file=@report.pdf"

Ejemplo: Ingerir una URL

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"
  }'

Ejemplo: Ingerir Texto Sin Procesar

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..."
  }'
GET /api/knowledge-bases/{id}/documents

Listar todos los agentes del espacio de trabajo. Soporta paginaci

DELETE /api/knowledge-bases/{id}/documents/{docId}

n y filtrado.

GET /api/knowledge-bases/{id}/documents/{docId}/content

Lee el contenido de texto extraído de un documento específico.

Reordenamiento

POST /v1/reranking

Reordena una lista de documentos por relevancia a una consulta. Útil para mejorar resultados de búsqueda, canalizaciones RAG y sistemas de recomendación.

Modelos Disponibles

rerank-2.5 rerank-2.5-lite jina-reranker-v3 jina-reranker-m0

Cuerpo de la Solicitud

Parámetro Tipo Descripción
modelrequerido Descripci Resultados por p
queryrequerido Descripci gina. Por defecto: 25
documentsrequerido string Arreglo de cadenas de documentos para reordenar
top_nopcional string Número de resultados principales a devolver. Predeterminado: todos

Ejemplo de Solicitud

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
  }'
Respuesta
{
  "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"
}
Los resultados se ordenan por puntuación de relevancia en orden descendente. El index El campo se refiere a la posición de cada documento en la matriz de entrada original.

Biblioteca

La biblioteca es donde vive todo el contenido generado — imágenes, videos, composiciones, documentos de código, transcripciones y más. Úsalo para listar elementos, verificar el estado de generación asíncrona, actualizar metadatos y gestionar tu contenido.

GET /api/library/{type}

Lista elementos en tu biblioteca por tipo de contenido.

Tipos de Contenido

images videos compositions sound-effects documents code-documents speeches transcriptions isolated-voices stem-separations conversations

Parámetros de Consulta

Parámetro Tipo Descripción
limitopcional string Resultados por página (máx. 100)
starting_afteropcional Descripci Cursor para paginación hacia adelante (UUID del elemento)
ending_beforeopcional Descripci Cursor para paginación hacia atrás (UUID del elemento)
sortopcional Descripci Campo de ordenamiento y dirección (p. ej., "created_at:desc")
queryopcional Descripci Búsqueda de texto completo (máx. 255 caracteres)
modelopcional Descripci Filtrar por modelo utilizado para la generación
Respuesta
{
  "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"
    },
    ...
  ]
}
GET /api/library/{type}/{id}

Obtiene un solo elemento de la biblioteca por ID. Este es el endpoint principal para consulta del estado de generación asíncrona.

Estados de Generación

Estado Valor Descripción
draft 0 Aún no enviado
queued 1 Esperando ser procesado
processing 2 Generando actualmente
completed 3 Listo — output_file está disponible
failed 4 La generación falló

Patrón de Sondeo

# 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!)
La paginación se basa en cursor. Usa el id del último elemento en starting_after para obtener la siguiente página. No hay parámetros de offset/página.
POST /api/library/{type}/{id}

Actualiza los metadatos de un elemento de la biblioteca.

Parámetro Tipo Descripción
titleopcional Descripci Título del elemento
visibilityopcional string 0 (privado) o 1 (público)
is_favoritedopcional booleano Agregar o quitar de favoritos
metaopcional objeto Metadatos personalizados (género, estado de ánimo, etiquetas, descripción, autor, etc.)
DELETE /api/library/{type}/{id}

Elimina un elemento de la biblioteca y sus archivos asociados.

GET /api/library/{type}/count

Obtiene el recuento total de elementos para un tipo de contenido. Admite los mismos query y model filtros como el endpoint de lista.

Tienda MCP

Los asistentes son configuraciones de chat reutilizables con un nombre personalizado, modelo, mensaje de sistema y ajustes. Úsalos para crear personas de IA especializadas para diferentes tareas.

POST /api/assistants

Crea un nuevo asistente.

GET /api/assistants

Lista todos los asistentes en tu conversación.

PUT /api/assistants/{id}

Actualiza la configuración de un asistente (nombre, modelo, prompt del sistema, ajustes).

DELETE /api/assistants/{id}

Elimina un asistente.

Espacios de Trabajo

Explora y activa servidores MCP (Model Context Protocol) para darles a tus agentes capacidades de herramientas extendidas — desde la búsqueda web y el acceso a datos hasta la ejecución de código y las integraciones de terceros.

GET /api/mcp-store/servers

Explora el catálogo de servidores MCP.

Parámetros de Consulta

Parámetro Tipo Descripción
categoryopcional Descripci Filtrar por categoría (búsqueda, datos, desarrollador, infraestructura, comunicación, comercio, creatividad, productividad, social, utilidades)
queryopcional Descripci Buscar por nombre o descripción
Respuesta
{
  "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
    },
    ...
  ]
}
POST /api/mcp-store/activations

Activa un servidor MCP para tu conversación. Proporciona los valores de configuración (claves API, etc.) según lo definido por el servidor's config_schema.

Cuerpo de la Solicitud

Parámetro Tipo Descripción
server_idrequerido Descripci UUID del servidor MCP a activar
configopcional objeto Valores de configuración que coinciden con el config_schema del servidor

Ejemplo de Solicitud

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"
    }
  }'
Respuesta (201 Created)
{
  "id": "act-uuid-...",
  "server_id": "550e8400-...",
  "status": 1,
  "config": {
    "api_key": "••••••••"
  },
  "server": {
    "name": "GitHub",
    ...
  },
  "created_at": "2026-03-01T12:00:00Z"
}
Los campos secretos en la configuración se enmascaran en las respuestas de la API. Cada conversación solo puede activar un servidor determinado una vez. El id es el activation_id que usas al vincular servidores MCP con agentes.
GET /api/mcp-store/activations

Lista todos los servidores MCP activados en tu conversación.

PUT /api/mcp-store/activations/{id}

Actualiza la configuración o el estado de una activación.

DELETE /api/mcp-store/activations/{id}

Desactiva un servidor MCP de tu conversación.

Agentes

Crea y gestiona agentes de IA autónomos que operan en distintos canales de comunicación. Los agentes pueden responder mensajes en Telegram y Discord, ejecutarse mediante disparadores programados y aprovechar bases de conocimiento y servidores MCP para funciones ampliadas.

POST /api/agents

Crea un nuevo agente.

Cuerpo de la Solicitud

Parámetro Tipo Descripción
namerequerido Descripci Nombre del agente (máx. 64 caracteres)
modelrequerido Descripci ID del modelo a usar (por ejemplo, "claude-sonnet-5", "deepseek-chat")
system_promptopcional Descripci Prompt de sistema personalizado que define el comportamiento y la personalidad del agente
modeopcional Descripci "quick" o "advanced". Por defecto: "quick"
avataropcional Descripci URL del avatar (máx. 512 caracteres)

Ejemplo de Solicitud

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"
  }'
Respuesta (201 Created)
{
  "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": []
}
GET /api/agents

Lista todos los agentes en la conversación. Admite paginación y filtrado.

Parámetro Tipo Descripción
limitconsulta string Resultados por página. Predeterminado: 25
cursorconsulta Descripci n
sortconsulta Descripci "name", "created_at" o "last_active_at". Por defecto: "created_at"
directionconsulta Descripci "asc" o "desc"
statusconsulta string Filtrar por estado: 0 (inactivo), 1 (activo), 2 (pausado)
Respuesta
{
  "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,
      ...
    }
  ]
}
GET /api/agents/{id}

Obtener los detalles completos de un agente, incluyendo sus canales, servidores MCP y bases de conocimiento vinculados.

PUT /api/agents/{id}

Actualizar un agente. Todos los campos son opcionales — solo se modifican los campos proporcionados.

Cuerpo de la Solicitud

Parámetro Tipo Descripción
nameopcional Descripci x. 64)
modelopcional Descripci ID del modelo
system_promptopcional string|null Prompt de sistema (null para borrar)
statusopcional string 0 (inactivo), 1 (activo) o 2 (pausado)
modeopcional Descripci "quick" o "advanced"
permissionsopcional objeto Permisos del agente (ver abajo)

Objeto de Permisos

{
  "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
    }
  }
}
DELETE /api/agents/{id}

Eliminar un agente. Esto tambi

Integraciones

POST /api/agents/{id}/knowledge-bases

Vincular una base de conocimiento a un agente para respuestas con RAG. Cuerpo: { "knowledge_base_id": "uuid" }

DELETE /api/agents/{id}/knowledge-bases/{kid}

Desvincular una base de conocimiento de un agente.

POST /api/agents/{id}/mcp-servers

Vincular un servidor MCP a un agente para herramientas extendidas. Cuerpo: { "activation_id": "uuid" }

DELETE /api/agents/{id}/mcp-servers/{activationId}

Desvincular un servidor MCP de un agente.

GET /api/agents/{id}/messages

Recuperar el historial de conversaciones de un agente.

Parámetro Tipo Descripción
limitconsulta string x.: 100
Respuesta
{
  "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
    }
  ]
}
Los agentes requieren que la funci

Canales de Agente

n. Cada agente soporta un canal por tipo (un bot de Telegram, un bot de Discord).

POST /api/agents/{id}/channels

Agregar un canal de comunicaci

Cuerpo de la Solicitud

Parámetro Tipo Descripción
typerequerido Descripci "telegram" o "discord"
tokenrequerido Descripci Token del bot de Telegram BotFather o Discord Developer Portal (m

Ejemplo de Solicitud

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..."
  }'
Respuesta (201 Created)
{
  "id": "ch-uuid-...",
  "type": "telegram",
  "status": 1,
  "metadata": {},
  "last_error": null,
  "last_message_at": null,
  "created_at": 1709136000
}
ticamente un webhook. Estado del canal: 0 = inactivo, 1 = activo, 2 = error.
GET /api/agents/{id}/channels

Listar todos los canales conectados a un agente.

DELETE /api/agents/{id}/channels/{channelId}

Eliminar un canal de un agente.

Disparadores de Agente

Automatice las acciones de los agentes con disparadores. Los disparadores programados usan expresiones cron para ejecutarse en horarios espec

POST /api/agents/{id}/triggers

Crear un disparador automatizado para un agente.

Cuerpo de la Solicitud

Parámetro Tipo Descripción
namerequerido Descripci x. 128)
typerequerido Descripci "scheduled" o "event"
promptrequerido Descripci El prompt enviado al agente cuando se activa el disparador
cron_expressionopcional Descripci Expresi
timezoneopcional Descripci n cron. Por defecto: "UTC"
channel_idopcional Descripci Canal al cual enviar la salida del disparador

Ejemplo: Disparador de resumen diario

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"
  }'
Respuesta (201 Created)
{
  "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
}
GET /api/agents/{id}/triggers

Listar todos los disparadores de un agente.

PUT /api/agents/{id}/triggers/{triggerId}

Actualizar un disparador. Todos los campos son opcionales. Establezca status a 0 para desactivar o 1 para activar.

DELETE /api/agents/{id}/triggers/{triggerId}

Eliminar un disparador.

Los disparadores programados se ejecutan de forma as

Conversaciones

n, claves API y miembros. Gestione espacios, invite miembros y realice seguimiento del uso.

POST /api/workspaces

Crear un nuevo espacio de trabajo.

Parámetro Tipo Descripción
namerequerido Descripci x. 50 caracteres)
Respuesta (201 Created)
{
  "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"
}
POST /api/workspaces/{id}

Actualizar la configuraci

Parámetro Tipo Descripción
nameopcional Descripci x. 50 caracteres)
api_spending_limitopcional L mite de gasto API mensual (null para ilimitado)
{provider}_api_keyopcional Descripci Clave API BYOK para un proveedor (ej. openai_api_key, anthropic_api_key)
DELETE /api/workspaces/{id}

Eliminar un espacio de trabajo. Requiere permiso de gesti

POST /api/workspaces/{id}/invitations

Invitar a un usuario a unirse al espacio por correo electr

Parámetro Tipo Descripción
emailrequerido Descripci Direcci
DELETE /api/workspaces/{id}/invitations/{invitationId}

Cancelar una invitaci

DELETE /api/workspaces/{id}/users/{userId}

n pendiente.

GET /api/workspaces/{id}/logs/usage

Eliminar un miembro del espacio, o abandonar el espacio usando su propio ID de usuario.

GET /api/workspaces/{id}/logs/usage/items

Listar estad > sticas de uso agregadas. Paginaci

GET /api/workspaces/{id}/logs/usage/items/count

Obtener el total de elementos de uso.

Los endpoints de uso y gesti n del espacio (propietario o admin).

Cuenta

s de la API de Biblioteca usando el tipo conversations.

POST /api/ai/conversations

Crear una nueva conversaci

Respuesta
{
  "object": "conversation",
  "id": "550e8400-...",
  "title": null,
  "cost": 0,
  "messages": [],
  "created_at": "2026-03-01T12:00:00Z"
}
POST /api/ai/conversations/{id}/messages

Enviar un mensaje a una conversaci Completaciones de Chat para detalles del formato SSE.

Cuerpo de la Solicitud

Parámetro Tipo Descripción
modelrequerido Descripci Modelo a utilizar para la respuesta
contentopcional Descripci Texto del mensaje
assistant_idopcional Descripci UUID de un asistente a utilizar para este mensaje
parent_idopcional Descripci UUID de un mensaje padre (para conversaciones ramificadas)
fileopcional string Archivo adjunto (im — genes, documentos, audio/video
recordingopcional string Grabaci — x. 64 caracteres)

Ejemplo de Solicitud

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"
  }'
a SSE. Use multipart/form-data al subir archivos. Para listar o eliminar conversaciones, use la API de Biblioteca con tipo conversations.

Facturaci

Gestione su perfil de usuario y genere claves API program

PUT /api/account

Actualiza la información de tu perfil.

Parámetro Tipo Descripción
first_nameopcional Descripci Nombre (máx. 50 caracteres)
last_nameopcional Descripci Apellido (máx. 50 caracteres)
languageopcional Descripci Código de idioma preferido (p. ej., "en", "fr")
preferencesopcional objeto Configuración de preferencias del usuario
POST /api/account/rest-api-keys

Genera una nueva clave API. Requiere confirmación de contraseña por seguridad. Se devuelve la clave API completa solo una vez Actualizar su informaci — n de perfil.

Parámetro Tipo Descripción
current_passwordrequerido Descripci Tu contraseña actual de la cuenta
Respuesta
{
  "id": "550e8400-...",
  "first_name": "Jane",
  "last_name": "Doe",
  "email": "jane@example.com",
  "api_key": "zub_live_a1b2c3d4e5f6..."
}
El api_key el valor se muestra completo solo en esta respuesta. Las siguientes llamadas a la API devuelven una versión enmascarada. Trátalo como una contraseña.

n

Explora los planes disponibles, visualiza el historial de pedidos, inicia el pago y administra suscripciones.

GET /api/billing/plans

Lista los planes de suscripción disponibles.

Parámetro Tipo Descripción
billing_cycleopcional Descripci Filtrar por ciclo de facturación
GET /api/billing/orders

Lista los pedidos de la conversación actual. Admite paginación basada en cursor.

Parámetro Tipo Descripción
statusopcional Descripci Filtrar por estado del pedido
billing_cycleopcional Descripci Filtrar por ciclo de facturación
POST /api/billing/checkout

Inicia un proceso de pago para un plan de suscripción o compra de créditos. Requiere permiso de gestión de conversación.

Parámetro Tipo Descripción
idopcional Descripci Nombre (m amount)
amountopcional string Apellido (m id)
gatewayopcional Descripci C stripe o paypal
DELETE /api/billing/subscription

Generar una nueva clave API. Requiere confirmaci

Reportes

Explore los planes disponibles, consulte el historial de pedidos, inicie un pago y gestione suscripciones.

POST /api/content-reports

Listar los planes de suscripci

Parámetro Tipo Descripción
item_idrequerido Descripci Filtrar por estado del pedido
reasonrequerido string Filtrar por ciclo de facturaci
descriptionopcional Descripci x. 2000 caracteres)
Respuesta (201 Created)
{
  "id": "550e8400-e29b-41d4-a716-446655440000"
}
Los reportes duplicados (mismo usuario + mismo elemento) retornan un error 409 Conflict.

Más endpoints

La superficie completa va más allá de las secciones anteriores. Estos endpoints están activos y usan la misma autenticación:

POST /api/ai/three-dGeneración de modelos 3D (Tripo, Meshy…)
POST /api/ai/tts  ·  POST /api/ai/speechesTexto a voz (superficie nativa + preajustes)
POST /api/ai/transcriptionsTranscripción de audio por lotes (selector de modelo)
GET /api/ai/transcriptions/realtime/token  ·  POST /api/ai/transcriptions/realtime/saveTranscripción en vivo del micrófono (token de sesión + guardado)
POST /api/ai/translations  ·  GET /api/ai/translation-languagesTraducción de texto + idiomas admitidos
POST /api/ai/document-extractionsExtracción de texto de documentos (OCR)
GET /api/ai/video-understanding/{jobId}Estado del análisis de video
/api/library-stacksStacks de biblioteca (colecciones) — CRUD completo
/api/chatroomSalas de equipo (conversaciones de IA compartidas)
/api/automationFlujos de automatización (crear + ejecutar)

Errores

La API usa códigos de estado HTTP estándar y devuelve mensajes de error detallados.

Código Descripción
400 Solicitud Incorrecta — Parámetros inválidos
401 No Autorizado — Clave API inválida o faltante
403 Prohibido — Créditos insuficientes o modelo no disponible en tu plan
404 No Encontrado — Modelo o recurso no encontrado
413 Carga Demasiado Grande — El archivo excede el límite de tamaño
429 Demasiadas Solicitudes — Límite de solicitudes excedido
500 Error Interno del Servidor
503 Servicio No Disponible — Sobrecarga temporal
Formato de Respuesta de Error
{
  "error": {
    "message": "Invalid API key provided",
    "type": "authentication_error",
    "code": "invalid_api_key"
  }
}

Límites de Solicitud

Los límites de solicitud varían según el plan. Los encabezados se incluyen en cada respuesta:

Encabezado Descripción
X-RateLimit-Limit Solicitudes permitidas por minuto
X-RateLimit-Remaining Solicitudes restantes en la ventana actual
X-RateLimit-Reset Marca de tiempo Unix cuando se restablece el límite

Si alcanzas un límite de solicitudes, espera hasta el momento de restablecimiento o contáctanos para aumentar tus límites.

Necesitas Ayuda?

Estamos Aquí para Ti

Preguntas sobre la API? Consulta nuestras FAQ o contáctanos directamente.