imageatimageatDevelopers
ModelsHelpStatusAPI key
Developer documentation

Build with the imageat API

Generate images, videos, text, and multi-step creative workflows through one authenticated REST API.

Create an API key Start integrating
Base URLhttps://api.imageat.com/v1
Image, video, and text flowing through a unified generative media API

Image API

Create and edit production images

Workflow API

Run published creative pipelines

Video API

Generate Seedance videos

LLM API

Chat with Qwen 3.8 27B

MCP Server

Connect AI clients without code

Workflow API
IntroductionAuthenticationPricing overviewRun lifecycleCreate runPoll runServer-sent eventsCancel runOutputs & CDNWebhooksError codesCode examples
Image API
Image modelsGenerate imageParameters
Video API
Seedance 2.5Create videoParametersPoll output
LLM API
Qwen 3.8 27BChat completionParametersResponse & billing
MCP Server
OverviewInstall (Desktop)claude.ai & ChatGPTTools

Reference

Workflow API

Introduction

The Workflow API lets you trigger a published imageat workflow with a single HTTP request, poll for completion, and receive CDN-hosted outputs. Every run is metered and billed against the API key's owning account.

A typical integration is three calls: POST to create a run, GET (or subscribe via SSE) to track progress, and then read CDN URLs from the final response.

Authentication

All requests are authenticated with an API key sent as a Bearer token. Create keys from your Projects page. Keys start with iat_live_ (production) or iat_test_ (sandbox).

Header
Authorization: Bearer iat_live_xxxxxxxxxxxxxxxx

Keep your API key on the server. Never expose it in client-side code or commit it to source control. Revoke and rotate from the Projects page if a key is exposed.

Model pricing overview

API usage is billed in imageat credits. 1 credit = $0.10. The prices below show the minimum supported configuration; the final charge increases with resolution, quality, duration, or output count.

ModelStarts atMinimum configuration
nano-banana-pro8 credits · $0.801 image · 1K
nano-banana-24 credits · $0.401 image · 1K
gpt-image-22 credits · $0.201 image · low quality · 1K
seedream-5.0-pro3 credits · $0.301 image · 1K
seedance2516 credits · $1.604 seconds · 480p
pixverse3 credits/sec · $0.30720p · audio off
qwen/qwen3.8-27b-uncensored1 credit · $0.10Short completion; final cost is usage-based
Estimate before running: multiply per-image prices by numImages. Seedance 2.5 is 4 credits/second at 480p or 8 credits/second at 720p. Pixverse V6 is 3 credits/second at 720p and 5 at 1080p, each +1 with audio on. Qwen reserves 3 credits, then settles the completed request at 1–3 credits.
Image API

Image generation models

Generate new images or edit references through one JSON endpoint. Switch models without rebuilding your integration.

nano-banana-pro

Nano Banana Pro

High-fidelity generation and editing with up to 4K output.

From 8 credits · $0.80

nano-banana-2

Nano Banana 2

Fast, cost-efficient generation for iterative creative work.

From 4 credits · $0.40

gpt-image-2

GPT Image 2

Precise instruction following with low, medium, and high quality tiers.

From 2 credits · $0.20

seedream-5

Seedream 5

ByteDance generation and reference-guided editing in Pro and Lite.

From 3 credits · $0.30

Browse all model pages →Endpoint: POST /v1/images

Generate or edit an image

Send a prompt for text-to-image. Add one or more public image URLs in images to edit or guide the result.

cURL
curl -X POST "https://api.imageat.com/v1/images" \
  -H "Authorization: Bearer $IMAGEAT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "nano-banana-pro",
    "prompt": "A cinematic product photograph on sculpted stone",
    "aspectRatio": "1:1",
    "resolution": "2K",
    "outputFormat": "png",
    "numImages": 1
  }'
Response · 200
{
  "url": "https://cdn.imageat.com/generated/image.png",
  "urls": ["https://cdn.imageat.com/generated/image.png"],
  "prompt": "A cinematic product photograph on sculpted stone",
  "generationId": "generation_01...",
  "creditsUsed": 4
}

Image request parameters

ParameterDefaultDescription
modelnano-banana-pronano-banana-pro, nano-banana-2, gpt-image-2, seedream-5.0-pro, or seedream-5.0-lite
promptrequiredGeneration or editing instructions
images—Optional public URLs or base64 data URLs, each under 10 MB
aspectRatio1:11:1, 16:9, 9:16, 4:3, 3:4, 3:2, or 2:3
resolution1K1K, 2K, or 4K
qualitymediumGPT Image 2 only: low, medium, or high
outputFormatpngpng, jpeg, or webp
numImages1Generate 1–4 outputs

The API keeps provider routing behind imageat. Your application uses the same model IDs, authentication, credits, and response shape.

Video API

Seedance 2.5

Generate 4–30 second videos from text, a first-frame image, or first and last frames. Choose 480p or 720p output with optional synchronized audio.

Model ID: seedance25 · Endpoint: POST /v1/videos · From 16 credits ($1.60) at 4s / 480p · Asynchronous output

Open model playground →Browse all imageat models →
Other video models on the same endpoint. POST /v1/videos also accepts minimax-h3-max for 5–15 second text, image, and first/last-frame generation at 480p or 768p, plus pixverse for Pixverse V6. The request and polling flow below is identical; only the model-specific inputs change.MiniMax H3 Max API page →Pixverse V6 model page →

Create a Seedance 2.5 video

POST /v1/videos

The endpoint accepts JSON and returns a task ID. Keep the API key on your server and poll the status endpoint until a CDN video URL is returned.

cURL
curl -X POST "https://api.imageat.com/v1/videos"   -H "Authorization: Bearer $IMAGEAT_API_KEY"   -H "Content-Type: application/json"   -d '{
    "model": "seedance25",
    "providerVariant": "more",
    "prompt": "A paper airplane glides through a softly lit studio",
    "duration": "5s",
    "resolution": "720p",
    "aspectRatio": "adaptive",
    "generateAudio": true,
    "outputFormat": "mp4",
    "watermark": false
  }'
Response · 200
{
  "status": "pending",
  "taskId": "2750591",
  "generationId": "a45ooNh1FBLgv6bjy7My",
  "prompt": "A paper airplane glides through a softly lit studio"
}

For image-to-video, send imageUrl. For a directed transition, send both firstFrameUrl and lastFrameUrl.

Seedance 2.5 request parameters

ParameterDefaultDescription
modelrequiredUse seedance25
providerVariantstandardUse more for this Seedance 2.5 endpoint
promptrequiredScene, motion, camera, style, and audio direction
imageUrl—Optional first frame for image-to-video
firstFrameUrl / lastFrameUrl—Send both URLs for first-and-last-frame generation
duration5sWhole seconds from 4s through 30s
resolution720p480p or 720p
aspectRatioadaptiveadaptive, 16:9, 9:16, 4:3, 3:4, 1:1, or 21:9
generateAudiotrueGenerate synchronized audio; no additional credit surcharge
outputFormatmp4mp4 for broad compatibility or mov for compatible post-production workflows
watermarkfalseOptional boolean watermark control

Poll video status

GET /v1/videos/status?taskId={taskId}&generationId={generationId}

Poll every 5–10 seconds while status is pending. Reuse the same Bearer API key used to create the generation.

cURL
curl "https://api.imageat.com/v1/videos/status?taskId=2750591&generationId=a45ooNh1FBLgv6bjy7My"   -H "Authorization: Bearer $IMAGEAT_API_KEY"
Completed response
{
  "status": "completed",
  "url": "https://cdn.imageat.com/generated/video.mp4"
}

A failed task returns { "status": "failed", "error": "..." }. Failed provider generations are handled by the platform's refund workflow.

LLM API

Qwen 3.8 27B Uncensored

Generate long-context chat and reasoning responses through an OpenAI-compatible endpoint using the same imageat API key.

Model ID: qwen/qwen3.8-27b-uncensored · Context window: 262,144 tokens · Output limit: 4,000 tokens

View Qwen API pricing and playground →Browse all imageat models →

Create a chat completion

POST /v1/chat/completions

The request follows the familiar OpenAI chat-completions shape. Streaming is not currently supported, so set stream to false or omit it.

cURL
curl -X POST "https://api.imageat.com/v1/chat/completions" \
  -H "Authorization: Bearer $IMAGEAT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "qwen/qwen3.8-27b-uncensored",
    "messages": [
      {"role": "system", "content": "You are a concise product strategist."},
      {"role": "user", "content": "Suggest three retention features for Imageat."}
    ],
    "enable_thinking": false,
    "temperature": 0.7,
    "max_tokens": 500
  }'

Long or thinking-enabled requests can take several minutes. Keep the HTTP connection open until the final completion is returned.

Qwen request parameters

ParameterDefaultDescription
modelQwen model IDMust be qwen/qwen3.8-27b-uncensored
messagesrequiredSystem, user, and assistant messages
enable_thinkingtrueDeeper reasoning or shorter direct answers
temperature0.7Output randomness
top_p / top_k0.95 / 20Probability sampling controls
max_tokens1000Maximum output tokens; capped at 4,000
min_tokens0Minimum output-token target
repetition_penalty1.0Reduces repeated phrases and loops
length_penalty1.0Biases toward shorter or longer output
stop—String or array of stop sequences
seed123456Optional repeatability seed
quantization / do_sampletrue / trueEfficiency and sampling toggles
user / session_id—Optional conversation identifiers

Response and credit billing

Response · 200
{
  "id": "chatcmpl_2747897",
  "object": "chat.completion",
  "model": "qwen/qwen3.8-27b-uncensored",
  "choices": [{
    "index": 0,
    "message": { "role": "assistant", "content": "..." },
    "finish_reason": "stop"
  }],
  "credits_used": 2,
  "billing": {
    "reserved_credits": 3,
    "provider_cost_usd": 0.0324,
    "elapsed_seconds": 54
  }
}

Read the generated text from choices[0].message.content.

Three credits are reserved when the request starts. The completed request is charged 1–3 credits from its actual processing cost, and unused reserved credits are automatically returned. Failed requests receive a full refund.

Qwen-specific errors include 400 for invalid messages or unsupported streaming, 402 for fewer than three available credits, 429 for rate limits, and 502 when the model request fails.

Open the Qwen playground →

Run lifecycle

A run moves through these states:

  • queued — accepted, waiting for a worker
  • running — worker executing nodes
  • completed — all outputs ready
  • failed — one or more nodes failed; check error
  • cancelled — cancelled before completion

Credits are reserved at run creation and settled (refund of unused portion) once the run completes or fails. The final response includes credits_used.

Create a run

POST /v1/workflows/{workflow_id}/runs — start a run of a published workflow.

Request
POST https://api.imageat.com/v1/workflows/wf_abc123/runs
Authorization: Bearer iat_live_...
Content-Type: application/json
Idempotency-Key: 8f3b... (optional)

{
  "nodes": [],
  "edges": [],
  "webhook": {
    "url": "https://your-app.com/webhook/imageat",
    "secret": "whsec_..."
  }
}

If you pass empty nodes/edges, the saved (published) workflow graph is used. Pass them to override inputs (e.g. a different prompt) per-run.

Response · 202
{
  "run_id": "run_01HX...",
  "status": "queued"
}

Idempotency: send the same Idempotency-Key to safely retry a request — the same run is returned instead of creating a duplicate.

Poll a run

GET /v1/runs/{run_id}

Response · 200
{
  "run_id": "run_01HX...",
  "status": "completed",
  "outputs": {
    "node_output_1": {
      "type": "image",
      "value": "https://cdn.imageat.com/runs/run_01HX.../node_output_1.png"
    }
  },
  "credits_used": 12,
  "created_at": "2026-05-22T10:01:24Z",
  "completed_at": "2026-05-22T10:01:38Z"
}

Poll every 1–2 seconds while the status is queued or running. For faster feedback, use SSE.

Server-sent events (live updates)

GET /v1/runs/{run_id}/events

Returns a text/event-stream. Each event is a JSON line emitted as nodes start, finish, or the run terminates. The stream closes after run_complete or run_failed.

Event examples
data: {"event":"node_start","node_id":"n1"}

data: {"event":"node_complete","node_id":"n1","output":{...}}

data: {"event":"run_complete","run_id":"run_01HX..."}

Cancel a run

POST /v1/runs/{run_id}/cancel

Cancels a queued or running run. Reserved credits are refunded; already-executed node costs are kept.

Response · 200
{ "ok": true }

Outputs & CDN URLs

Final outputs are mirrored to cdn.imageat.com so URLs are stable and fast. The path format is:

https://cdn.imageat.com/runs/{run_id}/{node_id}.{ext}

Each output entry has a type describing how to consume the value:

typevalue
imageSingle CDN image URL
imagesArray of image URLs
videoCDN video URL (mp4)
textPlain text (e.g. LLM output)

Webhooks

Pass a webhook object on run creation to receive a signed POST when the run terminates — no polling required.

Webhook payload
POST https://your-app.com/webhook/imageat
X-Imageat-Signature: t=1716372924,v1=sha256(...)
Content-Type: application/json

{
  "event": "run_complete",
  "run_id": "run_01HX...",
  "status": "completed",
  "outputs": { ... },
  "credits_used": 12
}

Verify X-Imageat-Signature using your webhook secret: compute HMAC-SHA256 over {timestamp}.{raw_body} and compare in constant time.

Error codes

statusmeaning
401Missing or invalid API key
402Insufficient credits — response includes balance and required
403Run belongs to a different account
404Workflow or run not found, or workflow not published
422Invalid request body (bad nodes/edges)
500Internal worker error — safe to retry with the same Idempotency-Key

Code examples

A full create → poll → read flow in three languages.

cURL
# 1. Create a run
RUN=$(curl -s -X POST https://api.imageat.com/v1/workflows/wf_abc123/runs \
  -H "Authorization: Bearer $IMAGEAT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"nodes": [], "edges": []}' | jq -r .run_id)

# 2. Poll until complete
while true; do
  RES=$(curl -s https://api.imageat.com/v1/runs/$RUN \
    -H "Authorization: Bearer $IMAGEAT_API_KEY")
  STATUS=$(echo "$RES" | jq -r .status)
  [ "$STATUS" = "completed" ] && echo "$RES" | jq .outputs && break
  [ "$STATUS" = "failed" ] && echo "$RES" | jq . && exit 1
  sleep 2
done
Node.js
const API_KEY = process.env.IMAGEAT_API_KEY!;
const BASE = "https://api.imageat.com/v1";

async function runWorkflow(workflowId: string) {
  const create = await fetch(`${BASE}/workflows/${workflowId}/runs`, {
    method: "POST",
    headers: {
      Authorization: `Bearer ${API_KEY}`,
      "Content-Type": "application/json",
    },
    body: JSON.stringify({ nodes: [], edges: [] }),
  });
  if (!create.ok) throw new Error(`create failed: ${create.status}`);
  const { run_id } = await create.json();

  while (true) {
    await new Promise((r) => setTimeout(r, 1500));
    const poll = await fetch(`${BASE}/runs/${run_id}`, {
      headers: { Authorization: `Bearer ${API_KEY}` },
    });
    const data = await poll.json();
    if (data.status === "completed") return data;
    if (data.status === "failed") throw new Error(data.error);
  }
}

const result = await runWorkflow("wf_abc123");
console.log(result.outputs, result.credits_used);
Python
import os, time, requests

API_KEY = os.environ["IMAGEAT_API_KEY"]
BASE = "https://api.imageat.com/v1"
H = {"Authorization": f"Bearer {API_KEY}"}

def run_workflow(workflow_id: str) -> dict:
    r = requests.post(
        f"{BASE}/workflows/{workflow_id}/runs",
        headers={**H, "Content-Type": "application/json"},
        json={"nodes": [], "edges": []},
    )
    r.raise_for_status()
    run_id = r.json()["run_id"]

    while True:
        time.sleep(1.5)
        data = requests.get(f"{BASE}/runs/{run_id}", headers=H).json()
        if data["status"] == "completed":
            return data
        if data["status"] == "failed":
            raise RuntimeError(data.get("error", "run failed"))

result = run_workflow("wf_abc123")
print(result["outputs"], result["credits_used"])
MCP Server

imageat MCP Server

Use imageat directly from AI clients like Claude Desktop, Cursor, and any other tool that speaks the Model Context Protocol — no code required.

Overview

The @imageat/mcp package is a Model Context Protocol (MCP) server. Once connected, your AI client gains tools to generate images, generate video, and run every imageat edit feature — all billed against your account credits. Edit tools are discovered live, so new features appear automatically.

Step-by-step setup for Claude, ChatGPT, Cursor, OpenClaw, Hermes, and other clients: imageat MCP setup guide.

Published on npm: npmjs.com/package/@imageat/mcp

Install

You only need Node.js 18+ and an API key from your Projects page. Add the server to your client's MCP config:

Claude Desktop · claude_desktop_config.json
{
  "mcpServers": {
    "imageat": {
      "command": "npx",
      "args": ["-y", "@imageat/mcp"],
      "env": {
        "IMAGEAT_API_KEY": "iat_live_xxxxxxxxxxxx"
      }
    }
  }
}

On macOS this file lives at ~/Library/Application Support/Claude/claude_desktop_config.json. Restart the client after editing. The imageat tools will appear in the tools menu.

env varnotes
IMAGEAT_API_KEYRequired. Your iat_live_ key.
IMAGEAT_BASE_URLOptional. Defaults to https://imageat.com.

claude.ai & ChatGPT (remote)

The npx setup above is a local process, so it works in desktop apps (Claude Desktop, Cursor). Browser clients like claude.ai and ChatGPT instead connect to a remote MCP endpoint over Streamable HTTP:

Remote MCP endpoint
https://mcp.imageat.com/mcp
ClientHow to add
claude.aiSettings → Connectors → Add custom connector → paste the URL above.
ChatGPTConnectors / Developer mode → add server → paste the URL above.

When the client asks for the connector's authorization, provide your iat_live_ key — it's sent as a Bearer token and scoped to your account's credits. Same tools, same billing as the desktop setup.

Tools

The server exposes these tools to the connected client:

toolwhat it does
imageat_generate_imageText-to-image / image-to-image. Returns CDN image URL(s).
imageat_generate_videoText-to-video / image-to-video. Returns a CDN mp4 URL.
imageat_check_creditsCurrent credit balance.
imageat_edit_*One tool per edit feature — remove background, object eraser, relight, virtual try-on, city teleport, inpaint, and more. Fetched live, so new features appear automatically.

Same auth and billing as the REST API — every call is metered against the API key's account, and errors return clear messages (e.g. 402 with your balance when out of credits).

Need help? Visit the help center.Get an API key →
imageat

Transform your ideas into photos and videos with imageat. Our agentic AI generates visuals from text descriptions — chain models, add logic, and build production-ready workflows.

Trustpilot

Product

  • AI Image Generator
  • AI Photo Generator
  • AI Video Generator
  • Image to Video AI
  • AI Product Photo Generator
  • AI Photo Editor
  • AI Text Remover
  • AI Tattoo Generator
  • AI Relight
  • AI Angles
  • AI Video Edit
  • AI Edit Tools
  • Editor
  • Remove Background
  • AI Avatar
  • Image Upscaler
  • Face Swap Generator
  • AI Dance Video Generator
  • AI Motion Transfer
  • Seedance 2.5 Video Generator
  • Seedance 2.0 Video Generator
  • AI Headshot Generator
  • Headshot Styles
  • Prompt Generator
  • AI Haircut Generator
  • Wedding Bride Selfie
  • Flash Car Nightlife
  • GTA 6 AI Photo Generator
  • Renaissance Pet Portrait
  • Vintage Photobooth Strip
  • AI Voice Generator
  • AI Lip Sync
  • AI UGC Generator
  • Trend Studio
  • AI Infographic Generator
  • AI Influencer Generator
  • Marketing Studio
  • AI Tools

Resources

  • AI Photo Packs
  • Blog
  • Community
  • Explore
  • Characters
  • Trends
  • World Cup 2026 Videos
  • Prompts
  • Templates
  • AI Benchmark
  • Compare

Company

  • Features
  • Pricing
  • Enterprise
  • About
  • Affiliate Program
  • Affiliate Terms
  • API
  • AI Models
  • MCP Server
  • Image Generation API
  • Video Generation API
  • MCP Image Generator
  • MCP Video Generator
  • Help Center
  • Status
  • Contact

Discover

Free Tools

  • Image Resizer
  • Image Compressor
  • Image Converter
  • Metadata Remover
  • Watermark Remover
  • Image to JSON

Popular Packs

  • Dating Photos
  • LinkedIn Headshots
  • CEO Headshots
  • Actor Headshots
  • Instagram Photos
  • AI Selfies
  • Old Money Photos
  • Wedding Photos
  • AI Makeup Try-On

© 2026 imageat, a service operated by INFINITE PHASE LLC. All rights reserved.

INFINITE PHASE LLC, 8 The Green, Suite A, Dover, DE 19901 USA

Help CenterPrivacyTermsRefundAll systems operational
imageat