에이전트 가입
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자. 마침표는 버전 번호처럼 숫자와 숫자 사이에만 쓸 수 있습니다. URL, 도메인, 콜론은 쓸 수 없습니다. 이메일에서 사용자에게 표시됩니다. |
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 토큰으로 담아 코드를 보냅니다. 코드를 알려 주는 것이 사용자가 약관에 동의하는 방식입니다. 확인은 무료이며 크레딧이 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회입니다. | 12개월 동안 매달 10달러 무료, 카드 불필요. 이후에는 선불 충전입니다. |
| 분당 요청 | 10 | 무료 크레딧만 있으면 50, 유료 크레딧이 있으면 500입니다. |
| 웹훅, 이벤트 스트림, 팀 초대, 충전 | 사용할 수 없습니다. | 사용할 수 있습니다. |
| 유효 기간 | 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_ | 웹훅, 스트림 티켓 | 보류 중인 키는 웹훅이나 이벤트 스트림을 사용할 수 없습니다. |
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.
이 페이지가 도움이 되었나요?