New: Nano Banana 2.1Try the model
API Stock

API Stock와 AIMLAPI

AIMLAPI 대안

공통 Seedream 모델, 과금 단위 및 이전 절차에서 AIMLAPI와 API Stock를 비교하세요. 미디어와 채팅은 같은 선불 잔액을 사용합니다.

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 · 이미지당 · 텍스트로 생성API Stock$0.036AIMLAPI$0.05230.8% 저렴
Seedream 5.0 Lite2K · 이미지당 · 텍스트로 생성API Stock$0.03325AIMLAPI$0.045526.9% 저렴

참조 이미지 없이 텍스트로 이미지 한 장을 생성하는 공개 기본 요금입니다. 요금제, 대량 할인, 다른 해상도 및 편집에 따라 최종 가격이 달라질 수 있습니다.

작업량별 비용

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를 전송하세요. 작업 하나당 결과 하나를 생성합니다.

  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로 실행하세요. 유료 작업 하나를 생성하고 다시 만들지 않고 폴링합니다. 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 키는 서버에 보관하세요. 운영 트래픽을 이전하기 전에 요청 하나의 매개변수, 상태 처리 및 결과를 확인하세요.

자주 묻는 질문

AIMLAPI에서 어떻게 이전하나요?

채팅은 OpenAI SDK의 기본 URL, 키 및 모델 id를 바꾸세요. 이미지는 /v1/images/generations를 /api/v1/generation/create로 교체하고 taskId를 비동기로 처리하세요.

API Stock가 항상 AIMLAPI보다 저렴한가요?

아닙니다. 표에서 정확한 모델, 설정 및 과금 단위를 비교하세요. 가격은 오르거나 내릴 수 있으므로 운영 트래픽을 이전하기 전에 두 카탈로그를 확인하세요.

모든 AIMLAPI 워크플로를 이전할 수 있나요?

카탈로그 밖 모델이나 기능이 필요하면 AIMLAPI를 확인하세요. 채팅과 이미지는 이전 방식이 달라 기본 URL만 바꿔서는 모든 엔드포인트가 이전되지 않습니다.

실패하거나 끝나지 않은 요청은 어떻게 되나요?

미디어 작업은 설정된 경로로 재시도하며 사용 가능한 경우에만 예비 공급자를 사용합니다. 생성이 최종 실패하면 환불됩니다. 처리 중인 작업을 중복 생성하지 말고 폴링하세요. 파일 URL 만료는 생성 실패가 아닙니다.

잔액은 어떻게 충전하나요?

사용 가능한 결제 수단, 통화 및 최소 충전 금액은 결제 전에 계정에 표시됩니다. 구독 없이 모델 사용료가 선불 잔액에서 차감됩니다.

API Stock에서 첫 요청 테스트

모델을 선택하고 매개변수와 가격을 확인한 후 API 키를 만드세요. 트래픽을 이전하기 전에 요청 하나를 테스트하세요.