OpenRouter NSFW 사용자를 위한 빠른 시작
Base URL과 API 키를 업데이트하여 기존 코드베이스에 무검열 LLM API를 통합하세요. 이 가이드는 표준 OpenAI 호환 엔드포인트, 스트리밍 및 직접 개발자 사용을 위한 제약 조건 처리를 다룹니다.
베이스 URL 및 인증
현재 제공업체의 base URL을 https://api.openrouternsfw.com/v1로 바꿉니다. 인증은 표준 Authorization: Bearer <key> 헤더를 사용합니다. API 키 받기 페이지에서 Google 또는 이메일로 가입한 후 즉시 키를 얻을 수 있습니다. 전화번호가 필요하지 않으며 키는 한 번만 표시되므로 페이지를 떠나기 전에 복사하세요.
저희 서비스는 타사 모델의 재판매사가 아닌 독립적인 API입니다. 요청에 포함하는 모델 식별자는 uncensored이며, 이는 저희 서버에서 실행됩니다. 합법적인 성인 용도로 콘텐츠 필터링 없이 답변하도록 조정되었지만, GPT, Claude 또는 기타 특정 벤더 모델이 아닙니다.
클라이언트 라이브러리가 새 base URL을 사용하도록 구성했는지 확인하세요. 모든 요청에는 유효한 API 키가 헤더에 포함되어야 합니다. 키가 없거나 유효하지 않으면 서버가 401 오류를 반환합니다. 선불 크레딧이 없으면 402 오류가 발생합니다. 이는 서버 오류가 아닌 인증 또는 결제 문제를 나타내는 표준 HTTP 상태 코드입니다.
채팅 완료 엔드포인트
핵심 기능은 POST /v1/chat/completions 엔드포인트를 통해 제공됩니다. 이 엔드포인트는 모델 이름, 메시지 배열 및 선택적 매개변수를 포함하는 JSON 본문을 받습니다. 생성된 텍스트, 토큰 사용 통계 및 종료 사유가 포함된 JSON 객체를 반환합니다. 이 구조는 공식 OpenAI SDK 및 대부분의 OpenAI 호환 클라이언트 라이브러리와 호환됩니다.
SDK를 사용하려면 사용자 정의 HTTP 클라이언트를 작성할 필요가 없습니다. 그러나 구성을 업데이트하여 base URL을 가리켜야 합니다. 다음 예제는 cURL을 사용한 표준 completion 요청을 보여줍니다. 이 요청은 무검열 모델에 프롬프트를 보내고 텍스트 응답을 기대합니다.
curl https://api.openrouternsfw.com/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."}]
}'이 API는 텍스트만 제공합니다. 임베딩, 이미지, 오디오 또는 비디오 생성 엔드포인트가 없습니다. 애플리케이션에 다중 모달 입력 또는 출력이 필요한 경우 별도로 처리해야 합니다. 우리 서비스는 무검열 모델을 사용한 고품질 텍스트 생성에 전념합니다.
Python SDK 통합
Python SDK를 사용하면 통합 프로세스가 단순화됩니다. 올바른 base URL과 API 키로 클라이언트를 초기화하세요. 라이브러리가 HTTP 요청 및 JSON 파싱을 처리합니다. 모델 ID를 uncensored로 지정하여 우리 특정 모델을 사용하고 있는지 확인하세요.
from openai import OpenAI
client = OpenAI(base_url="https://api.openrouternsfw.com/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)이 코드 스니펫은 메시지를 보내고 응답을 가져오는 방법을 보여줍니다. 클라이언트는 연결 및 오류 보고를 자동으로 처리합니다. 서버가 오류를 반환하면 SDK가 예외를 발생시킵니다. 더 나은 사용자 경험을 위해 애플리케이션 로직에서 이러한 예외를 처리해야 합니다.
Python SDK는 하나의 옵션일 뿐입니다. HTTP 요청을 지원하는 모든 언어를 사용할 수 있습니다. 엔드포인트 구조는 선택한 클라이언트에 관계없이 동일하게 유지됩니다. 이 유연성은 상당한 코드 변경 없이 기존 워크플로우에 무검열 모델을 통합할 수 있게 합니다.
Node SDK 사용법
Node SDK는 Python 버전과 유사하게 작동합니다. base URL과 API 키로 클라이언트를 구성한 다음 chat completions 메서드를 호출하세요. 이 접근 방식은 비동기적으로 텍스트를 생성해야 하는 서버 측 애플리케이션 또는 백엔드 서비스에 이상적입니다.
import OpenAI from "openai";
const client = new OpenAI({ baseURL: "https://api.openrouternsfw.com/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);Node.js 개발자는 이 API를 기존 프로젝트에 쉽게 통합할 수 있습니다. SDK는 JSON 데이터의 직렬화 및 역직렬화를 처리합니다. 출력의 무작위성을 제어하기 위해 temperature 또는 top_p과 같은 추가 매개변수를 지정할 수도 있습니다.
요청의 비동기적 특성을 적절히 처리하세요. async/await 또는 Promise 체인을 사용하여 응답 데이터를 관리하세요. 이렇게 하면 모델이 텍스트를 생성하는 동안 애플리케이션이 응답 상태를 유지합니다. Node SDK는 확장 가능한 텍스트 생성 서비스를 구축하기 위한 신뢰할 수 있는 선택입니다.
스트리밍 응답
요청에서 stream 매개변수를 true로 설정하여 스트리밍을 활성화하세요. 서버는 단일 JSON 응답 대신 일련의 Server-Sent Events(SSE)를 보냅니다. 각 이벤트에는 생성된 텍스트의 부분 청크가 포함됩니다.
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 키는 분당 300개 요청 및 8개 동시 요청으로 제한됩니다. 요청 본문 크기는 8 MB로 제한됩니다. 이러한 한도를 초과하면 서버가 429 상태 코드를 반환합니다. 이는 주어진 시간 창 내에 너무 많은 요청을 보냈음을 나타내는 표준 HTTP 상태 코드입니다. 이러한 오류를 우아하게 처리하기 위해 클라이언트에서 지수 백오프를 구현해야 합니다.
컨텍스트 창은 결합된 프롬프트와 응답에 대해 최대 100,000개의 토큰을 지원합니다. 별도의 출력 제한은 없습니다. max_tokens 매개변수를 지정하지 않으면 응답이 창의 끝까지 이어질 수 있습니다. max_tokens을 더 낮은 값으로 설정하여 출력 길이를 제한할 수 있습니다.
선불 크레딧을 효과적으로 관리하려면 토큰 사용량을 모니터링하세요. 오류 및 거부는 토큰을 소비하지 않으므로 실패한 요청에 대해 요금이 청구되지 않습니다. 이를 통해 성공적인 텍스트 생성에만 지불하면 됩니다. 서비스 중단 없이 속도 제한을 주의 깊게 모니터링하세요.
기술 사양
크레딧을 구매하기 전에 확인할 수 있도록 API의 실제 한도와 기능을 한곳에 정리했습니다.
| 항목 | 내용 |
|---|---|
| 형식 | OpenAI 호환: 어떤 OpenAI SDK든 base URL과 키만 바꾸면 동작 |
| 인증 | Authorization: Bearer YOUR_KEY |
| 엔드포인트 | POST /v1/chat/completions · GET /v1/models |
| Base URL | https://api.openrouternsfw.com/v1 |
| 모델 ID | uncensored |
| JSON 모드 | response_format: {"type": "json_object"} |
| 최대 출력 | 100,000 토큰 윈도우의 남은 만큼; max_tokens는 선택 사항(별도 상한 없음) |
| 컨텍스트 창 | 100,000 토큰 (입력 + 출력) |
| 파라미터 | temperature, top_p, stop, seed, presence_penalty, frequency_penalty |
| 함수 호출 | 지원 — tools, tool_choice; 응답에 tool_calls (스트리밍 포함), 결과는 role: tool로 전송 |
| 스트리밍 | 지원 — SSE, 마지막 청크에 토큰 사용량 포함 |
| 응답 헤더 | X-Request-Id, X-Balance-USD, X-RateLimit-Limit-Requests, X-RateLimit-Limit-Concurrency |
| 요청 크기 | 최대 8 MB |
| 동시 요청 | 키당 동시 8개 |
| 속도 제한 | 키당 분당 300회 |
| 충전 | USDT (TRC20) 또는 USDC (Base), $20~$500 사이 원하는 정수 금액 |
| 유효기간 | 유료 크레딧은 만료되지 않으며 구독 없음 |
| 과금 | 선불 크레딧에서 실제 사용량만큼 차감, 오류·거부는 무료 |
| 무료 체험 | $0.50, 7일, 카드 불필요 · 체험 키: 동시 요청 2건, 분당 60건. 첫 충전 후 전체 한도(8건, 300건) 적용 |
| 보너스 | $50 이상 +5%, $100 이상 +10%, $200 이상 +15% |
| 가격 | 입력 100만 토큰당 $0.15 · 출력 100만 토큰당 $0.50 |
| 콘텐츠 | 성인 콘텐츠 허용, 미성년자가 관련된 성적 콘텐츠는 거부 |
| 로그인 | Google 또는 이메일과 비밀번호 |
| 키 | 계정당 활성 키 1개, 새 키를 만들면 이전 키는 무효 |
오류 코드
오류는 고정된 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 | 모델 혼잡 — 몇 초 후 재시도 |
질문과 답변
무검열 모델은 다른 벤더와 어떻게 다른가요?
우리 모델은 자체 서버에서 실행되는 오픈 웨이트 모델로, 합법적인 성인 사용에 맞게 콘텐츠 거부 없이 답변하도록 조정되었습니다. GPT, Claude, Gemini, Grok, DeepSeek, Qwen, Llama 또는 기타 벤더의 모델이 아닙니다. 우리는 벤더 간 라우팅을 하지 않으며 단일 무검열 엔드포인트를 제공합니다.
속도 제한을 초과하면 어떻게 되나요?
분당 300개 요청 또는 키당 8개 동시 요청을 초과하면 서버가 429 상태 코드를 반환합니다. 이는 주어진 시간 창 내에 너무 많은 요청을 보냈음을 나타내는 표준 HTTP 상태 코드입니다. 클라이언트에서 이러한 오류를 처리하기 위해 백오프 로직을 구현해야 합니다.
API는 함수 호출과 JSON 모드를 지원하나요?
네, API는 함수 호출(tools, tool_choice) 및 JSON 모드(response_format json_object)를 지원합니다. 또한 출력 제어 위해 temperature, top_p, stop, seed, presence_penalty, frequency_penalty와 같은 매개변수를 지정할 수 있습니다.
키는 양식 하나만 작성하면 받을 수 있습니다
계정을 생성하고 키를 복사한 후 기본 URL을 변경하세요. 설정은 이것으로 끝입니다.
API 키 받기