Images

POST /v1/images POST /v1/images/generations via BYOK. Not chat completions.

Image generation (OpenAI + fal.ai BYOK)

OpenAI and fal.ai Images via Kasva: POST /v1/images (alias /v1/images/generations). fal.ai uses your fal key ("fal":"…"); Gemini AI Studio is a separate chat key.

# text → image
curl https://kasva.dev/v1/images \
  -H "Authorization: Bearer YOUR_KASVA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model":"byok/openai/gpt-image-2","prompt":"A ceramic mug","size":"1024x1024"}'

# image input → edit (input_references)
curl https://kasva.dev/v1/images \
  -H "Authorization: Bearer YOUR_KASVA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model":"byok/openai/gpt-image-2","prompt":"Sunset background","input_references":[{"type":"image_url","image_url":{"url":"data:image/png;base64,...."}}]}'
# fal.ai text → image (FLUX.1 schnell)
curl https://kasva.dev/v1/images \
  -H "Authorization: Bearer YOUR_KASVA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model":"byok/fal/flux-schnell","prompt":"A ceramic mug"}'

Do not send image models to /v1/chat/completions. GET /v1/byok/keys never returns the fal (or any) secret.
Public: docs/images.html · API: API