Generate images from a text prompt
package main
import ( "fmt" "strings" "net/http" "io")
func main() {
url := "https://api.ai.wpengine.com/v1/images/generations"
payload := strings.NewReader("{ \"model\": \"google/gemini-2.5-flash-image\", \"prompt\": \"example\", \"n\": 1, \"size\": \"1024x1024\" }")
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(res) fmt.Println(string(body))
}const url = 'https://api.ai.wpengine.com/v1/images/generations';const options = { method: 'POST', headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'}, body: '{"model":"google/gemini-2.5-flash-image","prompt":"example","n":1,"size":"1024x1024"}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('POST', 'https://api.ai.wpengine.com/v1/images/generations', [ 'body' => '{ "model": "google/gemini-2.5-flash-image", "prompt": "example", "n": 1, "size": "1024x1024" }', 'headers' => [ 'Authorization' => 'Bearer <token>', 'Content-Type' => 'application/json', ],]);
echo $response->getBody();curl --request POST \ --url https://api.ai.wpengine.com/v1/images/generations \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --data '{ "model": "google/gemini-2.5-flash-image", "prompt": "example", "n": 1, "size": "1024x1024" }'Requires a valid WP Engine bearer token. API keys must carry the “image:write” permission.
Authorizations
Section titled “Authorizations”Request Bodyrequired
Section titled “Request Bodyrequired”object
Model identifier in “provider/model-name” format (e.g. “google/gemini-2.5-flash-image”).
Example
google/gemini-2.5-flash-imageText prompt describing the desired image.
Number of images to generate (1-4).
Image dimensions (e.g. “1024x1024”, “1024x1792”, “1792x1024”).
Example
1024x1024Responses
Section titled “Responses”Generated images
object
Unix timestamp.
object
Base64-encoded image data.
The prompt as revised by the model (may differ from the input).
Examplegenerated
{ "created": 1, "data": [ { "b64_json": "example", "revised_prompt": "example" } ]}Invalid request body or parameters. On agent create and update, error type “profile_unavailable” means the requested profile is not available to the caller.
object
object
Stable, machine-readable cause, set by routes that document their codes (the AI readiness routes); absent elsewhere and on errors from shared layers such as authentication. Clients must allow new codes.
Correlation ID for this request, matching the X-Request-ID response header — a 32-character trace ID behind the load balancer, otherwise a UUID. Quote it in support reports.
Example
{ "error": { "type": "invalid_request_error", "request_id": "80f1e2c3a4b5c6d7e8f9a0b1c2d3e4f5" }}Missing or invalid bearer token
object
object
Stable, machine-readable cause, set by routes that document their codes (the AI readiness routes); absent elsewhere and on errors from shared layers such as authentication. Clients must allow new codes.
Correlation ID for this request, matching the X-Request-ID response header — a 32-character trace ID behind the load balancer, otherwise a UUID. Quote it in support reports.
Example
{ "error": { "type": "invalid_request_error", "request_id": "80f1e2c3a4b5c6d7e8f9a0b1c2d3e4f5" }}Headers
Section titled “Headers”Example
Bearer realm="ai-services"The account’s credit balance is exhausted. Grant or top up credits before retrying. Distinct from 429, which is edge rate limiting.
object
object
Stable, machine-readable cause, set by routes that document their codes (the AI readiness routes); absent elsewhere and on errors from shared layers such as authentication. Clients must allow new codes.
Correlation ID for this request, matching the X-Request-ID response header — a 32-character trace ID behind the load balancer, otherwise a UUID. Quote it in support reports.
Example
{ "error": { "type": "invalid_request_error", "request_id": "80f1e2c3a4b5c6d7e8f9a0b1c2d3e4f5" }}The token is valid, but the request is forbidden. Error type “permission_error” means the token’s scope/permission is insufficient or the authenticated user is not authorized for the target account; “entitlement_required” means the account lacks the required product entitlement; and “account_required” means no billing account could be resolved. On /v1/chat/completions when content moderation is enabled, and on /v1/sessions/{session_id}/events, error type “content_policy_violation” instead means the request content was blocked by content moderation policy; that response never identifies which filter or category matched.
object
object
Stable, machine-readable cause, set by routes that document their codes (the AI readiness routes); absent elsewhere and on errors from shared layers such as authentication. Clients must allow new codes.
Correlation ID for this request, matching the X-Request-ID response header — a 32-character trace ID behind the load balancer, otherwise a UUID. Quote it in support reports.
Example
{ "error": { "type": "invalid_request_error", "request_id": "80f1e2c3a4b5c6d7e8f9a0b1c2d3e4f5" }}Request body exceeds the 64 KiB limit
object
object
Stable, machine-readable cause, set by routes that document their codes (the AI readiness routes); absent elsewhere and on errors from shared layers such as authentication. Clients must allow new codes.
Correlation ID for this request, matching the X-Request-ID response header — a 32-character trace ID behind the load balancer, otherwise a UUID. Quote it in support reports.
Example
{ "error": { "type": "invalid_request_error", "request_id": "80f1e2c3a4b5c6d7e8f9a0b1c2d3e4f5" }}Rate limit exceeded. The request was throttled at the edge; wait and retry later. The response body is a short HTML page generated by the load balancer, not a structured JSON error — clients should rely on the 429 status code rather than parsing the body.
Upstream provider returned an error
object
object
Stable, machine-readable cause, set by routes that document their codes (the AI readiness routes); absent elsewhere and on errors from shared layers such as authentication. Clients must allow new codes.
Correlation ID for this request, matching the X-Request-ID response header — a 32-character trace ID behind the load balancer, otherwise a UUID. Quote it in support reports.
Example
{ "error": { "type": "invalid_request_error", "request_id": "80f1e2c3a4b5c6d7e8f9a0b1c2d3e4f5" }}A required dependency is temporarily unavailable. Retry after a short delay with exponential back-off. An entitlement lookup failure uses error type “entitlement_unavailable”.
object
object
Stable, machine-readable cause, set by routes that document their codes (the AI readiness routes); absent elsewhere and on errors from shared layers such as authentication. Clients must allow new codes.
Correlation ID for this request, matching the X-Request-ID response header — a 32-character trace ID behind the load balancer, otherwise a UUID. Quote it in support reports.
Example
{ "error": { "type": "invalid_request_error", "request_id": "80f1e2c3a4b5c6d7e8f9a0b1c2d3e4f5" }}default
Section titled “default”Upstream provider error passed through with its original status code and response body. The shape may vary by provider.
object
object
Stable, machine-readable cause, set by routes that document their codes (the AI readiness routes); absent elsewhere and on errors from shared layers such as authentication. Clients must allow new codes.
Correlation ID for this request, matching the X-Request-ID response header — a 32-character trace ID behind the load balancer, otherwise a UUID. Quote it in support reports.
Example
{ "error": { "type": "invalid_request_error", "request_id": "80f1e2c3a4b5c6d7e8f9a0b1c2d3e4f5" }}