Generation

Live

Create images, animate stills, extend videos, and generate illustrated storybooks. Seven capabilities callable today.

Live Capabilities

SlugWhat it does
image:generateGenerate an image from a text prompt
image:editEdit an image with a text instruction and optional mask
image:upscaleUpscale an image 2× or 4×
image:background-removeRemove the background from an image
video:image-to-videoAnimate a still image into a short video clip
video:extendExtend an existing video clip
storybook:from-imageGenerate an illustrated storybook from an image

Quick Start — JavaScript SDK

import { WhizuraiClient } from '@whizurai/sdk-js'

const client = new WhizuraiClient({ apiKey: process.env.WHIZURAI_API_KEY })

// Kick off an async run — returns immediately with a runId
const run = await client.capabilities.run('image:generate', {
  prompt: 'A golden retriever on a surfboard at sunset',
  size: '1024x1024',
})

console.log(run.id) // poll GET /v1/workflow-runs/:id for status

Quick Start — cURL

curl -X POST https://api.whizur.ai/v1/capabilities/image:generate/execute \
  -H "X-API-Key: cw_dev_..." \
  -H "Content-Type: application/json" \
  -d '{
    "input": {
      "prompt": "A golden retriever on a surfboard at sunset",
      "size": "1024x1024"
    }
  }'

Response (202 Accepted):

{
  "workflowRunId": "run_abc123",
  "status": "queued"
}

Poll GET /v1/workflow-runs/run_abc123 until status === "completed", then fetch artifacts via GET /v1/workflow-runs/run_abc123/artifacts.

Input / Output Shapes

image:generate

Input

{
  "prompt": string,          // required — text description
  "size"?: "1024x1024" | "2048x2048",
  "quality"?: "standard" | "hd"
}

Output artifact

{ "type": "image.png", "url": "https://..." }

image:edit

Input

{
  "imageUrl": string,        // required — source image URL
  "prompt": string,          // required — edit instruction
  "mask"?: string,           // optional — mask image URL
  "size"?: "1024x1024" | "1024x1792" | "1792x1024"
}

Output artifact

{ "type": "image.png", "url": "https://..." }

image:upscale

Input

{
  "imageUrl": string,        // required — source image URL
  "scale"?: 2 | 4            // default: 2
}

Output artifact

{ "type": "image.png", "url": "https://...", "width": number, "height": number }

image:background-remove

Input

{
  "imageUrl": string,        // required — source image URL
  "outputMask"?: boolean     // default: false
}

Output artifact

{ "type": "image.png", "url": "https://...", "hasTransparency": true }

video:image-to-video

Input

{
  "imageUrl": string,        // required — source still image URL
  "prompt"?: string,         // optional — motion description
  "duration"?: number        // seconds, default: 5
}

Output artifact

{ "type": "video.mp4", "url": "https://...", "durationSeconds": number }

video:extend

Input

{
  "videoUrl": string,        // required — source video URL
  "duration"?: number        // extra seconds to add, default: 4
}

Output artifact

{ "type": "video.mp4", "url": "https://...", "durationSeconds": number }

storybook:from-image

Input

{
  "imageUrl": string,        // required — seed image URL
  "pages"?: number           // default: 5
}

Output artifact

{ "type": "storybook.json", "pages": [{ "imageUrl": string, "text": string }] }

How Runs Work

All generation runs are async. POST /v1/capabilities/:slug/execute returns a workflowRunId immediately. Poll GET /v1/workflow-runs/:id until status is completed or failed, then retrieve artifacts from GET /v1/workflow-runs/:id/artifacts.

Next Steps