Image generation API.
Built for developers.

Fast image transforms with presets, async webhooks, and credit-based pricing. Start in 60 seconds.

cURL
curl -X POST https://api.jork.lol/v1/images/generations \
  -H "Authorization: Bearer jork_sk_live_..." \
  -H "Content-Type: application/json" \
  -d '{
    "prompt": "studio portrait, soft lighting",
    "image_url": "https://example.com/input.jpg",
    "preset": "portrait"
  }'
Why Jork API

Everything you need to ship

Production-tested infrastructure with the primitives developers actually want.

🖼️

Fast

Sub-10s typical latency. Multiple upstream providers with automatic failover.

🔁

Async + webhooks

Submit a job, get pinged when done. HMAC-signed webhooks with retry.

💳

Pay as you go

Credits never expire. From 0.7¢/image on volume tiers. No subscriptions.

How it works

Three steps to live

1

Get a key

Sign in to the dashboard and provision an API key in one click.

2

POST your prompt

Send a prompt and an input image to the generations endpoint.

3

Get your result

Receive the result URL synchronously, or via webhook when async.

AI-assisted

Integrate in one prompt

Paste this into Claude Code, Codex, Cursor, or any AI coding assistant. Plug in your key — they'll wire up the rest.

Prompt
Integrate the Jork Image Generation API into my project.

Base URL: https://api.jork.lol/v1
Auth: Authorization: Bearer <PASTE_YOUR_KEY_HERE>

Endpoints:
- POST /images/generations
    body: { prompt, image_url? OR image_b64?, preset?, resolution: "1K"|"2K", callback_url?, metadata? }
    sync (no callback_url): 200 -> { id, status:"succeeded", image_url, credits_used, credits_remaining }
    async (with callback_url): 202 -> { id, status:"queued" } - webhook fires on completion
- GET /jobs/{id} -> { id, status, image_url?, error?, credits_used, metadata }
- GET /presets -> { presets: [{ id, label, mode }] }
- GET /account -> { user_id, credits, lifetime_spend_cents, tier }

Webhook verification (when callback_url is set):
    Header: Jork-Signature: t=<unix_ts>,v1=<hex>
    v1 = HMAC_SHA256(webhook_secret, f"{ts}.{raw_body_string}").hexdigest()

Error response shape (all routes):
    { detail: { error: "<slug>", message: "<human>" } }
    Slugs: missing_auth, insufficient_credits, unsafe_prompt, rate_limited, not_found, gen_timeout

Build a typed client wrapper for these endpoints. Add retries on 429/503 with exponential backoff. Integrate it where image generation is needed in my project.
Pricing

Simple credit-based pricing

Pay for what you use. Credits never expire.

Plan
Price
Credits
Per credit
Mini
$1
50 credits
2.0¢/credit
Starter
$3
200 credits
1.5¢/credit
Pro
$10
800 credits
1.25¢/credit
Founder
$100
10,000 credits
1.0¢/credit
Volume Best value
$500
60,000 credits
0.83¢/credit
Enterprise Best value
$2,000
280,000 credits
0.71¢/credit

+25% bonus on crypto top-ups. 1 image = 1 credit.

Used in production by developers building image-powered apps.

Ready?

Provision a key and ship your first generation today.

Get API Key →