---
title: 인증 | RunAPI
description: API 키를 만들고 RunAPI에 대한 요청을 인증합니다.
url: https://runapi.ai/ko/docs/guides/authentication.md
canonical: https://runapi.ai/ko/docs/guides/authentication
locale: ko
---

> HTML 버전: https://runapi.ai/ko/docs/guides/authentication
> 에이전트용 사이트 색인: https://runapi.ai/llms.txt

# 인증

RunAPI는 API 키를 사용하여 API 요청을 인증합니다. 계정에 접근하거나 작업을 생성하는 모든 요청에 키를 포함하세요.

## 올바른 키 선택

* 표준 API 키는 Task API, LLM API 및 계정 엔드포인트를 호출합니다.
  [로그인](https://runapi.ai/ko/login)한 후 API Keys 페이지를 열어 생성하십시오.
* 관리 키는 표준 API 키와 가드레일을 생성하고 관리합니다.
  [로그인](https://runapi.ai/ko/login)한 후 Management Keys 페이지를 열어 생성하고, Platform Management 엔드포인트에서만 사용하십시오.

## API 키 만들기

각 애플리케이션에 고유한 키를 부여하여 다른 통합을 중단하지 않고 액세스를 교체하거나 취소할 수 있습니다. 키는 하나의 계정에 바인딩되며, 요청은 해당 계정에서 보이는 리소스에만 액세스할 수 있습니다.

유료 API 호출은 계정당 분당 300개의 요청으로 제한됩니다.
`429 Too Many Requests` 응답에는 `Retry-After`,
`X-RateLimit-Limit-RPM`, `X-RateLimit-Remaining-RPM`, 및
`X-RateLimit-Reset` 헤더가 포함됩니다.

## 요청 인증

`Authorization` 헤더에 베어러 토큰으로 API 키를 전송하세요:

```http
Authorization: Bearer YOUR_API_TOKEN
```

예를 들어, cURL로 현재 잔액을 요청하세요:

```shell
curl "https://runapi.ai/api/v1/me/balance" \
  -H "Authorization: Bearer YOUR_API_TOKEN"
```

## 호스팅 MCP OAuth

원격 MCP 클라이언트는 `https://mcp.runapi.ai/mcp`에 연결하고 정규 OAuth 리소스 `https://mcp.runapi.ai`를 사용하여 RunAPI 인증 흐름을 자동으로 검색합니다. RunAPI 계정에 로그인하거나 새로 만들고, 계정을 선택한 후 API 키를 생성하거나 공유하지 않고 액세스를 승인합니다.

RunAPI는 Hosted MCP 접근을 위해 동적 클라이언트 등록, S256 PKCE를 사용한 인증 코드, 갱신 토큰 교체를 지원합니다.

OAuth 검색 엔드포인트:

* Protected Resource Metadata:
  `https://runapi.ai/.well-known/oauth-protected-resource`
* Authorization Server Metadata:
  `https://runapi.ai/.well-known/oauth-authorization-server`

[로그인](https://runapi.ai/ko/login)한 후 `/settings#oauth-connections`에서 승인된 앱을 열어 클라이언트 액세스를 검토하거나 취소하세요.

## 키를 안전하게 보관

* API 키는 시크릿 매니저 또는 암호화된 자격 증명에 저장하십시오.
* 키를 소스 컨트롤에 커밋하거나 브라우저 코드에 노출하지 마십시오.
* 키가 유출되었을 가능성이 있는 경우 즉시 교체하십시오.
* 개발 환경과 프로덕션 환경에는 별도의 키를 사용하십시오.

## 인증 문제 해결

* `401 Unauthorized` 응답은 키가 누락되었거나, 형식이 잘못되었거나, 취소되었거나, 유효하지 않음을 의미합니다.
* `403 Forbidden` 응답은 키는 유효하지만 해당 자격 증명 클래스 또는 계정 역할이 해당 작업을 수행할 권한이 없음을 의미합니다.
* 헤더가 `Bearer`로 시작하고, 그 뒤에 공백 하나와 완전한 키가 이어지는지 확인하십시오.
* 키가 요청하는 리소스의 소유 계정에 속하는지 확인하십시오.

---

## RunAPI의 더 많은 정보

- [홈](https://runapi.ai/ko/.md)
- [모델 카탈로그](https://runapi.ai/ko/models.md)
- [요금](https://runapi.ai/ko/pricing.md)
- [제공사](https://runapi.ai/ko/models)
- [문서](https://runapi.ai/ko/docs/guides)
- [SDK](https://runapi.ai/ko/sdk.md)
- [CLI](https://runapi.ai/ko/cli.md)
- [MCP Server](https://runapi.ai/ko/mcp.md)
- [Claude Code와 Cursor](https://runapi.ai/ko/claude-code-vs-cursor.md)
- [Cursor API 설정](https://runapi.ai/ko/cursor-api-setup.md)
- [RunAPI와 OpenRouter 비교](https://runapi.ai/ko/openrouter-alternative.md)
- [엔터프라이즈](https://runapi.ai/ko/contact.md)
- [문의](https://runapi.ai/ko/contact.md)
- [약관](https://runapi.ai/ko/terms.md)
- [개인정보](https://runapi.ai/ko/privacy.md)
- [에이전트용 사이트 색인](https://runapi.ai/llms.txt)

문의: contact@runapi.ai

## 구조화된 데이터

```json
[
  {
    "@context": "https://schema.org",
    "inLanguage": "ko",
    "@type": "WebSite",
    "name": "RunAPI",
    "url": "https://runapi.ai/ko",
    "potentialAction": {
      "@type": "SearchAction",
      "target": {
        "@type": "EntryPoint",
        "urlTemplate": "https://runapi.ai/ko/models?q={search_term_string}"
      },
      "query-input": "required name=search_term_string"
    }
  },
  {
    "@context": "https://schema.org",
    "inLanguage": "ko",
    "@type": "Organization",
    "name": "RunAPI",
    "url": "https://runapi.ai/ko",
    "logo": {
      "@type": "ImageObject",
      "url": "https://runapi.ai/koicon.svg"
    },
    "sameAs": [
      "https://github.com/runapi-ai"
    ]
  },
  {
    "@context": "https://schema.org",
    "inLanguage": "ko",
    "@type": "TechArticle",
    "headline": "인증",
    "description": "API 키를 만들고 RunAPI에 대한 요청을 인증합니다.",
    "url": "https://runapi.ai/ko/docs/guides/authentication",
    "mainEntityOfPage": "https://runapi.ai/ko/docs/guides/authentication"
  }
]
```
