Sonnely

Media

Images, video and audio behind the same key

Text is only the start. Images, video and speech run through the same key and the same credit pool, priced from exact reported costs plus the flat 20%.

Images

POST /api/v1/images/generations — OpenAI-images shape in:

curl https://sonnely.com/api/v1/images/generations \
  -H "Authorization: Bearer $SONNELY_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model":"bytedance-seed/seedream-5-0-pro","prompt":"a colosseum at dawn"}'

Featured: Seedream 5 Pro, FLUX 2 Pro, GPT Image 2, Gemini Flash Image. Billing is per render from the exact reported cost — failed renders are free. Full list: GET /api/v1/images/models.

Video

Async by nature: submit, poll, download.

# 1 · submit
curl https://sonnely.com/api/v1/videos/generations \
  -H "Authorization: Bearer $SONNELY_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model":"google/veo-3.1","prompt":"slow push-in on a neon arena","duration":5}'
# {"id":"...","polling_url":"...","sonnely":{"credits_estimate":...}}

# 2 · poll until completed
curl https://sonnely.com/api/v1/videos/<jobId> \
  -H "Authorization: Bearer $SONNELY_KEY"

Featured: Veo 3.1, Sora 2 Pro, Kling 3 Standard, Hailuo 3 Max. Nothing is charged at submit — the completion poll charges the exact cost once, and failed jobs are never billed. Full list: GET /api/v1/videos/models.

Audio

  • POST /api/v1/audio/speech — text to speech, OpenAI-audio shape, raw bytes back. Billed per input character.
  • POST /api/v1/audio/transcriptions — multipart audio in, JSON text out. Beta flat estimate per request.

Try it visually

The playground has image and video tabs wired to these same endpoints — same key, same billing.

On this page