OpenRouter APIドキュメント
標準的な OpenAI 互換インターフェースを使用して、アプリケーションを当社の uncensored LLM に接続します。このガイドでは、認証、リクエスト形式、ストリーミングを解説し、迅速な統合をサポートします。
クイックスタート: Python で接続
公式 SDK をインストールし、ベース URL を当社のものに向けてください。
当社のAPIは標準のOpenAIインターフェースのように動作しますが、単一のuncensoredモデルにルーティングします。このアプローチはプロキシの複雑さを排除しながら、コードのポータビリティを維持します。
- pip経由でライブラリをインストール。
- 環境にAPIキーを設定してください
- エンドポイントのベースURLを定義します。
from openai import OpenAI
client = OpenAI(base_url="https://api.apiopenrouter.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)プレースホルダーキーを自分の認証情報に置き換えてください。単純なプロンプトや複雑な構造化データを送信できます。
認証とキー
ダッシュボードでキーを生成し、Authorizationヘッダーに渡します。
各アカウントは同時に1つのアクティブなキーをサポートします。新しいキーを作成すると、古いキーはすぐに使用できなくなります。これにより、複雑なローテーションロジックを必要とせずにセキュリティ管理が簡素化されます。
curl https://api.apiopenrouter.com/v1/chat/completions \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "uncensored",
"messages": [{"role": "user", "content": "List the top 5 dependencies for a Go web server"}]
}'上記のリクエストは Bearer スキームを使用しています。キーが「 sk- 余分な空白を含みません。
チャット完了エンドポイント
にメッセージを送信 /v1/chat/completions 標準的なJSON形式のエンドポイント。
モデルは user および assistant ロール。temperature、top-p、停止シーケンスを構成して出力スタイルを制御できます。ストリーミングが有効な場合、レスポンスは最終チャンクでトークン使用量を返します。
import OpenAI from "openai";
const client = new OpenAI({ baseURL: "https://api.apiopenrouter.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);設定 max_tokens 出力長を制御します。省略した場合、デフォルトは2,048トークンです。このモデルは1リクエストあたり最大16,000トークンまでサポートしています。
ストリーミングレスポンス
streamをtrueに設定してストリーミングを有効にする stream: true リクエストボディに記述します。
トークン使用量はストリームの最後のチャンクでのみ表示されます。これにより、正確な課金データを維持しながらリアルタイムのUI更新が可能です。ストリーミング中のエラーでも、課金対象トークンの使用量は報告されます。
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)部分的なレスポンスを適切に処理してください。モデルの生成完了またはコンテキスト制限到達時にストリームは正常に閉じます。
Function Calling & JSON Mode
使用 response_format: {type: "json_object"} 厳密なJSON出力用。
でツールを定義します tools 配列と設定 tool_choice 関数呼び出しを強制します。モデルはプログラム処理に適した構造化データを返します。これは当社のuncensored(制限なし)ウェイトと信頼性高く連携します。
curl https://api.apiopenrouter.com/v1/chat/completions \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "uncensored",
"messages": [{"role": "user", "content": "List the top 5 dependencies for a Go web server"}]
}'関数呼び出しとストリーミングを組み合わせることで、インタラクティブな体験を実現します。アプリケーションロジックに渡す前にJSON出力を検証します。
制限とクォータ
キーごとの制限に対して使用状況を監視して、中断を避けてください。
各キーは1分あたり300リクエスト、同時に8リクエストまで処理可能です。リクエストボディのサイズ制限は8 MBです。これらの制限を超えるとAPIは429ステータスコードを返します。認証エラーは401、残高不足は402を返します。
curl https://api.apiopenrouter.com/v1/chat/completions \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "uncensored",
"messages": [{"role": "user", "content": "List the top 5 dependencies for a Go web server"}]
}'コンテキストウィンドウは合計100,000トークンです。エラーはクレジットを消費しません。軽微なコンテンツ違反による拒否も無料です。
よくある質問
openrouter APIは標準的なOpenAIとどう異なりますか?
当社のAPIは、法的な成人向けおよびクリエイティブなコンテンツに対して拒否がないよう最適化された単一のアンセンサードモデルを採用しています。OpenAIと同じリクエストおよびレスポンス構造を維持しているため、コードを変更せずにエンドポイントのみを置き換えることができます。
クレジットが不足した場合どうなりますか?
プリペイド残高が0になると402エラーが発生します。クレジットは期限切れにならないため、いつでも暗号通貨でチャージできます。エラーと拒否は残高を消費しません。
複数のキーを異なるプロジェクトに使用できますか?
各アカウントは1つのアクティブなキーをサポートします。新しいキーを作成すると、以前のキーは自動的に無効化されます。請求履歴を失うことなく、ダッシュボードから新しいキーを瞬時に生成できます。