ベース URL と認証
すべてのリクエストに専用のベース URL を使用してください。認証はサインアップ時に生成された単一の API キーに依存します。キーを Authorization ヘッダーに Bearer トークンとして含めてください。キーは作成直後に表示されます。各アカウントにはアクティブなキーが 1 つあり、新しいキーを生成すると古いキーが置き換えられます。
ベース URL は次の通りです:https://api.nsfwchat.cc/v1。追加のルーティングやプロキシレイヤーは必要ありません。この設定は、ベース URL と API キーを調整することで、あらゆる OpenAI 互換クライアントで動作します。
チャット補完
テキストプロンプトを POST /v1/chat/completions エンドポイントに送信します。モデル ID は uncensored です。このエンドポイントは標準的なチャットメッセージを受け取り、生成されたテキストを返します。埋め込み、画像、音声はサポートしていません。このモデルは、法的な大人向けコンテンツに対して無検閲な応答を行うように調整されています。
ペイロードにモデル ID とメッセージ履歴を含めてください。API はテキスト入力を処理し、テキスト出力を直接返します。
curl https://api.nsfwchat.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 SDK
統合には公式の OpenAI Python SDK を使用してください。base_url を API エンドポイントに設定し、API キーを提供してください。SDK はシリアライゼーションとエラー解析を自動的に処理します。temperature や top_p などのパラメータを設定して、出力のランダム性を制御します。
キーとベース URL でクライアントを初期化します。モデル ID とメッセージを指定して chat.completions.create() を呼び出します。このアプローチは、単純なテキスト生成タスクのボイラープレートコードを削減します。
from openai import OpenAI
client = OpenAI(base_url="https://api.nsfwchat.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 SDK
Node.js OpenAI SDK は Python 版と同じように動作します。カスタムベース URL と API キーでクライアントを設定します。chat.completions.create メソッドを使用してリクエストを送信します。
この方法はサーバー側の統合に最適です。SDK は接続プーリングとリトライを管理します。モデルを uncensored に設定して、無検閲な応答を確保します。メッセージをロールとコンテンツのオブジェクトの配列として渡します。
import OpenAI from "openai";
const client = new OpenAI({ baseURL: "https://api.nsfwchat.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: true を設定してストリーミングを有効にします。API はサーバー送信イベント(SSE)を返します。各チャンクには部分的なテキストが含まれます。トークン使用の詳細は最終チャンクに表示されます。
ストリーミングは長い出力の知覚遅延を削減します。完全なレスポンスを再構築するために、各チャンクを順次処理します。この方法はリアルタイムの 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)
レート制限とエラー
サービス停止を避けるため、レート制限を守ってください。APIは1分あたり300リクエスト、キーあたり8つの同時リクエストを許可します。最大リクエストボディサイズは8 MBです。401ステータスは、無効または欠落したAPIキーを示します。429ステータスは、レート制限を超えたことを示します。
コンテキストウィンドウは、プロンプトと補完を合わせて100,000トークンです。この制限を超えると、リクエストは拒否されます。切り捨ては行われません。入力がウィンドウ内に収まるようにしてください。402ステータスは、前払いクレジットの残高不足を示します。エラーや拒否はクレジットを消費しません。
技術仕様
購入前に確認できるよう、API の実際の制限と機能をすべてまとめました。
| 項目 | 内容 |
|---|---|
| 形式 | OpenAI 互換:どの OpenAI SDK でも base URL とキーを変えるだけで動作 |
| モデル ID | uncensored |
| 認証 | Authorization: Bearer YOUR_KEY |
| Base URL | https://api.nsfwchat.cc/v1 |
| エンドポイント | POST /v1/chat/completions · GET /v1/models |
| JSON モード | response_format: {"type": "json_object"} |
| コンテキスト長 | 100,000 トークン(入力+出力) |
| ストリーミング | 対応 — SSE、最後のチャンクにトークン使用量 |
| パラメータ | temperature、top_p、stop、seed、presence_penalty、frequency_penalty |
| 関数呼び出し | 対応 — tools、tool_choice。応答に tool_calls(ストリーミングでも)、結果は role: tool で返送 |
| 最大出力 | 100,000 トークンのウィンドウの残りまで。max_tokens は任意(個別の上限なし) |
| リクエストサイズ | 最大 8 MB |
| レスポンスヘッダー | X-Request-Id、X-Balance-USD、X-RateLimit-Limit-Requests、X-RateLimit-Limit-Concurrency |
| 同時実行 | キーごとに同時 8 リクエストまで |
| レート制限 | キーごとに毎分 300 リクエスト |
| 有効期限 | 購入クレジットは失効なし、サブスクなし |
| 課金 | 前払いクレジットから実使用量で課金。エラーと拒否は無料 |
| チャージ | USDT(TRC20)または USDC(Base)、$10〜$500 の任意の整数額 |
| 無料トライアル | $0.50、7 日間、カード不要 · トライアルキー: 同時2件、毎分60件。初回チャージ後に上限が8件・300件へ拡大 |
| ボーナス | $50 以上で +5%、$100 以上で +10% |
| 料金 | 入力 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 | モデル混雑 — 数秒後に再試行 |
質問と回答
API は関数呼び出しに対応していますか?
はい、API は <code>tools</code> および <code>tool_choice</code> パラメータを介して関数呼び出しをサポートしています。リクエストでツールを定義すると、モデルはツール使用のために構造化された JSON を返します。この機能は標準的な OpenAI 互換クライアントで動作します。
コンテキストウィンドウのサイズは?
コンテキストウィンドウは100,000トークンで、プロンプトと補完の両方を合計したものです。1回あたりのリクエストで生成できる最大トークン数は32,000で、<code>max_tokens</code>が設定されていない場合は2,048です。このウィンドウを超えるリクエストは拒否されます。
エラーはどのように処理されますか?
エラーレスポンスにはステータスコードとメッセージが含まれます。<code>401</code> コードは API キーが無効であることを意味します。<code>429</code> コードはレート制限に達したことを意味します。<code>402</code> コードは前払い残高が不足していることを示します。エラーはトークンクレジットを消費しません。