---
title: "인증"
description: "Twexapi의 Bearer 토큰 인증 — Cursor, Claude Code, GitHub Copilot, ChatGPT, AI 코드 작성 도구와 함께 사용하세요. 몇 분 만에 시작하세요."
---

## **API 인증**

Twexapi는 모든 API 요청을 보호하기 위해 Bearer 토큰 인증을 사용합니다. 각 요청은 Authorization 헤더에 유효한 API 키를 포함하여 우리의 엔드포인트에 접근할 수 있습니다.

## API 키 얻기

다음 단계를 따라 API 키를 얻으세요:

1. [Twexapi 대시보드](https://twexapi.io/dashboard)에 로그인하세요
2. 대시보드 홈페이지에 명확하게 표시된 독특한 API 키가 있습니다
3. 키를 안전하게 복사하세요 - 모든 API 요청에 사용할 필요가 있습니다

:::tip
API 키를 안전하게 관리하고, 클라이언트 측 코드나 공개 리포지토리에 노출하지 마세요.
:::

---

## API 키 사용

API 키를 Bearer 토큰 형식으로 사용하여 각 요청의 `Authorization` 헤더에 포함하세요:

**필수 헤더:**

```bash
Authorization: Bearer YOUR_API_KEY
```

---

## 환경 변수

SDK와 CLI는 동일한 인증 정보를 환경 변수에서 읽습니다:

```bash
export X_API_SCRAPER_KEY="YOUR_API_KEY"
```

원시 HTTP 요청에서는 `Authorization: Bearer YOUR_API_KEY`를 사용합니다. 생성된 SDK는 `bearer_auth` 또는 유사한 옵션을 받아들이며, 각 [SDK 페이지](/sdks)를 참조하세요.

---

## CLI로 인증

공식 CLI를 설치하고 API 키를 명명된 앱 프로필로 저장하여 시ェ일러 히스토리에 비밀을 담지 않고 명령을 실행하세요:

```bash
npm install -g @twexapi-dev/x-api-scraper-cli

export X_API_SCRAPER_KEY="YOUR_API_KEY"

x-api-scraper auth apps add --name prod --api-key "YOUR_API_KEY"
x-api-scraper auth apps use prod
x-api-scraper --app prod about elonmusk
```

전체 명령어 참조: [CLI](/sdks/cli).

---

## MCP로 인증

AI 에이전트를 `https://api.twexapi.io/mcp`에 API 키로 연결하세요:

```json
{
  "headers": {
    "x-api-key": "YOUR_API_KEY"
  }
}
```

일부 클라이언트는 `Authorization: Bearer YOUR_API_KEY`를 대신 받아들입니다. Cursor, Claude Code, Codex CLI, 그리고 다른 클라이언트 설정에 대해 [MCP 서버](/mcp/overview)를 참조하세요.

---

## AI 코드 작성 도구로 인증

**Cursor**, **Claude Code**, **GitHub Copilot**, **ChatGPT**, **Cline**, **Windsurf**, **Codex**, **Gemini CLI**, **Continue**, **Roo Code**, 그리고 다른 AI 비서를 인식하도록 TwexAPI 스킬을 설치하세요. 설정 가이드와 CLI 옵션은 [통합 허브](https://twexapi.io/integrations)에 있습니다.

:::tip
[대시보드](https://twexapi.io/dashboard)에서 API 키를 복사하고, `X_API_SCRAPER_KEY` 또는 `.env` 파일에 저장한 후, 에이전트가 `Authorization: Bearer YOUR_API_KEY`를 연결하는 스킬을 설정하세요 — 스킬은 cURL, Python, JavaScript, CLI를 통해 인증 패턴을 다루어줍니다.
:::

```bash
npx skills add twexapi-dev/x-api-scraper-cli
```

Cursor, GitHub Copilot, Claude Code, ChatGPT, Continue, Roo Code, 또는 지원되는 다른 에이전트에서 "내 `.env` 파일에서 Twexapi 인증을 설정하다", "이 API 클라이언트에 Bearer 인증을 추가하다", 또는 "내 API 키로 테스트 요청을 생성하다"와 같은 명령을 시도하세요.

---

## 작업 작성 및 BYOC (Bring Your Own Cookie)

모든 공개 읽기 엔드포인트 (검색, 사용자 프로필, 트윗, 팔로워, 스레드, 트렌드)는 **쿠키나 트위터 로그인 정보가 필요하지 않지만**, 작성 작업은 **Bring Your Own Cookie (BYOC)** 모델을 사용합니다.

### 지원되는 작성 작업
- 트윗 및 스레드 포스트 생성 (`POST /twitter/tweets/create`, `POST /v3/twitter/tweets/create_thread`)
- 좋아요 및 리트윗 (`POST /twitter/tweets/{tweet_id}/like`, `POST /twitter/tweets/{tweet_id}/retweet`)
- 직접 메시지 전송 (`POST /v3/twitter/send_dm`)
- 계정 팔로우 (`POST /twitter/user/follow`)

### 위임된 실행 및 제로-리테이션 보안

<CardGroup cols={2}>
  <Card title="사용자 소유 인증" icon="user-check">
    TwexAPI는 사용자의 `auth_token` 또는 쿠키 문자열을 전달합니다. TwexAPI는 사용자 대신 상태无关한 실행 게이트웨이로 strictly 행동합니다.
  </Card>
  <Card title="제로 인증 보관" icon="shield-halved">
    세션 토큰은 해당 HTTP 요청 실행 중에 strict하게 서버 메모리에 보관됩니다. 디스크나 데이터베이스에 저장되지 않습니다.
  </Card>
  <Card title="전체 법적 및 컨텐츠 보호" icon="scale">
    작업은 명시적으로 인증된 계정 자격 증명으로 실행되므로, 팀은 전체 저작권 소유를 유지하고, 제3자 위장 책임을 제거할 수 있습니다.
  </Card>
  <Card title="공유 계정 오염 없음" icon="lock">
    TwexAPI는 작성 작업에 대한 풀러드, 재활용된, 또는 공유된 랜더 계정을 사용하지 않습니다. 작업은 사용자의 계정에 완전히 고립됩니다.
  </Card>
</CardGroup>

### 작성 요청 인증 방법

`Authorization: Bearer YOUR_API_KEY` 헤더와 함께 사용자 계정의 `auth_token` 또는 쿠키 문자열을 요청 본문에 직접 제공하세요:

```bash
curl -X POST "https://api.twexapi.io/twitter/tweets/create" \
  -H "Authorization: Bearer YOUR_TWEXAPI_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "tweet_text": "Hello world from an automated pipeline!",
    "cookie": "auth_token=YOUR_TWITTER_AUTH_TOKEN; ct0=YOUR_CT0_TOKEN"
  }'
```

:::tip auth_token 추출
사용자 계정의 `auth_token`을 얻으려면 브라우저의 개발자 도구(`F12`)를 열고, **Application > Storage > Cookies > https://x.com**로 이동하여 `auth_token` 쿠키의 값을 복사하세요.
:::

---

## 구현 예제

다음은 다양한 프로그래밍 언어에서 요청을 인증하는 실제 예제입니다:

:::note
대시보드에서 실제 API 키를 대체하세요. 모든 예제는 사용자 정보를 가져오기 위해 사용됩니다.
:::

### cURL

테스트 및 빠른 API 탐색에 적합합니다:

```bash
curl --request GET \
  --url 'https://api.twexapi.io/twitter/users?usernames=elonmusk' \
  --header 'Authorization: Bearer YOUR_API_KEY' \
  --header 'Content-Type: application/json'
```

### Python

인기 있는 `requests` 라이브러리를 사용합니다:

```python
import requests

# API 엔드포인트 및 매개변수
url = "https://api.twexapi.io/twitter/users"
params = {"usernames": "elonmusk"}

# 인증 헤더
headers = {
    "Authorization": "Bearer YOUR_API_KEY",
    "Content-Type": "application/json"
}

# 요청을 보냅니다
response = requests.get(url, headers=headers, params=params)

# 응답을 처리합니다
if response.status_code == 200:
    data = response.json()
    print(data)
else:
    print(f"Error: {response.status_code} - {response.text}")
```

### JavaScript (Node.js/Browser)

모던 fetch API 구현:

```javascript
const fetchUserData = async () => {
  const options = {
    method: 'GET',
    headers: {
      'Authorization': 'Bearer YOUR_API_KEY',
      'Content-Type': 'application/json'
    }
  };

  try {
    const response = await fetch(
      'https://api.twexapi.io/twitter/users?usernames=elonmusk', 
      options
    );
    
    if (!response.ok) {
      throw new Error(`HTTP error! status: ${response.status}`);
    }
    
    const data = await response.json();
    console.log(data);
  } catch (error) {
    console.error('Request failed:', error);
  }
};

fetchUserData();
```

### Java

Unirest를 사용하여 간소화된 HTTP 요청:

```java
import kong.unirest.HttpResponse;
import kong.unirest.Unirest;

public class TwitterApiExample {
    public static void main(String[] args) {
        try {
            HttpResponse<String> response = Unirest
                .get("https://api.twexapi.io/twitter/users?usernames=elonmusk")
                .header("Authorization", "Bearer YOUR_API_KEY")
                .header("Content-Type", "application/json")
                .asString();
            
            if (response.getStatus() == 200) {
                System.out.println(response.getBody());
            } else {
                System.err.println("Error: " + response.getStatus() + " - " + response.getBody());
            }
        } catch (Exception e) {
            System.err.println("Request failed: " + e.getMessage());
        }
    }
}
```

## **최고의 관행 및 다음 단계**

- **환경 변수**: API 키를 `X_API_SCRAPER_KEY` 또는 시크릿 관리자에 저장하고, 코드에 직접 코드를 작성하지 마세요
- **투명한 요금제**: [가격 및 요금 지침](/guides/pricing)에서 요금을 검토하세요
- **에러 복구**: `4xx`/`5xx` 응답을 처리 — [에러 처리](/guides/error-handling)를 참조하세요
- **速率 제한**: `429`에 대처하기 위해 백오프 — [速率 제한](/guides/rate-limits)를 참조하세요
- **제로 쿠키 공개 읽기**: [서버 사이드 스크레이퍼 vs TwexAPI](/comparison/scraper-vs-api)와 [Nitter 대안](/comparison/nitter-alternatives)에서 공개 읽기가 쿠키가 필요하지 않는 이유를 이해하세요
- **아키텍처 평가**: TwexAPI와 공식 X API(자원별 대비 요청별 요금제)를 비교하세요 — [공식 X API 비교](/comparison/official-x-api)
- **HTTPS 만 사용**: 모든 요청은 HTTPS를 사용하여 보안을 유지해야 합니다
