AI Agent 自己領 API Key:自助註冊、OKX 付費註冊與管理金鑰核發
BazaarLink 已重新開放 agent 自助註冊:POST https://bazaarlink.ai/api/v1/agents/register 即可領到 API Key,也能用 OKX x402 付費註冊,或用 Management API Key 程式化核發並設定花費上限。附 Python 與 TypeScript 範例。
更新於 2026-10-01。 BazaarLink 已重新開放 agent 自助註冊:Agent 只要呼叫
POST https://bazaarlink.ai/api/v1/agents/register就能領到自己的 API Key。想要預算上限與到期時間的集中管控,仍可改用管理金鑰(Management API Key)程式化核發。本文兩種做法都寫。
問題:人工介入是 AI Agent 規模化的瓶頸
在大多數 AI Agent 架構中,有一個幾乎被忽略的人工瓶頸:API 金鑰的發放。每次部署新的 Agent 實例,都要有人登入、建立金鑰、複製貼上、設定環境變數。當 Agent 數量從一個長到十個、上百個,這個流程就成了真正的障礙。
解法有兩條:讓 Agent 自己呼叫註冊端點領 Key,或是人類做一次授權,之後由程式代發。下面依序說明,你可以依場景挑一種,或兩種並用。
做法 A:Agent 自己註冊領 Key
註冊端點在網站主機 bazaarlink.ai 上(不在 api. 閘道主機),不需要登入、不需要 Authorization,POST 一次就能拿到金鑰:
curl -X POST https://bazaarlink.ai/api/v1/agents/register \
-H "Content-Type: application/json" \
-d '{"name": "research-agent"}'
可帶的欄位:name(必填)、description、referral_code。201 回應包含 api_key、credits、claim_token(7 天內有效,讓人類之後認領這個帳號)、upgrade_url、free_model: "auto:free" 與 base_url。api_key 只會出現這一次,請當場存好。
import httpx
from openai import OpenAI
r = httpx.post("https://bazaarlink.ai/api/v1/agents/register", json={"name": "research-agent"}, timeout=30)
r.raise_for_status()
data = r.json()
client = OpenAI(api_key=data["api_key"], base_url=data["base_url"]) # base_url 是 https://api.bazaarlink.ai/v1
resp = client.chat.completions.create(
model=data["free_model"], # auto:free
messages=[{"role": "user", "content": "Hello!"}],
)
import OpenAI from "openai";
const res = await fetch("https://bazaarlink.ai/api/v1/agents/register", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ name: "worker-1" }),
});
const data = await res.json();
const client = new OpenAI({ apiKey: data.api_key, baseURL: data.base_url });
這樣註冊出來的是未付費帳戶:使用既有的免費模型機制(auto:free),受一般的速率與每日上限限制,沒有另外的 agent 專屬免費額度。同一個 IP 或雲端供應商的註冊次數有上限,超過會收到 HTTP 429,請依 Retry-After 再試。
要用付費模型:註冊時直接用 OKX 付費(x402)
如果 Agent 需要付費模型,可以在註冊時一併儲值:POST https://bazaarlink.ai/api/v1/agents/register/x402,帶 name、amountUsd。第一次請求會回 HTTP 402,內容有付款方案(network eip155:196、asset USD-T0、payTo);Agent 簽好付款後帶 X-PAYMENT header 重送一次即可。付款是 X Layer 上的 USD₮0,透過 OKX 的 x402 facilitator 結算,付款方不需要 OKB 當 gas(可用 OKX Wallet 或任何 EVM 錢包簽名)。
平台會收取儲值手續費,所以入帳額度會低於付款金額;回應裡的 paidUsd、creditedUsd、serviceFeeUsd 會分開列出。之後要補額度,用該帳號的 API Key 呼叫 POST https://bazaarlink.ai/api/x402/topup。
做法 B:一把管理金鑰,之後全部程式化
流程只有兩步:
- 人類做一次:登入後到 /keys 建立一把 Management API Key。這把金鑰的用途是「管理其他金鑰」,本身不拿來呼叫模型。
- 程式做無數次:你的 orchestrator 或 CI/CD 用這把管理金鑰呼叫
POST /v1/keys,替每個 Agent 核發一把專屬金鑰,並當場設定花費上限與到期時間。
一般的 sk-bl- 金鑰打不了這支端點,必須是管理金鑰——這是刻意的權限分離。
curl https://api.bazaarlink.ai/v1/keys \
-H "Authorization: Bearer $BAZAARLINK_MANAGEMENT_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "ResearchAgent-v2",
"limit": 30,
"limit_reset": "monthly",
"expires_at": "2027-01-01T00:00:00Z"
}'
回應裡的 key 欄位是唯一一次能看到金鑰明文的機會,之後系統只存雜湊,連你自己都拿不回來——請當場交給 Agent 或寫進你的祕密管理系統。
完整實作範例:Python
import os
import httpx
from openai import OpenAI
MGMT_KEY = os.environ["BAZAARLINK_MANAGEMENT_KEY"] # 人類建立,只放在 orchestrator
BASE = "https://api.bazaarlink.ai/v1"
def provision_agent_key(agent_name: str, monthly_usd: float) -> str:
"""替一個 Agent 核發專屬金鑰,帶月花費上限。"""
r = httpx.post(
f"{BASE}/keys",
headers={"Authorization": f"Bearer {MGMT_KEY}"},
json={"name": agent_name, "limit": monthly_usd, "limit_reset": "monthly"},
timeout=30,
)
r.raise_for_status()
return r.json()["key"] # 只會出現這一次
# Agent 啟動時由 orchestrator 發金鑰
api_key = provision_agent_key("ResearchAgent-v2", 30.0)
client = OpenAI(api_key=api_key, base_url=BASE)
response = client.chat.completions.create(
model="auto:free",
messages=[{"role": "user", "content": "Hello!"}],
)
TypeScript / Node.js 範例
import OpenAI from "openai";
const BASE = "https://api.bazaarlink.ai/v1";
async function provisionAgentKey(name: string, monthlyUsd: number) {
const res = await fetch(`${BASE}/keys`, {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.BAZAARLINK_MANAGEMENT_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({ name, limit: monthlyUsd, limit_reset: "monthly" }),
});
const data = await res.json();
return data.key as string;
}
const apiKey = await provisionAgentKey("worker-1", 10);
const client = new OpenAI({ apiKey, baseURL: BASE });
const out = await client.chat.completions.create({
model: "auto:free",
messages: [{ role: "user", content: "Hello!" }],
});
可以在核發當下就綁住的東西
| 欄位 | 作用 |
|---|---|
limit + limit_reset | 花費上限(美元)與重置週期,接受 daily / weekly / monthly |
expires_at | 到期時間(ISO 字串,須為未來),適合臨時測試金鑰 |
organizationId / teamId / orgMemberId | 把金鑰綁到組織、團隊或特定成員,費用直接歸戶 |
keyType | 預設 standard;只有要再發一把管理金鑰時才用 management |
上限一到,該金鑰的請求會收到 HTTP 402,其他 Agent 不受影響。這正是「某個 Agent 失控不會燒掉整個帳戶」的機制。
應用場景:哪些架構最受益
1. Multi-Agent 系統(AutoGen、CrewAI、LangGraph)
每個角色(Researcher、Writer、Critic)一把金鑰、一個預算。用量分開記,出事只撤銷那一把。
2. 自動部署管線(CI/CD)
每次部署核發一把新金鑰並設 expires_at,部署結束自動失效,不必在 Secret Manager 裡長期存放共用憑證。
3. SaaS 產品中的 AI 功能
替每個終端客戶的 Agent 發各自的金鑰,用量計量與費用分攤天然成立。
4. 開發測試
本地測試發臨時金鑰,設一天後到期,測完不用手動清。
auto:free:先把流程跑通
拿到金鑰後可以直接用 auto:free,它會路由到目前可用的免費模型,讓你在還沒儲值前就把整條鏈路跑通(仍受一般速率與每日上限限制)。要用付費模型時再儲值即可,程式不用改。
與主流 Agent 框架的整合
Note: 與 OpenAI SDK 完全相容
BazaarLink 使用標準 OpenAI 相容 API。任何使用 OpenAI SDK 的框架——LangChain、LlamaIndex、AutoGen、CrewAI、LangGraph、Semantic Kernel——都可直接整合,只需設定
base_url與api_key。
常見問題
Q:自己註冊和管理金鑰核發,要選哪一種?
自己註冊最簡單:Agent 一個 POST 就拿到 Key,適合單一 Agent 或快速試跑,但拿到的是未付費帳戶,沒有可設定的花費上限與到期時間。管理金鑰核發需要一位人類先授權一次,之後每把金鑰都能在核發時綁花費上限與到期時間,適合多 Agent 與正式環境。兩者可以並用。
Q:管理金鑰要放哪裡?
只放在 orchestrator 或 CI 的祕密管理系統,不要下發給個別 Agent。Agent 只該拿到自己那把有上限的標準金鑰。
Q:如何追蹤各個 Agent 的用量?
後台 Logs 會依金鑰顯示每筆呼叫的模型、token 數與費用;金鑰名稱就是你核發時給的 Agent 名稱。組織用戶另有依成員拆分的月報表可匯出 CSV。
Q:可以程式化撤銷金鑰嗎?
可以。同一組管理端點提供 GET /v1/keys 列出、PATCH 更新、DELETE 刪除,適合 Agent 生命週期結束時自動清理。
Q:適合生產環境嗎?
適合。用管理金鑰核發時,金鑰的發放權在你手上,每把金鑰都有上限與可選的到期時間,出事的爆炸半徑被限制在單一 Agent;自助註冊則適合單一 Agent 或試跑,正式環境建議用管理金鑰核發。