문서 섹션
인증
계산기 호출에는 모든 요금제에서 API 키가 필요하며, 무료 키는 비용이 들지 않습니다. 계산기 경로, 작업 경로, 사용량 엔드포인트는 두 헤더 중 어느 쪽으로도 키를 받습니다.
키는 rfc_로 시작합니다. 키는 만들 때 한 번만 표시되고 다시는 표시되지 않습니다. 저장되는 것은 해시뿐입니다.
키 보내기
키는 X-API-Key 헤더로, 또는 Authorization: Bearer rfc_… 형식으로 보냅니다. 키가 없는 요청은 401로 거부되며 keyUrl이 함께 반환되고, 발급된 적이 없거나 폐기된 키도 401로 거부됩니다. 401은 할당량과 관련이 없습니다. 할당량을 다 쓴 경우는 402입니다(오류 참고).
할당량은 계정에 속합니다
계정의 모든 키(폐기된 키 포함)의 호출은 하나의 월간 수치에서 차감됩니다. 이 수치는 UTC 기준으로 매월 초에 초기화되며, 각 호출은 여전히 그 호출을 한 키에 기록됩니다.
| 요금제 | 월간 호출 수와 키 |
|---|---|
| Free | 월 5회, API 키 1개 |
| Pro | 월 100회, API 키 3개 |
| API | 월 10,000회, API 키 5개 |
키 받기
사람은 대시보드에서 키를 받습니다. 프로그램이 사용자에게 키를 건네는 방법은 두 가지이며, 둘 다 일반 rfc_ 키가 됩니다. 다른 키처럼 집계되고, 목록에 표시되며, 폐기할 수 있습니다.
키 링크
사용자의 브라우저에서 https://rftools.io/dashboard/?newKey=1&client=<clientId>[&label=<text>]를 엽니다. clientId는 프로그램의 이름이며 ^[a-z0-9][a-z0-9-]{1,39}$에 맞아야 합니다(예: kicad-plugin). 맞지 않는 값은 거부되지 않고 무시됩니다. 로그아웃한 사용자는 로그인하거나 가입한 뒤 같은 링크로 돌아옵니다. 대시보드는 레이블이 채워진 키 만들기 대화상자를 열고(링크에서 정하지 않으면 <clientId> — <date>), 사용자가 프로그램에 붙여 넣을 수 있도록 키를 한 번만 보여 줍니다.
이 대화상자는 POST /api/py/v1/apikeys를 호출하며, 로그인한 세션은 이를 직접 호출할 수도 있습니다. 본문은 생략할 수 있습니다. 키 한도에 도달한 계정은 400으로 거부되고, 먼저 키를 폐기하라는 안내를 받습니다.
디바이스 권한 부여: 브라우저가 없는 프로그램을 위한 방법
OAuth 2.0 디바이스 권한 부여(RFC 8628)를 사용하면 사용자가 아무것도 붙여 넣지 않아도 프로그램(플러그인, CLI, 로컬 MCP 서버)이 키를 받을 수 있습니다. 프로그램은 코드를 요청하고, 그 코드와 https://rftools.io/device/을 사용자에게 보여 준 뒤 폴링합니다. 사용자는 그곳에서 로그인하고, 프로그램이 스스로 밝힌 이름을 확인한 뒤 승인하거나 거부합니다. 승인되면 프로그램의 다음 폴링에서 키가 한 번만 반환됩니다. 두 엔드포인트 모두 JSON 또는 폼 본문을 받습니다.
- 코드는
BCDFGHJKLMNPQRSTVWXZ에서 고른 8자로,XXXX-XXXX형태로 표시되며 발급 후 10분이 지나면 만료됩니다. interval(처음에는 5초)보다 빠르게 폴링하지 마세요.- 이 키는 계정의 키 한도에 포함됩니다. 한도에 도달한 계정은 먼저 키를 폐기하라는 안내를 받습니다.
- 사용자에게는 코드만 보여 주세요.
device_code는 교환되기 전까지 프로그램의 비밀 정보입니다. - Python 라이브러리가 이 모든 과정을 처리합니다:
rftools login또는rftools.Client().login().
기다리는 동안 토큰 엔드포인트는 RFC 8628 error와 함께 400으로 응답합니다:
| error | 의미 |
|---|---|
| authorization_pending | 사용자가 아직 결정하지 않았습니다. 간격을 지켜 폴링을 계속하세요. |
| slow_down | 간격보다 빠르게 폴링했습니다. 간격이 5초 늘어나며, 본문에 새 간격이 담깁니다. |
| access_denied | 사용자가 코드를 거부했거나, 키를 받아 가기 전에 계정이 키 한도에 도달했습니다. 폴링을 멈추세요. |
| expired_token | 코드가 만료되었거나(발급 후 10분), 그 키를 이미 받아 갔습니다. 처음부터 다시 시작하세요. |
| invalid_grant | 디바이스 코드가 다른 client_id에 발급되었습니다. |
| invalid_request / unsupported_grant_type | 매개변수가 빠졌거나 grant_type이 잘못되었습니다. |
디바이스 권한 부여 엔드포인트에는 무엇을 보내든 자격 증명 없는 요청의 속도 제한이 적용됩니다.