API 文件

簡介

Zubnet API 讓您以程式設計方式存取 408 用於文字、圖像、影片、音樂、語音及程式碼生成的 AI 模型,完全相容於 OpenAI API 規範 — 個 AI 模型,用於文字、圖像、影片、音樂、語音和程式碼生成。完全相容於 OpenAI API 規格, 如果您已在使用 OpenAI,只需更換 base URL 和 API 金鑰即可切換到 Zubnet。

基礎 URL

https://api.zubnet.com/v1

快速開始

# Using curl
curl https://api.zubnet.com/v1/chat/completions \
  -H "Authorization: Bearer $ZUBNET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "claude-sonnet-5",
    "messages": [{"role": "user", "content": "Hello!"}]
  }'
# Using Python with OpenAI SDK
from openai import OpenAI

client = OpenAI(
    api_key="your-zubnet-api-key",
    base_url="https://api.zubnet.com/v1"
)

response = client.chat.completions.create(
    model="claude-sonnet-5",
    messages=[{"role": "user", "content": "Hello!"}]
)

print(response.choices[0].message.content)

認證

所有 API 請求皆須透過 Authorization 標頭中的 Bearer 權杖進行驗證。

Authorization: Bearer YOUR_API_KEY

您可以從您的 帳戶設定。請妥善保管您的金鑰 — 它們可完全存取您的帳戶。

使用您自己的供應商金鑰(BYOK)

您可以使用來自支援供應商的自有 API 金鑰。將它們新增至您的工作區設定中,系統會自動用於這些供應商的請求 — 無額外加價。BYOK 適用於支援此功能的方案

當某供應商已設定 BYOK 金鑰時,該金鑰的優先權高於平台金鑰。您的 API 請求無需做任何變更 — 金鑰解析方式完全透明。

支援的 BYOK 供應商

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

模型

GET /v1/models

列出所有可用模型。

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

對話完成

POST /v1/chat/completions

建立對話完成。 This is the primary endpoint for text generation, compatible with the OpenAI chat completions format.

請求內文

參數 類型 說明
model必填 字串 要使用的模型 ID(例如:「claude-sonnet-5」、「deepseek-chat」、「gemini-2.5-pro」)
messages必填 陣列 訊息物件陣列,包含 rolecontent
temperature選填 數字 取樣溫度(0-2)。預設值:0.7
max_tokens選填 整數 要產生的最大 token 數(1-128000)。預設值:4096
stream選填 布林值 透過 SSE 串流回應。預設值:true
top_p選填 數字 核採樣參數(0-1)。預設值:1
frequency_penalty選填 數字 頻率懲罰值(-2 到 2)。預設值:0
presence_penalty選填 數字 存在懲罰值(-2 到 2)。預設值:0
stop選填 字串/陣列 停止序列

請求範例

curl https://api.zubnet.com/v1/chat/completions \
  -H "Authorization: Bearer $ZUBNET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "claude-sonnet-5",
    "messages": [
      {"role": "system", "content": "You are a helpful assistant."},
      {"role": "user", "content": "What is the capital of France?"}
    ],
    "temperature": 0.7,
    "max_tokens": 150
  }'
回應
{
  "id": "chatcmpl-abc123",
  "object": "chat.completion",
  "created": 1699900000,
  "model": "claude-sonnet-5",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "The capital of France is Paris."
      },
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 25,
    "completion_tokens": 8,
    "total_tokens": 33
  }
}

串流

stream 為 true 時,回應會以 Server-Sent Events(SSE)的形式傳送。每個事件都有命名的類型和 JSON 負載:

事件 說明
token 來自模型的文字 token/delta
reasoning-token 延伸思考權杖(適用於支援推理的模型)
call 帶有名稱與參數的工具/函式呼叫
message 最終完整訊息物件(於串流結束時傳送)
error 串流失敗時的錯誤訊息
// SSE event format
event: token
data: {"data": "Hello", "attributes": {}}

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

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

程式碼生成

POST /api/ai/completions/code

根據自然語言提示產生程式碼。透過 Server-Sent Events (SSE) 回傳串流回應。

請求內文

參數 類型 說明
prompt必填 字串 要生成程式碼的自然語言描述
language必填 字串 程式語言(例如:"python"、"javascript"、"rust")
temperature選填 數字 取樣溫度(0-2)
max_tokens選填 整數 要產生的最大 token 數(1-128000)

請求範例

curl https://zubnet.com/api/ai/completions/code \
  -H "Authorization: Bearer $ZUBNET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "prompt": "A function that checks if a number is prime",
    "language": "python"
  }'
此端點透過 SSE 進行串流。您將收到 chunk 事件,包含遞增內容,接著是最終的 document 事件,包含完整生成的程式碼。
最終回應物件
{
  "object": "code_document",
  "id": "550e8400-e29b-41d4-a716-446655440000",
  "model": "claude-sonnet-5",
  "cost": 1,
  "title": "Prime Number Checker",
  "content": "def is_prime(n): ..."
}

圖像生成

POST /v1/images/generations

使用 FLUX、Stable Diffusion、Ideogram 等模型,從文字提示產生圖像。

可用模型

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

請求內文

參數 類型 說明
model必填 字串 要使用的圖像模型
prompt必填 字串 要生成之圖像的文字描述
n選填 整數 要生成的圖像數量。預設值:1
size選填 字串 圖像尺寸(例如:「1024x1024」、「1792x1024」)
response_format選填 字串 "url" 或 "b64_json"。預設值:"url"

請求範例

curl https://api.zubnet.com/v1/images/generations \
  -H "Authorization: Bearer $ZUBNET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "flux-pro-1.1-ultra",
    "prompt": "A serene mountain lake at sunset, photorealistic",
    "n": 1,
    "size": "1024x1024"
  }'
回應
{
  "created": 1699900000,
  "data": [
    {
      "url": "https://zubnet.com/files/abc123.png",
      "revised_prompt": "A serene mountain lake..."
    }
  ]
}

非同步模型 — 202 Accepted

部分模型(FLUX、Runway、Luma、Kling、Leonardo、Vidu、Bria 增強/放大)採用非同步生成:先接受任務,稍後完成。對這些模型,端點會回應 202 Accepted 與一個輪詢代碼,而不是圖像 — 這是對 OpenAI 合約的刻意擴充,OpenAI 並沒有這樣的路由:

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

輪詢一次以非同步方式啟動的生成。回報 queued, processing, completedfailed;完成後,圖像 URL 會以與同步回應相同的 data 結構出現。僅限呼叫方 API 金鑰所屬的工作區 — 不存在的 id 或屬於其他工作區的 id 都會回應同樣的 404.

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

使用文字提示編輯圖像 — 即 OpenAI 的 images.edit 合約,以 multipart/form-data傳送。適用於接受輸入圖像的模型(其模型卡片列有圖像編輯): gpt-image-2.5-sunburst, gpt-image-2.5-flare, gpt-image-2, p-image-edit, gen4_image, luma/photon-1 等。其他任何模型都會回應 400。同步與非同步模型遵循與生成相同的 200 / 202 合約。

表單欄位

欄位 類型 說明
model必填 字串 接受輸入圖像的圖像模型
prompt必填 字串 要修改的內容
image必填 檔案 要編輯的圖像(PNG、JPEG 或 WebP)。在模型允許時,傳送 image[] 可傳入多張
mask選填 檔案 帶 alpha 通道的 PNG,與圖像尺寸相同;透明像素標記需要重繪的區域。僅限 gpt-image 模型
size選填 字串 輸出尺寸(例如 "1024x1024"、"1536x1024")
quality選填 字串 gpt-image 系列可選 "low"、"medium" 或 "high"
n選填 整數 要生成的編輯數量。預設:1

請求範例

curl https://api.zubnet.com/v1/images/edits \
  -H "Authorization: Bearer $ZUBNET_API_KEY" \
  -F "model=gpt-image-2.5-sunburst" \
  -F "prompt=Turn the sky into a starry night, keep everything else" \
  -F "image=@photo.png"
回應
{
  "created": 1699900000,
  "data": [
    {
      "url": "https://zubnet.com/files/def456.png",
      "revised_prompt": "Turn the sky into a starry night, keep everything else"
    }
  ]
}

影片生成

POST /api/ai/videos

根據文字提示或圖像生成影片。支援文字轉影片、圖像轉影片及影片轉影片的工作流程。

可用模型

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

請求內文

參數 類型 說明
model必填 字串 要使用的影片模型
prompt必填* 字串 影片的文字描述。*對口型或放大模型非必填
frames選填 file[] 圖像轉影片的輸入圖片,每張最大 10MB(jpg、png、webp)
video選填 檔案 影片轉影片的輸入影片,最大 100MB(mp4、webm、mov)
audio選填 檔案 用於對嘴模型的音訊檔案,上限 25MB
aspect_ratio選填 字串 長寬比(例如「16:9」、「9:16」、「1:1」)
duration選填 整數 影片時長(秒)
negative_prompt選填 字串 影片中要避免的內容(視模型而定)
resolution選填 字串 輸出解析度,如 "480p"、"720p"、"1080p"、"4k"(視模型而定)
quality選填 字串 品質/速度檔位(如支援,"speed" 或 "quality")
audio選填 字串 "on"/"off"——支援的模型可生成同步音訊(Seedance 2.0、Kling、PixVerse、CogVideoX…)
seed選填 整數 再現性種子(如支援)
style選填 字串 風格預設(支援的模型,如 Vidu:"general"/"anime")
各模型還接受自身特有選項(fps、multi_clip、mode、loop、motion_mode、寬高比…)——與應用中該模型顯示的選擇器完全一致。未知參數將被忽略。

範例:文字轉影片

curl https://zubnet.com/api/ai/videos \
  -H "Authorization: Bearer $ZUBNET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "veo-3.1-generate-001",
    "prompt": "A drone shot flying over a coral reef at golden hour",
    "aspect_ratio": "16:9",
    "duration": 8
  }'

範例:圖像轉影片

curl https://zubnet.com/api/ai/videos \
  -H "Authorization: Bearer $ZUBNET_API_KEY" \
  -F "model=kling-v2-5-turbo" \
  -F "prompt=Camera slowly zooms in" \
  -F "frames=@my-image.png"
影片生成為非同步作業。回應包含一個 state 欄位(“處理中”, “已完成”, “失敗”)和一個 progress 百分比。輪詢資料庫端點以檢查完成狀態。
回應
{
  "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"
}

影片理解

使用 AI 分析影片內容。提交影片網址進行分析,並輪詢取得結果,支援多種分析類型。

POST /api/ai/video-understanding

提交影片以進行 AI 分析。將回傳工作 ID,供您輪詢結果。

請求內文

參數 類型 說明
video_url必填 字串 要分析影片的公開 HTTPS 網址
type選填 字串 分析類型: summary (預設), topics, chapters,或 highlights

請求範例

curl https://zubnet.com/api/ai/video-understanding \
  -H "Authorization: Bearer $ZUBNET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "video_url": "https://example.com/video.mp4",
    "type": "summary"
  }'
回應
{
  "job_id": "550e8400-e29b-41d4-a716-446655440000",
  "status": "queued"
}
GET /api/ai/video-understanding/{jobId}

查看影片分析工作的狀態。

回應(已完成)
{
  "status": "completed",
  "result": {
    "type": "summary",
    "content": "The video shows a product demonstration..."
  }
}
影片網址必須是可公開存取的 HTTPS 連結。基於安全考量,私人/內部網址將被拒絕。結果會快取 1 小時。

圖像生成

POST /api/ai/compositions

根據文字描述、歌詞或風格標籤生成原創音樂。

可用模型

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

請求內文

參數 類型 說明
model必填 字串 要使用的音樂模型
prompt選填 字串 要設定的音樂或歌詞描述
tags選填 字串 曲風與風格標籤(例如:「lo-fi, chill, jazz」)
instrumental選填 布林值 僅生成純樂器演奏(無人聲)。預設值:false

請求範例

curl https://zubnet.com/api/ai/compositions \
  -H "Authorization: Bearer $ZUBNET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "suno/v5",
    "prompt": "An upbeat synthwave track about coding at 3am",
    "tags": "synthwave, electronic, upbeat",
    "instrumental": true
  }'
Suno 模型每次請求通常會回傳 2 個作曲變體。Lyria 則回傳單一段 48kHz 的 30 秒片段。
回應
[
  {
    "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
  }
]

音效

POST /api/ai/sound-effects

根據文字描述生成音效。

請求內文

參數 類型 說明
model必填 字串 要使用的音效模型
prompt必填 字串 要生成之音效的描述

請求範例

curl https://zubnet.com/api/ai/sound-effects \
  -H "Authorization: Bearer $ZUBNET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "sound-effect-model",
    "prompt": "Thunder rumbling in the distance followed by heavy rain"
  }'
回應
{
  "object": "sound_effect",
  "id": "550e8400-e29b-41d4-a716-446655440000",
  "model": "sound-effect-model",
  "cost": 1,
  "output_file": {
    "url": "https://zubnet.com/files/abc123.mp3"
  }
}

文字轉語音

POST /v1/audio/speech

使用來自 ElevenLabs、Cartesia、Speechify 等的語音,將文字轉換為自然流暢的語音音訊。

參數 類型 說明
model必填 字串 TTS 模型(例如 "tts-1"、"tts-1-hd"、"elevenlabs")
input必填 字串 要轉換為語音的文字(最多 5000 個字元)
voice必填 字串 要使用的語音 ID(例如「alloy」、「echo」、「nova」或自訂語音 ID)
response_format選填 字串 音訊格式:mp3、opus、aac、flac,預設值: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

語音轉錄

POST /v1/audio/transcriptions

將音訊轉錄為文字。

參數 類型 說明
model必填 字串 轉錄模型(例如「whisper-1」)
file必填 檔案 要轉錄的音訊檔案,上限 25MB(mp3、mp4、wav、webm、ogg、flac)
language選填 字串 語言代碼(例如:「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..."
}

人聲分離

POST /api/ai/isolated-voices

從音訊中擷取乾淨人聲,去除背景噪音與音樂。技術支援:ElevenLabs

參數 類型 說明
file必填 檔案 音訊檔案,上限 25MB(mp3、mp4、wav、m4a、webm、ogg、flac)

請求範例

curl https://zubnet.com/api/ai/isolated-voices \
  -H "Authorization: Bearer $ZUBNET_API_KEY" \
  -F "file=@noisy-recording.mp3"
回應
{
  "object": "isolated_voice",
  "id": "550e8400-e29b-41d4-a716-446655440000",
  "cost": 1,
  "input_file": {
    "url": "https://zubnet.com/files/input.mp3"
  },
  "output_file": {
    "url": "https://zubnet.com/files/isolated.mp3"
  }
}

音軌分離

POST /api/ai/stem-separations

將音訊分離成個別音軌(人聲、鼓、貝斯、吉他、鋼琴、其他)。由 ElevenLabs 提供技術支援。

參數 類型 說明
file必填 檔案 音訊檔案,上限 25MB(mp3、mp4、wav、m4a、webm、ogg、flac)
stem_variation選填 字串 分離模式。預設值:"six_stems_v1"(人聲、鼓、貝斯、吉他、鋼琴、其他)

請求範例

curl https://zubnet.com/api/ai/stem-separations \
  -H "Authorization: Bearer $ZUBNET_API_KEY" \
  -F "file=@song.mp3"
回應
{
  "object": "stem_separation",
  "id": "550e8400-e29b-41d4-a716-446655440000",
  "cost": 1,
  "input_file": {
    "url": "https://zubnet.com/files/song.mp3"
  },
  "output_file": {
    "url": "https://zubnet.com/files/stems.zip"
  }
}

語音

建立並管理用於文字轉語音生成的自訂語音。

POST /api/voices

透過上傳音訊樣本建立自訂語音。

GET /api/voices

列出您工作區中所有可用的語音,包括您建立的自訂語音。

PUT /api/voices/{id}

更新自訂語音(名稱、設定)。

DELETE /api/voices/{id}

刪除自訂語音。

自訂語音 ID 可用於 voice 文字轉語音端點的參數。

嵌入

POST /v1/embeddings

建立用於語意搜尋與相似度比對的文字嵌入。

參數 類型 說明
model必填 字串 嵌入模型(例如 "text-embedding-3-small")
input必填 字串/陣列 要嵌入的文字(字串或字串陣列)

請求範例

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

知識庫

建立並管理用於檢索增強生成(RAG)的知識庫。上傳文件(PDF、DOCX、TXT、Markdown)或新增網址與原始文字,然後在對話完成中查詢它們。

POST /api/knowledge-bases

建立新的知識庫。

請求內文

參數 類型 說明
name必填 字串 知識庫名稱
description選填 字串 知識庫的描述

範例:建立知識庫

curl https://zubnet.com/api/knowledge-bases \
  -H "Authorization: Bearer $ZUBNET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "My KB",
    "description": "Optional description"
  }'
回應
{
  "id": "550e8400-e29b-41d4-a716-446655440000",
  "name": "My KB",
  "description": "Optional description",
  "status": "active"
}
GET /api/knowledge-bases

列出您工作區中的所有資料庫。

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

取得特定知識庫的詳細資訊,包括其文件。

DELETE /api/knowledge-bases/{id}

刪除知識庫及其所有文件。

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

將文件匯入資料庫。支援檔案上傳、URL 及純文字。

請求內文

參數 類型 說明
file選項 1 檔案 多部分檔案上傳(PDF、DOCX、TXT、MD — 最大 10MB)
title必填 字串 文件標題(URL 與文字類型為必填)
type選項 2/3 字串 "url" 或 "text"(用於非檔案匯入)
url選項 2 字串 要擷取並匯入的網址(當類型為「url」時)
content選項 3 字串 要擷取的原始文字內容(當 type 為 "text" 時)

範例:匯入檔案

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

範例:匯入 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"
  }'

範例:匯入原始文字

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

列出資料庫中的所有文件。

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

從知識庫中刪除特定文件。

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

讀取特定文件的擷取文字內容。

重新排序

POST /v1/reranking

根據與查詢的相關性重新排序文件清單。適用於改善搜尋結果、RAG 流程與推薦系統。

可用模型

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

請求內文

參數 類型 說明
model必填 字串 要使用的重新排序模型
query必填 字串 用於對文件進行排序的搜尋查詢
documents必填 陣列 要重新排序的文件字串陣列
top_n選填 整數 要回傳的頂部結果數量。預設值:全部

請求範例

curl https://api.zubnet.com/v1/reranking \
  -H "Authorization: Bearer $ZUBNET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "rerank-v4.0-pro",
    "query": "How do I reset my password?",
    "documents": [
      "To reset your password, go to Settings > Security > Change Password.",
      "Our pricing plans start at $9/month for individuals.",
      "Password requirements: minimum 8 characters, one uppercase letter.",
      "Contact support at help@example.com for account issues."
    ],
    "top_n": 3
  }'
回應
{
  "object": "list",
  "results": [
    {
      "index": 0,
      "relevance_score": 0.953
    },
    {
      "index": 2,
      "relevance_score": 0.714
    },
    {
      "index": 3,
      "relevance_score": 0.389
    }
  ],
  "model": "rerank-v4.0-pro"
}
結果依相關性分數由高到低排序。該 index 欄位指的是每份文件在原始輸入陣列中的位置。

資料庫

資料庫是所有生成內容的所在地 — 圖像、影片、作品、程式碼文件、轉錄文字等。用它來列出項目、檢查非同步生成狀態、更新中繼資料,以及管理你的內容。

GET /api/library/{type}

依內容類型列出您資料庫中的項目。

內容類型

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

查詢參數

參數 類型 說明
limit選填 整數 每頁結果數(最多 100)
starting_after選填 字串 向前分頁的游標(項目 UUID)
ending_before選填 字串 向後分頁的游標(項目 UUID)
sort選填 字串 排序欄位與方向(例如 "created_at:desc")
query選填 字串 全文搜尋(最多 255 個字元)
model選填 字串 依用於生成的模型篩選
回應
{
  "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}

依 ID 取得單一資料庫項目。這是主要的端點,用於 輪詢非同步生成狀態.

生成狀態

狀態 說明
draft 0 尚未提交
queued 1 等待處理中
processing 2 目前生成中
completed 3 完成 — output_file 可用
failed 4 生成失敗

輪詢模式

# 1. Start async generation
curl -X POST https://zubnet.com/api/ai/videos \
  -H "Authorization: Bearer $ZUBNET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model": "veo-3.1-generate-001", "prompt": "A coral reef"}'
# Returns: {"id": "550e8400-...", "state": 1, ...}

# 2. Poll for completion
curl https://zubnet.com/api/library/videos/550e8400-... \
  -H "Authorization: Bearer $ZUBNET_API_KEY"
# Returns: {"state": 2, "progress": 45, ...}  (still processing)
# Returns: {"state": 3, "progress": 100, "output_file": {"url": "..."}}  (done!)
分頁採用游標機制。請使用 id 中最後一個項目的 starting_after 以取得下一頁。沒有 offset/page 參數。
POST /api/library/{type}/{id}

更新資料庫項目的中繼資料。

參數 類型 說明
title選填 字串 項目標題
visibility選填 整數 0(私人)或 1(公開)
is_favorited選填 布林值 加入或移除收藏
meta選填 物件 自訂中繼資料(類型、情緒、標籤、描述、作者等)
DELETE /api/library/{type}/{id}

刪除資料庫項目及其相關檔案。

GET /api/library/{type}/count

取得某內容類型的項目總數。支援相同的 querymodel 篩選條件與列表端點相同。

助手

助理是可重複使用的對話預設,具有自訂名稱、模型、系統提示詞與設定。可用來為不同任務建立專屬的 AI 角色。

POST /api/assistants

建立新的助理。

GET /api/assistants

列出您工作區中的所有助理。

PUT /api/assistants/{id}

更新助理的設定(名稱、模型、系統提示詞、設定)。

DELETE /api/assistants/{id}

刪除助理。

MCP 商店

瀏覽並啟用 MCP(Model Context Protocol)伺服器,賦予代理擴充的工具能力 — 從網路搜尋、資料存取到程式碼執行和第三方整合。

GET /api/mcp-store/servers

瀏覽 MCP 伺服器目錄

查詢參數

參數 類型 說明
category選填 字串 依類別篩選(搜尋、資料、開發者、基礎架構、通訊、商務、創意、生產力、社群、工具)
query選填 字串 依名稱或描述搜尋
回應
{
  "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

為您的工作區啟用 MCP 伺服器。請依伺服器所定義的設定提供設定值(API 金鑰等) config_schema.

請求內文

參數 類型 說明
server_id必填 字串 要啟用的 MCP 伺服器 UUID
config選填 物件 與伺服器 config_schema 相符的設定值

請求範例

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"
    }
  }'
回應(201 Created)
{
  "id": "act-uuid-...",
  "server_id": "550e8400-...",
  "status": 1,
  "config": {
    "api_key": "••••••••"
  },
  "server": {
    "name": "GitHub",
    ...
  },
  "created_at": "2026-03-01T12:00:00Z"
}
設定中的機密欄位在 API 回應中會被遮蔽。每個工作區只能啟用某個伺服器一次。回傳的 idactivation_id 您在將 MCP 伺服器連結至代理時所使用的
GET /api/mcp-store/activations

列出您工作區中已啟用的所有 MCP 伺服器。

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

更新啟用項目的設定或狀態。

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

從您的工作區停用 MCP 伺服器。

代理

建立並管理跨通訊頻道運作的自主 AI 代理。代理可以回覆 Telegram 與 Discord 上的訊息、依排程觸發執行,並運用知識庫與 MCP 伺服器擴充功能。

POST /api/agents

建立新的代理。

請求內文

參數 類型 說明
name必填 字串 代理名稱(最多 64 個字元)
model必填 字串 要使用的模型 ID(例如:「claude-sonnet-5」、「deepseek-chat」)
system_prompt選填 字串 定義代理行為與個性的自訂系統提示
mode選填 字串 "quick" 或 "advanced"。預設值:"quick"
avatar選填 字串 頭像網址(上限 512 字元)

請求範例

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"
  }'
回應(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

列出工作區中的所有代理。支援分頁與篩選。

參數 類型 說明
limit查詢 整數 每頁結果數。預設值:25
cursor查詢 字串 分頁游標
sort查詢 字串 "name"、"created_at" 或 "last_active_at"。預設值:"created_at"
direction查詢 字串 "asc" 或 "desc"
status查詢 整數 依狀態篩選:0(未啟用)、1(啟用中)、2(已暫停)
回應
{
  "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}

取得特定代理的完整詳細資訊,包括其頻道、連結的 MCP 伺服器及知識庫。

PUT /api/agents/{id}

更新代理。所有欄位皆為選填 — 僅變更提供的欄位。

請求內文

參數 類型 說明
name選填 字串 代理名稱(最多 64 個字元)
model選填 字串 模型 ID
system_prompt選填 字串|null 系統提示詞(設為 null 以清除)
status選填 整數 0(未啟用)、1(啟用中)或 2(已暫停)
mode選填 字串 "quick" 或 "advanced"
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}

刪除代理。這也會移除其所有頻道、觸發器、訊息與整合項目。

整合

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

將資料庫連結至代理,以支援 RAG 驅動的回應。內文: { "knowledge_base_id": "uuid" }

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

將知識庫與代理解除連結。

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

將 MCP 伺服器連結至代理,以擴充工具使用能力。內文: { "activation_id": "uuid" }

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

將 MCP 伺服器與代理解除連結。

GET /api/agents/{id}/messages

擷取代理的對話紀錄。

參數 類型 說明
limit查詢 整數 要回傳的訊息數量。預設值:25,上限:100
回應
{
  "object": "list",
  "data": [
    {
      "id": "msg-uuid-...",
      "direction": "inbound",
      "content": "How do I reset my password?",
      "external_user_name": "john_doe",
      "cost": 0,
      "model": null,
      "created_at": 1709222400
    },
    {
      "id": "msg-uuid-...",
      "direction": "outbound",
      "content": "Go to Settings > Security > Change Password...",
      "cost": 0.25,
      "model": "claude-sonnet-5",
      "created_at": 1709222401
    }
  ]
}
使用代理需要您的方案啟用代理功能。方案限制適用於代理數量、每個代理的管道數量以及每個代理的觸發條件數量。

代理管道

將代理連接至通訊平台。每個代理每種類型支援一個頻道(一個 Telegram 機器人、一個 Discord 機器人)。

POST /api/agents/{id}/channels

為代理新增溝通管道。

請求內文

參數 類型 說明
type必填 字串 "telegram" 或 "discord"
token必填 字串 來自 Telegram BotFather 或 Discord 開發者平台的機器人權杖(上限 256 字元)

請求範例

curl https://zubnet.com/api/agents/550e8400-.../channels \
  -H "Authorization: Bearer $ZUBNET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "type": "telegram",
    "token": "7123456789:AAH..."
  }'
回應(201 Created)
{
  "id": "ch-uuid-...",
  "type": "telegram",
  "status": 1,
  "metadata": {},
  "last_error": null,
  "last_message_at": null,
  "created_at": 1709136000
}
機器人權杖在啟用前會透過平台 API 進行驗證,並以加密方式儲存。針對 Telegram,系統會自動設定 webhook。頻道狀態:0 = 未啟用,1 = 已啟用,2 = 錯誤
GET /api/agents/{id}/channels

列出連接至代理的所有頻道。

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

從代理中移除一個頻道。

代理觸發條件

使用觸發器自動執行代理動作。排程觸發器使用 cron 表達式在特定時間執行;事件觸發器則在外部事件發生時觸發。

POST /api/agents/{id}/triggers

為代理建立自動觸發條件。

請求內文

參數 類型 說明
name必填 字串 觸發器名稱(最多 128 個字元)
type必填 字串 "scheduled" 或 "event"
prompt必填 字串 觸發器觸發時傳送給代理的提示詞
cron_expression選填 字串 Cron 排程(例如「0 9 * * 1-5」表示平日上午 9 點)
timezone選填 字串 用於 cron 評估的 IANA 時區。預設值:「UTC」
channel_id選填 字串 傳送觸發器輸出的頻道

範例:每日摘要觸發器

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"
  }'
回應(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

列出代理的所有觸發器。

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

更新觸發器。所有欄位皆為選填。設定 status 為 0 以停用,或 1 以啟用。

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

刪除觸發器。

排程觸發器會透過訊息佇列非同步執行。每次執行前都會檢查代理是否處於啟用狀態,以及工作區是否有足夠的點數。

工作區

工作區是您團隊的組織單位。每個工作區都有各自的點數餘額、訂閱方案、API 金鑰與成員。管理工作區、邀請團隊成員並追蹤用量。

POST /api/workspaces

建立新的工作區。

參數 類型 說明
name必填 字串 工作區名稱(最多 50 個字元)
回應(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}

更新工作區的設定。需要工作區管理權限。

參數 類型 說明
name選填 字串 工作區名稱(最多 50 個字元)
api_spending_limit選填 數字 每月 API 支出上限(設為 null 表示無限制)
{provider}_api_key選填 字串 供應商的自帶金鑰(BYOK)API 金鑰(例如 openai_api_key, anthropic_api_key)
DELETE /api/workspaces/{id}

刪除工作區。需要工作區管理權限。

POST /api/workspaces/{id}/invitations

透過電子郵件邀請使用者加入工作區。每個工作區最多可有 20 筆待處理邀請。

參數 類型 說明
email必填 字串 要邀請的使用者電子郵件地址
DELETE /api/workspaces/{id}/invitations/{invitationId}

取消待處理的邀請

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

從工作區中移除成員,或使用自己的使用者 ID 離開工作區。

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

列出工作區的彙總使用統計資料。支援以游標為基礎的分頁。

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

列出逐項使用紀錄(已完成且含費用的資料庫項目 > 0)。每筆記錄包含類型、模型、標題、費用及時間戳記。

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

取得使用項目的總數。

用量與工作區管理端點需要工作區 管理 權限(工作區擁有者或管理員)。

對話

對話將聊天訊息分組為工作階段。請先建立對話,再傳送訊息至該對話。對話也可以透過以下方式管理 資料庫 API,使用 conversations 內容類型。

POST /api/ai/conversations

建立新的對話。回傳含有空訊息清單的對話物件。

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

傳送訊息到對話中,並透過 Server-Sent Events(SSE)接收 AI 回應。請參閱 對話完成 章節以了解 SSE 事件格式詳情。

請求內文

參數 類型 說明
model必填 字串 用於回應的模型
content選填 字串 訊息文字
assistant_id選填 字串 用於此訊息的助理 UUID
parent_id選填 字串 父訊息的 UUID(用於分支對話)
file選填 檔案 附件(圖像、文件、音訊/影片 — 最大 25MB)
recording選填 檔案 語音錄音(mp3、wav、webm、ogg — 最大 10MB)

請求範例

curl https://zubnet.com/api/ai/conversations/550e8400-.../messages \
  -H "Authorization: Bearer $ZUBNET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-4.1",
    "content": "Explain quantum computing in simple terms"
  }'
訊息透過 SSE 串流傳送。使用 multipart/form-data 上傳檔案時。若要列出或刪除對話,請使用 資料庫 API,類型為 conversations.

帳號

管理您的使用者個人資料並以程式化方式產生 API 金鑰。

PUT /api/account

更新您的個人資料資訊。

參數 類型 說明
first_name選填 字串 名字(最多 50 個字元)
last_name選填 字串 姓氏(最多 50 個字元)
language選填 字串 偏好的語言代碼(例如:"en"、"fr")
preferences選填 物件 使用者偏好設定
POST /api/account/rest-api-keys

產生新的 API 金鑰。基於安全考量需要密碼確認。系統會回傳完整的 API 金鑰 僅限一次 在此回應中 — 並妥善保存。

參數 類型 說明
current_password必填 字串 您目前的帳戶密碼
回應
{
  "id": "550e8400-...",
  "first_name": "Jane",
  "last_name": "Doe",
  "email": "jane@example.com",
  "api_key": "zub_live_a1b2c3d4e5f6..."
}
api_key 此數值僅在此回應中完整顯示,後續 API 呼叫將回傳遮罩版本。請將其視為密碼般妥善保管。

帳單

瀏覽可用方案、檢視訂單紀錄、開始結帳並管理訂閱

GET /api/billing/plans

列出可用的訂閱方案。

參數 類型 說明
billing_cycle選填 字串 依帳單週期篩選
GET /api/billing/orders

列出目前工作區的訂單,支援游標分頁。

參數 類型 說明
status選填 字串 依訂單狀態篩選
billing_cycle選填 字串 依帳單週期篩選
POST /api/billing/checkout

開始訂閱方案或購買點數的結帳流程。需要工作區管理權限。

參數 類型 說明
id選填 字串 要訂閱的方案 UUID(若無則為必填 amount)
amount選填 整數 購買點數金額(以分為單位,最少 1000,若無以下欄位則為必填): id)
gateway選填 字串 付款閘道: stripepaypal
DELETE /api/billing/subscription

取消目前工作區的訂閱,需要工作區管理權限

內容報告

檢舉公開資料庫中不當或違反政策的內容。

POST /api/content-reports

提交內容檢舉。每位使用者對同一項目只能檢舉一次。

參數 類型 說明
item_id必填 字串 要回報的資料庫項目 UUID
reason必填 整數 原因代碼:0(垃圾訊息)、1(騷擾)、2(暴力)、3(色情內容)、4(其他)
description選填 字串 其他詳細資訊(最多 2000 字元)
回應(201 Created)
{
  "id": "550e8400-e29b-41d4-a716-446655440000"
}
重複回報(同一使用者 + 同一項目)將回傳 409 Conflict 錯誤。

更多端點

完整的 API 涵蓋面超出以上章節。以下端點均已上線,使用相同的身份驗證:

POST /api/ai/three-d3D 模型生成(Tripo、Meshy…)
POST /api/ai/tts  ·  POST /api/ai/speeches文字轉語音(原生介面 + 預設)
POST /api/ai/transcriptions批次音訊轉錄(可選模型)
GET /api/ai/transcriptions/realtime/token  ·  POST /api/ai/transcriptions/realtime/save麥克風即時轉錄(工作階段權杖 + 儲存)
POST /api/ai/translations  ·  GET /api/ai/translation-languages文字翻譯 + 支援的語言
POST /api/ai/document-extractions文件文字擷取(OCR)
GET /api/ai/video-understanding/{jobId}影片理解任務狀態
/api/library-stacks資料庫堆疊(合集)——完整 CRUD
/api/chatroom團隊聊天室(共享 AI 對話)
/api/automation自動化工作流(建立 + 執行)

錯誤

此 API 使用標準 HTTP 狀態碼並回傳詳細的錯誤訊息。

程式碼 說明
400 錯誤請求 — 參數無效
401 未經授權 — API 金鑰無效或缺失
403 禁止存取 — 點數不足或您的方案無法使用此模型
404 找不到 — 找不到模型或資源
413 酬載過大 — 檔案超過大小限制
429 請求過多 — 已超過速率限制
500 伺服器內部錯誤
503 服務無法使用 — 暫時過載
錯誤回應格式
{
  "error": {
    "message": "Invalid API key provided",
    "type": "authentication_error",
    "code": "invalid_api_key"
  }
}

速率限制

速率限制因方案而異。每個回應都包含標頭:

標頭 說明
X-RateLimit-Limit 每分鐘允許的請求數
X-RateLimit-Remaining 目前時間窗口內剩餘的請求數
X-RateLimit-Reset 限制重設時的 Unix 時間戳記

若您觸及速率限制,請等待重置時間,或聯絡我們以提高限制。

需要幫助?

我們隨時為您服務

對 API 有疑問嗎?請查看我們的常見問答,或直接與我們聯繫。