A rough description. "Sneakers on marble." We handle the rest.
Every prompt is automatically rewritten for professional-quality output. Lighting, composition, detail.
Base64 PNG in the response. Or video. Style matched. Character consistent. Done.
| POST | /v1/generate | Generate image |
| POST | /v1/generate/batch | Batch (up to 10) |
| POST | /v1/video | Generate video |
| POST | /v1/enhance | Upscale 2x |
| POST | /v1/prompt/refine | Optimize prompt (free) |
| POST | /v1/credits/buy | Buy credits |
| GET | /v1/credits | Balance |
| GET | /v1/usage | History |
| /v1/generate | 10 req/min |
| /v1/generate/batch | 3 req/min |
| /v1/enhance | 10 req/min |
| /v1/prompt/refine | 20 req/min |
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" }'
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,..." }'
# 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..." }'
All video is 5 seconds, MP4 output, 10 credits per generation.
| POST | /v1/video | All video modes use the same endpoint |
// ~/.mcp.json { "mcpServers": { "moondraft": { "type": "url", "url": "https://mdraftai-production.up.railway.app/mcp", "headers": { "Authorization": "Bearer YOUR_API_KEY" } } } }
Set a threshold and your credits replenish automatically when they run low. Your app never stops generating because you forgot to top up.