Documentación API
- Inicio
- Desarrollar
- API
Texto
Medios
Voz
Otro
Plataforma
Agentes
La API de Zubnet te da acceso programático a más de 350 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.
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-4-20250514", "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-4-20250514", messages=[{"role": "user", "content": "Hello!"}] ) print(response.choices[0].message.content)
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.
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.
Lista todos los modelos disponibles.
curl https://api.zubnet.com/v1/models \
-H "Authorization: Bearer $ZUBNET_API_KEY"
{
"object": "list",
"data": [
{
"id": "claude-sonnet-4-20250514",
"object": "model",
"created": 1699900000,
"owned_by": "anthropic"
},
{
"id": "deepseek-chat",
"object": "model",
"created": 1699900000,
"owned_by": "deepseek"
},
...
]
}
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.
| Parámetro | Tipo | Descripción |
|---|---|---|
modelrequerido |
string | ID del modelo a usar (ej., "claude-sonnet-4-20250514", "deepseek-chat", "gemini-2.5-pro") |
messagesrequerido |
array | Array de objetos de mensaje con role y content |
temperatureopcional |
number | Temperatura de muestreo (0-2). Por defecto: 0.7 |
max_tokensopcional |
integer | Máximo de tokens a generar (1-128000). Por defecto: 4096 |
streamopcional |
boolean | Transmitir respuestas vía SSE. Por defecto: true |
top_popcional |
number | Parámetro de muestreo nucleus (0-1). Por defecto: 1 |
frequency_penaltyopcional |
number | Penalización de frecuencia (-2 a 2). Por defecto: 0 |
presence_penaltyopcional |
number | Penalización de presencia (-2 a 2). Por defecto: 0 |
stopopcional |
string/array | Secuencias 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-4-20250514", "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-4-20250514",
"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
}
}
Genera código a partir de un prompt en lenguaje natural. Devuelve una respuesta en streaming vía Server-Sent Events (SSE).
| Parámetro | Tipo | Descripción |
|---|---|---|
promptrequerido |
string | Descripción en lenguaje natural del código a generar |
languagerequerido |
string | Lenguaje de programación (ej., "python", "javascript", "rust") |
temperatureopcional |
number | Temperatura de muestreo (0-2) |
max_tokensopcional |
integer | Máximo de tokens a generar (1-128000) |
curl https://app.zubnet.ai/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 con contenido incremental, seguidos de un evento document final con el código generado completo.
{
"object": "code_document",
"id": "550e8400-e29b-41d4-a716-446655440000",
"model": "claude-sonnet-4-20250514",
"cost": 1,
"title": "Prime Number Checker",
"content": "def is_prime(n): ..."
}
Genera imágenes a partir de prompts de texto usando modelos de FLUX, Stable Diffusion, Ideogram y más.
| Parámetro | Tipo | Descripción |
|---|---|---|
modelrequerido |
string | Modelo de imagen a usar |
promptrequerido |
string | Descripción de texto de la imagen a generar |
nopcional |
integer | Número de imágenes a generar. Por defecto: 1 |
sizeopcional |
string | Tamaño de imagen (ej., "1024x1024", "1792x1024") |
response_formatopcional |
string | "url" o "b64_json". Por defecto: "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://cdn.zubnet.ai/files/abc123.png",
"revised_prompt": "A serene mountain lake..."
}
]
}
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.
| Parámetro | Tipo | Descripción |
|---|---|---|
modelrequerido |
string | Modelo de video a usar |
promptrequerido* |
string | 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 |
file | Video de entrada para video a video. Máx 100MB (mp4, webm, mov) |
audioopcional |
file | Archivo de audio para modelos de lip-sync. Máx 25MB |
aspect_ratioopcional |
string | Relación de aspecto (ej., "16:9", "9:16", "1:1") |
durationopcional |
integer | Duración del video en segundos |
curl https://app.zubnet.ai/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://app.zubnet.ai/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 (“processing”, “completed”, “failed”) y un porcentaje de progress. Consulta el endpoint de la biblioteca para verificar el estado de finalización.
{
"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"
}
Analice contenido de video con IA. Envíe una URL de video para análisis y consulte los resultados. Soporta múltiples tipos de análisis.
Enviar un video para análisis por IA. Retorna un identificador de tarea que puede consultar para obtener resultados.
| Parámetro | Tipo | Descripción |
|---|---|---|
video_urlrequerido |
string | URL HTTPS pública del video a analizar |
typeopcional |
string | Tipo de análisis: summary (predeterminado), topics, chapters o highlights |
curl https://app.zubnet.ai/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"
}
Verificar el estado de una tarea de análisis de video.
{
"status": "completed",
"result": {
"type": "summary",
"content": "El video muestra una demostración de producto..."
}
}
Genera música original a partir de descripciones de texto, letras o etiquetas de estilo.
| Parámetro | Tipo | Descripción |
|---|---|---|
modelrequerido |
string | Modelo de música a usar |
promptopcional |
string | Descripción de la música o letras a musicalizar |
tagsopcional |
string | Etiquetas de género y estilo (ej., "lo-fi, chill, jazz") |
instrumentalopcional |
boolean | Generar solo instrumental (sin voces). Por defecto: false |
curl https://app.zubnet.ai/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://cdn.zubnet.ai/files/abc123.mp3"
}
},
{
"object": "composition",
"id": "550e8400-e29b-41d4-a716-446655440001",
// ... segunda variante
}
]
Generar efectos de sonido a partir de descripciones de texto.
| Parámetro | Type | Descripción |
|---|---|---|
modelrequerido |
string | Modelo de efectos de sonido |
promptrequerido |
string | Descripción del efecto de sonido a generar |
curl https://app.zubnet.ai/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://cdn.zubnet.ai/files/abc123.mp3"
}
}
Convierte texto en audio de voz con sonido natural usando voces de ElevenLabs, Cartesia, Speechify y más.
| Parámetro | Tipo | Descripción |
|---|---|---|
modelrequerido |
string | Modelo TTS (ej., "tts-1", "tts-1-hd", "elevenlabs") |
inputrequerido |
string | Texto a convertir en voz (máx 5000 caracteres) |
voicerequerido |
string | ID de voz a usar (ej., "alloy", "echo", "nova", o un ID de voz personalizado) |
response_formatopcional |
string | Formato de audio: mp3, opus, aac, flac. Por defecto: 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
Transcribe audio a texto.
| Parámetro | Tipo | Descripción |
|---|---|---|
modelrequerido |
string | Modelo de transcripción (ej., "whisper-1") |
filerequerido |
file | Archivo de audio a transcribir. Máx 25MB (mp3, mp4, wav, webm, ogg, flac) |
languageopcional |
string | Código de idioma (ej., "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..."
}
Extrae voces limpias del audio, eliminando ruido de fondo y música. Desarrollado por ElevenLabs.
| Parámetro | Tipo | Descripción |
|---|---|---|
filerequerido |
file | Archivo de audio. Máx 25MB (mp3, mp4, wav, m4a, webm, ogg, flac) |
curl https://app.zubnet.ai/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://cdn.zubnet.ai/files/input.mp3"
},
"output_file": {
"url": "https://cdn.zubnet.ai/files/isolated.mp3"
}
}
Separa el audio en pistas individuales (voces, batería, bajo, guitarra, piano, otros). Desarrollado por ElevenLabs.
| Parámetro | Tipo | Descripción |
|---|---|---|
filerequerido |
file | Archivo de audio. Máx 25MB (mp3, mp4, wav, m4a, webm, ogg, flac) |
stem_variationopcional |
string | Modo de separación. Por defecto: "six_stems_v1" (voces, batería, bajo, guitarra, piano, otros) |
curl https://app.zubnet.ai/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://cdn.zubnet.ai/files/song.mp3"
},
"output_file": {
"url": "https://cdn.zubnet.ai/files/stems.zip"
}
}
Cree y gestione voces personalizadas para la síntesis de voz.
Crear una voz personalizada.
Listar todas las voces disponibles en su espacio de trabajo.
Actualizar una voz personalizada.
Eliminar una voz personalizada.
voice del endpoint Texto a Voz.
Crea embeddings de texto para búsqueda semántica y similitud.
| Parámetro | Tipo | Descripción |
|---|---|---|
modelrequerido |
string | Modelo de embedding (ej., "text-embedding-3-small") |
inputrequerido |
string/array | Texto a convertir en embedding (string o 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" }'
Crea y gestiona bases de conocimiento para la generación aumentada por recuperación (RAG). Sube documentos (PDF, DOCX, TXT, Markdown) o añade URLs y texto sin formato, y luego consúltalos en tus completions de chat.
Crear una nueva base de conocimiento.
| Parámetro | Tipo | Descripción |
|---|---|---|
namerequerido |
string | Nombre de la base de conocimiento |
descriptionopcional |
string | Descripción de la base de conocimiento |
curl https://app.zubnet.ai/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"
}
Listar todas las bases de conocimiento en tu espacio de trabajo.
[
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"name": "My KB",
"description": "Optional description",
"status": "active"
},
...
]
Obtener los detalles de una base de conocimiento específica, incluyendo sus documentos.
Eliminar una base de conocimiento y todos sus documentos.
Ingerir un documento en una base de conocimiento. Soporta carga de archivos, URLs y texto sin formato.
| Parámetro | Tipo | Descripción |
|---|---|---|
fileopción 1 |
file | Carga multipart (PDF, DOCX, TXT, MD — máx 10 MB) |
titlerequerido |
string | Título del documento (requerido para los tipos URL y texto) |
typeopción 2/3 |
string | "url" o "text" (para ingesta sin archivo) |
urlopción 2 |
string | URL a recuperar e ingerir (cuando el tipo es "url") |
contentopción 3 |
string | Contenido de texto sin formato a ingerir (cuando el tipo es "text") |
curl https://app.zubnet.ai/api/knowledge-bases/550e8400-.../documents \ -H "Authorization: Bearer $ZUBNET_API_KEY" \ -F "file=@report.pdf"
curl https://app.zubnet.ai/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.ai/developers.html" }'
curl https://app.zubnet.ai/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..." }'
Listar todos los documentos de una base de conocimiento.
Eliminar un documento específico de una base de conocimiento.
Leer el contenido textual extraído de un documento específico.
Reordenar una lista de documentos por relevancia respecto a una consulta. Útil para mejorar resultados de búsqueda, pipelines RAG y sistemas de recomendación.
| Parámetro | Tipo | Descripción |
|---|---|---|
modelrequerido |
string | Modelo de reranking a utilizar |
queryrequerido |
string | La consulta de búsqueda para clasificar los documentos |
documentsrequerido |
array | Array de cadenas de documentos a reordenar |
top_nopcional |
integer | Número de resultados a devolver. Por defecto: todos |
curl https://api.zubnet.ai/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 se refiere a la posición de cada documento en el array de entrada original.
La biblioteca es donde vive todo el contenido generado — imágenes, videos, composiciones, documentos de código, transcripciones y más. Úsela para listar elementos, verificar el estado de generación asíncrona, actualizar metadatos y gestionar su contenido.
Listar elementos en su biblioteca por tipo de contenido.
| Parámetro | Tipo | Descripción |
|---|---|---|
limitopcional |
integer | Resultados por página (máx. 100) |
starting_afteropcional |
string | Cursor para paginación hacia adelante (UUID del elemento) |
ending_beforeopcional |
string | Cursor para paginación hacia atrás (UUID del elemento) |
sortopcional |
string | Campo y dirección de ordenación (ej., "created_at:desc") |
queryopcional |
string | Búsqueda de texto completo (máx. 255 caracteres) |
modelopcional |
string | Filtrar por modelo utilizado para la generación |
{
"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://cdn.zubnet.ai/files/abc123.mp4",
"size": 8421376,
"extension": "mp4"
},
"created_at": "2026-03-01T12:00:00Z"
},
...
]
}
Obtener un elemento de la biblioteca por ID. Este es el endpoint principal para consultar el estado de generación asíncrona.
| Estado | Valor | Descripción |
|---|---|---|
draft |
0 | Aún no enviado |
queued |
1 | En espera de procesamiento |
processing |
2 | Generando actualmente |
completed |
3 | Listo — output_file disponible |
failed |
4 | La generación falló |
# 1. Iniciar generación asíncrona curl -X POST https://app.zubnet.ai/api/ai/videos \ -H "Authorization: Bearer $ZUBNET_API_KEY" \ -H "Content-Type: application/json" \ -d '{"model": "veo-3.1-generate-001", "prompt": "Un arrecife de coral"}' # Retorna: {"id": "550e8400-...", "state": 1, ...} # 2. Consultar estado hasta completar curl https://app.zubnet.ai/api/library/videos/550e8400-... \ -H "Authorization: Bearer $ZUBNET_API_KEY" # Retorna: {"state": 2, "progress": 45, ...} (procesando) # Retorna: {"state": 3, "progress": 100, "output_file": {"url": "..."}} (listo)
id del último elemento en starting_after para obtener la siguiente página. No hay parámetros de offset/página.
Actualizar los metadatos de un elemento de la biblioteca.
| Parámetro | Tipo | Descripción |
|---|---|---|
titleopcional |
string | Título del elemento |
visibilityopcional |
integer | 0 (privado) o 1 (público) |
is_favoritedopcional |
boolean | Agregar o quitar de favoritos |
metaopcional |
object | Metadatos personalizados (género, estado de ánimo, etiquetas, descripción, autor, etc.) |
Eliminar un elemento de la biblioteca y sus archivos asociados.
Obtener el total de elementos para un tipo de contenido. Soporta los mismos filtros query y model que el endpoint de listado.
Los asistentes son preajustes de chat reutilizables con un nombre, modelo, prompt de sistema y configuraciones personalizados. Úselos para crear personas de IA especializadas para diferentes tareas.
Crear un nuevo asistente.
Listar todos los asistentes en su espacio de trabajo.
Actualizar la configuración de un asistente (nombre, modelo, prompt de sistema, ajustes).
Eliminar un asistente.
Explore y active servidores MCP (Model Context Protocol) para dar a sus agentes capacidades de herramientas extendidas — desde búsqueda web y acceso a datos hasta ejecución de código e integraciones de terceros.
Explorar el catálogo de servidores MCP.
| Parámetro | Tipo | Descripción |
|---|---|---|
categoryopcional |
string | Filtrar por categoría (search, data, developer, infrastructure, communication, commerce, creative, productivity, social, utilities) |
queryopcional |
string | Buscar por nombre o descripción |
{
"object": "list",
"data": [
{
"id": "550e8400-...",
"name": "GitHub",
"description": "Acceder a repositorios, issues y pull requests de GitHub",
"category": "developer",
"config_schema": [
{"name": "api_key", "type": "secret", "label": "API Key", "required": true}
],
"tools": ["list_repos", "create_issue", "search_code"],
"is_official": true
},
...
]
}
Activar un servidor MCP para su espacio de trabajo. Proporcione valores de configuración (claves API, etc.) según lo definido por el config_schema del servidor.
| Parámetro | Tipo | Descripción |
|---|---|---|
server_idrequerido |
string | UUID del servidor MCP a activar |
configopcional |
object | Valores de configuración que coincidan con el config_schema del servidor |
curl https://app.zubnet.ai/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 devuelto es el activation_id que usa al vincular servidores MCP a agentes.
Listar todos los servidores MCP activados en su espacio de trabajo.
Actualizar la configuración o estado de una activación.
Desactivar un servidor MCP de su espacio de trabajo.
Cree y gestione agentes de IA autónomos que operan a través de 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 capacidades extendidas.
Crear un nuevo agente.
| Parámetro | Tipo | Descripción |
|---|---|---|
namerequerido |
string | Nombre del agente (máx. 64 caracteres) |
modelrequerido |
string | ID del modelo (ej. "claude-sonnet-4-20250514", "deepseek-chat") |
system_promptopcional |
string | Prompt de sistema que define el comportamiento y personalidad del agente |
modeopcional |
string | "quick" o "advanced". Por defecto: "quick" |
avataropcional |
string | URL del avatar (máx. 512 caracteres) |
curl https://app.zubnet.ai/api/agents \ -H "Authorization: Bearer $ZUBNET_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "name": "Support Bot", "model": "claude-sonnet-4-20250514", "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-4-20250514",
"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://cdn.zubnet.ai/files/avatar.jpg"
},
"channels": []
}
Listar todos los agentes del espacio de trabajo. Soporta paginación y filtrado.
| Parámetro | Tipo | Descripción |
|---|---|---|
limitquery |
integer | Resultados por página. Por defecto: 25 |
cursorquery |
string | Cursor de paginación |
sortquery |
string | "name", "created_at" o "last_active_at". Por defecto: "created_at" |
directionquery |
string | "asc" o "desc" |
statusquery |
integer | Filtrar por estado: 0 (inactivo), 1 (activo), 2 (pausado) |
{
"object": "list",
"data": [
{
"id": "550e8400-...",
"name": "Support Bot",
"slug": "support-bot",
"model": "claude-sonnet-4-20250514",
"status": 1,
"mode": "advanced",
"cost": 12.50,
"last_active_at": 1709222400,
"created_at": 1709136000,
...
}
]
}
Obtener los detalles completos de un agente, incluyendo sus canales, servidores MCP y bases de conocimiento vinculados.
Actualizar un agente. Todos los campos son opcionales — solo se modifican los campos proporcionados.
| Parámetro | Tipo | Descripción |
|---|---|---|
nameopcional |
string | Nombre del agente (máx. 64) |
modelopcional |
string | ID del modelo |
system_promptopcional |
string|null | Prompt de sistema (null para borrar) |
statusopcional |
integer | 0 (inactivo), 1 (activo) o 2 (pausado) |
modeopcional |
string | "quick" o "advanced" |
permissionsopcional |
object | Permisos del agente (ver abajo) |
{
"permissions": {
"time_windows": [
{
"days": [1, 2, 3, 4, 5], // 0=Dom, 6=Sáb
"timezone": "America/Mexico_City",
"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
}
}
}
Eliminar un agente. Esto también elimina todos sus canales, disparadores, mensajes e integraciones.
Vincular una base de conocimiento a un agente para respuestas con RAG. Cuerpo: { "knowledge_base_id": "uuid" }
Desvincular una base de conocimiento de un agente.
Vincular un servidor MCP a un agente para herramientas extendidas. Cuerpo: { "activation_id": "uuid" }
Desvincular un servidor MCP de un agente.
Recuperar el historial de conversaciones de un agente.
| Parámetro | Tipo | Descripción |
|---|---|---|
limitquery |
integer | Número de mensajes a devolver. Por defecto: 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-4-20250514",
"created_at": 1709222401
}
]
}
Conecte agentes a plataformas de comunicación. Cada agente soporta un canal por tipo (un bot de Telegram, un bot de Discord).
Agregar un canal de comunicación a un agente.
| Parámetro | Tipo | Descripción |
|---|---|---|
typerequerido |
string | "telegram" o "discord" |
tokenrequerido |
string | Token del bot de Telegram BotFather o Discord Developer Portal (máx. 256) |
curl https://app.zubnet.ai/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
}
Listar todos los canales conectados a un agente.
Eliminar un canal de un agente.
Automatice las acciones de los agentes con disparadores. Los disparadores programados usan expresiones cron para ejecutarse en horarios específicos; los disparadores de evento se activan en respuesta a eventos externos.
Crear un disparador automatizado para un agente.
| Parámetro | Tipo | Descripción |
|---|---|---|
namerequerido |
string | Nombre del disparador (máx. 128) |
typerequerido |
string | "scheduled" o "event" |
promptrequerido |
string | El prompt enviado al agente cuando se activa el disparador |
cron_expressionopcional |
string | Expresión cron (ej. "0 9 * * 1-5" para días laborales a las 9am) |
timezoneopcional |
string | Zona horaria IANA para la evaluación cron. Por defecto: "UTC" |
channel_idopcional |
string | Canal al cual enviar la salida del disparador |
curl https://app.zubnet.ai/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/Mexico_City" }'
{
"id": "tr-uuid-...",
"name": "Daily Summary",
"type": "scheduled",
"status": 1,
"cron_expression": "0 18 * * 1-5",
"timezone": "America/Mexico_City",
"prompt": "Summarize the key metrics for today...",
"channel_id": null,
"last_run_at": null,
"next_run_at": 1709236800,
"run_count": 0,
"created_at": 1709136000
}
Listar todos los disparadores de un agente.
Actualizar un disparador. Todos los campos son opcionales. Establezca status a 0 para desactivar o 1 para activar.
Eliminar un disparador.
Los espacios de trabajo son la unidad organizativa de su equipo. Cada espacio tiene su propio saldo de créditos, suscripción, claves API y miembros. Gestione espacios, invite miembros y realice seguimiento del uso.
Crear un nuevo espacio de trabajo.
| Parámetro | Tipo | Descripción |
|---|---|---|
namerequerido |
string | Nombre del espacio de trabajo (máx. 50 caracteres) |
{
"id": "550e8400-...",
"name": "Mi Equipo",
"subscription": null,
"api_spending_limit": null,
"api_spending_current": 0,
"owner": { "id": "...", "email": "..." },
"created_at": "2026-03-01T12:00:00Z"
}
Actualizar la configuración de un espacio de trabajo. Requiere permiso de gestión.
| Parámetro | Tipo | Descripción |
|---|---|---|
nameopcional |
string | Nombre del espacio (máx. 50 caracteres) |
api_spending_limitopcional |
number | Límite de gasto API mensual (null para ilimitado) |
{provider}_api_keyopcional |
string | Clave API BYOK para un proveedor (ej. openai_api_key, anthropic_api_key) |
Eliminar un espacio de trabajo. Requiere permiso de gestión.
Invitar a un usuario a unirse al espacio por correo electrónico. Máximo 20 invitaciones pendientes por espacio.
| Parámetro | Tipo | Descripción |
|---|---|---|
emailrequerido |
string | Dirección de correo del usuario a invitar |
Cancelar una invitación pendiente.
Eliminar un miembro del espacio, o abandonar el espacio usando su propio ID de usuario.
Listar estadísticas de uso agregadas. Paginación por cursor.
Listar entradas de uso detalladas (elementos completados con costo > 0). Cada entrada incluye tipo, modelo, título, costo y marca de tiempo.
Obtener el total de elementos de uso.
Las conversaciones agrupan mensajes de chat en sesiones. Cree primero una conversación y luego envíe mensajes. Las conversaciones también se pueden gestionar a través de la API de Biblioteca usando el tipo conversations.
Crear una nueva conversación. Retorna el objeto conversación con una lista de mensajes vacía.
{
"object": "conversation",
"id": "550e8400-...",
"title": null,
"cost": 0,
"messages": [],
"created_at": "2026-03-01T12:00:00Z"
}
Enviar un mensaje a una conversación y recibir una respuesta de IA vía Server-Sent Events (SSE). Consulte la sección Completaciones de Chat para detalles del formato SSE.
| Parámetro | Tipo | Descripción |
|---|---|---|
modelrequerido |
string | Modelo a utilizar para la respuesta |
contentopcional |
string | Texto del mensaje |
assistant_idopcional |
string | UUID de un asistente a utilizar para este mensaje |
parent_idopcional |
string | UUID de un mensaje padre (para conversaciones ramificadas) |
fileopcional |
file | Archivo adjunto (imágenes, documentos, audio/video — máx. 25MB) |
recordingopcional |
file | Grabación de voz (mp3, wav, webm, ogg — máx. 10MB) |
curl https://app.zubnet.ai/api/ai/conversations/550e8400-.../messages \ -H "Authorization: Bearer $ZUBNET_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "gpt-4.1", "content": "Explique la computación cuántica en términos simples" }'
multipart/form-data al subir archivos. Para listar o eliminar conversaciones, use la API de Biblioteca con tipo conversations.
Gestione su perfil de usuario y genere claves API programáticamente.
Actualizar su información de perfil.
| Parámetro | Tipo | Descripción |
|---|---|---|
first_nameopcional |
string | Nombre (máx. 50 caracteres) |
last_nameopcional |
string | Apellido (máx. 50 caracteres) |
languageopcional |
string | Código de idioma preferido (ej. "en", "es") |
preferencesopcional |
object | Configuración de preferencias del usuario |
Generar una nueva clave API. Requiere confirmación de contraseña. La clave completa se muestra solo una vez en esta respuesta — guárdela de forma segura.
| Parámetro | Tipo | Descripción |
|---|---|---|
current_passwordrequerido |
string | Su contraseña actual |
{
"id": "550e8400-...",
"first_name": "Jane",
"last_name": "Doe",
"email": "jane@example.com",
"api_key": "zub_live_a1b2c3d4e5f6..."
}
api_key se muestra completo solo en esta respuesta. Las llamadas posteriores devuelven una versión enmascarada. Trátela como una contraseña.
Explore los planes disponibles, consulte el historial de pedidos, inicie un pago y gestione suscripciones.
Listar los planes de suscripción disponibles.
| Parámetro | Tipo | Descripción |
|---|---|---|
billing_cycleopcional |
string | Filtrar por ciclo de facturación |
Listar los pedidos del espacio de trabajo actual. Paginación por cursor.
| Parámetro | Tipo | Descripción |
|---|---|---|
statusopcional |
string | Filtrar por estado del pedido |
billing_cycleopcional |
string | Filtrar por ciclo de facturación |
Iniciar un pago para un plan de suscripción o compra de créditos. Requiere permiso de gestión del espacio.
| Parámetro | Tipo | Descripción |
|---|---|---|
idopcional |
string | UUID del plan (requerido si no hay amount) |
amountopcional |
integer | Monto de compra de créditos en centavos (mín. 1000, requerido si no hay id) |
gatewayopcional |
string | Pasarela de pago: stripe o paypal |
Cancelar la suscripción del espacio de trabajo actual. Requiere permiso de gestión.
Reportar contenido inapropiado o que viola las políticas en la biblioteca pública.
Enviar un reporte de contenido. Cada usuario solo puede reportar un elemento dado una vez.
| Parámetro | Tipo | Descripción |
|---|---|---|
item_idrequerido |
string | UUID del elemento de biblioteca a reportar |
reasonrequerido |
integer | Código de razón: 0 (spam), 1 (acoso), 2 (violencia), 3 (contenido sexual), 4 (otro) |
descriptionopcional |
string | Detalles adicionales (máx. 2000 caracteres) |
{
"id": "550e8400-e29b-41d4-a716-446655440000"
}
409 Conflict.
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 |
{
"error": {
"message": "Invalid API key provided",
"type": "authentication_error",
"code": "invalid_api_key"
}
}
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.
¿Preguntas sobre la API? Consulta nuestras FAQ o contáctanos directamente.