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

# API Key가 유효하지 않은 이유는?

> API Key 유효하지 않음 오류를 해결하고 올바른 Base URL 구성 방법을 알아보세요

## 일반적인 오류

다음과 같은 오류가 표시되는 경우:

```json theme={null}
{
  "error": {
    "message": "Incorrect API key provided: sk-QqHvK***...",
    "type": "invalid_request_error",
    "code": "invalid_api_key"
  }
}
```

이는 대개 API Key 자체의 문제가 **아니라** **Base URL 설정 오류**입니다.

<Warning>
  가장 흔한 실수: GravitexAI의 Key를 사용하지만 요청 URL이 여전히 OpenAI의 `https://api.openai.com`을 가리키는 경우
</Warning>

## Base URL이란?

**Base URL**은 API 요청의 대상 서버 주소입니다. 제공업체마다 Base URL이 다릅니다.

### Base URL과 API Key는 일치해야 합니다

| 제공업체                | Base URL                                           | API Key 형식 | 일치 여부     |
| ------------------- | -------------------------------------------------- | ---------- | --------- |
| **GravitexAI**      | [https://api.gravitex.ai](https://api.gravitex.ai) | sk-xxxx... | ✅ 올바름     |
| **OpenAI Official** | [https://api.openai.com](https://api.openai.com)   | sk-xxxx... | ✅ 올바름     |
| ❌ GravitexAI Key    | [https://api.openai.com](https://api.openai.com)   | sk-xxxx... | ❌ **잘못됨** |
| ❌ OpenAI Key        | [https://api.gravitex.ai](https://api.gravitex.ai) | sk-xxxx... | ❌ **잘못됨** |

<Note>
  핵심 원칙: API Key에 맞는 제공업체의 Base URL을 사용하세요
</Note>

## 올바른 구성

### 방법 1: Base URL 수정 (권장)

<Tabs>
  <Tab title="Python">
    ```python theme={null}
    from openai import OpenAI

    client = OpenAI(
        api_key="sk-your-gravitex-key",
        base_url="https://api.gravitex.ai/v1"
    )

    response = client.chat.completions.create(
        model="gpt-4o",
        messages=[{"role": "user", "content": "Hello"}]
    )
    ```
  </Tab>

  <Tab title="Node.js">
    ```javascript theme={null}
    import OpenAI from 'openai';

    const client = new OpenAI({
      apiKey: 'sk-your-gravitex-key',
      baseURL: 'https://api.gravitex.ai/v1'
    });

    const response = await client.chat.completions.create({
      model: 'gpt-4o',
      messages: [{ role: 'user', content: 'Hello' }]
    });
    ```
  </Tab>

  <Tab title="cURL">
    ```bash theme={null}
    curl https://api.gravitex.ai/v1/chat/completions \
      -H "Content-Type: application/json" \
      -H "Authorization: Bearer sk-your-gravitex-key" \
      -d '{
        "model": "gpt-4o",
        "messages": [{"role": "user", "content": "Hello"}]
      }'
    ```
  </Tab>
</Tabs>

### 방법 2: 환경 변수

<Tabs>
  <Tab title="Linux/macOS">
    ```bash theme={null}
    export OPENAI_API_KEY="sk-your-gravitex-key"
    export OPENAI_BASE_URL="https://api.gravitex.ai/v1"
    ```
  </Tab>

  <Tab title="Windows PowerShell">
    ```powershell theme={null}
    $env:OPENAI_API_KEY="sk-your-gravitex-key"
    $env:OPENAI_BASE_URL="https://api.gravitex.ai/v1"
    ```
  </Tab>

  <Tab title="Windows CMD">
    ```cmd theme={null}
    set OPENAI_API_KEY=sk-your-gravitex-key
    set OPENAI_BASE_URL=https://api.gravitex.ai/v1
    ```
  </Tab>
</Tabs>

## 지원되는 URL 형식

| 형식          | URL                                           | 사용 사례      |
| ----------- | --------------------------------------------- | ---------- |
| /v1 포함 (권장) | `https://api.gravitex.ai/v1`                  | 대부분의 라이브러리 |
| 후행 슬래시 포함   | `https://api.gravitex.ai/v1/`                 | 일부 프레임워크   |
| 전체 경로       | `https://api.gravitex.ai/v1/chat/completions` | cURL 요청    |

## 문제 해결

<AccordionGroup>
  <Accordion title="Base URL을 변경했는데도 여전히 오류가 발생합니다">
    **가능한 원인**:

    1. **여러 구성이 존재**: 설정 파일, 환경 변수, 코드 초기화를 확인하세요
    2. **프록시 또는 미들웨어**: 일부 도구가 요청을 리디렉션할 수 있습니다
    3. **캐시 문제**: 프로그램을 재시작하거나 캐시를 삭제하세요
    4. **오타**: URL 철자를 확인하세요
  </Accordion>

  <Accordion title="Key가 유효한지 어떻게 확인하나요?">
    GravitexAI 콘솔에서 확인:

    1. [GravitexAI](https://maas.gravitex.ai)에 로그인
    2. "Tokens" 페이지로 이동
    3. Key 상태가 "Enabled"인지 확인
    4. 계정 잔액이 충분한지 확인
  </Accordion>

  <Accordion title="서드파티 도구는 어떻게 구성하나요?">
    대부분의 도구에 "Custom API" 옵션이 있습니다:

    * **API URL / Base URL**: `https://api.gravitex.ai/v1`
    * **API Key**: GravitexAI 콘솔에서 복사
    * **모델 이름**: 모델 목록 참조
  </Accordion>
</AccordionGroup>

## 잘못된 구성 vs 올바른 구성 예시

### ❌ 잘못된 구성

```python theme={null}
client = OpenAI(
    api_key="sk-gravitex-key",
    base_url="https://api.openai.com/v1"
    # ❌ OpenAI URL 사용
)
```

**결과**: OpenAI 서버가 GravitexAI의 Key를 거부합니다

### ✅ 올바른 구성

```python theme={null}
client = OpenAI(
    api_key="sk-gravitex-key",
    base_url="https://api.gravitex.ai/v1"
    # ✅ GravitexAI URL 사용
)
```

**결과**: 요청이 GravitexAI로 성공적으로 전송됩니다

## 빠른 테스트

cURL로 구성을 확인하세요:

```bash theme={null}
curl https://api.gravitex.ai/v1/models \
  -H "Authorization: Bearer sk-your-gravitex-key"
```

**예상 결과**: 사용 가능한 모델 목록 반환

```json theme={null}
{
  "data": [
    {
      "id": "gpt-4o",
      "object": "model"
    }
  ]
}
```

오류가 발생하면 다음을 확인하세요:

1. API Key가 올바르게 복사되었는지 (불필요한 공백 없음)
2. 네트워크 연결이 정상인지
3. 계정 잔액이 충분한지

<Tip>
  기억하세요: Key와 URL을 일치시키세요. GravitexAI Key는 `https://api.gravitex.ai/v1`을 사용합니다
</Tip>
