Tài liệu
Một API cho model chat, ảnh và video. Chat theo định dạng Chat Completions của OpenAI nên mọi OpenAI SDK đều dùng được, chỉ cần đổi base URL và key; ảnh theo định dạng images của OpenAI; video chạy dạng tác vụ.
Quickstart
from openai import OpenAI
client = OpenAI(base_url="https://api.apistore.cloud/v1", api_key="sk-...")
stream = client.chat.completions.create(
model="deepseek-v4-1-flash",
messages=[{"role": "user", "content": "Hello!"}],
stream=True,
)
for chunk in stream:
print(chunk.choices[0].delta.content or "", end="")Xác thực
Gửi key trong header Authorization. Tạo key ở trang API key.
Authorization: Bearer sk-... Base URL: https://api.apistore.cloud/v1
Có thể giới hạn key theo địa chỉ IP của bạn: ở trang API key, đặt các địa chỉ hoặc dải được phép (ví dụ 203.0.113.7 hoặc 198.51.100.0/24). Request từ nơi khác bị từ chối với lỗi 403 ip_not_allowed.
Endpoints
Mọi đường dẫn đều tính từ base URL. Mọi request đều cần API key, trừ GET /models là công khai; khi gọi kèm key, nó chỉ liệt kê các model key đó được dùng.
| GET | /models | Danh sách model, kèm loại và giá |
| GET | /balance | Số dư, hạn mức tín dụng và trần chi theo ngày của key |
| POST | /chat/completions | Chat, có streaming và tool call (định dạng OpenAI) |
| POST | /images/generations | Tạo hoặc chỉnh sửa ảnh |
| POST | /videos | Tạo tác vụ video |
| GET | /videos/{id} | Trạng thái và kết quả tác vụ video |
| GET | /videos/{id}/content | Tải video đã hoàn tất (MP4) |
| GET | /videos/{id}/last_frame | Khung cuối dạng ảnh, khi có yêu cầu |
| POST | /mcp | MCP server cho AI agent (nằm trên base URL một cấp) |
Model
Liệt kê các model bạn gọi được. Mỗi model có kind (chat, image hoặc video) và giá: theo token với chat, theo ảnh với ảnh, theo 1 triệu token video cho từng độ phân giải với video.
curl https://api.apistore.cloud/v1/models
Chat
POST /chat/completions nhận nguyên request của OpenAI: messages, max_tokens, temperature, top_p, stop, tools và tool_choice, response_format, stream. Trường lạ được chuyển tới model. Mọi response đều có header x-request-id; hãy gửi kèm khi liên hệ hỗ trợ.
Streaming
Đặt "stream": true để nhận server-sent events. Thêm "stream_options": {"include_usage": true} để có số token ở chunk cuối.
{
"model": "deepseek-v4-1-flash",
"stream": true,
"stream_options": { "include_usage": true },
"messages": [{ "role": "user", "content": "Hello" }]
}Cache prompt
Phần đầu prompt lặp lại (system prompt, tài liệu dài, lịch sử chat) được nhà cung cấp cache. Token input trúng cache tự động tính giá rẻ hơn. Hãy đặt phần cố định ở đầu prompt và giữ nguyên.
Tính tiền
Mỗi request giữ trước chi phí tối đa (kích thước prompt cộng max_tokens), sau đó chỉ tính theo token thực dùng. Đặt max_tokens để tránh lỗi 402 khi số dư thấp. Request lỗi trước token đầu tiên không bị tính tiền. Ảnh tính theo số ảnh tạo ra; video tính theo token video (xem mục Video). Mọi khoản trừ đều có trong Lịch sử thanh toán ở trang Thanh toán.
Giới hạn
Giới hạn áp theo key (request mỗi phút) và theo tài khoản (request đồng thời). Một số model còn có giới hạn riêng cho mỗi tài khoản.
GET /balance trả về số tiền key còn chi được: balance_usd, credit_limit_usd và key_daily_cap_usd (null khi key không có trần chi theo ngày).
curl https://api.apistore.cloud/v1/balance -H "Authorization: Bearer sk-..."
{
"object": "balance",
"account": "Acme",
"balance_usd": 42.5,
"credit_limit_usd": 0,
"key_daily_cap_usd": null
}Mã lỗi
Lỗi theo định dạng OpenAI: {"error": {"message", "type", "code"}}.
| HTTP | code | |
|---|---|---|
| 400 | invalid_request | Body không phải JSON hợp lệ, hoặc thiếu/sai trường. Thông báo nêu rõ trường nào. |
| 400 | wrong_endpoint | Model thuộc loại khác: model chat dùng /chat/completions, model ảnh dùng /images/generations, model video dùng /videos. |
| 400 | size_not_available / format_not_available / too_many_images | Model ảnh không tạo kích thước hoặc định dạng file này, hoặc nhận nhiều ảnh đầu vào hơn mức cho phép. Thông báo nêu rõ những gì được chấp nhận. |
| 400 | resolution_not_available | Model video không bán ở độ phân giải này. |
| 400 | video_not_ready | Video chưa hoàn tất; tiếp tục gọi GET /videos/{id}. |
| 400 | not_a_draft / draft_not_ready / draft_wrong_model / draft_expired | draft_id phải là bản nháp đã hoàn tất của cùng model, tạo trong vòng 7 ngày. |
| 400 | user_required | Chỉ với tài khoản relay: mọi request chat phải có trường user. |
| 401 | invalid_api_key | Thiếu, sai hoặc đã thu hồi API key. |
| 402 | insufficient_balance / key_spend_cap | Nạp thêm tiền, hoặc tăng trần chi theo ngày của key. |
| 403 | account_inactive | Tài khoản đang bị tạm ngưng. |
| 403 | ip_not_allowed | Key có danh sách IP được phép và request đến từ địa chỉ khác. |
| 404 | model_not_found | Không có model này. Xem GET /models. |
| 404 | video_not_found / draft_not_found | Tài khoản của bạn không có video hoặc bản nháp này. |
| 404 | video_expired / last_frame_expired / image_expired / no_last_frame | File không còn được lưu, hoặc request không yêu cầu khung cuối. Link ảnh dùng được 1 giờ. Link video dùng được một tuần; video chưa sao chép được về kho của chúng tôi chỉ được phát từ nhà cung cấp model trong 24 giờ. |
| 404 | not_found | Không có đường dẫn này. Xem mục Endpoints. |
| 405 | method_not_allowed | Sai phương thức HTTP cho đường dẫn này, ví dụ GET tới /chat/completions. |
| 413 | request_too_large | Body của request quá lớn. |
| 429 | rate_limit_exceeded / concurrency_limit / model_at_capacity | Giảm tốc và thử lại sau thời gian trong header Retry-After. |
| 429 | model_rate_limit_exceeded / model_concurrency_limit | Tài khoản đã chạm giới hạn của riêng model này. Các model khác vẫn dùng được; thử lại sau thời gian trong header Retry-After. |
| 429 | upstream_rate_limited | Bản thân model đang chạm giới hạn tốc độ. Thử lại sau vài giây; bạn không bị tính tiền. |
| 429 | too_many_failed_requests | Key gửi quá nhiều request lỗi liên tiếp và bị tạm dừng trong thời gian ghi ở Retry-After. Sửa lỗi bạn đang gặp rồi thử lại. |
| 500 | internal_error | Có lỗi phía chúng tôi. Thử lại, và gửi request_id cho hỗ trợ nếu lỗi lặp lại. |
| 502 | upstream_error | Nhà cung cấp model lỗi. Có thể thử lại; bạn không bị tính tiền. |
| 503 | upstream_unavailable / billing_unavailable / config_unavailable / model_not_priced / gateway_draining | Tạm thời. Thử lại với thời gian chờ tăng dần. |
| 504 | upstream_error | Model không trả lời kịp. Có thể thử lại; bạn không bị tính tiền. |
Hình ảnh
Model hình ảnh nhận POST /images/generations, cùng định dạng với OpenAI. size là số điểm ảnh ("1024x1024") hoặc độ phân giải mà model hỗ trợ ("1K", "1.5K", "2K", "3K", "4K"; không phải model nào cũng có đủ) kèm aspect_ratio tùy chọn ("16:9"). Bỏ trống size để dùng cỡ chuẩn của model. output_format là "jpeg" (mặc định) hoặc "png" với model có hỗ trợ. n từ 1 đến 4. Gửi image (URL hoặc data URL, hay một danh sách) để chỉnh sửa hoặc đổi phong cách ảnh. response_format "b64_json" trả ảnh trực tiếp; "url" trả đường link dùng được trong một giờ. Tính tiền theo số ảnh tạo ra. Một số model có mức giá thứ hai, cao hơn, cho ảnh lớn (trên số điểm ảnh ghi ở model) và giá cho mỗi ảnh đầu vào, đôi khi sau một số ảnh miễn phí; usage.input_images cho biết bao nhiêu ảnh đầu vào đã bị tính tiền. Kích thước, định dạng, giới hạn ảnh đầu vào và giá của từng model có ở phần Tham chiếu model bên dưới và ở GET /models (pricing.image, pricing.image_large, pricing.image_input, và đối tượng image).
// response
{
"id": "img_0123456789abcdef0123456789abcdef",
"created": 1793984023,
"model": "MODEL_NAME",
"data": [{ "url": "https://api.apistore.cloud/v1/files/images/..." }],
"usage": { "images": 1, "input_images": 1, "cost_usd": 0.04 } // input_images: only when some were billed
}Video
Model video chạy dạng tác vụ. POST /videos tạo tác vụ và trả về id ngay; gọi GET /videos/{id} vài giây một lần đến khi status là completed hoặc failed (thường 1 đến 5 phút), rồi tải về: tác vụ hoàn tất có trường url (liên kết tới tệp, hiệu lực một tuần và được làm mới mỗi lần đọc; nếu chúng tôi chưa lưu được tệp thì url là đường dẫn /v1/videos/{id}/content), và GET /videos/{id}/content luôn trả về tệp đó. Trường id của mọi phản hồi (chatcmpl-…, img_…, video_…) và request_id trong lỗi là thông tin cần gửi cho hỗ trợ.
| Trường | Kiểu | |
|---|---|---|
model | string | Bắt buộc. Id của model video. |
prompt | string | Bắt buộc (trừ khi dùng draft_id). 3 đến 20.000 ký tự. |
seconds | integer | "auto" | Độ dài (duration cũng được nhận như cùng trường). Seedance 2.5: 4 đến 30; Seedance 2.0: 4 đến 15. "auto" để model tự chọn; giữ tạm theo độ dài tối đa và tính theo độ dài thực tế. Mặc định 5; khi có reference_videos thì mặc định là "auto". |
resolution | string | 480p, 720p (mặc định), 1080p hoặc 4k; chỉ những độ phân giải model hỗ trợ (xem danh sách model). |
ratio | string | 16:9 (mặc định), 9:16, 1:1, 4:3, 3:4, 21:9 hoặc adaptive. Khi có reference_videos thì mặc định theo video đầu vào. |
image | string | Khung đầu: link ảnh hoặc data URL (first_frame cũng được nhận như cùng trường). |
last_frame | string | Khung cuối, dùng cùng với image. |
audio | boolean | Tạo âm thanh cho video. Mặc định true. |
seed | integer | Dùng lại seed để lặp lại kết quả. |
camera_fixed | boolean | true giữ máy quay cố định. |
bitrate_mode | string | standard (mặc định) hoặc high. high có thể lỗi khi model quá tải; khi đó được hoàn tiền. |
return_last_frame | boolean | true: khung cuối được lưu dạng ảnh tại GET /videos/{id}/last_frame. |
reference_images | string[] | Link ảnh hoặc data URL: tối đa 30 với Seedance 2.5, 9 với Seedance 2.0 (jpeg, png, webp, bmp, tiff, gif; tối đa 30 MB; mỗi cạnh 300 đến 6000 px). |
reference_videos | string[] | Link MP4/MOV công khai: tối đa 10 với Seedance 2.5, 3 với Seedance 2.0; mỗi video 2 đến 15 giây, 480p hoặc 720p, tối đa 50 MB. Độ dài của chúng cũng được tính phí. |
reference_audios | string[] | Link WAV/MP3 công khai: tối đa 10 với Seedance 2.5, 3 với Seedance 2.0; mỗi file 2 đến 15 giây, tối đa 15 MB. |
task_type | string | Khi có reference_videos: auto, reference, edit hoặc extend (Seedance 2.5). edit và extend theo video đầu vào; không gửi seconds và ratio. |
draft | boolean | Seedance 2.5: true tạo bản xem trước 480p với giá 480p. resolution phải là 480p. |
draft_id | string | Tạo video chính thức 1080p từ bản nháp đã xong. Chỉ gửi model và draft_id: prompt, tham chiếu, độ dài, tỉ lệ, âm thanh và seed lấy từ bản nháp. Bản nháp dùng được 7 ngày. |
File tham chiếu được đánh số theo từng loại, theo thứ tự bạn gửi: phần tử đầu của reference_images là ảnh 1, phần tử thứ hai là ảnh 2, video và âm thanh cũng vậy. Hãy gọi chúng như thế trong prompt, giống playground dùng [Image 1], [Video 1] và [Audio 1], ví dụ "The woman in [Image 1] walks through the street of [Video 1]". Gửi nhiều file hơn mức model nhận sẽ bị từ chối, không tự cắt bớt.
status là queued, in_progress, completed hoặc failed. Tác vụ hoàn tất có usage.video_tokens và usage.cost_usd; tác vụ lỗi không bị tính tiền và có error.code cùng error.message: generation_failed (model không tạo được video), invalid_reference (một file tham chiếu bị từ chối; thông báo nêu rõ file nào) hoặc timeout.
// GET https://api.apistore.cloud/v1/videos/video_...
{
"id": "video_0123456789abcdef0123456789abcdef",
"object": "video",
"model": "MODEL_NAME",
"status": "completed",
"created_at": 1793984023,
"completed_at": 1793984214,
"prompt": "A red paper boat drifting across a calm lake at sunrise",
"resolution": "720p",
"ratio": "16:9",
"seconds": 5,
"draft": false,
"seed": 49873,
"url": "https://.../video_0123456789abcdef0123456789abcdef.mp4",
"last_frame": null,
"error": null,
"usage": { "video_tokens": 108000, "cost_usd": 1.0978 }
}Bản nháp (Seedance 2.5): tạo bản xem trước 480p giá rẻ trước, rồi chuyển bản ưng ý thành video chính thức 1080p với cùng seed và thiết lập.
# 1. the draft: 480p, at the 480p price
curl https://api.apistore.cloud/v1/videos -H "Authorization: Bearer sk-..." -H "Content-Type: application/json" \
-d '{"model": "MODEL_NAME", "prompt": "A red paper boat on a lake", "seconds": 5, "resolution": "480p", "draft": true}'
# 2. when it is completed, the final video at 1080p
curl https://api.apistore.cloud/v1/videos -H "Authorization: Bearer sk-..." -H "Content-Type: application/json" \
-d '{"model": "MODEL_NAME", "draft_id": "video_..."}'Khi tác vụ bắt đầu, số dư bị giữ tạm chi phí ước tính: token video của (số giây video đầu vào + số giây đầu ra) theo giá của độ phân giải đó. Khi xong, bạn trả theo token thực tạo (khoảng 108K cho 5 giây 720p), phần còn lại được trả về; tác vụ lỗi không mất tiền. Trong Cài đặt bạn có thể chuyển cách tính video từ bảng giá token sang "theo USD": phí nhà cung cấp thu cho job theo giá niêm yết, trừ chiết khấu của bạn. Mỗi bản ghi tính tiền ghi rõ cách nào đã áp dụng.
Hướng dẫn theo model
Mỗi dòng model video mạnh ở đâu, giới hạn thế nào, và cách viết prompt để model làm đúng ý.
Seedance 2.5
Model cho video dài: tối đa 30 giây trong một tác vụ, nhận nhiều file tham chiếu, sửa hoặc nối dài video có sẵn. Viết và nói được 11 ngôn ngữ, trong đó có tiếng Việt và tiếng Anh.
| Tóm tắt | |
|---|---|
| Độ dài | 4 đến 30 giây, hoặc "auto" để model tự chọn |
| Độ phân giải | 480p, 720p, 1080p |
| Tỉ lệ | 21:9, 16:9, 4:3, 1:1, 3:4, 9:16 hoặc adaptive (theo file đầu vào) |
| Chế độ | Văn bản thành video; khung đầu hoặc khung đầu và khung cuối; tham chiếu; sửa video; nối dài video |
| Tham chiếu | Tối đa 30 ảnh, 10 video và 10 audio. Chấp nhận chỉ gửi audio |
| Âm thanh | Lời thoại, nhạc và hiệu ứng được tạo cùng hình (audio: true) |
| Bản nháp | Có: xem trước 480p, rồi tạo video chính thức từ bản ưng ý |
Cách viết prompt
- Mở đầu bằng một câu. Nói ai, ở đâu, chuyện gì xảy ra, phong cách và máy quay trong một dòng. Chi tiết viết bên dưới.
- Gắn từng file tham chiếu. Gọi mỗi file theo số và nói nó dùng để làm gì: "[Image 1] là nữ chính, [Image 2] là quán cà phê, máy quay theo [Video 1]". Đừng dựa vào chữ viết trong ảnh để chỉ ra ai là ai.
- Dùng dòng thời gian cho video dài. Chia câu chuyện thành các khoảng giây tròn, liền nhau ("0-5 s", "5-12 s") hoặc các cảnh đánh số, mỗi phần ghi hình ảnh, máy quay, hành động, lời thoại và âm thanh. Quá ít nội dung thì model tự thêm; quá nhiều thì cắt cảnh liên tục.
- Ít nhân vật. Một đến năm nhân vật là ổn định nhất. Đến năm nhân vật có thể gửi nhiều góc của cùng một người; nhiều hơn thì mỗi người một góc.
- Sửa video (task_type: edit). Nói sửa gì, ở đâu, từ gì thành gì, kèm số giây nếu chỉ sửa một đoạn: "Trong [Video 1], từ giây 4 đến 6 cô ấy vẫy tay thay vì gật đầu; phần còn lại giữ nguyên". Kết quả giữ độ dài và tỉ lệ của video gốc nên không gửi seconds và ratio. Video dưới 20 giây sửa tốt nhất.
- Nối dài (task_type: extend). Nói hướng nối và chuyện tiếp theo: "Nối dài [Video 1] về phía sau: cô ấy mở cửa và bước ra mưa". Tỉ lệ theo video gốc.
- Khung đầu và khung cuối. Gửi bằng image và last_frame, cùng tỉ lệ, để video bắt đầu và kết thúc đúng ở đó. Ảnh tham chiếu được gọi là "khung đầu" trong prompt thì model bám kém chặt hơn.
- Storyboard và keyframe. Một tấm storyboard (tối đa 15 ô, nét vẽ đơn giản, không có chữ) định hướng cốt truyện nhưng không được bám từng ô. Muốn bám chặt, gửi từng ảnh riêng và mở đầu bằng "Dùng Image 1 đến 5 theo thứ tự làm keyframe".
- Máy quay. Thuật ngữ điện ảnh thông dụng dùng trực tiếp được: đẩy vào, lia, bám theo, quay vòng, cầm tay, góc thấp, cú máy dài. Thuật ngữ hiếm thì giải thích vài chữ; với chuyển cảnh, ghi cả thời điểm và cách chuyển.
- Điều không muốn. Nên viết điều bạn muốn thay vì điều không muốn. Hai ngoại lệ dùng tốt: "Không phụ đề" và "Không nhạc nền, chỉ âm thanh môi trường".
- Lời thoại. Viết theo dạng: tên, cảm xúc trong ngoặc, rồi câu nói. Mỗi câu một ngôn ngữ. Chữ cần hiện chính xác trên màn hình thì gửi dưới dạng ảnh.
[Image 1] là người đánh cá, [Image 2] là chiếc thuyền. Phong cách phim tài liệu, ánh sáng tự nhiên. 0-6 s: toàn cảnh sát mặt nước, thuyền trôi trong sương sớm. Máy đẩy vào chậm. 6-14 s: trung cảnh, ông kéo lưới lên, từng nhịp tay. Nước nhỏ giọt từ sợi dây. 14-20 s: cận cảnh khuôn mặt, ông nhìn mẻ cá và mỉm cười. Chỉ âm thanh môi trường: nước, gỗ, chim biển. Không phụ đề, không nhạc nền.
Seedance 2.0
Ba model nhận cùng một kiểu request, khác nhau về chất lượng, tốc độ và giá: Seedance 2.0 cho hình ảnh đẹp nhất, Seedance 2.0 fast cân bằng tốc độ và chi phí, Seedance 2.0 mini giá thấp nhất.
| Tóm tắt | |
|---|---|
| Độ dài | 4 đến 15 giây, hoặc "auto" |
| Độ phân giải | Seedance 2.0: 480p, 720p, 1080p, 4K. Fast và mini: 480p, 720p |
| Tỉ lệ | 21:9, 16:9, 4:3, 1:1, 3:4, 9:16 |
| Chế độ | Văn bản thành video; khung đầu hoặc khung đầu và khung cuối; tham chiếu; sửa hoặc nối dài video qua prompt |
| Tham chiếu | Tối đa 9 ảnh, 3 video và 3 audio. Audio phải đi kèm ảnh hoặc video |
| Âm thanh | Lời thoại, nhạc và hiệu ứng được tạo cùng hình (audio: true) |
| Bản nháp | Không |
| File 4K | H.265, màu 10-bit. Một số trình phát không mở được; VLC và Chrome, Edge, Safari bản mới mở được |
| Khuôn mặt | Ảnh và video tham chiếu có khuôn mặt người thật sẽ bị từ chối |
Cách viết prompt
- Công thức. Chủ thể, hành động, bối cảnh, ánh sáng và màu, máy quay, phong cách, chất lượng, rồi điều cần tránh. Chốt ai làm gì trước, sau đó ở đâu, rồi quay thế nào.
- Định nghĩa mỗi chủ thể một lần. Cho hai ba đặc điểm cố định (quần áo, tóc, dáng người) và một tên gọi, rồi luôn dùng đúng tên đó: "Cô gái áo khoác đỏ trong [Image 1]".
- Viết theo cảnh, không theo giây. Đánh số cảnh: "Cảnh 1: ... Cảnh 2: ...", mỗi cảnh ghi máy quay, hành động, vị trí và âm thanh. Mốc giây chính xác như "0-3 s" không được model này giữ ổn định.
- Mỗi cảnh một chuyển động máy. Đẩy vào, hoặc lia, hoặc bám theo. Gộp nhiều chuyển động trong một cảnh làm kết quả kém ổn định.
- Tả chuyển động cụ thể. Nêu bộ phận cơ thể, biên độ, tốc độ. Chuyển động chậm và liên tục cho kết quả tốt nhất. Thể hiện cảm xúc qua cơ thể ("cúi đầu, mắt đỏ lên") thay vì gọi tên cảm xúc.
- Dùng ít tham chiếu. Bốn năm file là đủ: một hai file cho nhân vật, một cho bối cảnh, một video cho máy quay, một audio cho không khí. Hơn bốn người làm tham chiếu thì kém ổn định, và không nên gửi nhiều góc của cùng một người.
- Giữ đúng khuôn mặt. Gửi một ảnh cận mặt và một ảnh toàn thân, nói rõ ảnh nào cho khuôn mặt, ảnh nào cho trang phục. Đặt file quan trọng nhất lên đầu.
- Sửa video. Gọi thẳng tên video và nói sửa gì: "Sửa đúng [Video 1]: thay con mèo bằng con sư tử trong [Image 1], giữ nguyên phần còn lại". Đừng viết "tham chiếu [Video 1]" ở đây, nếu không video chỉ được dùng làm tham chiếu.
- Nối dài. "Nối dài [Video 1] về phía sau" hoặc "về phía trước", rồi chuyện gì xảy ra. Có thể ghép hai ba đoạn với chuyển cảnh ở giữa, tổng cộng 15 giây. Thêm "kết thúc bằng [Video 1]" để giữ cảnh gốc trong kết quả.
- Lời thoại và chữ. Đặt câu nói trong ngoặc nhọn và dùng một ngôn ngữ xuyên suốt: Cô ấy nói {Mình trễ rồi}. Với chữ trên màn hình, ghi nội dung, thời điểm, vị trí và cách xuất hiện. Dùng ký tự thông dụng.
- Điều cần tránh. Phụ đề và logo vẫn có thể xuất hiện. "Không phụ đề" và "Không tạo logo hay watermark" giúp giảm; xóa chữ khỏi file tham chiếu cũng vậy.
[Image 1] là cô gái áo khoác đỏ, [Image 2] là chợ đêm. Máy quay theo [Video 1].
Cảnh 1: toàn cảnh, cô bước vào giữa các gian hàng. Máy đẩy vào chậm.
Cảnh 2: trung cảnh, cô dừng ở gian đèn lồng và nhấc một chiếc lên. Máy cố định.
Cảnh 3: cận cảnh, ánh sáng ấm trên khuôn mặt. Cô nói {Cái này}.
Chất điện ảnh, tông ấm, nhiều chi tiết. Không phụ đề. Không tạo logo hay watermark.MCP
Dùng các model từ AI agent qua MCP server của chúng tôi (Streamable HTTP). Thêm URL bên dưới vào Claude Code, Cursor, Windsurf, VS Code hoặc bất kỳ MCP client nào, kèm API key trong header Authorization. Lượt gọi trừ vào số dư với cùng giá như API.
URL: https://api.apistore.cloud/mcp Authorization: Bearer sk-...
# Claude Code
claude mcp add --transport http apistore https://api.apistore.cloud/mcp \
--header "Authorization: Bearer sk-..."
# Cursor (~/.cursor/mcp.json), Windsurf, VS Code and other MCP clients
{
"mcpServers": {
"apistore": {
"url": "https://api.apistore.cloud/mcp",
"headers": { "Authorization": "Bearer sk-..." }
}
}
}Công cụ: list_models (danh sách model và giá của bạn), chat (gửi prompt hoặc messages tới model và nhận câu trả lời), create_image (tạo ảnh và nhận link), create_video (tạo video và nhận id) và get_video (trạng thái, rồi link tải file khi hoàn tất).
CLI
Lệnh apistore chạy các model chat, ảnh và video từ terminal hoặc shell script: văn bản vào, câu trả lời ra, file lưu vào nơi bạn chỉ định. Cần Node 20 trở lên.
npm install -g @apistorecloud/apistore apistore login --key sk-... apistore chat -m deepseek-v4-1-flash "Hello!" apistore chat "Summarize this" < notes.md apistore image "a red bicycle on a white wall" -o bike.png apistore video "waves at sunset, slow pan" --resolution 720p --seconds 5
Mọi lệnh đều có --json để nhận phản hồi API thô, và key cũng có thể lấy từ APISTORE_API_KEY cho script và CI. Chạy apistore --help để xem mọi tuỳ chọn.
Danh sách model
Các model cùng loại dùng chung định dạng request. Giá tính bằng credit (1 US$ = 100 credit): trên 1 triệu token với chat và video, trên mỗi ảnh với ảnh. API trả số tiền bằng USD (cost_usd, balance_usd).
Seedance-2.5Seedance 2.5
Dùng thử| Mỗi 1 triệu token video, 480p | 1.016 |
| Mỗi 1 triệu token video, có video đầu vào (tính độ dài đầu vào + đầu ra), 480p | 608 |
| Mỗi 1 triệu token video, 720p | 1.016 |
| Mỗi 1 triệu token video, có video đầu vào (tính độ dài đầu vào + đầu ra), 720p | 608 |
| Mỗi 1 triệu token video, 1080p | 1.112 |
| Mỗi 1 triệu token video, có video đầu vào (tính độ dài đầu vào + đầu ra), 1080p | 665 |
# start the task
curl https://api.apistore.cloud/v1/videos \
-H "Authorization: Bearer sk-..." \
-H "Content-Type: application/json" \
-d '{
"model": "Seedance-2.5",
"prompt": "A red paper boat drifting across a calm lake at sunrise",
"resolution": "720p",
"ratio": "16:9",
"seconds": 5
}'
# poll until "status": "completed", then download
curl https://api.apistore.cloud/v1/videos/video_... -H "Authorization: Bearer sk-..."
curl https://api.apistore.cloud/v1/videos/video_.../content -H "Authorization: Bearer sk-..." -o video.mp4deepseek-v4-1-flash
Dùng thử| Standard | Thấp điểm | |
|---|---|---|
| Cửa sổ ngữ cảnh | 1 Tr | |
| Output tối đa | 393,2 N | |
| Input | 21 | 21 |
| Input trúng cache | 0 | 0 |
| Output | 84 | 84 |
Giá tiêu chuẩn áp dụng T2–T6 09:00–12:00, 14:00–18:00 UTC+8; giá thấp điểm vào các giờ còn lại.
curl https://api.apistore.cloud/v1/chat/completions \
-H "Authorization: Bearer sk-..." \
-H "Content-Type: application/json" \
-d '{
"model": "deepseek-v4-1-flash",
"messages": [{"role": "user", "content": "Hello!"}]
}'deepseek-v4-1-flash-economy
Dùng thử| Standard | Thấp điểm | |
|---|---|---|
| Cửa sổ ngữ cảnh | 1 Tr | |
| Output tối đa | 393,2 N | |
| Input | 17 | 17 |
| Input trúng cache | 0 | 0 |
| Output | 67 | 67 |
Giá tiêu chuẩn áp dụng T2–T6 09:00–12:00, 14:00–18:00 UTC+8; giá thấp điểm vào các giờ còn lại.
curl https://api.apistore.cloud/v1/chat/completions \
-H "Authorization: Bearer sk-..." \
-H "Content-Type: application/json" \
-d '{
"model": "deepseek-v4-1-flash-economy",
"messages": [{"role": "user", "content": "Hello!"}]
}'dreamina-seedance-2-0-fastSeedance 2.0 Fast
Dùng thử| Mỗi 1 triệu token video, 480p | 336 |
| Mỗi 1 triệu token video, có video đầu vào (tính độ dài đầu vào + đầu ra), 480p | 198 |
| Mỗi 1 triệu token video, 720p | 336 |
| Mỗi 1 triệu token video, có video đầu vào (tính độ dài đầu vào + đầu ra), 720p | 198 |
# start the task
curl https://api.apistore.cloud/v1/videos \
-H "Authorization: Bearer sk-..." \
-H "Content-Type: application/json" \
-d '{
"model": "dreamina-seedance-2-0-fast",
"prompt": "A red paper boat drifting across a calm lake at sunrise",
"resolution": "720p",
"ratio": "16:9",
"seconds": 5
}'
# poll until "status": "completed", then download
curl https://api.apistore.cloud/v1/videos/video_... -H "Authorization: Bearer sk-..."
curl https://api.apistore.cloud/v1/videos/video_.../content -H "Authorization: Bearer sk-..." -o video.mp4seedance-2-0Seedance 2.0
Dùng thử| Mỗi 1 triệu token video, 480p | 665 |
| Mỗi 1 triệu token video, có video đầu vào (tính độ dài đầu vào + đầu ra), 480p | 409 |
| Mỗi 1 triệu token video, 720p | 665 |
| Mỗi 1 triệu token video, có video đầu vào (tính độ dài đầu vào + đầu ra), 720p | 409 |
| Mỗi 1 triệu token video, 1080p | 732 |
| Mỗi 1 triệu token video, có video đầu vào (tính độ dài đầu vào + đầu ra), 1080p | 447 |
| Mỗi 1 triệu token video, 4K | 380 |
| Mỗi 1 triệu token video, có video đầu vào (tính độ dài đầu vào + đầu ra), 4K | 228 |
# start the task
curl https://api.apistore.cloud/v1/videos \
-H "Authorization: Bearer sk-..." \
-H "Content-Type: application/json" \
-d '{
"model": "seedance-2-0",
"prompt": "A red paper boat drifting across a calm lake at sunrise",
"resolution": "720p",
"ratio": "16:9",
"seconds": 5
}'
# poll until "status": "completed", then download
curl https://api.apistore.cloud/v1/videos/video_... -H "Authorization: Bearer sk-..."
curl https://api.apistore.cloud/v1/videos/video_.../content -H "Authorization: Bearer sk-..." -o video.mp4seedance-2.0-miniSeedance 2.0 mini
Dùng thử| Mỗi 1 triệu token video, 480p | 210 |
| Mỗi 1 triệu token video, có video đầu vào (tính độ dài đầu vào + đầu ra), 480p | 126 |
| Mỗi 1 triệu token video, 720p | 210 |
| Mỗi 1 triệu token video, có video đầu vào (tính độ dài đầu vào + đầu ra), 720p | 126 |
# start the task
curl https://api.apistore.cloud/v1/videos \
-H "Authorization: Bearer sk-..." \
-H "Content-Type: application/json" \
-d '{
"model": "seedance-2.0-mini",
"prompt": "A red paper boat drifting across a calm lake at sunrise",
"resolution": "720p",
"ratio": "16:9",
"seconds": 5
}'
# poll until "status": "completed", then download
curl https://api.apistore.cloud/v1/videos/video_... -H "Authorization: Bearer sk-..."
curl https://api.apistore.cloud/v1/videos/video_.../content -H "Authorization: Bearer sk-..." -o video.mp4seedream-5.0-flashSeedream 5.0 Flash
Dùng thử| Giá mỗi ảnh | 1 |
| Kích thước | 1.5K, 1K |
| Tổng số điểm ảnh (rộng × cao) | 0.92 – 2.61 MP |
| Định dạng file | jpeg, png |
| Ảnh đầu vào, tối đa | 10 |
curl https://api.apistore.cloud/v1/images/generations \
-H "Authorization: Bearer sk-..." \
-H "Content-Type: application/json" \
-d '{
"model": "seedream-5.0-flash",
"prompt": "A red paper boat on a calm lake at sunrise",
"size": "1.5K",
"aspect_ratio": "16:9",
"response_format": "url"
}'seedream-5.0-liteSeedream 5.0 Lite
Dùng thử| Giá mỗi ảnh | 3 |
| Kích thước | 2K, 3K, 4K |
| Tổng số điểm ảnh (rộng × cao) | 3.69 – 16.78 MP |
| Định dạng file | jpeg, png |
| Ảnh đầu vào, tối đa | 14 |
curl https://api.apistore.cloud/v1/images/generations \
-H "Authorization: Bearer sk-..." \
-H "Content-Type: application/json" \
-d '{
"model": "seedream-5.0-lite",
"prompt": "A red paper boat on a calm lake at sunrise",
"size": "2K",
"aspect_ratio": "16:9",
"response_format": "url"
}'seedream-5.0-proSeedream 5.0 Pro
Dùng thử| Giá mỗi ảnh | 4 |
| Giá mỗi ảnh lớn (trên 2.61 MP) | 7 |
| Giá mỗi ảnh đầu vào, sau 1 ảnh đầu | 0 |
| Kích thước | 1.5K, 1K, 2K |
| Tổng số điểm ảnh (rộng × cao) | 0.92 – 4.62 MP |
| Định dạng file | jpeg, png |
| Ảnh đầu vào, tối đa | 10 |
curl https://api.apistore.cloud/v1/images/generations \
-H "Authorization: Bearer sk-..." \
-H "Content-Type: application/json" \
-d '{
"model": "seedream-5.0-pro",
"prompt": "A red paper boat on a calm lake at sunrise",
"size": "1.5K",
"aspect_ratio": "16:9",
"response_format": "url"
}'seedream-5.5Seedream 5.5
Dùng thử| Giá mỗi ảnh | 2 |
| Giá mỗi ảnh lớn (trên 2.61 MP) | 3 |
| Giá mỗi ảnh đầu vào | 1 |
| Kích thước | 1.5K, 1K, 2K |
| Tổng số điểm ảnh (rộng × cao) | 0.92 – 4.62 MP |
| Định dạng file | jpeg, png |
| Ảnh đầu vào, tối đa | 10 |
curl https://api.apistore.cloud/v1/images/generations \
-H "Authorization: Bearer sk-..." \
-H "Content-Type: application/json" \
-d '{
"model": "seedream-5.5",
"prompt": "A red paper boat on a calm lake at sunrise",
"size": "1.5K",
"aspect_ratio": "16:9",
"response_format": "url"
}'