Images
Sable exposes OpenAI-compatible image generation: point an OpenAI image client at the gateway and it works, metered per image, with a signed receipt on the response like every other billable call.
Availability
Image generation is off by default and config-gated. It is enabled only on a deployment where an image provider has been configured, in the same way the Solana rail is config-gated. Where it is not enabled, the model list comes back empty and a generation call returns a configuration error rather than a picture.
GET /v1/images/models is public and is the authoritative check for what, if
anything, is enabled on this deployment. An empty data array means image
generation is not available here.
# Public: what image models are enabled here (empty when off)
curl https://api.buildsable.com/v1/images/models{
"data": [
{ "id": "sable-image-…", "kind": "image", "price_usd_per_image": 0.04 }
]
}
Generating an image
Where a provider is enabled, POST /v1/images/generations takes the OpenAI
shape and returns the OpenAI shape, plus a sable_receipt you can verify. It is
key-authed: send a sk-sable_ API key as Authorization: Bearer.
curl https://api.buildsable.com/v1/images/generations \
-H "authorization: Bearer $SABLE_API_KEY" \
-H 'content-type: application/json' \
-d '{
"model": "sable-image-…",
"prompt": "a calm monochrome eclipse over an ink-black plane",
"n": 1,
"size": "1024x1024"
}'{
"created": 1756900000,
"data": [{ "url": "https://…" }],
"sable_receipt": {
"receipt": "eyJ2Ijoz…",
"signature": "0x4f8c…",
"signer": "0xA1b2…9F"
}
}
The receipt is metadata-only and verifies through the public
POST /v1/receipts/verify, so a generation is as provable as any other metered
call.
Endpoints
| Method | Auth | Path | What it does |
|---|---|---|---|
| GET | Public | /v1/images/models | Image models enabled on this deployment, with per-image pricing. Empty when off. |
| POST | sk-sable_ | /v1/images/generations | Generate images. Body {model, prompt, n?, size?}. Metered per image, with a signed receipt. |
Notes
- Metered per image. Pricing is per image, published in
GET /v1/images/models, and billed on the same prepaid balance as inference. - Vision input already works today. Sending images into a model (vision) is not this endpoint: it works through ordinary chat completions for multimodal models. This page is about image generation.
- Do not assume image generation is available on a given deployment. Read
GET /v1/images/modelsfirst, and treat an empty list as not enabled.