Verbatik LogoVerbatik
Developer API

API quickstart

Create a key, discover models, and generate your first image.

1. Create a workspace key

Sign in at app.verbatik.com. Open the intended workspace and go to Settings → Developer. Owners and admins can create keys.

For this example, grant models:read, generations:write, and generations:read. Copy the key when it is revealed and store it in your application's secret storage. The full secret is shown only when created.

Set VERBATIK_API_KEY in your shell environment. Keep it out of client-side code and source control. The workspace must have API access and enough spendable credits before generation.

2. Discover image models

curl --fail-with-body 'https://app.verbatik.com/api/v1/models?mode=image' \
  -H "Authorization: Bearer $VERBATIK_API_KEY"

The response has a data array. Each model includes its exact id, capabilities, and defaults. Use those values when building a request.

3. Create an image

This request spends credits. Use a new idempotency key for a new operation; reuse the same key and body if retrying that operation.

curl --fail-with-body https://app.verbatik.com/api/v1/generations \
  -H "Authorization: Bearer $VERBATIK_API_KEY" \
  -H 'Content-Type: application/json' \
  -H 'Idempotency-Key: docs-first-image-001' \
  -d '{
    "mode": "image",
    "model": "openai/gpt-image-2",
    "prompt": "A ceramic coffee cup on pale stone in warm morning light, no text",
    "parameters": { "count": 1 },
    "delivery": "signed_url"
  }'

A successful creation returns HTTP 202 with an id, status: "queued", and estimated_credits. Save the ID; do not expect the final media file in this response.

4. Retrieve the result

Replace GENERATION_ID with the returned ID:

curl --fail-with-body https://app.verbatik.com/api/v1/generations/GENERATION_ID \
  -H "Authorization: Bearer $VERBATIK_API_KEY"

Poll with a delay and backoff until the status becomes completed, partially_completed, or failed. Read successful assets from outputs and failures from errors. Signed output URLs include an expiry time.

For production integrations, use webhooks, safe retries, and structured error handling.

On this page