Documentation API

Introduction

L'API Zubnet vous donne un acc 408 mod — les d'IA pour la g

D

https://api.zubnet.com/v1

marrage Rapide

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

Authentification

Toutes les requ

Authorization: Bearer YOUR_API_KEY

tes API n tres de votre compte. Gardez vos cl — s en s

s Fournisseur (BYOK)

Vous pouvez — galement utiliser vos propres cl

s API de fournisseurs comme Anthropic, Google et plus de 40 autres. Ajoutez-les dans les param — tres de votre espace de travail et elles seront utilis

Fournisseurs BYOK pris en charge

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

Modèles

GET /v1/models

Lister tous les mod

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

tions de Chat

POST /v1/chat/completions

Cr

Corps de la requ

tre tre Type
modelrequis le utiliser (ex. : "claude-sonnet-5", "deepseek-chat", "gemini-2.5-pro")
messagesrequis string Tableau d'objets message avec role et content
temperatureoptionnel rature d' Temp
max_tokensoptionnel string rer
streamoptionnel string Langage de programmation (ex. : "python", "javascript", "rust")
top_poptionnel rature d' Temp
frequency_penaltyoptionnel rature d' chantillonnage (0-2)
presence_penaltyoptionnel rature d' Nombre maximum de tokens
stopoptionnel n rer (1-128000)

Exemple de Requ

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

Diffusion en continu

Quand stream est vrai, la réponse est livrée sous forme d'événements envoyés par le serveur (SSE). Chaque événement a un type nommé et une charge utile JSON :

Événement Type
token Un jeton/delta de texte du modèle
reasoning-token Un jeton de réflexion étendue (pour les modèles prenant en charge le raisonnement)
call Un appel d'outil/fonction avec un nom et des paramètres
message Objet de message final complet (envoyé à la fin du streaming)
error Message d'erreur si le streaming échoue
// SSE event format
event: token
data: {"data": "Hello", "attributes": {}}

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

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

les

POST /api/ai/completions/code

Générer du code à partir d'une invite en langage naturel. Renvoie une réponse en streaming via Server-Sent Events (SSE).

Corps de la requ

tre tre Type
promptrequis le Description en langage naturel du code à générer
languagerequis le Langage de programmation (par exemple, « python », « javascript », « rust »)
temperatureoptionnel rature d' Température d'échantillonnage (0-2)
max_tokensoptionnel string Nombre maximal de jetons à générer (1-128000)

Exemple de Requ

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"
  }'
Ce endpoint diffuse via SSE. Vous recevrez des chunk v document nements
avec du contenu incr
{
  "object": "code_document",
  "id": "550e8400-e29b-41d4-a716-446655440000",
  "model": "claude-sonnet-5",
  "cost": 1,
  "title": "Prime Number Checker",
  "content": "def is_prime(n): ..."
}

Compl

POST /v1/images/generations

G

les 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

Corps de la requ

tre tre Type
modelrequis le faut : 1
promptrequis le Taille de l'image (ex. : "1024x1024", "1792x1024")
noptionnel string "url" ou "b64_json". Par d
sizeoptionnel le Taille de l'image (par exemple, "1024x1024", "1792x1024")
response_formatoptionnel le faut : "url"

Exemple de Requ

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

Modèles asynchrones — 202 Accepted

Certains modèles (FLUX, Runway, Luma, Kling, Leonardo, Vidu, Bria enhance/upscale) génèrent de façon asynchrone : ils acceptent le travail et le terminent quelques instants plus tard. Pour ceux-ci, l'endpoint répond 202 Accepted avec un identifiant de suivi à la place de l'image — une extension délibérée du contrat OpenAI, qui n'a pas de telle route :

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

Interrogez une génération lancée de façon asynchrone. Renvoie queued, processing, completed ou failed; une fois terminée, l'URL de l'image apparaît dans la même forme data que la réponse synchrone. Limité à l'espace de travail de la clé API appelante — un id inexistant ou appartenant à un autre espace de travail répond le même 404.

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

Modifiez une image à partir d'un prompt texte — le contrat images.edit d'OpenAI, envoyé en multipart/form-data. Disponible sur les modèles qui acceptent une image en entrée (leur fiche modèle mentionne l'édition d'images) : gpt-image-2.5-sunburst, gpt-image-2.5-flare, gpt-image-2, p-image-edit, gen4_image, luma/photon-1 et d'autres. Tout autre modèle répond 400. Les modèles synchrones et asynchrones suivent les mêmes contrats 200 / 202 que les générations.

Champs du formulaire

Champ tre Type
modelrequis le Un modèle d'image qui accepte une image en entrée
promptrequis le Ce qu'il faut changer
imagerequis string L'image à modifier (PNG, JPEG ou WebP). Envoyez image[] pour en passer plusieurs lorsque le modèle le permet
maskoptionnel string PNG avec canal alpha, de la même taille que l'image ; les pixels transparents marquent ce qui est à repeindre. Modèles gpt-image uniquement
sizeoptionnel le Taille de sortie (p. ex. "1024x1024", "1536x1024")
qualityoptionnel le "low", "medium" ou "high" sur la famille gpt-image
noptionnel string Nombre de modifications à générer. Par défaut : 1

Exemple de Requ

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

tions de Chat

POST /api/ai/videos

G

les 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

Corps de la requ

tre tre Type
modelrequis le les de synchronisation labiale. Max 25 Mo
promptoptionnel le Format d'image (ex. : "16:9", "9:16", "1:1")
framesoptionnel integer Dur
videooptionnel string Vidéo d'entrée pour vidéo-à-vidéo. Max 100 Mo (mp4, webm, mov)
audiooptionnel string Fichier audio pour les modèles de synchronisation labiale. Max 25 Mo
aspect_ratiooptionnel le Format d'image (ex. "16:9", "9:16", "1:1")
durationoptionnel string o en secondes
negative_promptoptionnel le Ce que la vidéo doit éviter (selon le modèle)
resolutionoptionnel le Résolution de sortie, ex. « 480p », « 720p », « 1080p », « 4k » (selon le modèle)
qualityoptionnel le Niveau qualité/vitesse si supporté (ex. « speed » ou « quality »)
audiooptionnel le « on »/« off » — audio natif synchronisé sur les modèles qui le supportent (Seedance 2.0, Kling, PixVerse, CogVideoX…)
seedoptionnel string Graine de reproductibilité si supportée
styleoptionnel le Préréglage de style sur les modèles supportés (ex. Vidu : « general »/« anime »)
Chaque modèle accepte aussi ses options spécifiques (fps, multi_clip, mode, loop, motion_mode, ratios…) — exactement les sélecteurs affichés pour ce modèle dans l’app. Les paramètres inconnus sont ignorés.

Exemple : Texte-vers-Vid

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

o

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"
completed state,“failed”, “. Interrogez le endpoint de la biblioth”, “rifier l'”tat d'avancement. progress R
R
{
  "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"
}

G

sultats. Prend en charge plusieurs types d'analyse.

POST /api/ai/video-understanding

Soumettre une vid

Corps de la requ

tre tre Type
video_urlrequis le Fichier audio. Max 25 Mo (mp3, mp4, wav, m4a, webm, ogg, flac)
typeoptionnel le Mode de s summary paration. Par d topics, chapters, ou highlights

Exemple de Requ

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

Cr

de l'endpoint Synth
{
  "status": "completed",
  "result": {
    "type": "summary",
    "content": "The video shows a product demonstration..."
  }
}
se Vocale.

n

POST /api/ai/compositions

Cr

les Disponibles

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

Corps de la requ

tre tre Type
modelrequis le Mod
promptoptionnel le le d'embedding (ex. : "text-embedding-3-small")
tagsoptionnel le Texte
instrumentaloptionnel string nes)

Exemple de Requ

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
  }'
Les modèles Suno renvoient généralement 2 variantes de composition par requête. Lyria renvoie un seul clip de 30 secondes à 48kHz.
R
[
  {
    "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
  }
]

ration de Code

POST /api/ai/sound-effects

Cr

Corps de la requ

tre tre Type
modelrequis le Nom de la base de connaissances
promptrequis le Description de la base de connaissances

Exemple de Requ

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

Transcription

POST /v1/audio/speech

Lister toutes les bases de connaissances de votre espace de travail.

tre tre Type
modelrequis le Modèle TTS (par ex., "tts-1", "tts-1-hd", "elevenlabs")
inputrequis le Texte à convertir en parole (max 5000 caractères)
voicerequis le ID de voix à utiliser (par ex., "alloy", "echo", "nova", ou un ID de voix personnalisé)
response_formatoptionnel le Format audio : mp3, opus, aac, flac. Par défaut : mp3

Exemple de Requ

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

Isolation Vocale

POST /v1/audio/transcriptions

Obtenir les d

tre tre Type
modelrequis le Modèle de transcription (par ex., "whisper-1")
filerequis string Fichier audio à transcrire. Max 25 Mo (mp3, mp4, wav, webm, ogg, flac)
languageoptionnel le Code de langue (par ex. « en », « fr », « es »)

Exemple de Requ

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

S

POST /api/ai/isolated-voices

tails d'une base de connaissances sp

tre tre Type
filerequis string Fichier audio. Max 25 Mo (mp3, mp4, wav, m4a, webm, ogg, flac)

Exemple de Requ

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

paration de Pistes

POST /api/ai/stem-separations

Séparez l'audio en pistes individuelles (voix, batterie, basse, guitare, piano, autre). Propulsé par ElevenLabs.

tre tre Type
filerequis string Fichier audio. Max 25 Mo (mp3, mp4, wav, m4a, webm, ogg, flac)
stem_variationoptionnel le Mode de séparation. Par défaut : « six_stems_v1 » (voix, batterie, basse, guitare, piano, autre)

Exemple de Requ

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

Voix

cifique, y compris ses documents.

POST /api/voices

Supprimer une base de connaissances et tous ses documents.

GET /api/voices

Ing

PUT /api/voices/{id}

rer un document dans une base de connaissances. Prend en charge le t

DELETE /api/voices/{id}

l

Des identifiants de voix personnalisés peuvent être utilisés dans le voice paramètre du point de terminaison Text-to-Speech.

Embeddings

POST /v1/embeddings

versement de fichiers, les URL et le texte brut.

tre tre Type
modelrequis le T
inputrequis n Texte à vectoriser (chaîne ou tableau de chaînes)

Exemple de Requ

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 connaissances

Créez et gérez des bases de connaissances pour la génération augmentée par récupération (RAG). Téléversez des documents (PDF, DOCX, TXT, Markdown) ou ajoutez des URL web et du texte brut, puis interrogez-les dans vos complétions de chat.

POST /api/knowledge-bases

Créez une nouvelle base de connaissances.

Corps de la requ

tre tre Type
namerequis le Nom de la base de connaissances
descriptionoptionnel le Description de la base de connaissances

Exemple : Créer une base de connaissances

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

Listez toutes les bases de connaissances de votre Boutique MCP.

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

Obtenir les détails d'une base de connaissances spécifique, y compris ses documents.

DELETE /api/knowledge-bases/{id}

Supprimez une base de connaissances et tous ses documents.

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

Ingérez un document dans une base de connaissances. Prend en charge les téléversements de fichiers, les URL et le texte brut.

Corps de la requ

tre tre Type
fileoption 1 string versement multipart (PDF, DOCX, TXT, MD — max 10 Mo)
titlerequis le Titre du document (requis pour les types URL et texte)
typeoption 2/3 le "url" ou "text" (pour l'ing
urloption 2 le rer (lorsque le type est "url")
contentoption 3 le Contenu texte brut

rer une URL

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

Exemple : Ing

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

rer du texte brut

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

Lister tous les documents d'une base de connaissances.

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

Supprimer un document sp

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

cifique.

Reclassement

POST /v1/reranking

R

les Disponibles

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

Corps de la requ

tre tre Type
modelrequis le Mod
queryrequis le utiliser
documentsrequis string La requ
top_noptionnel string Tableau de cha

Exemple de Requ

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
  }'
R
{
  "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"
}
ponse index Les r

Biblioth

es et g — rer votre contenu.

GET /api/library/{type}

que par type de contenu.

Types de contenu

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

Param

tre tre Type
limitoptionnel string ment)
starting_afteroptionnel le Tri et direction (ex. "created_at:desc")
ending_beforeoptionnel le Recherche plein texte (max 255 caract
sortoptionnel le res)
queryoptionnel le Filtrer par mod
modeloptionnel le Filtrer par modèle utilisé pour la génération
R
{
  "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}

R rations asynchrones.

ration

tat Valeur Type
draft 0 Non soumis
queued 1 En attente
processing 2 En cours
completed 3 Termin — output_file disponible
failed 4 chec

Pattern de polling

# 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 pagination est bas id e sur un curseur. Utilisez l' starting_after du dernier
POST /api/library/{type}/{id}

Mettre

tre tre Type
titleoptionnel le Nom de l'agent (max 64)
visibilityoptionnel string ID du mod
is_favoritedoptionnel string le
metaoptionnel string|null Métadonnées personnalisées (genre, ambiance, tags, description, auteur, etc.)
DELETE /api/library/{type}/{id}

Supprimez un élément de la bibliothèque et ses fichiers associés.

GET /api/library/{type}/count

Obtenir le nombre total d'éléments pour un type de contenu. Prend en charge les mêmes query et model filtres que le point de terminaison de liste.

que

Les assistants sont des préréglages de chat réutilisables avec un nom personnalisé, un modèle, une invite système et des paramètres. Utilisez-les pour créer des personas d'IA spécialisés pour différentes tâches.

POST /api/assistants

Créez un nouvel assistant.

GET /api/assistants

Listez tous les assistants de votre Boutique MCP.

PUT /api/assistants/{id}

Mettre à jour la configuration d'un assistant (nom, modèle, prompt système, paramètres).

DELETE /api/assistants/{id}

Supprimer un assistant.

Assistants

Parcourez et activez des serveurs MCP (Model Context Protocol) pour donner à vos agents des capacités d'outils étendues — de la recherche web et de l'accès aux données à l'exécution de code et aux intégrations tierces.

GET /api/mcp-store/servers

Parcourez le catalogue de serveurs MCP.

Param

tre tre Type
categoryoptionnel le Filtrer par catégorie (recherche, données, développeur, infrastructure, communication, commerce, créatif, productivité, social, utilitaires)
queryoptionnel le Rechercher par nom ou description
R
{
  "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

Activez un serveur MCP pour votre espace de travail. Fournissez les valeurs de configuration (clés API, etc.) telles que définies par le serveur config_schema.

Corps de la requ

tre tre Type
server_idrequis le UUID du serveur MCP à activer
configoptionnel string|null Valeurs de configuration correspondant au config_schema du serveur

Exemple de Requ

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"
    }
  }'
s au repos. Pour Telegram, un webhook est automatiquement configur
{
  "id": "act-uuid-...",
  "server_id": "550e8400-...",
  "status": 1,
  "config": {
    "api_key": "••••••••"
  },
  "server": {
    "name": "GitHub",
    ...
  },
  "created_at": "2026-03-01T12:00:00Z"
}
Les champs secrets de la configuration sont masqués dans les réponses de l'API. Chaque boutique MCP ne peut activer un serveur donné qu'une seule fois. La valeur renvoyée id est le activation_id que vous utilisez lors de la liaison des serveurs MCP aux agents.
GET /api/mcp-store/activations

Listez tous les serveurs MCP activés dans votre Boutique MCP.

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

Mettre à jour la configuration ou le statut d'une activation.

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

Désactivez un serveur MCP de votre boutique MCP.

D

Créez et gérez des agents IA autonomes qui opèrent sur différents canaux de communication. Les agents peuvent répondre aux messages sur Telegram et Discord, s'exécuter selon des déclencheurs programmés, et exploiter des bases de connaissances et des serveurs MCP pour des capacités étendues.

POST /api/agents

Créez un nouvel agent.

Corps de la requ

tre tre Type
namerequis le Nom de l'agent (64 caractères maximum)
modelrequis le ID du modèle à utiliser (par ex. « claude-sonnet-5 », « deepseek-chat »)
system_promptoptionnel le Invite système personnalisée définissant le comportement et la personnalité de l'agent
modeoptionnel le "quick" ou "advanced". Par défaut : "quick"
avataroptionnel le URL de l'avatar (512 caractères maximum)

Exemple de Requ

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"
  }'
s au repos. Pour Telegram, un webhook est automatiquement configur
{
  "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

Listez tous les agents de la Boutique MCP. Prend en charge la pagination et le filtrage.

tre tre Type
limitrequête string Résultats par page. Par défaut : 25
cursorrequête le Curseur de pagination
sortrequête le "name", "created_at", ou "last_active_at". Par défaut : "created_at"
directionrequête le "asc" ou "desc"
statusrequête string Filtrer par statut : 0 (inactif), 1 (actif), 2 (en pause)
R
{
  "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}

Obtenir tous les détails d'un agent spécifique, y compris ses canaux, ses serveurs MCP liés et ses bases de connaissances.

PUT /api/agents/{id}

Mettre à jour un agent. Tous les champs sont optionnels — seuls les champs fournis sont modifiés.

Corps de la requ

tre tre Type
nameoptionnel le Nom de l'agent (64 maximum)
modeloptionnel le ID du modèle
system_promptoptionnel Prompt syst me (null pour effacer)
statusoptionnel string 0 (inactif), 1 (actif) ou 2 (en pause)
modeoptionnel le "quick" ou "advanced"
permissionsoptionnel string|null Permissions de l'agent (voir ci-dessous)

Objet Permissions

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

Supprimer un agent. Cela supprime aussi tous ses canaux, d

grations

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

Lier une base de connaissances { "knowledge_base_id": "uuid" }

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

es par RAG. Corps :

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

D { "activation_id": "uuid" }

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

lier une base de connaissances d'un agent.

GET /api/agents/{id}/messages

Lier un serveur MCP

tre tre Type
limitrequête string Nombre de messages
R
{
  "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
    }
  ]
}
clencheurs par agent.

Canaux d'agent

Connectez des agents

POST /api/agents/{id}/channels

Ajouter un canal de communication

Corps de la requ

tre tre Type
typerequis le "telegram" ou "discord"
tokenrequis le Jeton du bot Telegram BotFather ou Discord Developer Portal (max 256)

Exemple de Requ

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..."
  }'
s au repos. Pour Telegram, un webhook est automatiquement configur
{
  "id": "ch-uuid-...",
  "type": "telegram",
  "status": 1,
  "metadata": {},
  "last_error": null,
  "last_message_at": null,
  "created_at": 1709136000
}
. Statut du canal : 0 = inactif, 1 = actif, 2 = erreur.
GET /api/agents/{id}/channels

Lister tous les canaux connect

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

Supprimer un canal d'un agent.

D

nements externes.

POST /api/agents/{id}/triggers

Cr

Corps de la requ

tre tre Type
namerequis le Nom du déclencheur (max 128)
typerequis le "scheduled" ou "event"
promptrequis le Le prompt envoyé à l'agent lorsque le déclencheur se déclenche
cron_expressionoptionnel le Planification cron (par ex. "0 9 * * 1-5" pour les jours de semaine à 9h)
timezoneoptionnel le Fuseau horaire IANA pour l'évaluation cron. Par défaut : "UTC"
channel_idoptionnel le Canal auquel envoyer la sortie du déclencheur

Exemple : Déclencheur de résumé quotidien

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"
  }'
s au repos. Pour Telegram, un webhook est automatiquement configur
{
  "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

Listez tous les déclencheurs d'un agent.

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

Mettre à jour un déclencheur. Tous les champs sont optionnels. Définir status à 0 pour désactiver ou 1 pour activer.

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

Supprimez un déclencheur.

Les déclencheurs planifiés sont exécutés de manière asynchrone via une file d'attente de messages. Chaque exécution vérifie que l'agent est actif et que la boutique MCP dispose de suffisamment de crédits avant le traitement.

Boutique MCP

Les Boutiques MCP sont l'unité organisationnelle de votre équipe. Chaque Boutique MCP dispose de son propre solde de crédits, de son abonnement, de ses clés API et de ses membres. Gérez les Boutiques MCP, invitez des membres de l'équipe et suivez l'utilisation.

POST /api/workspaces

Créez une nouvelle boutique MCP.

tre tre Type
namerequis le clencheur (max 128)
s au repos. Pour Telegram, un webhook est automatiquement configur
{
  "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}

Mettre à jour les paramètres d'une boutique MCP. Nécessite la permission de gestion de la boutique MCP.

tre tre Type
nameoptionnel le clencheur (max 128)
api_spending_limitoptionnel rature d' "scheduled" ou "event"
{provider}_api_keyoptionnel le Le prompt envoy openai_api_key, anthropic_api_key)
DELETE /api/workspaces/{id}

clencheurs d'un agent.

POST /api/workspaces/{id}/invitations

Mettre

tre tre Type
emailrequis le inviter
DELETE /api/workspaces/{id}/invitations/{invitationId}

Annuler une invitation en attente.

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

Retirer un membre de l'espace, ou quitter l'espace en utilisant votre propre identifiant utilisateur.

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

Lister les statistiques d'utilisation agr

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

le, le titre, le co > t et l'horodatage.

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

Obtenir le nombre total d'items d'utilisation.

Les endpoints d'utilisation et de gestion d'espace n gestion taire ou admin).

Espaces de travail

Les conversations regroupent les messages de chat en sessions. Cr Biblioth avec le type conversations.

POST /api/ai/conversations

Cr

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

Envoyer un message tions de Chat pour le format des

Corps de la requ

tre tre Type
modelrequis le Mod
contentoptionnel le Texte du message
assistant_idoptionnel le ponse
parent_idoptionnel le Texte du message
fileoptionnel string UUID d'un assistant — utiliser pour ce message
recordingoptionnel string UUID d'un message parent (pour les conversations branch — max 10 Mo)

Exemple de Requ

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"
  }'
Les messages sont diffus multipart/form-data s via SSE. Utilisez Biblioth avec le type conversations.

Conversations

G

PUT /api/account

Mettre

tre tre Type
first_nameoptionnel le Pr
last_nameoptionnel le res)
languageoptionnel le Nom (max 50 caract
preferencesoptionnel string|null rences utilisateur
POST /api/account/rest-api-keys

G qu'une seule fois dans cette r — ponse

tre tre Type
current_passwordrequis le Votre mot de passe actuel
R
{
  "id": "550e8400-...",
  "first_name": "Jane",
  "last_name": "Doe",
  "email": "jane@example.com",
  "api_key": "zub_live_a1b2c3d4e5f6..."
}
ponse api_key La valeur

Compte

rez les abonnements.

GET /api/billing/plans

Lister les plans d'abonnement disponibles.

tre tre Type
billing_cycleoptionnel le Filtrer par cycle de facturation
GET /api/billing/orders

Lister les commandes de l'espace de travail actuel. Pagination par curseur.

tre tre Type
statusoptionnel le Filtrer par statut de commande
billing_cycleoptionnel le Filtrer par cycle de facturation
POST /api/billing/checkout

Lancer un paiement pour un plan d'abonnement ou un achat de cr

tre tre Type
idoptionnel le UUID du plan (requis si pas de amount)
amountoptionnel string Montant d'achat de cr id)
gatewayoptionnel le Passerelle de paiement : stripe ou paypal
DELETE /api/billing/subscription

Annuler l'abonnement de l'espace de travail actuel. N

Facturation

que publique.

POST /api/content-reports

Soumettre un signalement de contenu. Chaque utilisateur ne peut signaler un

tre tre Type
item_idrequis le UUID de l'
reasonrequis string signaler
descriptionoptionnel le Code de raison : 0 (spam), 1 (harc
s au repos. Pour Telegram, un webhook est automatiquement configur
{
  "id": "550e8400-e29b-41d4-a716-446655440000"
}
ment) retournent une erreur 409 Conflict.

Erreurs

La surface complète dépasse les sections ci-dessus. Ces endpoints sont actifs et utilisent la même authentification :

POST /api/ai/three-dGénération de modèles 3D (Tripo, Meshy…)
POST /api/ai/tts  ·  POST /api/ai/speechesSynthèse vocale (surface native + préréglages)
POST /api/ai/transcriptionsTranscription audio par lot (choix de modèle)
GET /api/ai/transcriptions/realtime/token  ·  POST /api/ai/transcriptions/realtime/saveTranscription micro en direct (jeton de session + sauvegarde)
POST /api/ai/translations  ·  GET /api/ai/translation-languagesTraduction de texte + langues supportées
POST /api/ai/document-extractionsExtraction de texte de documents (OCR)
GET /api/ai/video-understanding/{jobId}Statut d’une analyse vidéo
/api/library-stacksStacks de bibliothèque (collections) — CRUD complet
/api/chatroomSalons d’équipe (conversations IA partagées)
/api/automationWorkflows d’automatisation (créer + exécuter)

Limites de Requ

s.

Image Type
400 Requ — te Invalide
401 Param — tres invalides
403 Non Autoris — Cl
404 API invalide ou manquante — Interdit
413 Cr — dits insuffisants ou mod
429 le non disponible sur votre plan — Non Trouv
500 Mod
503 le ou ressource introuvable — Charge Trop Volumineuse
ponse d'Erreur
{
  "error": {
    "message": "Invalid API key provided",
    "type": "authentication_error",
    "code": "invalid_api_key"
  }
}

tes

Les limites de d

te Type
X-RateLimit-Limit Requ
X-RateLimit-Remaining tes autoris
X-RateLimit-Reset es par minute

initialisation ou contactez-nous pour augmenter vos limites.

Besoin d'Aide ?

Pour Vous

Des questions sur l'API ? Consultez notre FAQ ou contactez-nous directement.