Turn any news article into a
satirical comic

One API call. AI-powered script writing + image generation. From headline to comic strip in minutes.

How It Works

πŸ“°

1. Submit an Article

Paste a URL or text. Our AI reads and understands the story.

✍️

2. AI Writes the Script

Characters, dialogue, and satirical angles β€” all generated.

🎨

3. Comic Generated

Panel-by-panel images assembled into a complete comic strip.

Pricing

Free

$0/mo

  • βœ“ 5 comics / hour
  • βœ“ Up to 9 panels
  • βœ“ Watermarked output
  • βœ“ Community support
POPULAR

Publisher

$49/mo

  • βœ“ 50 comics / hour
  • βœ“ Up to 18 panels
  • βœ“ No watermark
  • βœ“ Webhook callbacks
  • βœ“ Priority queue

Enterprise

Custom

  • βœ“ Unlimited comics
  • βœ“ Custom styles
  • βœ“ Dedicated worker
  • βœ“ SLA & support
  • βœ“ White-label option

Quick Demo

Enter your API key to try it out:

πŸ“š API Documentation

Interactive API Explorer

Full OpenAPI/Swagger documentation with try-it-out functionality.

Open Swagger UI β†’

Base URL

https://sketchyapi.snaf.foo/api/v1

Authentication

All endpoints require an API key via header:

X-API-Key: sk-sketchy-your-key

Endpoints

POST /api/v1/comic

Submit a comic generation job.

{
  "article_url": "https://example.com/article",
  "panels": 18,
  "tone": "sharp",
  "style": "editorial cartoon style, vibrant colors",
  "language": "en"
}
GET /api/v1/comic/{job_id}

Get job status and result. Poll until status is completed.

GET /api/v1/comic/{job_id}/combined

Download the combined comic image (PNG).

GET /api/v1/comic/{job_id}/panels/{n}

Download individual panel image.

GET /api/v1/balance

Check usage and quota for your API key.

Code Examples

cURL

# Submit a comic job
curl -X POST https://sketchyapi.snaf.foo/api/v1/comic \
  -H "Content-Type: application/json" \
  -H "X-API-Key: sk-sketchy-mvp-001" \
  -d '{"article_url": "https://example.com/news", "panels": 9, "tone": "savage"}'

# Check status
curl https://sketchyapi.snaf.foo/api/v1/comic/JOB_ID \
  -H "X-API-Key: sk-sketchy-mvp-001"

Python

import requests, time

API = "https://sketchyapi.snaf.foo/api/v1"
HEADERS = {"X-API-Key": "sk-sketchy-mvp-001"}

# Submit
r = requests.post(f"{API}/comic", json={
    "article_url": "https://example.com/news",
    "panels": 9, "tone": "savage"
}, headers=HEADERS)
job = r.json()

# Poll until done
while job["status"] not in ("completed", "failed"):
    time.sleep(5)
    job = requests.get(f"{API}/comic/{job['job_id']}", headers=HEADERS).json()

print(f"Comic ready: {job['combined_image_url']}")

JavaScript

const API = 'https://sketchyapi.snaf.foo/api/v1';
const headers = { 'Content-Type': 'application/json', 'X-API-Key': 'sk-sketchy-mvp-001' };

// Submit
let job = await fetch(`${API}/comic`, {
  method: 'POST', headers,
  body: JSON.stringify({ article_url: 'https://example.com/news', panels: 9, tone: 'savage' })
}).then(r => r.json());

// Poll
while (!['completed', 'failed'].includes(job.status)) {
  await new Promise(r => setTimeout(r, 5000));
  job = await fetch(`${API}/comic/${job.job_id}`, { headers }).then(r => r.json());
}

console.log('Comic ready:', job.combined_image_url);