New: Nano Banana 2.1Try the model
API Stock

API Stock と AIMLAPI

AIMLAPI の代替

AIMLAPI と API Stock の共通 Seedream モデル、課金単位、移行手順を比較します。メディア生成とチャットは同じ前払い残高を使います。

API Stock と AIMLAPI の比較

API Stock を選ぶ場合

OpenAI 互換チャットと共通のメディアタスク処理を使い、画像クライアントを非同期に変更できる場合は API Stock を選べます。

AIMLAPI を継続する場合

カタログ外のモデルや機能には AIMLAPI を確認してください。チャットと画像では移行手順が異なり、ベース URL の変更だけでは移せません。

AIMLAPI API ドキュメント

横にスクロールすると表の全列を確認できます。

API 移行:AIMLAPI から API Stock
連携項目AIMLAPIAPI Stock
リクエストPOST /v1/images/generationsPOST /api/v1/generation/create
認証Authorization: BearerAuthorization: Bearer
モデル IDbytedance/seedream-4-5seedream-4-5

以下の例のモデルを比較しており、全エンドポイントの比較ではありません。同じモデル名でもパラメーター、審査基準、出力の一致は保証されません。

料金比較:AIMLAPI と API Stock

共通モデルの一部を同じ課金単位で比較します。当社料金は現在のカタログ、他社料金は確認日と出典付きの記録です。

料金比較:AIMLAPI と API Stock
Seedream 4.52K · 画像1枚 · テキストから画像API Stock$0.036AIMLAPI$0.05230.8% 安い
Seedream 5.0 Lite2K · 画像1枚 · テキストから画像API Stock$0.03325AIMLAPI$0.045526.9% 安い

参照画像なしでテキストから画像を1枚生成する公開基本料金です。プラン、数量割引、他の解像度、編集によって最終料金は変わる場合があります。

利用量ごとの費用

Seedream 4.5 · 2K

上記設定で画像1,000枚

API Stock
$36
AIMLAPI
$52

Seedream 5.0 Lite · 2K

上記設定で画像1,000枚

API Stock
$33.25
AIMLAPI
$45.5

上記料金から計算した例です。数量割引、契約、追加オプションは含みません。速度や出力の一致を保証しません。

料金

AIMLAPI からの移行

チャットは OpenAI SDK のベース URL・キー・モデル ID を変更します。画像は /v1/images/generations を /api/v1/generation/create に変更し、taskId を非同期に処理します。

  1. 1

    アカウントを作成し、残高をチャージして API キーを発行します。

  2. 2

    公開モデル ID と記載のパラメーターを指定して POST /api/v1/generation/create を送信します。1タスクにつき1出力です。

  3. 3

    taskId を取得し、GET /api/v1/task/status/TASK_ID をポーリングするか、作成時に webhook を設定します。

AIMLAPI

bash
curl --fail-with-body 'https://api.aimlapi.com/v1/images/generations' \
-H "Authorization: Bearer $AIMLAPI_KEY" \
-H 'Content-Type: application/json' \
-d '{
"model": "bytedance/seedream-4-5",
"prompt": "A ceramic mug on a wooden table, soft morning light"
}'

API Stock

bash
curl --fail-with-body 'https://api.api-stock.com/api/v1/generation/create' \
-H "Authorization: Bearer $API_KEY" \
-H 'Content-Type: application/json' \
-d '{
"model": "seedream-4-5",
"prompt": "A ceramic mug on a wooden table, soft morning light",
"resolution": "2K",
"size": "1:1"
}'
完全な例:タスク作成からファイル取得まで

Node 22+ または Bun と API_KEY を使いサーバーで実行します。有料タスクを1回作成し、再作成せずに状態を確認します。URL は一時的なため、ファイルを自分のストレージへ保存してください。

javascript
import { writeFile } from "node:fs/promises";
const baseURL = "https://api.api-stock.com/api/v1";
const apiKey = process.env.API_KEY;
if (!apiKey) throw new Error("Set API_KEY on the server");
async function request(path, options = {}) {
const response = await fetch(baseURL + path, {
...options,
headers: {
Authorization: `Bearer ${apiKey}`,
"Content-Type": "application/json",
},
signal: AbortSignal.timeout(30_000),
});
if (!response.ok) throw new Error(await response.text());
return response.json();
}
const { taskId } = await request("/generation/create", {
method: "POST",
body: JSON.stringify({
"model": "seedream-4-5",
"prompt": "A ceramic mug on a wooden table, soft morning light",
"resolution": "2K",
"size": "1:1"
}),
});
if (!taskId) throw new Error("Missing taskId");
const deadline = Date.now() + 10 * 60_000;
let fileUrl;
while (Date.now() < deadline) {
const { data } = await request(`/task/status/${encodeURIComponent(taskId)}`);
if (data.status === "finished") {
fileUrl = data.files?.[0]?.fileUrl;
if (!fileUrl) throw new Error("Task finished without a file");
break;
}
if (data.status === "failed" || data.status === "expired") {
throw new Error(data.errorMessage || data.status);
}
await new Promise((resolve) => setTimeout(resolve, 2000));
}
if (!fileUrl) throw new Error(`Still processing: save taskId ${taskId} and resume polling`);
const file = await fetch(fileUrl, { signal: AbortSignal.timeout(60_000) });
if (!file.ok) throw new Error(`Download failed: ${file.status}`);
const mime = file.headers.get("content-type")?.split(";")[0];
const extension = { "image/png": "png", "image/jpeg": "jpg", "image/webp": "webp" }[mime] || "bin";
await writeFile(`generated-image.${extension}`, new Uint8Array(await file.arrayBuffer()));

API キーはサーバーに保管してください。本番移行前に1件試し、入力、状態処理、結果を確認してください。

よくある質問

AIMLAPI から移行するには?

チャットは OpenAI SDK のベース URL・キー・モデル ID を変更します。画像は /v1/images/generations を /api/v1/generation/create に変更し、taskId を非同期に処理します。

API Stock は常に AIMLAPI より安いですか?

いいえ。表でモデル、設定、課金単位を正確に比較してください。料金は上下するため、本番トラフィックの移行前に両方のカタログを確認してください。

すべての AIMLAPI ワークフローを移行できますか?

カタログ外のモデルや機能には AIMLAPI を確認してください。チャットと画像では移行手順が異なり、ベース URL の変更だけでは移せません。

失敗したリクエストや未完了の処理はどうなりますか?

メディアタスクは設定済みルートで再試行し、利用できる場合に予備プロバイダーを使います。生成が最終的に失敗した場合は返金されます。処理中は重複作成せず状態を確認してください。URL の期限切れは生成失敗ではありません。

残高はどのようにチャージしますか?

利用可能な支払い方法、通貨、最低チャージ額は、お支払い前にアカウントで確認できます。サブスクリプションはなく、モデルの利用料金はプリペイド残高から差し引かれます。

API Stock で最初のリクエストを試す

モデルを選び、パラメーターと料金を確認して API キーを作成します。トラフィックを移す前に1件試してください。