axonhub / docs /en /api-reference /image-generation.md
llzai's picture
Upload 1793 files
9853396 verified
# Image Generation API
## Overview
AxonHub supports image generation via the OpenAI-compatible `/v1/images/generations` endpoint.
**Note**: Streaming is not currently supported for image generation.
## API Usage
To generate images, send a request to the `/v1/images/generations` endpoint.
### Example
```python
import requests
import json
url = "https://your-axonhub-instance/v1/images/generations"
headers = {
"Authorization": f"Bearer {API_KEY}",
"Content-Type": "application/json"
}
payload = {
"model": "gpt-image-1",
"prompt": "Generate a beautiful sunset over mountains",
"size": "1024x1024",
"quality": "high",
"n": 1
}
response = requests.post(url, headers=headers, json=payload)
result = response.json()
# Access generated images
for image in result.get("data", []):
if "b64_json" in image:
print(f"Image (base64): {image['b64_json'][:50]}...")
if "url" in image:
print(f"Image URL: {image['url']}")
if "revised_prompt" in image:
print(f"Revised prompt: {image['revised_prompt']}")
```
```typescript
const response = await fetch("https://your-axonhub-instance/v1/images/generations", {
method: "POST",
headers: {
Authorization: `Bearer ${API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
model: "gpt-image-1",
prompt: "Generate a beautiful sunset over mountains",
size: "1024x1024",
quality: "high",
n: 1,
}),
});
const result = await response.json();
// Access generated images
if (result.data) {
result.data.forEach((image, index) => {
if (image.b64_json) {
console.log(`Image ${index + 1} (base64): ${image.b64_json.substring(0, 50)}...`);
}
if (image.url) {
console.log(`Image ${index + 1} URL: ${image.url}`);
}
if (image.revised_prompt) {
console.log(`Revised prompt: ${image.revised_prompt}`);
}
});
}
```
## Response Format
```json
{
"created": 1699000000,
"data": [
{
"b64_json": "iVBORw0KGgoAAAANSUhEUgAA...",
"url": "https://...",
"revised_prompt": "A beautiful sunset over mountains with orange and purple sky"
}
]
}
```
## Request Parameters
| Parameter | Type | Description | Default |
|-----------|------|-------------|---------|
| `prompt` | string | **Required.** A text description of the desired image(s). | - |
| `model` | string | The model to use for image generation. | `dall-e-2` |
| `n` | integer | The number of images to generate. | 1 |
| `quality` | string | The quality of the image: `"standard"`, `"hd"`, `"high"`, `"medium"`, `"low"`, or `"auto"`. | `"auto"` |
| `response_format` | string | The format in which to return the images: `"url"` or `"b64_json"`. | `"b64_json"` |
| `size` | string | The size of the generated images: `"256x256"`, `"512x512"`, or `"1024x1024"`. | `"1024x1024"` |
| `style` | string | The style of the generated images (DALL-E 3 only): `"vivid"` or `"natural"`. | - |
| `user` | string | A unique identifier representing your end-user. | - |
| `background` | string | Background style: `"opaque"` or `"transparent"`. | - |
| `output_format` | string | Image format: `"png"`, `"webp"`, or `"jpeg"`. | `"png"` |
| `output_compression` | number | Compression level (0-100%). | 100 |
| `moderation` | string | Content moderation level: `"low"` or `"auto"`. | - |
| `partial_images` | number | Number of partial images to generate. | 1 |
## Image Edit (Inpainting)
To edit an image, use the `/v1/images/edits` endpoint with multipart/form-data:
```python
import requests
url = "https://your-axonhub-instance/v1/images/edits"
headers = {
"Authorization": f"Bearer {API_KEY}"
}
with open("image.png", "rb") as image_file, open("mask.png", "rb") as mask_file:
files = {
"image": image_file,
"mask": mask_file
}
data = {
"model": "gpt-image-1",
"prompt": "Change the color to white",
"size": "1024x1024",
"n": 1
}
response = requests.post(url, headers=headers, files=files, data=data)
result = response.json()
```
### Image Edit Parameters
| Parameter | Type | Description | Default |
|-----------|------|-------------|---------|
| `image` | file | **Required.** The image to edit. | - |
| `prompt` | string | **Required.** A text description of the desired edit. | - |
| `mask` | file | An optional mask image. Transparent areas indicate where to edit. | - |
| `model` | string | The model to use. | `dall-e-2` |
| `n` | integer | The number of images to generate. | 1 |
| `size` | string | The size of the generated images. | `"1024x1024"` |
| `response_format` | string | The format: `"url"` or `"b64_json"`. | `"b64_json"` |
| `user` | string | A unique identifier for your end-user. | - |
| `background` | string | Background style: `"opaque"` or `"transparent"`. | - |
| `output_format` | string | Image format: `"png"`, `"webp"`, or `"jpeg"`. | `"png"` |
| `output_compression` | number | Compression level (0-100%). | 100 |
| `input_fidelity` | string | Input fidelity level. | - |
| `partial_images` | number | Number of partial images. | 1 |
## Supported Providers
| Provider | Status | Supported Models | Notes |
| -------------------- | ------- | ------------------------------------------------------------- | --------------------- |
| **OpenAI** | ✅ Done | gpt-image-1, dall-e-2, dall-e-3, etc. | No streaming support |
| **ByteDance Doubao** | ✅ Done | doubao-seed-dream-4-0, etc. | No streaming support |
| **OpenRouter** | ✅ Done | gpt-image-1, gemini-2.5-flash-image-preview, etc. | No streaming support |
| **Gemini** | ✅ Done | gemini-2.5-flash-image, gemini-2.0-flash-preview-image-generation, etc. | No streaming support |
| **ZAI** | ✅ Done | - | Generation only, no edit support |
## Related Resources
- [OpenAI API](openai-api.md)
- [Anthropic API](anthropic-api.md)
- [Gemini API](gemini-api.md)
- [Claude Code Integration](../guides/claude-code-integration.md)