認証とベースURL
クライアントをnano banana apiのhttps://api.nanobananaapis.com/v1に接続してアクセスします。Authorizationヘッダーに有効なAPIキーが必要です。メールアドレスとパスワードのみでAPIキーの取得ページにサインアップすると、キーを即座に入手できます。キーはサインアップ直後に表示されます。紛失した場合はダッシュボードから新しいキーを再生成してください。古いキーは直ちに無効になります。
すべてのリクエストにBearer YOUR_API_KEYを使用します。モデルIDは常にuncensoredです。このエンドポイントはテキスト入力とテキスト出力を処理します。画像、音声、動画は生成しません。マルチモーダルパイプラインでは、プロンプト作成、スクリプト生成、後処理にこのAPIを使用してください。
最初のリクエスト
標準的なチャット完了リクエストを送信します。APIはOpenAI形式をサポートしています。YOUR_API_KEY を実際のキーに置き換えてください。この例では、無検閲モデルに単純なメッセージを送信しています。
curl https://api.nanobananaapis.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."}]
}'レスポンスには生成テキストが含まれます。レスポンスボディでトークン使用量を確認できます。コンテキストウィンドウはプロンプトと生成テキスト合わせて合計100,000トークンです。ペイロードは8 MB未満にしてください。
Python SDKの例
公式のOpenAI Python SDKを使用します。ベースURLをnanobananaapisのエンドポイントに設定します。APIキーをapi_keyとして渡します。クライアントはリクエストを自動的に正しい形式でフォーマットします。この方法は、画像や動画生成サービスに送信する前にテキストを処理する必要があるバックエンドスクリプトに最適です。
from openai import OpenAI
client = OpenAI(base_url="https://api.nanobananaapis.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はストリーミングと解析を処理します。ストリーミングモードを有効にすると、チャンクをイテレートできます。このアプローチはコードをクリーンに保ち、後でプロバイダを変更した場合でも他のOpenAIサービスと互換性を維持します。
Node SDKの例
Node.js SDKも同様に動作します。ベースURLとキーでクライアントを初期化し、chat.completions.create メソッドを呼び出します。これは、動的にスクリプトを生成する必要があるサーバーレス関数やWebサーバーに役立ちます。
import OpenAI from "openai";
const client = new OpenAI({ baseURL: "https://api.nanobananaapis.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);エラーを適切に処理してください。一般的なエラーには、キーが無効または期限切れの場合の認証失敗(401)や、1分間に300リクエストを超えた場合のレート制限(429)があります。APIキーはアカウントに紐付いているため、環境変数で保護してください。
ストリーミングレスポンス
リクエストに stream: true を設定してストリーミングを有効にします。APIは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)クライアント側でSSEイベントを解析してください。ストリームはモデルの生成完了またはコンテキスト制限到達時に終了します。ストリーミングはユーザーの知覚レイテンシを削減します。料金は変更されず、トークンごとに課金されます。
制限、エラー、モデル
GET /v1/modelsで利用可能なモデルを確認します。唯一のモデルはuncensoredです。レート制限はキーあたり1分間300リクエストです。リクエストボディは8 MB未満である必要があります。価格は1M入力トークンあたり$0.25、1M出力トークンあたり$1.00です。クレジットは期限切れになりません。不足した場合は$10からチャージしてください。エラー:無効なキーは401、クレジット不足は402、レート制限超過は429。SLAや稼働時間の保証はありません。モデルは未成年を含む性的コンテンツをブロックします。他の合法的な成人向けまたは論争のあるトピックは拒否しません。