> ## Documentation Index
> Fetch the complete documentation index at: https://docs.rocketpunch.com/llms.txt
> Use this file to discover all available pages before exploring further.

# App Key 인증

> App Key를 헤더에 담아 API를 호출하고, 키를 안전하게 보관 · 회전하는 방법을 알려드릴게요.

공개 데이터를 조회하는 API는 App Key만으로 호출합니다. 모든 요청에 `X-RP-API-Key` 헤더를 담으면 됩니다.

```
X-RP-API-Key: rp_app_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
```

## 발급되는 두 가지 키

앱을 등록하면 성격이 다른 두 개의 키가 발급됩니다.

| 키       | 접두사       | 쓰임                               | 노출                         |
| ------- | --------- | -------------------------------- | -------------------------- |
| App Key | `rp_app_` | API 호출 시 `X-RP-API-Key` 헤더에 담습니다 | 콘솔에서 언제든 다시 확인할 수 있습니다     |
| 시크릿 키   | `rp_sec_` | OAuth 토큰을 발급받을 때 클라이언트 인증에 씁니다   | **발급 · 재발급 직후 한 번만** 표시됩니다 |

<Warning>
  시크릿 키는 서버에 해시로만 저장되므로 로켓펀치도 원문을 다시 보여드릴 수 없습니다. 잃어버리셨다면 재발급해야 합니다.
</Warning>

## 키를 안전하게 다루기

App Key는 앱을 식별하는 자격 증명입니다. 노출되면 다른 사람이 여러분의 한도를 소진하거나 여러분 이름으로 호출할 수 있습니다.

* **서버에서만 호출하세요.** 브라우저 자바스크립트나 모바일 앱 번들에 키를 넣으면 누구나 꺼내 볼 수 있습니다.
* **환경변수나 시크릿 저장소에 두세요.** 소스 코드에 직접 적어 커밋하지 마세요.
* **공개 저장소에 올리지 마세요.** 실수로 커밋했다면 되돌리는 것만으로는 부족합니다 — 히스토리에 남으니 즉시 재발급하세요.

## 키가 노출됐다면

[개발자 콘솔](https://developers.rocketpunch.com/apps)의 앱 상세 화면에서 키를 재발급할 수 있습니다.

<Steps>
  <Step title="재발급">
    앱 상세 화면에서 키 재발급을 실행합니다. 새 키가 즉시 발급되고 이전 키는 무효가 됩니다.
  </Step>

  <Step title="교체">
    새로 표시된 시크릿 키를 그 자리에서 복사해 안전한 곳에 옮깁니다. 이후에는 다시 볼 수 없습니다.
  </Step>

  <Step title="배포">
    운영 중인 서비스의 환경변수를 새 키로 바꾸고 배포합니다. 이전 키를 쓰는 호출은 `401`(`C0001`)로 실패합니다.
  </Step>
</Steps>

<Note>
  재발급하면 이전 키는 바로 무효가 됩니다. 무중단으로 교체하려면 배포 창을 미리 잡아 두시는 편이 좋습니다.
</Note>

## 사용량 확인하기

앱 상세 화면의 사용량 페이지에서 분당 · 일간 호출량을 확인할 수 있습니다. 정상 응답에는 `X-RP-RateLimit-Remaining` 헤더로 이번 분에 남은 호출 수가 함께 옵니다.

한도를 넘으면 `429`(`C0010`)와 함께 `Retry-After` 헤더가 옵니다. 그 초만큼 기다린 뒤 다시 호출하세요.

<Note>
  적용되는 한도 값과 작업별 세부 한도는 [API 레퍼런스](/openapi/api-reference-overview)의 Rate Limit 항목에서 확인할 수 있습니다.
</Note>

## 다음 단계

<Card title="OAuth 2.0 연동" icon="user-lock" href="/openapi/auth-oauth-overview">
  사용자 권한이 필요한 API를 호출하려면 OAuth 2.0으로 동의를 받아야 합니다.
</Card>
