OpenRouter NSFWユーザー向けクイックスタート
ベースURLとAPIキーを更新することで、既存のコードベースに当社の無検閲LLM APIを統合します。このガイドでは、標準的なOpenAI互換エンドポイント、ストリーミング、および直接開発者向けの制約処理について説明します。
ベースURLと認証
現在のプロバイダーのベースURLを https://api.openrouternsfw.com/v1 に置き換えます。認証は標準の Authorization: Bearer <key> ヘッダーを使用します。Googleまたはメールで登録するとすぐに、APIキーを取得 ページでキーを取得できます。電話番号は必要なく、キーは1回だけ表示されるため、ページを離れる前にコピーしてください。
当社のサービスは独立したAPIであり、他のベンダーのモデルを再販売するものではありません。リクエストで送信するモデル識別子は uncensored で、当社のサーバー上で実行されます。法的な成人用途のためにコンテンツ拒否なしで回答するようにチューニングされていますが、GPT、Claude、またはその他の特定のベンダーモデルではありません。
クライアントライブラリが新しいベースURLを使用するように構成されていることを確認してください。すべてのリクエストには、有効なAPIキーをヘッダーに含める必要があります。キーがない場合または無効な場合、サーバーは401エラーを返します。前払いクレジットがない場合、402エラーが発生します。これらは認証または支払いの問題を示す標準的なHTTPステータスコードであり、サーバーエラーではありません。
チャット完了エンドポイント
コア機能は POST /v1/chat/completions エンドポイントを通じて提供されます。このエンドポイントは、モデル名、メッセージ配列、およびオプションのパラメータを含むJSONボディを受け付けます。生成されたテキスト、トークン使用統計、終了理由を含むJSONオブジェクトを返します。この構造は、公式のOpenAI SDKおよびほとんどのOpenAI互換クライアントライブラリと互換性があります。
SDKの使用を好む場合、カスタムHTTPクライアントを記述する必要はありません。ただし、ベースURLを指すように構成を更新する必要があります。次の例は、cURLを使用した標準的な完了リクエストを示しています。このリクエストは、無検閲モデルにプロンプトを送信し、テキスト応答を期待します。
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を使用すると、統合プロセスが簡素化されます。正しいベース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版と同様に動作します。ベースURLとAPIキーでクライアントを構成し、チャット完了メソッドを呼び出します。このアプローチは、非同期でテキストを生成する必要があるサーバーサイドアプリケーションやバックエンドサービスに最適です。
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応答の代わりに、一連のサーバー送信イベント(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キーは1分あたり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、またはその他のベンダーのモデルではありません。ベンダー間でルーティングせず、単一の無検閲エンドポイントを提供します。
レート制限を超えた場合はどうなりますか?
1分あたり300リクエストまたはキーあたり8つの同時リクエストを超えると、サーバーは429ステータスコードを返します。これは、指定された時間枠内で送信されたリクエストが多すぎことを示す標準的なHTTPステータスコードです。これらのエラーを処理するために、クライアントにバックオフロジックを実装する必要があります。
APIは関数呼び出しとJSONモードに対応していますか?
はい、APIは関数呼び出し(ツール、tool_choice)とJSONモード(response_format json_object)をサポートしています。また、出力を制御するためにtemperature、top_p、stop、seed、presence_penalty、frequency_penaltyなどのパラメータを指定することもできます。
キーはフォーム 1 つで手に入ります
アカウントを作成し、キーをコピーし、ベースURLを変更します。これでセットアップは完了です。
API キーを取得