Skip to main content
Clients send the same OpenAI Images requests they would send to OpenAI. Auth and the consumer slug are the same as chat.
Edits and variations are multipart, same host and key:
On a Private data plane, add X-AG-Gateway-Slug as in the chat snippets. GET is rejected with 400. Bare /v1/images and extra path tails (/generations/extra, /edits/extra) are 404. OpenAI SDKs use the same consumer base URL: client.images.generate(), client.images.edit(), and client.images.create_variation().

Providers

Groq, Anthropic, Gemini / Vertex, Bedrock, Mistral, xAI, Cohere, and other chat-only providers do not expose an Images API. They are left out of the candidate pool. Gemini / Imagen native is out of scope. Chat vision parts are a different surface. The JSON model field is allowlisted as usual. For multipart edits/variations, TrustGate reads the form model field for allowlists, Azure deployment names, and @provider/model pins. It does not rewrite the multipart body.

Routing

  1. The consumer’s registries are filtered to those that advertise images.
  2. Model resolution and load balancing run on that pool.
  3. Pinning a registry that cannot generate images is a 400, not a failover — including @provider/model in a multipart model field.
  4. An empty capable pool is a 503.
Attach at least one images-capable registry to the consumer. A mixed chat + images pool is fine: chat still uses every chat-capable member; images skip the rest.