エージェントのサインアップ
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秒を超える場合は1日の上限に達しています。すぐに中止して、ユーザーに伝えてください。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文字。ドットはバージョン番号のように数字と数字の間にだけ使えます。URL、ドメイン名、コロンは使えません。メールでユーザーに表示されます。 |
client | いいえ | エージェントが動いているツールです(例: claude-code、cursor)。英小文字、数字、_、- で最大40文字。 |
レスポンスフィールド
| フィールド | 意味 |
|---|---|
status | コードが確認されるまでは常に pending です。 |
message | どのリクエストでも同じ文面です。 |
api_ | 保留中のアカウントで使えるキーです。秘密にしてください。表示されるのは一度だけです。 |
trial_ | お試しクレジット(一度きり)をマイクロドルで表したものです(1,000,000 が1ドル)。200000 は0.20ドルです。 |
expires_ | 確認されない場合にキーが使えなくなる日時です。リクエストから7日後です。 |
verify_ | ユーザーが伝えたコードを送る先です。 |
そのアドレスにすでにアカウントがある場合、所有者にはサインインを促すメールが届き、コードは届きません。新しいアドレスにはコードのメールが届きます。コードの有効期間は15分で、間違えられるのは5回までです。1つのアドレスに送るコードのメールは30日間で最大3通です。
コードを確認する
エージェントはユーザーに6桁のコードを読み上げてもらい、最初の手順で受け取ったキーを Bearer トークンとして付けて送信します。コードを伝えることが、ユーザーが規約に同意する方法です。確認は無料で、クレジットが0でも使えます。
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回分です。 | 月10ドルを12か月間無料、カード不要。その後はプリペイドのチャージです。 |
| 毎分のリクエスト数 | 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」というリンクは、ボタンが1つだけのページを開きます。リンクを開くだけでは何も変わりません。ボタンを押すとキーが失効し、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_ | すべて | このネットワークからのリクエストが多すぎるか、保留中のキーの1分あたりの上限を超えました。Retry-After の秒数だけ待ってください。 |
429 | domain_ | 確認 | 今日、このメールドメインで確認されたアカウントが多すぎます。UTC 0時を過ぎてから同じコードをもう一度試してください。 |
503 | agent_ | リクエスト、ブロック | サインアップは一時的に利用できないか、1日の上限に達しています。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.
このページは役に立ちましたか?