OpenRouter 사용자를 위한 빠른 시작
기본 URL과 API 키를 교체하여 몇 분 안에 OpenRouter API 호출을 우리의 무검열 엔드포인트로 마이그레이션하세요. 이 가이드는 텍스트 생성, 스트리밍, 구조화된 출력에 필요한 필수 통합을 다룹니다.
설치 및 설정
당사의 API는 표준 OpenAI SDK와 완전히 호환됩니다. OpenRouter에서 전환하려면 base_url 및 api_key 두 가지 구성 값만 업데이트하면 됩니다. 클라이언트를 https://api.openrouterapi.cc/v1로 지정하고 대시보드에서 생성한 키를 사용하십시오. 사용자 정의 헤더나 복잡한 라우팅 로직이 필요하지 않습니다. 요청할 모델 ID는 uncensored입니다.
SDK 버전이 base_url 매개변수를 지원하는지 확인하세요. 원시 HTTP 클라이언트를 사용하는 경우 대상 URL을 직접 업데이트하면 됩니다. 이 설정은 텍스트 완성 요청만 전송하는 한 기존 클라이언트 코드를 수정하지 않고 작동하게 합니다.
인증
인증은 표준 Authorization 헤더를 통해 처리됩니다. API 키를 Bearer 토큰으로 전달하세요. 키가 유효하지 않거나 만료된 경우 API는 401 오류를 반환합니다. 일부 제공업체와 달리 우리는 실패한 요청에 대해 요금을 부과하지 않습니다. 오류와 거절은 무료이므로 크레딧을 소모하지 않고 인증을 테스트할 수 있습니다.
각 계정은 동시에 하나의 활성 키만 지원합니다. 새 키를 생성하면 이전 키가 즉시 무효화됩니다. 키를 안전하게 보관하고 노출이 의심될 경우 교체하세요. 키는 가입 직후 표시되므로 페이지를 떠나기 전에 복사하세요.
기본 채팅 완료
핵심 기능은 POST /v1/chat/completions 엔드포인트입니다. 프롬프트를 메시지 목록으로 보내고 텍스트 응답을 받으세요. 이 모델은 합법적인 성인 사용에 대해 콘텐츠 거부 없이 답변하도록 조정되어 창의적, 논쟁적 또는 보안 연구 주제에 적합합니다.
model 필드를 uncensored로 설정하세요. temperature, top_p, stop 등의 매개변수를 사용하여 동작을 제어할 수 있습니다. API는 response_format을 통해 JSON 모드를 지원하고 tools을 통해 함수 호출을 지원합니다. 모든 요청은 비동기로 처리되며 모델이 완료할 때 전체 완성을 받습니다.
스트리밍 응답
요청에 stream: true을 설정하여 스트리밍을 활성화하세요. API는 부분 응답을 포함한 서버 전송 이벤트(SSE)를 반환합니다. 텍스트 청크가 생성되는 대로 수신하여 애플리케이션에서 실시간으로 표시할 수 있습니다.
토큰 사용량 정보는 스트림의 마지막 청크에서 제공됩니다. 이를 통해 개별 토큰을 모두 구문 분석하지 않고도 비용을 정확하게 추적할 수 있습니다. 스트리밍은 지연 시간이 중요한 채팅 인터페이스에 이상적입니다. 클라이언트가 SSE를 올바르게 처리하고 스트림이 종료될 때 연결을 종료하는지 확인하세요.
함수 호출
API는 tools 매개변수를 통해 함수 호출을 지원합니다. tools 배열에 함수를 정의하고 tool_choice을 auto 또는 특정 함수 이름으로 설정하세요. 함수가 트리거되면 모델이 구조화된 JSON 인수를 반환합니다.
이 기능은 LLM을 외부 API나 데이터베이스와 통합하는 데 유용합니다. 모델이 유효한 인수를 생성하는 데 의존하므로 함수 정의가 정확한지 확인하세요. API는 함수를 실행하지 않으므로 실행 로직을 애플리케이션 코드에서 처리해야 합니다.
JSON 모드
구조화된 출력이 필요한 경우 response_format: {"type": "json_object"}을 사용하세요. 이는 하류 애플리케이션에서 데이터 구문 분석에 필수적인 유효한 JSON을 반환하도록 모델을 강제합니다. JSON 모드는 단순한 데이터 추출 작업에서 함수 호출보다 종종 더 신뢰할 수 있습니다.
프롬프트가 JSON을 반환하도록 모델을 명확하게 지시하는지 확인하세요. 프롬프트가 모호하면 유효하지 않은 JSON 응답이 발생할 수 있습니다. JSON 모드는 표준 모드와 스트리밍 모드 모두에서 지원됩니다. 예측 가능하고 기계 판독 가능한 출력이 필요할 때 사용하세요.
제한, 오류 및 컨텍스트
컨텍스트 창은 프롬프트와 완료를 합쳐 100,000 토큰입니다. 최대 출력은 요청당 32,000 토큰입니다 (max_tokens이 설정되지 않은 경우 2,048). 속도 제한은 분당 300개 요청 및 키당 8개의 동시 요청입니다. 요청 본문은 8 MB로 제한됩니다.
오류는 표준 HTTP 코드를 반환합니다: 키가 유효하지 않으면 401, 크레딧이 부족하면 402, 속도 제한이 초과되면 429입니다. 크레딧은 선불이므로 402 오류는 충전이 필요함을 의미합니다. 오류와 거부는 무료이므로 비용 없이 다시 시도할 수 있습니다. 콘텐츠 제한은 미성년자가 포함된 성적인 콘텐츠를 차단합니다.
cURL
curl https://api.openrouterapi.cc/v1/chat/completions \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "uncensored",
"messages": [{"role": "user", "content": "Write a blunt product review of a cheap VPN."}]
}'Python
from openai import OpenAI
client = OpenAI(base_url="https://api.openrouterapi.cc/v1", api_key="YOUR_KEY")
resp = client.chat.completions.create(
model="uncensored",
messages=[{"role": "user", "content": "Summarise this thread without softening it."}],
)
print(resp.choices[0].message.content)Node.js
import OpenAI from "openai";
const client = new OpenAI({ baseURL: "https://api.openrouterapi.cc/v1", apiKey: process.env.API_KEY });
const resp = await client.chat.completions.create({
model: "uncensored",
messages: [{ role: "user", content: "Draft a villain monologue for my game." }],
});
console.log(resp.choices[0].message.content);스트리밍
stream = client.chat.completions.create(
model="uncensored",
messages=[{"role": "user", "content": "Tell the story in second person."}],
stream=True,
)
for chunk in stream:
if chunk.choices and chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="", flush=True)API 사양
크레딧을 구매하기 전에 확인할 수 있도록 API의 실제 한도와 기능을 한곳에 정리했습니다.
| 항목 | 내용 |
|---|---|
| 형식 | OpenAI 호환: 어떤 OpenAI SDK든 base URL과 키만 바꾸면 동작 |
| 모델 ID | uncensored |
| 인증 | Authorization: Bearer YOUR_KEY |
| 엔드포인트 | POST /v1/chat/completions · GET /v1/models |
| Base URL | https://api.openrouterapi.cc/v1 |
| 스트리밍 | 지원 — SSE, 마지막 청크에 토큰 사용량 포함 |
| 함수 호출 | 지원 — tools, tool_choice; 응답에 tool_calls (스트리밍 포함), 결과는 role: tool로 전송 |
| 파라미터 | temperature, top_p, stop, seed, presence_penalty, frequency_penalty |
| 컨텍스트 창 | 100,000 토큰 (입력 + 출력) |
| 최대 출력 | 100,000 토큰 윈도우의 남은 만큼; max_tokens는 선택 사항(별도 상한 없음) |
| JSON 모드 | response_format: {"type": "json_object"} |
| 속도 제한 | 키당 분당 300회 |
| 동시 요청 | 키당 동시 8개 |
| 응답 헤더 | X-Request-Id, X-Balance-USD, X-RateLimit-Limit-Requests, X-RateLimit-Limit-Concurrency |
| 요청 크기 | 최대 8 MB |
| 과금 | 선불 크레딧에서 실제 사용량만큼 차감, 오류·거부는 무료 |
| 보너스 | $50 이상 +5%, $100 이상 +10% |
| 무료 체험 | $0.50, 7일, 카드 불필요 · 체험 키: 동시 요청 2건, 분당 60건. 첫 충전 후 전체 한도(8건, 300건) 적용 |
| 유효기간 | 유료 크레딧은 만료되지 않으며 구독 없음 |
| 충전 | USDT (TRC20) 또는 USDC (Base), $10~$500 사이 원하는 정수 금액 |
| 가격 | 입력 100만 토큰당 $0.25 · 출력 100만 토큰당 $1.00 |
| 키 | 계정당 활성 키 1개, 새 키를 만들면 이전 키는 무효 |
| 로그인 | Google 또는 이메일과 비밀번호 |
| 콘텐츠 | 성인 콘텐츠 허용, 미성년자가 관련된 성적 콘텐츠는 거부 |
오류 코드
오류는 고정된 type을 가진 JSON으로 반환되며, 실패하거나 거부된 요청은 과금되지 않습니다.
| 코드 | 유형 | 의미 |
|---|---|---|
400 | bad_request | 잘못된 JSON, 빈 메시지, 잘못된 파라미터 또는 컨텍스트 초과 |
401 | missing_key · invalid_key · key_revoked | 키 없음·잘못됨·새 키로 교체됨 |
402 | no_credit | 잔액 없음 — 충전하면 즉시 재개 |
403 | content_blocked | 미성년자 관련 성적 콘텐츠 — 거부, 과금 없음 |
404 | not_found | 알 수 없는 엔드포인트 |
413 | request_too_large | 본문 8 MB 초과 |
429 | rate_limited · concurrency | 분당 300회 또는 동시 8개 초과 — 잠시 후 재시도 |
503 | upstream_busy | 모델 혼잡 — 몇 초 후 재시도 |
질문과 답변
이것이 공식 OpenRouter API인가요?
아니요, 이는 독립적인 서비스입니다. 우리는 OpenRouter 기본 URL 구조와 호환되는 단일 무검열 모델을 제공합니다. OpenRouter의 집계 모델이나 라우팅 로직을 제공하지 않습니다.
API는 어떻게 결제하나요?
크립토로만 결제 가능합니다: USDT(TRC20) 또는 USDC(Base). $10부터 $500까지 전액 충전할 수 있습니다. 신용카드나 PayPal는 지원되지 않습니다.
프롬프트가 학습에 사용되나요?
아니요, 귀하의 프롬프트는 학습에 사용되지 않습니다. 계정 생성에 이메일 주소만 필요하며, 모델 개선을 위해 데이터를 저장하거나 사용하지 않습니다.
키는 양식 하나만 작성하면 받을 수 있습니다
계정을 생성하고 키를 복사한 후 기본 URL을 변경하세요. 이것이 전체 설정입니다.