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/v1/images/edits.
  • gemini-3-pro-imagegemini-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.completeddata: [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=pngstream 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

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.