API tạo ảnh GPT Image 2 và Gemini
Tạo ảnh bằng GPT Image 2 qua Images API tương thích OpenAI hoặc bằng Nano Banana Pro và Nano Banana 2 qua API Gemini gốc.
Trang này tập hợp hai hợp đồng API tạo ảnh độc lập. Cả hai dùng chung API Key và Credits của Modelflare, nhưng định dạng yêu cầu và phản hồi không thể dùng lẫn nhau.
- gpt-image-2 dùng các hợp đồng tương thích OpenAI /v1/images/generations và /v1/images/edits.
- gemini-3-pro-image và gemini-3.1-flash-image dùng hợp đồng Gemini gốc generateContent.
Hãy chọn dòng model trước khi sao chép ví dụ và không trộn các field Gemini với GPT Images.
1. GPT Image 2 — Images API tương thích OpenAI
Tạo PNG hoặc chỉnh sửa ảnh tham chiếu từ URL công khai hay tệp tải lên bằng gpt-image-2 qua Images API tương thích OpenAI. Mỗi yêu cầu trả về một ảnh, hỗ trợ chất lượng medium hoặc high, URL ký ngắn hạn hoặc base64 và SSE tùy chọn.
Chọn endpoint và chế độ
- Dùng https://origin.modelflare.dev/v1 cho JSON đồng bộ có thể mất vài phút.
- Dùng https://modelflare.dev/v1 với stream=true cho yêu cầu dài qua Cloudflare; heartbeat SSE giữ kết nối đến khi ảnh cuối sẵn sàng.
- Không chuyển hướng POST đang chạy giữa các host.
Yêu cầu đồng bộ
curl https://origin.modelflare.dev/v1/images/generations \
-H "Authorization: Bearer YOUR_MODELFLARE_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"gpt-image-2","prompt":"Căn nhà gỗ yên tĩnh bên hồ lúc bình minh","n":1,"quality":"medium","size":"1024x1024","response_format":"url","output_format":"png"}'
Phản hồi URL chứa liên kết Modelflare riêng tư có chữ ký và hết hạn sau một giờ. Dùng response_format=b64_json để nhận PNG đã xác thực mà không lưu đối tượng đầu ra API.
Trang Mô hình & Giá trực tiếp hiển thị các mức giá medium và high cho kích thước phổ biến. Việc tính phí dùng đúng chất lượng và kích thước đã yêu cầu, không áp dụng hệ số nhóm định tuyến thông thường, và ghi phí cuối cùng vào nhật ký sử dụng.
Chỉnh sửa ảnh tham chiếu
Gửi một hoặc nhiều URL ảnh HTTP(S) có thể truy cập công khai tới POST /v1/images/edits. Mỗi phần tử images chỉ chứa một image_url:
curl https://origin.modelflare.dev/v1/images/edits \
-H "Authorization: Bearer YOUR_MODELFLARE_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"gpt-image-2","prompt":"Đổi nền thành studio chụp ảnh màu trắng sạch sẽ","images":[{"image_url":"https://example.com/input.png"}],"size":"2048x2048","response_format":"url"}'
Hoặc tải lên một tệp PNG, JPEG hay WebP cục bộ bằng multipart/form-data:
curl https://origin.modelflare.dev/v1/images/edits \
-H "Authorization: Bearer YOUR_MODELFLARE_API_KEY" \
-F "model=gpt-image-2" \
-F "prompt=Đổi nền thành studio chụp ảnh màu trắng sạch sẽ" \
-F "image=@/path/to/input.png" \
-F "size=2048x2048" \
-F "response_format=url"
Yêu cầu multipart phải chứa đúng một tệp ảnh và có tổng dung lượng không quá 20 MiB. URL tham chiếu hoặc tệp tải lên được gửi tới nhà cung cấp upstream đã chọn; URL phải còn truy cập được trong lúc tải. Modelflare không lưu loại đầu vào tham chiếu nào như tài sản đầu ra API.
Yêu cầu SSE
curl -N https://modelflare.dev/v1/images/generations \
-H "Authorization: Bearer YOUR_MODELFLARE_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"gpt-image-2","prompt":"Một con mèo trắng chạy trên phố đèn neon dưới mưa","n":1,"quality":"high","size":"1024x1024","response_format":"url","stream":true}'
Chú thích SSE chỉ là heartbeat. Kết thúc sau image_generation.completed và data: [DONE].
Các trường được hỗ trợ gồm model, prompt, n=1, quality=medium|high, WIDTHxHEIGHT hợp lệ, response_format=url|b64_json, output_format=png và stream tùy chọn. /v1/images/edits nhận mảng images không rỗng với một image_url HTTP(S) công khai cho mỗi phần tử, hoặc đúng một tệp PNG, JPEG hay WebP hợp lệ trong trường multipart image. Yêu cầu tạo ảnh từ chối ảnh tham chiếu; nhiều tệp tải lên, đầu vào data/base64, mask, input_fidelity, biến thể, ảnh từng phần và trường không rõ đều bị từ chối. Credits đã giữ cho yêu cầu thất bại được hoàn lại theo đường dẫn idempotent dựa trên Request ID.
Hãy dùng API Key thông thường. Key ghim vào một kênh sẽ bị từ chối, và Key bật giới hạn model phải chứa gpt-image-2.
2. Gemini Image — API Gemini gốc
Dùng Nano Banana Pro hoặc Nano Banana 2 theo định dạng Gemini gốc. Các model này không dùng /v1/images/generations.
Endpoint và yêu cầu kéo dài
- Đồng bộ: POST https://modelflare.dev/v1beta/models/{model}:generateContent.
- Khuyên dùng cho tạo ảnh: POST https://modelflare.dev/v1beta/models/{model}:streamGenerateContent?alt=sse.
- origin.modelflare.dev không mở /v1beta. Hãy dùng tên miền chính và ưu tiên streaming cho tác vụ dài.
Yêu cầu streaming
Ví dụ này dùng Nano Banana 2. Thay model trong URL bằng gemini-3-pro-image để dùng Nano Banana Pro.
curl -N "https://modelflare.dev/v1beta/models/gemini-3.1-flash-image:streamGenerateContent?alt=sse" \
-H "x-goog-api-key: YOUR_MODELFLARE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"contents": [{
"role": "user",
"parts": [{"text": "Create a clean blue circle centered on a white background. No text."}]
}],
"generationConfig": {
"responseModalities": ["TEXT", "IMAGE"],
"imageConfig": {"aspectRatio": "1:1", "imageSize": "1K"}
}
}'
Hợp đồng phản hồi
Mỗi sự kiện SSE data: chứa JSON Gemini gốc. Base64 của ảnh cuối nằm tại candidates[].content.parts[].inlineData.data, MIME tại inlineData.mimeType. Phản hồi cũng có thể chứa part văn bản. Kết thúc khi có finishReason=STOP hoặc stream đóng; ở đây không dùng image_generation.completed.
Model, độ phân giải và giá ước tính
| Model | Độ phân giải | Giá ước tính mỗi ảnh |
|---|---|---|
| Nano Banana Pro | 1K / 2K | US$0.06720 |
| Nano Banana Pro | 4K | US$0.12000 |
| Nano Banana 2 | 0.5K | US$0.02241 |
| Nano Banana 2 | 1K | US$0.03360 |
| Nano Banana 2 | 2K | US$0.05040 |
| Nano Banana 2 | 4K | US$0.07560 |
Phải viết hoa K trong imageSize. Đây là giá ước tính cho một ảnh; chi phí cuối có thể thay đổi nhẹ theo nội dung yêu cầu và được ghi trong nhật ký sử dụng.
Dùng API Key Modelflare thông thường qua x-goog-api-key. Key phải dùng được nhóm gemini-image và chứa model đã chọn nếu bật giới hạn model.