Image Generation (OpenAI-compatible API)¶
1. Overview¶
OpenAI-compatible interface for the Nano Banana image model.
2. Request¶
- Method:
POST -
Endpoint:
https://gateway.serevixai.ai/v1/images/generations
3. Parameters¶
3.1 Header Parameters¶
| Parameter | Type | Required | Description | Example |
|---|---|---|---|---|
Content-Type |
string | Yes | Sets the request content type. It must be application/json. |
application/json |
Accept |
string | Yes | Sets the response content type. The recommended value is application/json. |
application/json |
Authorization |
string | Yes | API key required for authentication, in the format Bearer $YOUR_API_KEY. |
Bearer $YOUR_API_KEY |
3.2 Body Parameters (application/json)¶
| Parameter | Type | Required | Description | Example (default) |
|---|---|---|---|---|
| model | string | Yes | The model ID to use, for example gemini-2.5-flash-image. |
gemini-2.5-flash-image |
| prompt | string | Yes | A text prompt describing the image to generate. Because this is a multimodal model, the prompt should clearly describe the desired image or explicitly request image creation; very short phrases may not produce an image. | A cute baby sea otter |
| aspect_ratio | string | No | Target image aspect ratio. Supported values: 1:1, 2:3, 3:2, 3:4, 4:3, 4:5, 5:4, 9:16, 16:9, and 21:9. |
|
| image_size | string | No | Image size to generate. Supported values: 1K, 2K, and 4K. |
1K |
4. Request Examples¶
POST /v1/images/generations
Content-Type: application/json
Accept: application/json
Authorization: Bearer $YOUR_API_KEY
{
"model": "gemini-2.5-flash-image",
"prompt": "A cute baby sea otter",
"aspect_ratio": "1:1"
}
curl https://gateway.serevixai.ai/v1/images/generations \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-H "Authorization: Bearer $YOUR_API_KEY" \
-d '{
"model": "gemini-2.5-flash-image",
"prompt": "A cute baby sea otter",
"aspect_ratio": "1:1"
}'
package main
import (
"context"
"encoding/base64"
"fmt"
"os"
"github.com/openai/openai-go"
"github.com/openai/openai-go/option"
)
func main() {
apiKey := "sk-123456789012345678901234567890123456789012345678"
exampleFilePath := "example.png"
client := openai.NewClient(
option.WithAPIKey(apiKey),
option.WithBaseURL("https://gateway.serevixai.ai/v1"),
)
resp, err := client.Images.Generate(
context.Background(),
openai.ImageGenerateParams{
Model: "gemini-2.5-flash-image",
Prompt: "A cute baby sea otter",
ResponseFormat: "b64_json",
},
option.WithJSONSet("aspect_ratio", "1:1"),
)
if err != nil {
fmt.Println("error:", err)
return
}
if len(resp.Data) == 0 || resp.Data[0].B64JSON == "" {
fmt.Println("error: empty b64_json")
return
}
imageData, err := base64.StdEncoding.DecodeString(resp.Data[0].B64JSON)
if err != nil {
fmt.Println("error:", err)
return
}
if err := os.WriteFile(exampleFilePath, imageData, 0644); err != nil {
fmt.Println("error:", err)
return
}
fmt.Println("success to write to file", exampleFilePath)
}
#!/usr/bin/env python3
import base64
from openai import OpenAI
def main():
api_key = "sk-123456789012345678901234567890123456789012345678"
example_file_path = "example.png"
client = OpenAI(
api_key=api_key,
base_url="https://gateway.serevixai.ai/v1"
)
response = client.images.generate(
model="gemini-2.5-flash-image",
prompt="A cute baby sea otter",
response_format="b64_json",
extra_body={"aspect_ratio": "1:1"}
)
if not response.data or not response.data[0].b64_json:
print("error: empty b64_json")
return
image_data = base64.b64decode(response.data[0].b64_json)
with open(example_file_path, "wb") as f:
f.write(image_data)
print("success to write to file", example_file_path)
if __name__ == "__main__":
main()
5. Response Example¶
{
"created": 1589478378,
"data": [
{
"b64_json": "..."
}
]
}