# 인증과 API 키

API 키를 만들고, 쓰고, 제한하고, 교체하고, 안전하게 지키는 방법.

> https://nezhagate.com/ko/docs/guide/api-keys

## API 키 만들기

1. 로그인한 뒤 콘솔의 「API Keys」 페이지를 열고, 용도를 알 수 있는 이름을 키에 붙이세요.

2. 필요한 제한(분당 요청 수, 예산, 허용 목록)을 설정하세요. 나중에 바꿀 수도 있습니다.

3. 새 키가 목록에 나타나면 「복사」를 눌러 전체 키(`sk-`로 시작)를 받고, 서버의 환경 변수처럼 안전한 곳에 보관하세요.

## 요청마다 키 보내기

OpenAI 호환 엔드포인트는 `Authorization: Bearer` 헤더를 쓰고, Anthropic 엔드포인트는 `x-api-key`를 쓰며 `Authorization: Bearer`도 받습니다. 키는 코드에 직접 쓰지 말고 환경 변수에 두세요.

```
Authorization: Bearer YOUR_API_KEY
```

```
x-api-key: YOUR_API_KEY
anthropic-version: 2023-06-01
```

```
import os
from openai import OpenAI

# export NEZHAGATE_API_KEY=sk-...   (never commit the key)
client = OpenAI(base_url="https://nezhagate.com/v1", api_key=os.environ["NEZHAGATE_API_KEY"])
```

## 키에 제한 걸기

키마다 아래 제한을 따로 설정할 수 있으며, 서로 영향을 주지 않습니다:

| 설정 항목 | 역할 |
| --- | --- |
| **분당 요청 수** | 이 키가 1분 동안 보낼 수 있는 최대 요청 수. |
| **일일 예산** | 이 키가 하루(UTC 기준)에 쓸 수 있는 최대 금액(미국 달러). |
| **총 사용 한도** | 이 키가 통틀어 쓸 수 있는 최대 금액(미국 달러). 자동화에 맡긴 키가 폭주하지 않게 막을 때 좋습니다. |
| **모델 허용 목록** | 이 키는 목록에 있는 모델만 호출할 수 있습니다. |
| **IP 허용 목록** | 목록에 있는 IP 또는 IP 대역에서 온 요청만 받습니다. |

[한도를 넘으면 돌아오는 응답 →](https://nezhagate.com/ko/docs/guide/rate-limits#per-key)

## 비활성화와 교체

1. 새 키를 만들고, 키를 쓰는 곳을 새 키로 바꾸세요.

2. 새 키로 정상 호출되는 것을 확인했으면 콘솔에서 기존 키를 비활성화하세요. 즉시 적용되며, 이후 기존 키로 보낸 요청은 401을 받습니다.

3. 키가 유출된 것 같으면 먼저 비활성화한 다음 새 키를 만드세요.

## 키를 안전하게 지키기

- 키는 서버에만 두세요. 웹 페이지, 앱, 공개 코드 저장소에는 절대 넣지 마세요.

- 앱마다, 환경마다 키를 따로 쓰세요. 문제가 생기면 그 키만 비활성화하면 됩니다.

- 자동화나 서드파티 도구에 쓰는 키에는 예산이나 총 사용 한도를 설정하세요.

- 서버 IP가 고정되어 있다면 IP 허용 목록을 켜세요.

## 잔액은 계정에 속합니다

한 계정의 모든 키는 잔액 하나를 함께 씁니다. 어느 키로든 `GET /v1/usage`를 호출하면 계정의 잔액과 사용액을 볼 수 있습니다.
