API 共通規範
呼叫 MaiAgent 平台 API 的共通規則:網址與版本前綴、API Key 認證、速率限制、錯誤回應與狀態碼、分頁、欄位格式與上傳大小上限
本頁整理所有平台 API 共用的規則:網址、認證、限流、錯誤回應、分頁、欄位格式與上傳上限。各端點的欄位與範例見左側「API 端點說明文件」,本頁的規則適用於全部端點,端點頁不再重複。建議在開始寫程式前讀過一次。
網址與版本前綴
SaaS 的 API 網址是 https://api.maiagent.ai/api/v1/;地端與私有雲部署請換成貴公司的平台網域。
/api/與/api/v1/掛的是同一套端點,路徑、欄位與權限都相同。AI Gateway(OpenAI 相容端點)與 SCIM 只在
/api/v1/底下。新的整合請一律使用
/api/v1/。端點路徑以
/結尾。少了結尾的/會收到301轉址到加上/的網址;部分 HTTP 用戶端跟隨轉址時會把POST改成GET,請直接呼叫帶/的網址。
認證
伺服器對伺服器的呼叫使用 API Key,放在 Authorization 標頭:
Authorization: Api-Key <您的 API Key>金鑰由前綴與密鑰兩段英數字組成,中間以 . 相連,請完整帶入。
金鑰綁定一位成員
呼叫時的組織就是這位成員所屬的組織,請求不需要另外帶組織 ID
權限等於該成員的角色
沒有依端點細分的 scope;成員能做的事,金鑰都能做。缺少權限回 403,見 API 金鑰的權限範圍
成員停用即失效
成員被停用或移出組織後,這把金鑰立即無法使用
到期、停用、撤銷
和不存在的金鑰一樣回 401,回應不會說明原因
完整金鑰只顯示一次
建立後只會顯示部分字元,遺失請重新建立
金鑰的建立與管理入口見 API 認證方式。
認證失敗的回應
沒帶金鑰、標頭格式不對,或金鑰無效(不存在、已到期、已停用、已撤銷,或綁定的成員已停用、已移出組織)都回 401,內容相同:
金鑰無效時,訊息同樣是「沒有提供認證資訊」:平台把認不得的金鑰當成沒有帶憑證,不會說明是哪一種原因。
回應帶
WWW-Authenticate標頭。多數端點的值是Bearer realm="api"(這些端點也接受 OAuth 存取權杖);只接受 API Key 的端點(例如下方的api-key-context)是Api-Key。請以401狀態碼判斷,不要依這個標頭的值決定要帶哪一種憑證。把 API Key 放在
Bearer後面,平台會把它當成登入權杖驗證,回401與不同的內容:
收到這個回應時,請把標頭改成 Api-Key <金鑰>。
確認金鑰所屬的組織
要在自家閘道先確認金鑰屬於哪個組織,可以呼叫 GET /api/v1/users/api-key-context/,回應 {"organizationId": "…"}。這支端點只接受 API Key,不計入金鑰的 RPM。
其他憑證
讓 MCP 客戶端以成員身分連線,見技術人員手冊 MaiAgent 作為 OAuth 授權伺服器;在自家系統嵌入 MaiGPT 的成員權杖,見 串接 MaiGPT:成員身分嵌入。
速率限制
平台 API 沒有全域的預設上限。會限流的只有下表這些:
每把 API Key 的請求數(RPM)
管理者設定,未設定時不限
每把金鑰、每 60 秒
組織的 API Key 管理
SCIM 端點
100 次/分鐘
每個組織
固定
web-chats/{id}/setup-contact-credentials/
30 次/分鐘
每個來源 IP
固定
免登入的計價查詢(credit/items/、credit/pricing-rules/)
60 次/分鐘
每個來源 IP
固定
auth/login/
預設 10 次/分鐘
每個來源 IP
平台設定
不帶憑證的 Web Chat 請求(接續對話、上傳附件等)
10~30 次/分鐘,依端點而定
每個來源 IP
固定
金鑰的 RPM 作用在這把金鑰能呼叫的平台 API,不只 AI Gateway。表中有固定上限的端點使用自己的上限,不計入金鑰的 RPM。
OAuth 存取權杖與後台登入的請求不受金鑰 RPM 限制。
超過上限回
429,並帶Retry-After標頭(秒數)。請依這個秒數退避後再重試,不要立刻重送。
錯誤回應
平台 API 沒有統一的錯誤碼表。處理錯誤時請依 HTTP 狀態碼判斷,回應帶 code 時再依 code 細分;不要比對 detail 文字:文字會隨 Accept-Language 翻譯,也可能調整措辭。
回應內容的形狀
detail 物件
{"detail": "You do not have permission to perform this action."}
認證、權限、找不到、限流、方案與 Credits;少數會多帶 code 或其他欄位
欄位物件
{"name": ["This field is required."]}
欄位驗證失敗;key 是 camelCase 欄位名,不屬於單一欄位的錯誤放在 nonFieldErrors
字串陣列
["…"]
少數沒有對應欄位的驗證錯誤
例外情況:
AI Gateway 的 OpenAI 相容端點使用 OpenAI 格式的
error物件,見 AI Gateway 錯誤格式。SCIM 端點的請求內容錯誤、找不到與衝突,依 SCIM 2.0 規格回應(
schemas、status、detail)。網址不存在(路徑打錯、少了資源 ID)時回
404,內容是 HTML,不是 JSON;5xx回應也不保證是 JSON。解析回應前請先確認Content-Type。
狀態碼
200/201/204
成功;204 沒有回應內容,常見於刪除
—
301
路徑少了結尾的 /
改用帶 / 的網址
400
欄位驗證失敗;資源 ID 不是有效的 UUID 時,多數端點回 {"detail": "Invalid UUID format."}
修正請求,不要重試
403
角色權限不足、組織未開通該功能、組織已停用,或字數計費方案的用量已達上限
調整角色權限或洽窗口
404
資源不存在、不屬於金鑰所屬的組織,或網址打錯
確認 ID、金鑰所屬組織與路徑
409
與資源目前的狀態衝突,例如同一件工作已在執行中、要刪除的資源仍被引用
讀回最新狀態再決定,不要原樣重送
429
超過速率限制
依 Retry-After 退避
5xx
平台或上游服務錯誤
指數退避後重試
409 的回應是 detail 物件,部分端點會附上處理所需的欄位,例如知識庫已有 FAQ 匯入在執行時:
402:方案、Credits 或額度不足
情況
回應內容
有沒有 code
組織沒有有效的付費方案
{"detail": "Your organization has no active paid plan. …", "code": "no_active_plan"}
有,no_active_plan
組織 Credits 不足
{"detail": "Insufficient credits …"},文字依端點而異
沒有
成員的個人額度用完或未分配,或所屬角色的額度用完
{"detail": "Personal credit quota exhausted. …"},文字依情況而異
沒有
只有「沒有有效的付費方案」會帶
code。Credits 不足與額度用完的回應只有detail,目前無法只從回應內容分辨是組織 Credits 不足,還是個人或角色額度用完,請組織管理者到後台確認。Credits 與額度在會產生用量的寫入請求檢查,例如送出訊息、知識庫檔案上傳與搜尋、網頁爬取;查詢類的
GET請求不會因此回402。AI Gateway 的 OpenAI 相容端點回 OpenAI 格式:
{"error": {"type": "billing_error", "code": "insufficient_credits", …}},沒有有效方案時也是這個code。平台未啟用 Credits 計費時(部分地端部署),不會出現這類
402。
分頁
多數列表端點用頁碼分頁:
page
頁碼,從 1 開始;超出範圍回 404 {"detail": "Invalid page."}
page_size(也可寫 pageSize)
每頁筆數,預設 20、上限 100;超過 100 會自動截成 100,不會報錯
回應格式為 {"count": …, "next": "…", "previous": "…", "results": [ … ]},取下一頁時直接使用 next 的網址,沒有下一頁時為 null。
另外兩種情況:
游標分頁:對話列表(
GET /api/v1/conversations/)與訊息列表(GET /api/v1/messages/)用cursor參數,由新到舊翻頁,以next取更早的資料。訊息列表的回應帶count,對話列表沒有;訊息列表每一頁內的訊息依時間由舊到新排列。不分頁:部分清單直接回傳陣列,例如
GET /api/v1/credit/items/。
各端點屬於哪一種,以該端點頁的回應範例為準。
欄位格式
命名:回應的 key 一律是 camelCase。請求的 JSON 與查詢參數可以用 camelCase,snake_case 也接受。少數自由格式的欄位內容會原樣保留、不轉換大小寫,例如 JSON Schema、自訂 HTTP 標頭與 metadata。
時間:多數時間欄位輸出為 Unix 時間戳記的毫秒字串,例如
"1759536000000",精度到秒(最後三位固定是000)。少數欄位使用 ISO 8601 字串,以該端點頁為準。小數:金額、單價等小數欄位以字串輸出,例如
"316.8000000000",請用十進位型別處理,避免浮點誤差。ID:資源 ID 多為 UUID。
語系:錯誤訊息會依
Accept-Language標頭翻譯(例如ja),沒有翻譯的訊息維持英文,請勿依賴訊息文字。
上傳大小上限
上傳上限由平台設定,可能調整,地端部署也可能不同。請以 GET /api/v1/allowed-file-specs/ 的回應為準:這支端點不需認證,依用途列出允許的副檔名與 maxSize(位元組)。2026 年 10 月正式區的值如下:
知識庫檔案
100 MB
對話附件:文件、試算表、簡報與音檔
10 MB
對話附件:圖片
5 MB
會議記錄音檔
100 MB
以 Presigned 方式上傳時,取得上傳網址的
POST /api/v1/upload-presigned-url/就會依fileSize與副檔名檢查,超過上限或類型不允許回400。流程見技術人員手冊 Presigned 檔案上傳模式。知識庫的中繼資料、標籤與 FAQ 的 Excel 匯入,共用知識庫檔案的上限。
常見問題
最後更新於
這有幫助嗎?