Gọi bằng API (ảnh / video)
Định dạng chuẩn theo API của OpenAI, xác thực bằng token. Ảnh trả về base64 đồng bộ; video là tác vụ bất đồng bộ (tạo → thăm dò → tải xuống).
Nhóm token
Token bắt buộc phải thuộc nhóm media / media-gen, nếu không sẽ báo lỗi «Không có kênh khả dụng». Xem Chọn nhóm.
Ảnh · Tạo ảnh từ văn bản
POST https://byesu.si/v1/images/generations
Authorization: Bearer sk-token-của-bạn
Content-Type: application/json| Trường | Bắt buộc | Mô tả |
|---|---|---|
model | ✅ | Tên mô hình, xem Tạo ảnh |
prompt | ✅ | Prompt (câu lệnh mô tả) |
size | Rộng x cao tính bằng pixel, đồng thời quyết định tỷ lệ và bậc độ phân giải: cạnh dài ≈1024 → 1K, ≈2048 → 2K, ≈4096 → 4K. Ví dụ "1024x1024" (1:1 · 1K), "2048x1152" (16:9 · 2K), "4096x4096" (1:1 · 4K). Không truyền thì mặc định 1:1 bậc cơ bản |
Các mô hình ảnh GPT đang cung cấp có cùng giá ở 1K, 2K và 4K; phía thượng nguồn có thể điều chỉnh bố cục và kích thước thực tế. Ba mô hình ảnh Gemini dùng API gốc
generateContentvà chọn bậc bằngimageSize— xem Tạo ảnh.
curl https://byesu.si/v1/images/generations \
-H "Authorization: Bearer sk-token-của-bạn" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-image-2",
"prompt": "Một chú chó golden retriever chạy giữa cánh đồng lúa mì vàng óng lúc hoàng hôn, cảm giác điện ảnh",
"size": "1024x576"
}'Kết quả trả về (ảnh là base64 của PNG):
{ "data": [ { "b64_json": "<chuỗi base64>" } ] }Ảnh · Tạo ảnh từ ảnh (ảnh tham chiếu)
Dùng POST /v1/images/edits, định dạng multipart/form-data, ảnh tham chiếu được tải lên dưới dạng tệp (tên trường image, có thể lặp lại để truyền nhiều ảnh, mỗi ảnh ≤8MB, giới hạn số lượng tùy từng mô hình, xem Tạo ảnh):
curl https://byesu.si/v1/images/edits \
-H "Authorization: Bearer sk-token-của-bạn" \
-F model="gpt-image-2" \
-F prompt="Biến bức ảnh này thành phong cách tranh màu nước" \
-F size="1024x1024" \
-F image=@ref1.png \
-F image=@ref2.pngĐịnh dạng kết quả trả về giống như tạo ảnh từ văn bản.
Video (bất đồng bộ, kiểu Sora)
Các mô hình video hiện chưa mở
Hiện chưa có mô hình video nào đang được cung cấp. Quy trình bên dưới sẽ dùng được ngay khi mở lại; lúc đó hãy thay model bằng tên được liệt kê ở trang Tạo video.
Ba bước: tạo tác vụ → thăm dò trạng thái → tải mp4.
import requests, time
BASE = "https://byesu.si"
H = {"Authorization": "Bearer sk-token-của-bạn"}
# 1. Tạo tác vụ
task = requests.post(f"{BASE}/v1/videos", headers=H, json={
"model": "<video-model>",
"prompt": "Sóng biển vỗ vào đá ngầm, quay chậm, cảm giác điện ảnh",
"seconds": "6", # thời lượng (giây), các giá trị khả dụng tùy mô hình
"size": "1280x720", # tỷ lệ biểu đạt bằng kích thước; 1920x1080 = 1080p (một số mô hình hỗ trợ)
}).json()
# 2. Thăm dò cho đến khi hoàn thành (vài chục giây đến vài phút)
while task["status"] not in ("completed", "failed"):
time.sleep(5)
task = requests.get(f"{BASE}/v1/videos/{task['id']}", headers=H).json()
# 3. Tải mp4
if task["status"] == "completed":
mp4 = requests.get(f"{BASE}/v1/videos/{task['id']}/content", headers=H)
open("out.mp4", "wb").write(mp4.content)Tạo video từ ảnh: khi tạo tác vụ, chuyển sang dùng multipart/form-data, ảnh khung hình đầu đặt vào trường tệp input_reference (model / prompt / seconds / size truyền cùng dưới dạng trường form).
Video tính phí theo giây
Giá video = đơn giá mỗi giây × seconds. Tác vụ thất bại sẽ được tự động hoàn tiền.
Báo lỗi
- «Không có kênh khả dụng» → nhóm token không đúng, xem Chọn nhóm
too many reference images→ số ảnh tham chiếu vượt quá giới hạn của mô hình đó- 401 / Số dư không đủ / Lỗi khác → xem Lỗi thường gặp & cách xử lý
