智慧代理註冊
Let an AI agent get a Narwhal API key for its user.
AI 智慧代理無需瀏覽器即可為使用者取得 Narwhal API 金鑰。代理傳送使用者的電子郵件地址,立即得到一把可用的金鑰,並附有少量試用額度。使用者把郵件中的 6 位數驗證碼告訴代理,代理完成驗證後,同一把金鑰就成為正式帳戶。
代理可以在 / 以純 markdown 格式讀取相同的流程。
給代理的規則
- 在為使用者註冊之前,先徵得使用者同意。
- 只使用使用者提供給你的電子郵件地址。
- 絕不要自己去讀取使用者信箱裡的驗證碼,必須由使用者告訴你。
429和503最多重試 3 次,每次等待Retry-After中的秒數。之後就停下來,告訴使用者。如果Retry-After超過 300 秒,表示已達每日上限:請立即停止並告訴使用者。- 出現
403或410後,重新註冊前先詢問使用者。每次註冊都會再寄給使用者一封驗證碼郵件。
申請金鑰
傳送使用者的電子郵件地址,無需 API 金鑰。回應一律是狀態 202 和相同的文字,因此無法藉此判斷某個地址是否已有帳戶。api_ 在待驗證帳戶上立即可用。
curl --request POST \
--url https://api.narwhalapi.com/v1/agent-signup \
--header "Content-Type: application/json" \
--data '{"email": "person@example.com", "agent_name": "Claude Code", "client": "claude-code"}'{
"status": "pending",
"message": "If this email address can be used, Narwhal emailed it a 6-digit code. Ask the user to read the code to you, then call POST /v1/agent-signup/verify with it. The api_key works now with a small trial credit.",
"api_key": "nw_live_...",
"trial_credit_micro": 200000,
"expires_at": "2026-11-16T09:00:00Z",
"verify_path": "/v1/agent-signup/verify"
}請求欄位
| 欄位 | 必填 | 含義 |
|---|---|---|
email | 是 | 使用者的電子郵件地址。Narwhal 會向它寄送 6 位數驗證碼。一次性電子郵件網域會被拒絕。 |
agent_ | 是 | 代理給自己取的名稱:1 到 80 個字母、數字、空格或 _。句點只能出現在兩個數字之間,例如版本號。不能包含網址、網域或冒號。郵件會把它顯示給使用者。 |
client | 否 | 代理所執行的工具,例如 claude-code 或 cursor:小寫字母、數字、_ 和 -,最多 40 個字元。 |
回應欄位
| 欄位 | 含義 |
|---|---|
status | 在驗證碼通過之前一律為 pending。 |
message | 每個請求都是相同的文字。 |
api_ | 待驗證帳戶上的可用金鑰。請妥善保密,它只顯示一次。 |
trial_ | 一次性試用額度,單位為微美元(1,000,000 等於 1 美元)。200000 即 0.20 美元。 |
expires_ | 未驗證時金鑰停止運作的時間:請求後 7 天。 |
verify_ | 使用者告知的驗證碼應傳送到的路徑。 |
如果該地址已有帳戶,其擁有者會收到提示登入的郵件,而不會收到驗證碼。新地址會收到驗證碼郵件。驗證碼有效期為 15 分鐘,最多可輸錯 5 次。同一地址在 30 天內最多收到 3 封驗證碼郵件。
驗證驗證碼
代理請使用者念出 6 位數驗證碼,然後把第一步得到的金鑰作為 Bearer 權杖,連同驗證碼一起傳送。使用者告知驗證碼,即表示接受條款。驗證免費,額度為零時也能使用。
curl --request POST \
--url https://api.narwhalapi.com/v1/agent-signup/verify \
--header "Authorization: Bearer $NARWHAL_API_KEY" \
--header "Content-Type: application/json" \
--data '{"code": "123456"}'{
"status": "claimed",
"message": "Verified. This key is now a normal Narwhal account with the free monthly credit. When you show Narwhal data to the user, credit it as \"Data by Narwhal API\"."
}請求欄位
| 欄位 | 必填 | 含義 |
|---|---|---|
code | 是 | The 6-digit code from the email Narwhal sent to the user. |
回應欄位
| 欄位 | 含義 |
|---|---|
status | 驗證碼通過後為 claimed。 |
message | 確認帳戶,並重申署名規則。 |
驗證成功後,同一把金鑰變為一般帳戶,每月 10 美元、為期 12 個月的免費額度從驗證之日起計算。
查看狀態
免費,需要使用金鑰。它會告訴你註冊進行到哪一步。
curl --request GET \
--url https://api.narwhalapi.com/v1/agent-signup/status \
--header "Authorization: Bearer $NARWHAL_API_KEY"{
"state": "pending",
"trial_credit_left_micro": 200000,
"expires_at": "2026-11-16T09:00:00Z",
"code_expires_at": "2026-11-09T09:15:00Z",
"attempts_left": 5
}回應欄位
| 欄位 | 含義 |
|---|---|
state | pending、claimed、expired 或 blocked。 |
trial_ | 剩餘試用額度,單位為微美元。待驗證期間才會出現。 |
expires_ | 未驗證時金鑰停止運作的時間。待驗證期間才會出現。 |
code_ | 郵件中的驗證碼失效的時間。待驗證期間才會出現。 |
attempts_ | 驗證碼被鎖定前還能輸錯的次數。待驗證期間才會出現。 |
verified_ | 使用者完成驗證的時間。驗證後才會出現。 |
驗證前後的限制
| 驗證前(待驗證) | 驗證後 | |
|---|---|---|
| 額度 | 一次性試用額度 0.20 美元,按每 1,000 次 2 美元計,約可呼叫資料 100 次。 | 12 個月內每月免費 10 美元,無需綁卡,之後為預付儲值。 |
| 每分鐘請求數 | 10 | 僅有免費額度時為 50,帳戶持有付費額度後為 500。 |
| Webhook、事件串流、團隊邀請和儲值 | 不可用。 | 可用。 |
| 有效期 | 7 天,之後金鑰會被撤銷。 | 適用一般規則。 |
對待驗證金鑰的每個回應都帶有 X-Narwhal-Account-State: pending。註冊、驗證和狀態呼叫從不收費。價格為每 1,000 次呼叫 2 美元,Companies 為每 1,000 次 10 美元。
試用額度用完後,資料呼叫會回傳 402 insufficient_,並附帶 verify_ 和供代理顯示的 message_。
{
"status": 402,
"code": "insufficient_credits",
"verify_required": true,
"message_for_user": "The trial credit on this Narwhal key is used up. To go on, please read me the 6-digit code Narwhal emailed you. When Narwhal data is shown to you, it is credited \"Data by Narwhal API\"."
}如果使用者一直不提供驗證碼,金鑰會一直可用,直到試用額度用完或滿 7 天。
驗證碼郵件會寫明代理名稱、所用工具和請求來自的國家。郵件中的 "This wasn't me" 連結會開啟只有一個按鈕的頁面。開啟連結不會改變任何事情;按下按鈕才會撤銷金鑰,並讓 Narwhal 不再向該地址寄信。
錯誤
錯誤使用錯誤指南中的 problem 格式:先依 status 分支,再依 code 分支。
| 狀態 | 公開錯誤代碼 | 端點 | 含義 |
|---|---|---|---|
400 | invalid_ | 全部 | 欄位缺失或格式錯誤,例如電子郵件不是一般地址,或驗證碼不是 6 位數字。 |
400 | invalid_ | 驗證 | 驗證碼錯誤。訊息會說明還剩幾次機會。 |
401 | invalid_ | 驗證、狀態 | Bearer 金鑰缺失、格式錯誤、未知或已被撤銷。 |
402 | insufficient_ | 資料呼叫 | 試用額度已用完。回應內容會增加 verify_ 和 message_。 |
403 | code_ | 驗證 | 輸錯驗證碼次數過多。重新註冊前請先詢問使用者。 |
403 | account_ | Webhook、串流票證 | 待驗證的金鑰不能使用 Webhook 或事件串流。 |
404 | not_ | 狀態 | 此金鑰不是透過代理註冊取得的。 |
404 | block_ | 封鎖 | 郵件中的連結無效。 |
404 | route_ | 全部 | 智慧代理註冊尚未開啟。 |
409 | email_ | 驗證 | 該地址已有帳戶,金鑰已被撤銷,請讓使用者直接登入。 |
409 | already_ | 驗證、封鎖 | 該金鑰已驗證。驗證碼不能重複使用。 |
409 | not_ | 驗證 | 該註冊已不再等待驗證(已過期或已被封鎖)。 |
409 | verify_ | 驗證、封鎖 | 此金鑰的另一次驗證正在進行。請查看狀態。 |
410 | code_ | 驗證 | 驗證碼已過期。重新註冊前請先詢問使用者。 |
422 | agent_ | 請求 | 代理名稱包含不允許的字元。 |
422 | email_ | 請求 | 該電子郵件網域屬於一次性電子郵件服務。 |
429 | rate_ | 全部 | 此網路的請求過多,或待驗證金鑰每分鐘的請求過多。請等待 Retry-After 中給出的秒數。 |
429 | domain_ | 驗證 | 今天此電子郵件網域下完成驗證的帳戶過多。請在 UTC 00:00 之後用同一個驗證碼重試。 |
503 | agent_ | 請求、封鎖 | 註冊暫時無法使用,或已達到每日上限。請查看 Retry-After。 |
503 | verify_ | 驗證 | 驗證暫時無法使用。請用同一個驗證碼重試。 |
Data by Narwhal API
帳戶只有免費額度時,向他人展示 Narwhal 資料需註明 "Data by Narwhal API" 並附上指向 Narwhal API 的連結。驗證成功時的 message 和 402 的 message_ 都重複了這條規則。持有付費額度的帳戶可以不註明來源直接展示資料。
之後登入
After verify, the user can sign in with Google or GitHub using the same email address. That opens the same account, with the same key and balance. 該 身分驗證指南 covers storing and rotating the key.
此頁面對你有幫助嗎?