Character AI API: クライアントを3行で切り替え
チャットボットを無検閲 LLM に接続。OpenAI 互換 API で数分で設定完了。ガイドではセットアップ、基本的なリクエスト、ストリーミングをゼロ構成の悩みなしで解説します。
https://api.characteraiapi.com/v1
前提条件
コードを書く前に、characteraiapi.comでアクティブなアカウントが必要です。APIキーを取得ページにアクセスし、メールアドレスとパスワードのみでサインアップしてください。開始時にクレジットカードは不要で、新しいアカウントには7日間有効な$0.50の無料トライアルクレジットが付与されます。登録後、APIキーが即座に表示されます。エンドポイントへのすべてのリクエストを認証するために、このキーを安全に保管してください。開発環境には対応する言語SDKがインストールされている必要があります。character ai apiエンドポイントは標準的なOpenAIパラメータを受け付けるため、既存のOpenAI互換クライアントは最小限の変更で動作します。
SDKのインストール
Pythonプロジェクトでは、pipを使用して公式のOpenAIパッケージをインストールしてください。このライブラリはJSONシリアライゼーションとHTTPリクエストを自動的に処理します。Node.jsアプリケーションでは、npmを使用してopenaiパッケージを追加してください。両方のライブラリは、このガイドの後半で説明するストリーミングとツール呼び出しの機能に対応しています。リアルタイムのトークンストリーミングのためにServer-Sent Events (SSE)をサポートする最新のSDKバージョンを使用してください。SDKの代わりにカスタムHTTPクライアントを使用する場合は、OpenAI API仕様に従ってJSONペイロードとSSEストリームの解析を手動で処理する必要があります。
認証
APIへのすべてのリクエストには、AuthorizationヘッダーにAPIキーを含める必要があります。形式はBearer YOUR_API_KEYを使用してください。すべてのリクエストのベースURLはhttps://api.characteraiapi.com/v1です。SDKを使用する場合は、base_url設定をこの値に設定し、api_keyパラメータ経由でキーを提供してください。キーを紛失した、またはリークした疑いがある場合は、ダッシュボードから再生成できます。古いキーは直ちに無効になります。アカウントごとにアクティブなキーは1つのみ許可されます。標準的なOpenAIエンドポイントへのリクエストは404または401エラーで失敗するため、正しいベースURLを使用していることを確認してください。
基本的なチャット完了
コア機能は/v1/chat/completionsエンドポイントを通じて提供されます。モデル名にuncensoredを指定し、メッセージ履歴とともにPOSTリクエストを送信してください。モデルは法的な成人向けコンテンツに対する標準的なコンテンツフィルタを適用せずにテキスト出力を返します。以下は、単純なテキスト完了リクエストを示すcurlの例です。
curl https://api.characteraiapi.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."}]
}'
このリクエストは生成されたテキストを含むcompletionオブジェクトを返します。temperatureなどのパラメータでランダム性を制御し、max_tokensで出力長を制限できます。100,000トークンのコンテキストウィンドウをサポートし、長い会話履歴やドキュメントを単一リクエストで処理できます。
ストリーミングレスポンス
より良いユーザーエクスペリエンスのために、リクエストにstream: trueを設定してストリーミングを有効にしてください。APIは生成されるたびに部分的なトークンチャンクを含むServer-Sent Events (SSE)を返します。これにより、チャットボットアプリケーションでの知覚される遅延が軽減されます。最後のイベントで最終的な使用統計を受け取りたい場合は、stream_optionsパラメータを使用してください。ストリーミングは、テキストを単語ごとに表示して没入感を高めるリアルタイムのキャラクターロールプレイに特に有用です。クライアントコードが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リクエストの制限を適用します。これを超過すると、429 Too Many Requestsエラーが返されます。リクエストボディは8 MBに制限されています。一般的なエラーには、無効または欠落したキーによる401、または前払いクレジットが枯渇した場合の402が含まれます。暗号通貨(USDTまたはUSDC)を使用して$10からチャージでき、大口入金にはボーナスクレジットが付与されます。一部のプロバイダーとは異なり、隠れた料金やサブスクリプションのロックはなく、消費したトークンのみに対して課金されます。価格は透明で、入力トークン100万トークンあたり$0.25、出力トークン100万トークンあたり$1.00です。エラー処理ロジックでは、429エラーに対して指数関数的バックオフでリトライしてください。
from openai import OpenAI
client = OpenAI(base_url="https://api.characteraiapi.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)Node.js
import OpenAI from "openai";
const client = new OpenAI({ baseURL: "https://api.characteraiapi.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);API 仕様
購入前に確認できるよう、API の実際の制限と機能をすべてまとめました。
| 項目 | 内容 |
|---|---|
| 形式 | OpenAI 互換:どの OpenAI SDK でも base URL とキーを変えるだけで動作 |
| エンドポイント | POST /v1/chat/completions · GET /v1/models |
| 認証 | Authorization: Bearer YOUR_KEY |
| Base URL | https://api.characteraiapi.com/v1 |
| モデル ID | uncensored |
| JSON モード | response_format: {"type": "json_object"} |
| 最大出力 | 100,000 トークンのウィンドウの残りまで。max_tokens は任意(個別の上限なし) |
| パラメータ | temperature、top_p、stop、seed、presence_penalty、frequency_penalty |
| コンテキスト長 | 100,000 トークン(入力+出力) |
| ストリーミング | 対応 — SSE、最後のチャンクにトークン使用量 |
| 関数呼び出し | 対応 — tools、tool_choice。応答に tool_calls(ストリーミングでも)、結果は role: tool で返送 |
| リクエストサイズ | 最大 8 MB |
| レスポンスヘッダー | X-Request-Id、X-Balance-USD、X-RateLimit-Limit-Requests、X-RateLimit-Limit-Concurrency |
| 同時実行 | キーごとに同時 8 リクエストまで |
| レート制限 | キーごとに毎分 300 リクエスト |
| 有効期限 | 購入クレジットは失効なし、サブスクなし |
| ボーナス | $50 以上で +5%、$100 以上で +10% |
| チャージ | USDT(TRC20)または USDC(Base)、$10〜$500 の任意の整数額 |
| 料金 | 入力 100 万トークン $0.25 · 出力 100 万トークン $1.00 |
| 課金 | 前払いクレジットから実使用量で課金。エラーと拒否は無料 |
| 無料トライアル | $0.50、7 日間、カード不要 · トライアルキー: 同時2件、毎分60件。初回チャージ後に上限が8件・300件へ拡大 |
| キー | アカウントごとに有効なキーは 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 | モデル混雑 — 数秒後に再試行 |
質問と回答
これは公式のCharacter.ai APIですか?
いいえ、これはcharacteraiapi.comでホストされている独立したサービスです。独自の無検閲モデルを提供しており、Character.AIやその他の主要なLLMベンダーとは提携していません。
モデルは画像や音声の生成に対応していますか?
いいえ。APIはテキストのみです。テキスト入力を取得し、テキスト出力を返します。埋め込み、ファインチューニング、マルチモーダル入出力には対応していません。
'無検閲'とはどう定義されていますか?
モデルは法的な成人向け、フィクション、または論争のあるトピックを拒否しません。未成年者に関する性的コンテンツのみをブロックしますが、これはすべてのリクエストに適用されるハードリミットです。
キーはフォーム 1 つで手に入ります
アカウントを作成し、キーをコピーし、ベースURLを変更します。セットアップはこれだけです。