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/modelsDanh sách model, kèm loại và giá
GET/balanceSố dư, hạn mức tín dụng và trần chi theo ngày của key
POST/chat/completionsChat, có streaming và tool call (định dạng OpenAI)
POST/images/generationsTạo hoặc chỉnh sửa ảnh
POST/videosTạo tác vụ video
GET/videos/{id}Trạng thái và kết quả tác vụ video
GET/videos/{id}/contentTải video đã hoàn tất (MP4)
GET/videos/{id}/last_frameKhung cuối dạng ảnh, khi có yêu cầu
POST/mcpMCP 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"}}.

HTTPcode
400invalid_requestBody 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.
400wrong_endpointModel thuộc loại khác: model chat dùng /chat/completions, model ảnh dùng /images/generations, model video dùng /videos.
400size_not_available / format_not_available / too_many_imagesModel ả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.
400resolution_not_availableModel video không bán ở độ phân giải này.
400video_not_readyVideo chưa hoàn tất; tiếp tục gọi GET /videos/{id}.
400not_a_draft / draft_not_ready / draft_wrong_model / draft_expireddraft_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.
400user_requiredChỉ với tài khoản relay: mọi request chat phải có trường user.
401invalid_api_keyThiếu, sai hoặc đã thu hồi API key.
402insufficient_balance / key_spend_capNạp thêm tiền, hoặc tăng trần chi theo ngày của key.
403account_inactiveTài khoản đang bị tạm ngưng.
403ip_not_allowedKey có danh sách IP được phép và request đến từ địa chỉ khác.
404model_not_foundKhông có model này. Xem GET /models.
404video_not_found / draft_not_foundTài khoản của bạn không có video hoặc bản nháp này.
404video_expired / last_frame_expired / image_expired / no_last_frameFile 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ờ.
404not_foundKhông có đường dẫn này. Xem mục Endpoints.
405method_not_allowedSai phương thức HTTP cho đường dẫn này, ví dụ GET tới /chat/completions.
413request_too_largeBody của request quá lớn.
429rate_limit_exceeded / concurrency_limit / model_at_capacityGiảm tốc và thử lại sau thời gian trong header Retry-After.
429model_rate_limit_exceeded / model_concurrency_limitTà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.
429upstream_rate_limitedBả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.
429too_many_failed_requestsKey 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.
500internal_errorCó 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.
502upstream_errorNhà cung cấp model lỗi. Có thể thử lại; bạn không bị tính tiền.
503upstream_unavailable / billing_unavailable / config_unavailable / model_not_priced / gateway_drainingTạm thời. Thử lại với thời gian chờ tăng dần.
504upstream_errorModel 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ườngKiểu
modelstringBắt buộc. Id của model video.
promptstringBắt buộc (trừ khi dùng draft_id). 3 đến 20.000 ký tự.
secondsinteger | "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".
resolutionstring480p, 720p (mặc định), 1080p hoặc 4k; chỉ những độ phân giải model hỗ trợ (xem danh sách model).
ratiostring16: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.
imagestringKhung đầu: link ảnh hoặc data URL (first_frame cũng được nhận như cùng trường).
last_framestringKhung cuối, dùng cùng với image.
audiobooleanTạo âm thanh cho video. Mặc định true.
seedintegerDùng lại seed để lặp lại kết quả.
camera_fixedbooleantrue giữ máy quay cố định.
bitrate_modestringstandard (mặc định) hoặc high. high có thể lỗi khi model quá tải; khi đó được hoàn tiền.
return_last_framebooleantrue: khung cuối được lưu dạng ảnh tại GET /videos/{id}/last_frame.
reference_imagesstring[]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_videosstring[]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_audiosstring[]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_typestringKhi 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.
draftbooleanSeedance 2.5: true tạo bản xem trước 480p với giá 480p. resolution phải là 480p.
draft_idstringTạ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ài4 đến 30 giây, hoặc "auto" để model tự chọn
Độ phân giải480p, 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ếuTối đa 30 ảnh, 10 video và 10 audio. Chấp nhận chỉ gửi audio
Âm thanhLời thoại, nhạc và hiệu ứng được tạo cùng hình (audio: true)
Bản nhápCó: 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.
Prompt mẫu
[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ài4 đến 15 giây, hoặc "auto"
Độ phân giảiSeedance 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ếuTối đa 9 ảnh, 3 video và 3 audio. Audio phải đi kèm ảnh hoặc video
Âm thanhLời thoại, nhạc và hiệu ứng được tạo cùng hình (audio: true)
Bản nhápKhông
File 4KH.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.
Prompt mẫu
[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, 480p1.016
Mỗi 1 triệu token video, có video đầu vào (tính độ dài đầu vào + đầu ra), 480p608
Mỗi 1 triệu token video, 720p1.016
Mỗi 1 triệu token video, có video đầu vào (tính độ dài đầu vào + đầu ra), 720p608
Mỗi 1 triệu token video, 1080p1.112
Mỗi 1 triệu token video, có video đầu vào (tính độ dài đầu vào + đầu ra), 1080p665
Request mẫu
# 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.mp4

deepseek-v4-1-flash

Dùng thử
StandardThấp điểm
Cửa sổ ngữ cảnh1 Tr
Output tối đa393,2 N
Input2121
Input trúng cache00
Output8484

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.

Request mẫu
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ử
StandardThấp điểm
Cửa sổ ngữ cảnh1 Tr
Output tối đa393,2 N
Input1717
Input trúng cache00
Output6767

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.

Request mẫu
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, 480p336
Mỗi 1 triệu token video, có video đầu vào (tính độ dài đầu vào + đầu ra), 480p198
Mỗi 1 triệu token video, 720p336
Mỗi 1 triệu token video, có video đầu vào (tính độ dài đầu vào + đầu ra), 720p198
Request mẫu
# 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.mp4

seedance-2-0Seedance 2.0

Dùng thử
Mỗi 1 triệu token video, 480p665
Mỗi 1 triệu token video, có video đầu vào (tính độ dài đầu vào + đầu ra), 480p409
Mỗi 1 triệu token video, 720p665
Mỗi 1 triệu token video, có video đầu vào (tính độ dài đầu vào + đầu ra), 720p409
Mỗi 1 triệu token video, 1080p732
Mỗi 1 triệu token video, có video đầu vào (tính độ dài đầu vào + đầu ra), 1080p447
Mỗi 1 triệu token video, 4K380
Mỗi 1 triệu token video, có video đầu vào (tính độ dài đầu vào + đầu ra), 4K228
Request mẫu
# 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.mp4

seedance-2.0-miniSeedance 2.0 mini

Dùng thử
Mỗi 1 triệu token video, 480p210
Mỗi 1 triệu token video, có video đầu vào (tính độ dài đầu vào + đầu ra), 480p126
Mỗi 1 triệu token video, 720p210
Mỗi 1 triệu token video, có video đầu vào (tính độ dài đầu vào + đầu ra), 720p126
Request mẫu
# 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.mp4

seedream-5.0-flashSeedream 5.0 Flash

Dùng thử
Giá mỗi ảnh1
Kích thước1.5K, 1K
Tổng số điểm ảnh (rộng × cao)0.92 – 2.61 MP
Định dạng filejpeg, png
Ảnh đầu vào, tối đa10
Request mẫu
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 ảnh3
Kích thước2K, 3K, 4K
Tổng số điểm ảnh (rộng × cao)3.69 – 16.78 MP
Định dạng filejpeg, png
Ảnh đầu vào, tối đa14
Request mẫu
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 ảnh4
Giá mỗi ảnh lớn (trên 2.61 MP)7
Giá mỗi ảnh đầu vào, sau 1 ảnh đầu0
Kích thước1.5K, 1K, 2K
Tổng số điểm ảnh (rộng × cao)0.92 – 4.62 MP
Định dạng filejpeg, png
Ảnh đầu vào, tối đa10
Request mẫu
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 ảnh2
Giá mỗi ảnh lớn (trên 2.61 MP)3
Giá mỗi ảnh đầu vào1
Kích thước1.5K, 1K, 2K
Tổng số điểm ảnh (rộng × cao)0.92 – 4.62 MP
Định dạng filejpeg, png
Ảnh đầu vào, tối đa10
Request mẫu
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"
  }'