BETA

Docs
Documentation

Edit image

POST/v1/images/edits

Edits or extends images with a prompt. Accepts the OpenAI SDK multipart upload or a JSON body with image URLs.

Request

Content-Type
multipart/form-data or application/json
model
required — an image model id that lists POST /v1/images/edits in the catalog
image / image[]
required (multipart) — up to 16 files, 32MB each
images
required (JSON) — array of { image_url }; or a single image string
mask
optional (multipart) — one file, not billed as an input image
prompt
required by most models
n
optional — 1 to 10, defaults to 1
…
size, quality, background and other OpenAI-compatible fields are forwarded unchanged

cURL example

terminal
curl https://apily.pro/v1/images/edits \
  -H "Authorization: Bearer apily_your-api-key" \
  -F model=gpt-image-1 \
  -F image=@photo.png \
  -F prompt="Add a red hat"

Error responses

SymptomCauseFix
400 Missing required parameter: imageNo image/image[] file part (multipart) or no images/image field (JSON).Attach at least one input image.
400 Missing required parameter: modelNo model field.Add a model field with a catalog id.
400 Invalid value for nn is not a whole number from 1 to 10.Send n between 1 and 10, or omit it (defaults to 1).
401 Missing API keyNo auth header was sent.Apily accepts Authorization: Bearer … and x-api-key: ….
401 Invalid API keyKey copied with stray spaces, truncated, or revoked.Copy the key whole from the API page in your Apily account, the apily_ prefix included.
403 Email not verifiedYour Apily account's email address isn't verified yet.Verify your email from the banner in the Apily app, then retry.
404 Model not foundThe model ID isn't in the Apily catalog.Copy the exact ID from GET /v1/models or the Models page in your account.
503 Model temporarily unavailableThe model exists, but no upstream provider is reachable right now.Retry in a moment — it usually recovers within a minute. Switch models if it keeps happening.
402 Insufficient balanceYour token balance can't cover the request's estimated cost.Top up your balance on the Billing page in your Apily account.
429 Too many requestsYour account sent more than 600 /v1/* requests in a minute — all of your API keys share one budget. The body is { error: { message, type: "rate_limit_error", code: "rate_limit_exceeded" }, retryAfterSeconds }.Wait the Retry-After header (or retryAfterSeconds) before retrying, and lower request concurrency.
502 Upstream errorThe upstream provider returned an unexpected error.Retry the request; try a different model if it persists.
Image models are billed per image. Per-image models charge the model price × the number of images returned (n, 1–10). Token-priced models charge the prompt text, each input image and the generated image(s) by the real usage the provider returns. Before the call a conservative upper bound is reserved (up to 10,000 output tokens per requested image), so a request can get 402 even when the final cost would fit your balance; the unused part of the reserve is returned right after the response.