Content Generation API
Overview
Generate AIGC (ai generated content) using the most advanced video models and optionally coin them to earn trading fees.
We use the x402 standard to charge per request via stablecoins (USDC on Base Chain).
Request Flow
Generation request is submitted to
/generation/createThe server estimates the cost based on the payload and responds with HTTP status code
402 PAYMENT REQUIREDThe sender completes the onchain payment and submits the request again with the payment headers
The server verifies the payment, submits the generation request, and returns HTTP status code
202 ACCEPTEDand response body withtaskIdThe sender can poll using
generation/statusandtaskIdwhere the generation result is returned
ℹ️ Learn how to handle the x402 payment flow here
🤖 Building an agent? Use our ElizaOS plugin
Guide
This guide demonstrates the typical workflow for generating AI content using the Imagine API.
Resource URL
POST https://eliza.getimagine.club/generation/createStep 1: Create Generation Request
Submit your generation request with x402 payment handling.
POST https://eliza.getimagine.club/generation/create
Content-Type: application/jsonExample body
{
"prompt": "A futuristic character waves in a neon cyberpunk city",
"templateData": {
"videoModel": "sora",
"duration": 8,
"image": "https://example.com/input_reference.jpg",
"autoClank": false,
"autoEnhance": false
}
}Response (402 Payment Required):
{
"x402Version": 1,
"error": "X-PAYMENT header is required",
"accepts": [
{
"scheme": "exact",
"network": "base",
"maxAmountRequired": "1000000",
"resource": "https://eliza.getimagine.club/generation/create",
"description": "Generate AIGC (ai generated content) using the most advanced video models and optionally coin them to earn trading fees",
"mimeType": "",
"payTo": "0x13a9e3ee4A25C3C72D67F42044438aabc54f2b96",
"maxTimeoutSeconds": 60,
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"outputSchema": {
"input": {
"type": "http",
"method": "POST",
"mimeType": "application/json",
"discoverable": true,
"bodyType": "json",
"bodyFields": {
"prompt": {
"type": "string",
"description": "Text prompt describing the video to generate",
"required": true
},
"templateData": {
"type": "string",
"description": "JSON stringified object with optional configuration. Include 'image' property here for image-to-video generation.",
"required": false,
"properties": {
"videoModel": {
"type": "string",
"enum": [
"sora"
],
"default": "sora",
"description": "Video generation model to use"
},
"soraVideoId": {
"type": "string",
"description": "Sora video ID for remix/continuation"
},
"duration": {
"type": "number",
"default": 8,
"description": "Video duration in seconds (model-dependent)"
},
"autoClank": {
"type": "boolean",
"default": false,
"description": "Automatically deploy a Clanker token for this video with first frame as token. Sender is the creator to earn trading fees"
},
"autoEnhance": {
"type": "boolean",
"default": false,
"description": "Automatically enhance the prompt based on video model's prompting guidelines"
},
"image": {
"type": "string",
"description": "Optional image URL (http(s)://) or base64 data URL (data:image/png;base64,...) for image-to-video generation"
}
}
}
}
},
"output": {
"type": "object",
"properties": {
"taskId": {
"type": "string",
"format": "uuid",
"description": "Unique task identifier returned for polling status. Poll for completion status at GET eliza.getimagine.club/generation/{taskId}/status endpoint every 15 seconds until status is 'completed' or 'failed'. Generation typically takes 1-3 minutes."
}
},
"notes": [
"Response returns HTTP 202 (Accepted) with taskId",
"Poll status at: GET /generation/:taskId/status",
"Status responses: 'queued' (202), 'processing' (202), 'completed' (200), 'failed' (500), 'not_found' (404)",
"Completed tasks return result.generation.video with the video URL",
"Monitor progress field (0-100) to track generation progress"
]
}
},
"extra": {
"name": "USD Coin",
"version": "2"
}
}
]
}(with X-PAYMENT header)
Content-Type: application/json
X-PAYMENT: <x402-payment-proof>Response
{
"taskId": "123e4567-e89b-12d3-a456-426614174000"
}Step 2: Poll for Task Status
Check the generation progress using the returned task ID.
GET https://eliza.getimagine.club/generation/{taskId}/statusResponse (Processing):
{
"status": "processing",
"progress": 0
}Response (Queued):
{
"status": "queued"
}Step 3: Get Final Result
When the task is complete, retrieve your generated content.
Response (200 Completed):
{
"status": "completed",
"result": {
"generation": {
"text": "Generated description text",
"image": "https://storj.onbons.ai/preview-image-url",
"video": {
"url": "https://storj.onbons.ai/generated-video-url"
},
"templateName": "video",
"agentId": "{uuid}"
},
"templateData": {
"duration": 8
}
}
}Last updated