API Stock ãš fal.ai
fal.ai ã®ä»£æ¿
fal.ai ãš API Stock ã®ãã¹ãæžã¿ç»åã»åç»ã¢ãã«ãæ¯èŒããŸããåãèšå®ã®æéãå©çšéããšã®è²»çšãfal ã¯ã©ã€ã¢ã³ãããã¿ã¹ã¯ API ãžã®ç§»è¡äŸã確èªã§ããŸãã
API Stock ãš fal.ai ã®æ¯èŒ
API Stock ãéžã¶å Žå
ãã¹ãæžã¿ã¢ãã«ã䜿ããç»åã»åç»ã»é³æ¥œãå ±éã¿ã¹ã¯åœ¢åŒã§åŠçãããã£ããã«ãåãæ®é«ã䜿ãããå Žå㯠API Stock ãéžã¹ãŸãã
fal.ai ãç¶ç¶ããå Žå
SDK æ©èœãåŠç¿ããŒã«ãã«ã¿ãã°å€ã¢ãã«ã«ã¯ fal.ai ãç¶ç¶ããŠãã ãããã¢ãã«ãå ±éã§ãããšã³ããã€ã³ãã審æ»åºæºãé«åºŠãªãã©ã¡ãŒã¿ãŒããã®ãŸãŸçœ®ãæãããããšã¯éããŸããã
fal.ai API ããã¥ã¡ã³ã暪ã«ã¹ã¯ããŒã«ãããšè¡šã®å šåã確èªã§ããŸãã
| 飿ºé ç® | fal.ai | API Stock |
|---|---|---|
| ãªã¯ãšã¹ã | fal.subscribe(model, { input }) | POST /api/v1/generation/create |
| èªèšŒ | FAL_KEY / Authorization: Key | Authorization: Bearer |
| ã¢ãã« ID | fal-ai/bytedance/seedream/v4.5/text-to-image | seedream-4-5 |
以äžã®äŸã®ã¢ãã«ãæ¯èŒããŠãããå šãšã³ããã€ã³ãã®æ¯èŒã§ã¯ãããŸãããåãã¢ãã«åã§ããã©ã¡ãŒã¿ãŒã審æ»åºæºãåºåã®äžèŽã¯ä¿èšŒãããŸããã
æéæ¯èŒïŒfal.ai ãš API Stock
å ±éã¢ãã«ã®äžéšãåã課éåäœã§æ¯èŒããŸããåœç€Ÿæéã¯çŸåšã®ã«ã¿ãã°ãä»ç€Ÿæéã¯ç¢ºèªæ¥ãšåºå žä»ãã®èšé²ã§ãã
| ã¢ãã« | API Stock | fal.ai | åœç€Ÿæéã®å·® |
|---|---|---|---|
| Nano Bananaç»å1æ · ããã¹ãããç»å | API Stock$0.012 | fal.ai$0.039 | 69.2% å®ã |
| Nano Banana 21k · ç»å1æ · ããã¹ãããç»å | API Stock$0.018 | fal.ai$0.08 | 77.5% å®ã |
| Nano Banana 22k · ç»å1æ · ããã¹ãããç»å | API Stock$0.02 | fal.ai$0.12 | 83.3% å®ã |
| Nano Banana 2512px · ç»å1æ · ããã¹ãããç»å | API Stock$0.022 | fal.ai$0.06 | 63.3% å®ã |
| Nano Banana 24k · ç»å1æ · ããã¹ãããç»å | API Stock$0.026 | fal.ai$0.16 | 83.8% å®ã |
| Nano Banana Pro1k · ç»å1æ · ããã¹ãããç»å | API Stock$0.029 | fal.ai$0.15 | 80.7% å®ã |
| Nano Banana Pro2k · ç»å1æ · ããã¹ãããç»å | API Stock$0.029 | fal.ai$0.15 | 80.7% å®ã |
| Nano Banana Pro4k · ç»å1æ · ããã¹ãããç»å | API Stock$0.043 | fal.ai$0.3 | 85.7% å®ã |
| Seedream 4.5ç»å1æ · ããã¹ãããç»å | API Stock$0.036 | fal.ai$0.04 | 10% å®ã |
| Seedream 5.0 Liteç»å1æ · ããã¹ãããç»å | API Stock$0.03325 | fal.ai$0.035 | 5% å®ã |
| Seedream 5.0 Pro1K · ç»å1æ · ããã¹ãããç»å | API Stock$0.04 | fal.ai$0.0675 | 40.7% å®ã |
| Seedream 5.0 Pro2K · 1:1 · ç»å1æ · ããã¹ãããç»å | API Stock$0.079 | fal.ai$0.135 | 41.5% å®ã |
| Wan 2.7 Imageç»å1æ · ããã¹ãããç»å | API Stock$0.0285 | fal.ai$0.03 | 5% å®ã |
| Veo 3.1 Fast1080p · ã¯ãªããå šäœããã8s · é³å£°ããããã¹ã â åç» | API Stock$0.189 | fal.ai$1.2 | 84.3% å®ã |
| Veo 3.1 Fast720p · ã¯ãªããå šäœããã8s · é³å£°ããããã¹ã â åç» | API Stock$0.189 | fal.ai$1.2 | 84.3% å®ã |
| Veo 3.1 Fast4k · ã¯ãªããå šäœããã8s · é³å£°ããããã¹ã â åç» | API Stock$0.429 | fal.ai$2.8 | 84.7% å®ã |
| Veo 3.1 Quality1080p · ã¯ãªããå šäœããã8s · é³å£°ããããã¹ã â åç» | API Stock$1.425 | fal.ai$3.2 | 55.5% å®ã |
| Veo 3.1 Quality720p · ã¯ãªããå šäœããã8s · é³å£°ããããã¹ã â åç» | API Stock$1.2 | fal.ai$3.2 | 62.5% å®ã |
| Veo 3.1 Quality4k · ã¯ãªããå šäœããã8s · é³å£°ããããã¹ã â åç» | API Stock$1.8 | fal.ai$4.8 | 62.5% å®ã |
| Wan 2.7 Video720p · åºå1ç§ãããç»å â åç» | API Stock$0.086 | fal.ai$0.1 | 14% å®ã |
| Wan 2.7 Video1080p · åºå1ç§ãããç»å â åç» | API Stock$0.129 | fal.ai$0.15 | 14% å®ã |
åè¡ã«çšéãšèª²éåäœã衚瀺ããŸããç»åã¯åç §ãªãã®1åºåãåç»ã¯è¡šç€ºã«å¿ããŠç§ãŸãã¯ã¯ãªããåäœã§ããè§£å床ãé·ããé³å£°ãæããŠæ¯èŒããŠãã ããã
å©çšéããšã®è²»çš
Nano Banana
äžèšèšå®ã§ç»å1,000æ
- API Stock
- $12
- fal.ai
- $39
Nano Banana 2 · 1k
äžèšèšå®ã§ç»å1,000æ
- API Stock
- $18
- fal.ai
- $80
äžèšæéããèšç®ããäŸã§ããæ°éå²åŒãå¥çŽã远å ãªãã·ã§ã³ã¯å«ã¿ãŸãããé床ãåºåã®äžèŽãä¿èšŒããŸããã
fal.ai ããã®ç§»è¡
fal.subscribe ã fal.queue.submit ã POST /api/v1/generation/create ã«çœ®ãæããŸããinput ãèšèŒã®ãã©ã¡ãŒã¿ãŒãžå±éããã«ã¿ãã° ID ã䜿ã£ãŠ taskId ãããŒãªã³ã°ããã webhook ã§åãåããŸãã
1
ã¢ã«ãŠã³ããäœæããæ®é«ããã£ãŒãžã㊠API ããŒãçºè¡ããŸãã
2
å ¬éã¢ãã« ID ãšèšèŒã®ãã©ã¡ãŒã¿ãŒãæå®ã㊠POST /api/v1/generation/create ãéä¿¡ããŸãã1ã¿ã¹ã¯ã«ã€ã1åºåã§ãã
3
taskId ãååŸããGET /api/v1/task/status/TASK_ID ãããŒãªã³ã°ããããäœææã« webhook ãèšå®ããŸãã
fal.ai
import { fal } from "@fal-ai/client";fal.config({ credentials: process.env.FAL_KEY });const result = await fal.subscribe("fal-ai/bytedance/seedream/v4.5/text-to-image",{ input: { prompt: "A ceramic mug on a wooden table, soft morning light", image_size: "square_hd", num_images: 1, max_images: 1 } },);const fileUrl = result.data.images[0].url;
API Stock
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 ã¯äžæçãªããããã¡ã€ã«ãèªåã®ã¹ãã¬ãŒãžãžä¿åããŠãã ããã
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件詊ããå ¥åãç¶æ åŠçãçµæã確èªããŠãã ããã
ãããã質å
fal.ai ããç§»è¡ããã«ã¯ïŒ
fal.subscribe ã fal.queue.submit ã POST /api/v1/generation/create ã«çœ®ãæããŸããinput ãèšèŒã®ãã©ã¡ãŒã¿ãŒãžå±éããã«ã¿ãã° ID ã䜿ã£ãŠ taskId ãããŒãªã³ã°ããã webhook ã§åãåããŸãã
API Stock ã¯åžžã« fal.ai ããå®ãã§ããïŒ
ãããã衚ã§ã¢ãã«ãèšå®ã課éåäœãæ£ç¢ºã«æ¯èŒããŠãã ãããæéã¯äžäžãããããæ¬çªãã©ãã£ãã¯ã®ç§»è¡åã«äž¡æ¹ã®ã«ã¿ãã°ã確èªããŠãã ããã
ãã¹ãŠã® fal.ai ã¯ãŒã¯ãããŒãç§»è¡ã§ããŸããïŒ
SDK æ©èœãåŠç¿ããŒã«ãã«ã¿ãã°å€ã¢ãã«ã«ã¯ fal.ai ãç¶ç¶ããŠãã ãããã¢ãã«ãå ±éã§ãããšã³ããã€ã³ãã審æ»åºæºãé«åºŠãªãã©ã¡ãŒã¿ãŒããã®ãŸãŸçœ®ãæãããããšã¯éããŸããã
倱æãããªã¯ãšã¹ããæªå®äºã®åŠçã¯ã©ããªããŸããïŒ
ã¡ãã£ã¢ã¿ã¹ã¯ã¯èšå®æžã¿ã«ãŒãã§å詊è¡ããå©çšã§ããå Žåã«äºåãããã€ããŒã䜿ããŸããçæãæçµçã«å€±æããå Žåã¯è¿éãããŸããåŠçäžã¯éè€äœæããç¶æ ã確èªããŠãã ãããURL ã®æéåãã¯çæå€±æã§ã¯ãããŸããã
æ®é«ã¯ã©ã®ããã«ãã£ãŒãžããŸããïŒ
å©çšå¯èœãªæ¯æãæ¹æ³ãé貚ãæäœãã£ãŒãžé¡ã¯ããæ¯æãåã«ã¢ã«ãŠã³ãã§ç¢ºèªã§ããŸãããµãã¹ã¯ãªãã·ã§ã³ã¯ãªããã¢ãã«ã®å©çšæéã¯ããªãã€ãæ®é«ããå·®ãåŒãããŸãã
API Stock ã§æåã®ãªã¯ãšã¹ãã詊ã
ã¢ãã«ãéžã³ããã©ã¡ãŒã¿ãŒãšæéã確èªã㊠API ããŒãäœæããŸãããã©ãã£ãã¯ãç§»ãåã«1件詊ããŠãã ããã