生成图像(OpenAI 兼容 API)
Generate an image based on input parameters using an OpenAI compatible endpoint. This endpoint does not support the full feature set of the Venice Image Generation endpoint, but is compatible with the existing OpenAI endpoint.
Authentication: This endpoint accepts either a Bearer API key or a SIGN-IN-WITH-X header for x402 wallet-based authentication. The legacy X-Sign-In-With-X header is also accepted during migration. When using x402, a 402 Payment Required response indicates insufficient balance and includes top-up instructions.
curl --request POST \
--url https://api.venice.ai/api/v1/images/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"prompt": "A beautiful sunset over mountain ranges",
"background": "auto",
"model": "grok-imagine-image",
"moderation": "auto",
"n": 1,
"output_compression": 100,
"output_format": "png",
"quality": "auto",
"response_format": "b64_json",
"size": "1024x1024",
"style": "natural",
"user": "user123",
"anon_user_id": "end-user-123"
}
'import requests
url = "https://api.venice.ai/api/v1/images/generations"
payload = {
"prompt": "A beautiful sunset over mountain ranges",
"background": "auto",
"model": "grok-imagine-image",
"moderation": "auto",
"n": 1,
"output_compression": 100,
"output_format": "png",
"quality": "auto",
"response_format": "b64_json",
"size": "1024x1024",
"style": "natural",
"user": "user123",
"anon_user_id": "end-user-123"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
prompt: 'A beautiful sunset over mountain ranges',
background: 'auto',
model: 'grok-imagine-image',
moderation: 'auto',
n: 1,
output_compression: 100,
output_format: 'png',
quality: 'auto',
response_format: 'b64_json',
size: '1024x1024',
style: 'natural',
user: 'user123',
anon_user_id: 'end-user-123'
})
};
fetch('https://api.venice.ai/api/v1/images/generations', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.venice.ai/api/v1/images/generations",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'prompt' => 'A beautiful sunset over mountain ranges',
'background' => 'auto',
'model' => 'grok-imagine-image',
'moderation' => 'auto',
'n' => 1,
'output_compression' => 100,
'output_format' => 'png',
'quality' => 'auto',
'response_format' => 'b64_json',
'size' => '1024x1024',
'style' => 'natural',
'user' => 'user123',
'anon_user_id' => 'end-user-123'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.venice.ai/api/v1/images/generations"
payload := strings.NewReader("{\n \"prompt\": \"A beautiful sunset over mountain ranges\",\n \"background\": \"auto\",\n \"model\": \"grok-imagine-image\",\n \"moderation\": \"auto\",\n \"n\": 1,\n \"output_compression\": 100,\n \"output_format\": \"png\",\n \"quality\": \"auto\",\n \"response_format\": \"b64_json\",\n \"size\": \"1024x1024\",\n \"style\": \"natural\",\n \"user\": \"user123\",\n \"anon_user_id\": \"end-user-123\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.venice.ai/api/v1/images/generations")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"prompt\": \"A beautiful sunset over mountain ranges\",\n \"background\": \"auto\",\n \"model\": \"grok-imagine-image\",\n \"moderation\": \"auto\",\n \"n\": 1,\n \"output_compression\": 100,\n \"output_format\": \"png\",\n \"quality\": \"auto\",\n \"response_format\": \"b64_json\",\n \"size\": \"1024x1024\",\n \"style\": \"natural\",\n \"user\": \"user123\",\n \"anon_user_id\": \"end-user-123\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.venice.ai/api/v1/images/generations")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"prompt\": \"A beautiful sunset over mountain ranges\",\n \"background\": \"auto\",\n \"model\": \"grok-imagine-image\",\n \"moderation\": \"auto\",\n \"n\": 1,\n \"output_compression\": 100,\n \"output_format\": \"png\",\n \"quality\": \"auto\",\n \"response_format\": \"b64_json\",\n \"size\": \"1024x1024\",\n \"style\": \"natural\",\n \"user\": \"user123\",\n \"anon_user_id\": \"end-user-123\"\n}"
response = http.request(request)
puts response.read_body{
"created": 1713833628,
"data": [
{
"b64_json": "iVBORw0KGgoAAAANSUhEUgAA..."
}
]
}{
"error": "<string>",
"details": {
"_errors": [],
"field": {
"_errors": [
"Field is required"
]
}
}
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "This API key is restricted to configured IP addresses, and this request's source IP is not allowed"
}{
"error": "<string>"
}{
"error": "<string>",
"suggested_prompt": "A watercolor painting of a lighthouse on a rocky coast at sunset.",
"recommended_model": "chroma",
"retryable": true
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}授权
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
请求头
Supported compression encodings (gzip, br).
"gzip, br"
请求体
A text description of the desired image.
1 - 1500"A beautiful sunset over mountain ranges"
Set to transparent to return the image with a transparent background (alpha channel). transparent is only supported by models with supportsTransparentBackground: true in their constraints (see GET /api/v1/models) and with output_format png or webp; otherwise the request is rejected. If the model does not exist, the default image model is used. auto, opaque and null keep the model default background.
transparent, opaque, auto "auto"
The model to use for image generation. Defaults to Venice's default image model. If a non-existent model is specified (ie an OpenAI model name), it will default to Venice's default image model.
"grok-imagine-image"
Controls blurring of images classified as adult content. auto (the default, also used when null) blurs them; low returns unblurred output. This is the OpenAI-compatible equivalent of safe_mode on /image/generate. No Pro subscription is required, and the mature filter setting in the Venice app does not affect this. The x-venice-is-blurred response header reports whether the returned image was blurred.
low, auto "auto"
Number of images to generate. Venice presently only supports 1 image per request.
1 <= x <= 11
This parameter is not used in Venice image generation but is supported for compatibility with OpenAI API
0 <= x <= 100Output format for generated images
jpeg, png, webp "png"
This parameter is not used in Venice image generation but is supported for compatibility with OpenAI API
auto, high, medium, low, hd, standard "auto"
Response format. URL will be a data URL.
b64_json, url "b64_json"
Size of generated images. Default is 1024x1024
auto, 256x256, 512x512, 1024x1024, 1536x1024, 1024x1536, 1792x1024, 1024x1792 "1024x1024"
This parameter is not used in Venice image generation but is supported for compatibility with OpenAI API
vivid, natural "natural"
This parameter is discarded and is supported for compatibility with OpenAI API. It is not an alias of anon_user_id.
"user123"
Optional identifier for the API customer's end user. Combined with the Venice user id when attributing the request to upstream providers. Distinct from the discarded OpenAI user field. Must be printable ASCII and must not contain ||.
1 - 128^[\x20-\x7E]+$"end-user-123"
curl --request POST \
--url https://api.venice.ai/api/v1/images/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"prompt": "A beautiful sunset over mountain ranges",
"background": "auto",
"model": "grok-imagine-image",
"moderation": "auto",
"n": 1,
"output_compression": 100,
"output_format": "png",
"quality": "auto",
"response_format": "b64_json",
"size": "1024x1024",
"style": "natural",
"user": "user123",
"anon_user_id": "end-user-123"
}
'import requests
url = "https://api.venice.ai/api/v1/images/generations"
payload = {
"prompt": "A beautiful sunset over mountain ranges",
"background": "auto",
"model": "grok-imagine-image",
"moderation": "auto",
"n": 1,
"output_compression": 100,
"output_format": "png",
"quality": "auto",
"response_format": "b64_json",
"size": "1024x1024",
"style": "natural",
"user": "user123",
"anon_user_id": "end-user-123"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
prompt: 'A beautiful sunset over mountain ranges',
background: 'auto',
model: 'grok-imagine-image',
moderation: 'auto',
n: 1,
output_compression: 100,
output_format: 'png',
quality: 'auto',
response_format: 'b64_json',
size: '1024x1024',
style: 'natural',
user: 'user123',
anon_user_id: 'end-user-123'
})
};
fetch('https://api.venice.ai/api/v1/images/generations', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.venice.ai/api/v1/images/generations",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'prompt' => 'A beautiful sunset over mountain ranges',
'background' => 'auto',
'model' => 'grok-imagine-image',
'moderation' => 'auto',
'n' => 1,
'output_compression' => 100,
'output_format' => 'png',
'quality' => 'auto',
'response_format' => 'b64_json',
'size' => '1024x1024',
'style' => 'natural',
'user' => 'user123',
'anon_user_id' => 'end-user-123'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.venice.ai/api/v1/images/generations"
payload := strings.NewReader("{\n \"prompt\": \"A beautiful sunset over mountain ranges\",\n \"background\": \"auto\",\n \"model\": \"grok-imagine-image\",\n \"moderation\": \"auto\",\n \"n\": 1,\n \"output_compression\": 100,\n \"output_format\": \"png\",\n \"quality\": \"auto\",\n \"response_format\": \"b64_json\",\n \"size\": \"1024x1024\",\n \"style\": \"natural\",\n \"user\": \"user123\",\n \"anon_user_id\": \"end-user-123\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.venice.ai/api/v1/images/generations")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"prompt\": \"A beautiful sunset over mountain ranges\",\n \"background\": \"auto\",\n \"model\": \"grok-imagine-image\",\n \"moderation\": \"auto\",\n \"n\": 1,\n \"output_compression\": 100,\n \"output_format\": \"png\",\n \"quality\": \"auto\",\n \"response_format\": \"b64_json\",\n \"size\": \"1024x1024\",\n \"style\": \"natural\",\n \"user\": \"user123\",\n \"anon_user_id\": \"end-user-123\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.venice.ai/api/v1/images/generations")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"prompt\": \"A beautiful sunset over mountain ranges\",\n \"background\": \"auto\",\n \"model\": \"grok-imagine-image\",\n \"moderation\": \"auto\",\n \"n\": 1,\n \"output_compression\": 100,\n \"output_format\": \"png\",\n \"quality\": \"auto\",\n \"response_format\": \"b64_json\",\n \"size\": \"1024x1024\",\n \"style\": \"natural\",\n \"user\": \"user123\",\n \"anon_user_id\": \"end-user-123\"\n}"
response = http.request(request)
puts response.read_body{
"created": 1713833628,
"data": [
{
"b64_json": "iVBORw0KGgoAAAANSUhEUgAA..."
}
]
}{
"error": "<string>",
"details": {
"_errors": [],
"field": {
"_errors": [
"Field is required"
]
}
}
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "This API key is restricted to configured IP addresses, and this request's source IP is not allowed"
}{
"error": "<string>"
}{
"error": "<string>",
"suggested_prompt": "A watercolor painting of a lighthouse on a rocky coast at sunset.",
"recommended_model": "chroma",
"retryable": true
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}