Generate high-quality image and video from your terminal.

claude code + moondraft
$ Look at my onboarding flow in src/screens/ and generate illustrations
for each step. Match the app's color scheme. Save to assets/onboarding/
Reading src/screens/Onboarding.tsx… found 5 steps
Detected palette: #6C5CE7, #00CECE, #FAFAFA
step-1-welcome.png → ./assets/onboarding/
step-2-connect-account.png → ./assets/onboarding/
step-3-set-goals.png → ./assets/onboarding/
step-4-invite-team.png → ./assets/onboarding/
step-5-ready.png → ./assets/onboarding/
5 images · 15 credits
$ Redo all 5 but use this style instead [attaches mood-board.png]
Using mood-board.png as style reference
step-1-welcome.png → ./assets/onboarding/
step-2-connect-account.png → ./assets/onboarding/
step-3-set-goals.png → ./assets/onboarding/
step-4-invite-team.png → ./assets/onboarding/
step-5-ready.png → ./assets/onboarding/
5 images · 15 credits
// Your app's image generation handler
async function generateForUser(userPrompt) {
const res = await fetch('https://mdraftai-production.up.railway.app/v1/generate', {
method: 'POST',
headers: {
'Authorization': `Bearer ${process.env.MOONDRAFT_KEY}`,
'Content-Type': 'application/json'
},
body: JSON.stringify({ prompt: userPrompt })
});
const { image } = await res.json();
return image; // base64 PNG — show it in your UI
}
// User types "sunset over mountains" in your app
// They get back a professionally art-directed image
// They never see Moondraft. You never write a prompt template.
REST API + MCP · No credit card required

01

You send a prompt

A rough description. "Sneakers on marble." We handle the rest.

02

We refine it

Every prompt is automatically rewritten for professional-quality output. Lighting, composition, detail.

03

You get the image

Base64 PNG in the response. Or video. Style matched. Character consistent. Done.

PNG up to 4K · MP4 video · 7 aspect ratios · Style & character references

Docs

Endpoints

POST/v1/generateGenerate image
POST/v1/generate/batchBatch (up to 10)
POST/v1/videoGenerate video
POST/v1/enhanceUpscale 2x
POST/v1/prompt/refineOptimize prompt (free)
POST/v1/credits/buyBuy credits
GET/v1/creditsBalance
GET/v1/usageHistory
Rate limits
/v1/generate10 req/min
/v1/generate/batch3 req/min
/v1/enhance10 req/min
/v1/prompt/refine20 req/min
Generate
curl -X POST https://mdraftai-production.up.railway.app/v1/generate \
  -H "Authorization: Bearer md_..." \
  -H "Content-Type: application/json" \
  -d '{ "prompt": "product photo of sneakers on marble", "quality": "premium" }'
Batch with style reference
curl -X POST https://mdraftai-production.up.railway.app/v1/generate/batch \
  -H "Authorization: Bearer md_..." \
  -H "Content-Type: application/json" \
  -d '{
    "prompts": ["hero shot", "side angle", "close-up detail"],
    "quality": "premium",
    "style_ref": "data:image/png;base64,..."
  }'
Video
# Text to video
curl -X POST https://mdraftai-production.up.railway.app/v1/video \
  -d '{ "prompt": "slow pan across mountain lake, sunrise" }'

# Animate an image
  -d '{ "prompt": "gentle push in", "image": "base64..." }'

# Talking avatar
  -d '{ "image": "base64...", "audio": "base64..." }'
Video

Generate video from text, images, or audio

All video is 5 seconds, MP4 output, 10 credits per generation.

POST/v1/videoAll video modes use the same endpoint
Text → Video

Send a prompt

Describe the scene. Motion, camera, mood — all from text.

{ "prompt": "..." }
Image → Video

Animate a still

Send a prompt and a base64 image. We bring it to life.

{ "prompt": "...", "image": "base64..." }
Talking Avatar

Lip-sync a face

Send a portrait image and audio. The face speaks.

{ "image": "base64...", "audio": "base64..." }
MCP

Or use from Claude Code / Cursor

// ~/.mcp.json
{
  "mcpServers": {
    "moondraft": {
      "type": "url",
      "url": "https://mdraftai-production.up.railway.app/mcp",
      "headers": {
        "Authorization": "Bearer YOUR_API_KEY"
      }
    }
  }
}

Pricing

Prepaid credits. No subscriptions.

ActionStandardPremium Image1 cr3 cr Batch (per image)1 cr3 cr Enhance2 cr2 cr Video (5s)10 cr Prompt refineFreeFree
100
$9.99
300
$24.99
Save 17%
1,000
$69.99
Save 30%
Auto-reload for apps at scale

Set a threshold and your credits replenish automatically when they run low. Your app never stops generating because you forgot to top up.

POST /v1/credits/auto-reload  { "threshold": 50, "pack": "pack_1000" }
50 free credits on signup. No credit card required. Credits never expire.

Get your API key.

50 free credits. Start generating now.

Create Account