{
"error": {
"code": "invalid_config",
"message": "`resolution` must be one of: 768P, 2K."
}
}
{
"error": {
"code": "unauthorized",
"message": "The API key is invalid or has been revoked."
}
}
{
"error": {
"code": "insufficient_gems",
"message": "This generation costs 40 gems and the account balance is too low.",
"request_id": "d7e6c0f3-6699-4f6c-bb45-2ad7fd9158ff",
"gems_required": 40
}
}
{
"error": {
"code": "content_blocked",
"message": "The request was blocked by Mage's content policy.",
"request_id": "d7e6c0f3-6699-4f6c-bb45-2ad7fd9158ff"
}
}
{
"error": {
"code": "architecture_retired",
"message": "This architecture has been retired.",
"request_id": "d7e6c0f3-6699-4f6c-bb45-2ad7fd9158ff"
}
}
{
"error": {
"code": "too_many_requests",
"message": "At most 20 generations may be in flight at once for this account; 20 are running now."
}
}
{
"error": {
"code": "content_blocked",
"message": "The request was blocked by an external content restriction.",
"request_id": "d7e6c0f3-6699-4f6c-bb45-2ad7fd9158ff"
}
}
{
"error": {
"code": "internal_error",
"message": "Something went wrong on our side. Retry, and contact support if it persists."
}
}
Video models
Magejutsu
Generate video with Magejutsu through the Mage API: the fields of POST /v1/magejutsu/generate, its options by model, the rules it enforces, and its gem price.
POST
/
v1
/
magejutsu
/
generate
cURL
curl --request POST \ --url https://api.mage.space/v1/magejutsu/generate \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --data '{ "prompt": "A slow push-in on a lighthouse at dusk, waves breaking below", "videos": [ "https://example.com/input.jpg" ], "image": "https://example.com/input.jpg"}'
import Mage from '@mage-space/sdk';
const mage = new Mage(); // reads MAGE_API_KEY
const request = await mage.run('magejutsu', {
prompt: 'A slow push-in on a lighthouse at dusk, waves breaking below',
videos: [
'https://example.com/input.jpg',
],
image: 'https://example.com/input.jpg',
});
console.log(request.result.url);
from mage_space import Mage
mage = Mage() # reads MAGE_API_KEY
request = mage.run("magejutsu", {
"prompt": "A slow push-in on a lighthouse at dusk, waves breaking below",
"videos": [
"https://example.com/input.jpg",
],
"image": "https://example.com/input.jpg",
})
print(request["result"]["url"])
{
"error": {
"code": "invalid_config",
"message": "`resolution` must be one of: 768P, 2K."
}
}
{
"error": {
"code": "unauthorized",
"message": "The API key is invalid or has been revoked."
}
}
{
"error": {
"code": "insufficient_gems",
"message": "This generation costs 40 gems and the account balance is too low.",
"request_id": "d7e6c0f3-6699-4f6c-bb45-2ad7fd9158ff",
"gems_required": 40
}
}
{
"error": {
"code": "content_blocked",
"message": "The request was blocked by Mage's content policy.",
"request_id": "d7e6c0f3-6699-4f6c-bb45-2ad7fd9158ff"
}
}
{
"error": {
"code": "architecture_retired",
"message": "This architecture has been retired.",
"request_id": "d7e6c0f3-6699-4f6c-bb45-2ad7fd9158ff"
}
}
{
"error": {
"code": "too_many_requests",
"message": "At most 20 generations may be in flight at once for this account; 20 are running now."
}
}
{
"error": {
"code": "content_blocked",
"message": "The request was blocked by an external content restriction.",
"request_id": "d7e6c0f3-6699-4f6c-bb45-2ad7fd9158ff"
}
}
{
"error": {
"code": "internal_error",
"message": "Something went wrong on our side. Retry, and contact support if it persists."
}
}
Recasts an existing video: a director writes the edit prompt from the source, and a video-edit pass rebuilds who and what performs it. Send the source video and the replacement references; the output keeps the source length, ratio, motion and sound.
The tokens each variant accepts. A field left out inherits the architecture default, clamped to the variant’s first listed token when the variant does not offer it.
Write @handle in prompt to attach one of your saved entities, exactly as in the app. Each mention counts against the budget below; a mention that does not resolve, or that the chosen model does not support, is refused with 400 invalid_config before any gems are charged. See Characters and references.
Mention
Models
Budget
Characters
All models
30 images, characters, and references per request
References
All models
30 images, characters, and references per request
{ "prompt": "@ana walking through a night market, wearing @red-coat"}
A request that breaks one of these is refused with 400 invalid_config before any gems are charged.
videos and image are required.
The source video runs 4 to 30 seconds on magejutsu and 4 to 15 on magejutsu-lite, the faster and cheaper variant, and on magejutsu-feather, the cheapest and fastest, which runs motion_transfer only and renders at 480p and 720p. The output follows the source’s length and aspect ratio.
Every request runs the same director in the backend. Choose motion_transfer to rebuild the performers and keep the motion, or object_swap to change selected elements and keep the rest of the shot as filmed. The mode also decides how the source is prepared: a motion transfer guides the edit with each replaced performer’s movement and face, and an object swap edits the source as filmed. A clip the guidance cannot read, such as one with no person in it, renders from the source as filmed. There are no manual approval steps or draft renders.
Send up to 30 reference images across image and additional_images. The director reads every one, and the edit receives the ones its prompt uses: up to 27 on magejutsu, 9 on magejutsu-lite and 8 on magejutsu-feather.
The prompt is optional: without one, the director maps the references to the source by prominence and fit.
Original audio is restored by default; set keep_original_audio to false to retain generated audio.
The images are the replacement; mention each in the prompt by position (“image 1 is the person on the left”).
The source video is the only one accepted on a request; a longer clip is refused rather than trimmed.
Every field below that you leave out keeps its default. Option values are the tokens listed per field; a numeric token may be sent as a number. Fields the schema does not list pass through to the model unchanged. The exact charge for other settings is in the response’s billing.gems_charged, and the balance at GET /v1/account.
Create a key in API → API Keys: select Create API key, name it in the popup, then select Create key. Copy the one-time key and send it as Authorization: Bearer mage_sk_…. Keys are for server-side code only.
A key of your choosing, 1 to 255 characters, scoped to your API key. A retried submit with the same key returns the original request with 200 instead of charging again. The key identifies the first submission made with it; later bodies are not compared. A refusal recorded under the key (its envelope carries request_id) replays the same way, so a new attempt needs a new key.
The request was accepted; poll status_url for the result. A retried submit whose Idempotency-Key was used before answers 200 with the same shape, the original request, and charges nothing.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Mage","description":"Documentation for Mage, the AI image, video, and audio generation platform: models, apps, membership plans, Gems, and content rules.","colors":{"primary":"#fd7e14","light":"#fd7e14","dark":"#fd7e14"},"logo":{"light":"https://mintcdn.com/mage-space/YzEDodIOcFhjY5Nm/logo/light.png?fit=max\u0026auto=format\u0026n=YzEDodIOcFhjY5Nm\u0026q=85\u0026s=64222af9a7e55b8fd0c6f477679de40d","dark":"https://mintcdn.com/mage-space/YzEDodIOcFhjY5Nm/logo/dark.png?fit=max\u0026auto=format\u0026n=YzEDodIOcFhjY5Nm\u0026q=85\u0026s=6ac3e3aa905a6f399b43761d4f315a98","href":"https://www.mage.space"},"favicon":"https://mintcdn.com/mage-space/js7ICkpl6EjyCpqj/favicon.png?fit=max\u0026auto=format\u0026n=js7ICkpl6EjyCpqj\u0026q=85\u0026s=ac1b3dcc728d70f5f6e1f83e64131497","api":{"playground":{"display":"interactive"},"examples":{"languages":["curl","typescript","python","javascript"]}},"appearance":{"default":"dark"},"navbar":{"links":[{"href":"https://github.com/mage-space","label":"GitHub"},{"href":"https://www.mage.space/blog","label":"Blog"},{"href":"https://discord.gg/GT9bPgxyFP","label":"Community"}],"primary":{"type":"button","label":"Open Mage","href":"https://www.mage.space"}},"footer":{"socials":{"website":"https://www.mage.space","x":"https://x.com/MageSpace_","instagram":"https://www.instagram.com/magespace_","discord":"https://discord.gg/GT9bPgxyFP"}},"search":{"prompt":"Search Mage docs"},"seo":{"metatags":{"og:site_name":"Mage Docs","canonical":"https://docs.mage.space","msvalidate.01":"5EDBC0AF9865EE5A2B8FF37EA278E2FF"},"organization":{"name":"Mage","legalName":"Ollano, Inc.","url":"https://www.mage.space","sameAs":["https://x.com/MageSpace_","https://www.youtube.com/@MageSpace","https://www.instagram.com/magespace_","https://www.tiktok.com/@magespace_","https://www.linkedin.com/company/magespace","https://github.com/mage-space","https://discord.gg/GT9bPgxyFP"]},"indexing":"navigable"},"fonts":{"family":"Inter"},"integrations":{"posthog":{"apiKey":"phc_lBVvvz084lS4XFbPqGf38TGEa6HnGhmgVHcf4f0NNuX","apiHost":"https://ph.mage.space","sessionRecording":false}},"contextual":{"options":["copy","view","chatgpt","claude","perplexity","cursor","vscode"],"display":"header"},"metadata":{"timestamp":true},"styling":{"latex":true},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"mage-space","hasAudioNarration":false,"actualSubdomain":"mage-space","customDomains":["docs.mage.space"],"gitSource":{"type":"github","owner":"ollanoinc","repo":"mage","deployBranch":"master","contentDirectory":"apps/docs","isPrivate":true,"mountPath":"","label":""},"chroma":{"latestBuiltDeploymentHistoryId":"6ae2c4c3fcd7c0d45e224869","collectionId":"0ced8d56-7efc-4e97-9b35-63c621a93dfa","liveDeploymentHistoryId":"6ae2c4c3fcd7c0d45e224869","schemaVersion":"v3"},"entitlements":{"AI_CHAT":{"status":"DISABLED"},"WEB_MCP":{"status":"DISABLED"},"NARRATION":{"status":"DISABLED"}},"buildId":"6ae55f174f6cee598f7bc50e","clientVersion":"0.0.4043","searchFilterCounts":[{"language":"default","tag":"API","count":59},{"language":"default","tag":"Models","count":39},{"language":"default","tag":"Guides","count":27},{"language":"default","tag":"Apps","count":21},{"language":"default","tag":"Image models","count":16},{"language":"default","tag":"Video models","count":13},{"language":"default","tag":"Open-weights models","count":13},{"language":"default","tag":"Endpoints","count":12},{"language":"default","tag":"Features","count":12},{"language":"default","tag":"Mage models","count":11}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"api/models/magejutsu","slug":"/api/models/magejutsu","pageMetadata":{"title":"Magejutsu","sidebarTitle":"Magejutsu","description":"Generate video with Magejutsu through the Mage API: the fields of POST /v1/magejutsu/generate, its options by model, the rules it enforces, and its gem price.","openapi":"api/openapi.json POST /v1/magejutsu/generate","href":"/api/models/magejutsu"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Generate video with Magejutsu through the Mage API: the fields of POST /v1/magejutsu/generate, its options by model, the rules it enforces, and its gem price.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,li:`li`,p:`p`,pre:`pre`,span:`span`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,ul:`ul`,..._provideComponents(),...props.components},{CodeBlock,Heading,Table}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Table)_missingMdxReference(`Table`,true);return _jsxs(_Fragment,{children:[_jsx(_components.p,{children:`Recasts an existing video: a director writes the edit prompt from the source, and a video-edit pass rebuilds who and what performs it. Send the source video and the replacement references; the output keeps the source length, ratio, motion and sound.`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Detail`}),_jsx(_components.th,{})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Type`}),_jsx(_components.td,{children:`Video`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Models`}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`magejutsu`}),` (Magejutsu, default), `,_jsx(_components.code,{children:`magejutsu-lite`}),` (Magejutsu Lite), `,_jsx(_components.code,{children:`magejutsu-feather`}),` (Magejutsu Feather)`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Image inputs`}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`image`}),` (reference image), `,_jsx(_components.code,{children:`additional_images`}),` (additional reference images)`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Video inputs`}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`videos`}),` (source videos)`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Gems`}),_jsx(_components.td,{children:`Video-edit cost plus a flat 200-Gem processing fee per run, including direction, guidance, and image tasks`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Model page`}),_jsx(_components.td,{children:_jsx(_components.a,{href:`/models/magejutsu`,children:`Magejutsu`})})]})]})]}),`\n`,_jsx(Heading,{level:`2`,id:`options-by-model`,children:`Options by model`}),`\n`,_jsx(_components.p,{children:`The tokens each variant accepts. A field left out inherits the architecture default, clamped to the variant’s first listed token when the variant does not offer it.`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Model`}),_jsx(_components.th,{children:_jsx(_components.code,{children:`resolution`})})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`magejutsu`})}),_jsxs(_components.td,{\"data-numeric\":`true`,children:[_jsx(_components.code,{children:`480p`}),`, `,_jsx(_components.code,{children:`720p`}),`, `,_jsx(_components.code,{children:`1080p`})]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`magejutsu-lite`})}),_jsxs(_components.td,{\"data-numeric\":`true`,children:[_jsx(_components.code,{children:`480p`}),`, `,_jsx(_components.code,{children:`720p`}),`, `,_jsx(_components.code,{children:`1080p`})]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`magejutsu-feather`})}),_jsxs(_components.td,{\"data-numeric\":`true`,children:[_jsx(_components.code,{children:`480p`}),`, `,_jsx(_components.code,{children:`720p`})]})]})]})]}),`\n`,_jsx(Heading,{level:`2`,id:`mentions`,children:`Mentions`}),`\n`,_jsxs(_components.p,{children:[`Write `,_jsx(_components.code,{children:`@handle`}),` in `,_jsx(_components.code,{children:`prompt`}),` to attach one of your saved entities, exactly as in the app. Each mention counts against the budget below; a mention that does not resolve, or that the chosen model does not support, is refused with `,_jsx(_components.code,{children:`400 invalid_config`}),` before any gems are charged. See `,_jsx(_components.a,{href:`/api/inputs#characters-and-references`,children:`Characters and references`}),`.`]}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Mention`}),_jsx(_components.th,{children:`Models`}),_jsx(_components.th,{children:`Budget`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Characters`}),_jsx(_components.td,{children:`All models`}),_jsx(_components.td,{children:`30 images, characters, and references per request`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`References`}),_jsx(_components.td,{children:`All models`}),_jsx(_components.td,{children:`30 images, characters, and references per request`})]})]})]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`3`,language:`json`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`json`,children:_jsxs(_components.code,{language:`json`,numberOfLines:`3`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"prompt\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"@ana walking through a night market, wearing @red-coat\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})}),`\n`,_jsx(Heading,{level:`2`,id:`rules`,children:`Rules`}),`\n`,_jsxs(_components.p,{children:[`A request that breaks one of these is refused with `,_jsx(_components.code,{children:`400 invalid_config`}),` before any gems are charged.`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`videos`}),` and `,_jsx(_components.code,{children:`image`}),` are required.`]}),`\n`,_jsx(_components.li,{children:`The source video runs 4 to 30 seconds on magejutsu and 4 to 15 on magejutsu-lite, the faster and cheaper variant, and on magejutsu-feather, the cheapest and fastest, which runs motion_transfer only and renders at 480p and 720p. The output follows the source’s length and aspect ratio.`}),`\n`,_jsx(_components.li,{children:`Every request runs the same director in the backend. Choose motion_transfer to rebuild the performers and keep the motion, or object_swap to change selected elements and keep the rest of the shot as filmed. The mode also decides how the source is prepared: a motion transfer guides the edit with each replaced performer’s movement and face, and an object swap edits the source as filmed. A clip the guidance cannot read, such as one with no person in it, renders from the source as filmed. There are no manual approval steps or draft renders.`}),`\n`,_jsx(_components.li,{children:`Send up to 30 reference images across image and additional_images. The director reads every one, and the edit receives the ones its prompt uses: up to 27 on magejutsu, 9 on magejutsu-lite and 8 on magejutsu-feather.`}),`\n`,_jsx(_components.li,{children:`The prompt is optional: without one, the director maps the references to the source by prominence and fit.`}),`\n`,_jsx(_components.li,{children:`Original audio is restored by default; set keep_original_audio to false to retain generated audio.`}),`\n`,_jsx(_components.li,{children:`The images are the replacement; mention each in the prompt by position (“image 1 is the person on the left”).`}),`\n`,_jsx(_components.li,{children:`The source video is the only one accepted on a request; a longer clip is refused rather than trimmed.`}),`\n`]}),`\n`,_jsxs(_components.p,{children:[`Every field below that you leave out keeps its default. Option values are the tokens listed per field; a numeric token may be sent as a number. Fields the schema does not list pass through to the model unchanged. The exact charge for other settings is in the response’s `,_jsx(_components.code,{children:`billing.gems_charged`}),`, and the balance at `,_jsx(_components.a,{href:`/api/endpoints/get-account`,children:_jsx(_components.code,{children:`GET /v1/account`})}),`.`]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Magejutsu","sidebarTitle":"Magejutsu","description":"Generate video with Magejutsu through the Mage API: the fields of POST /v1/magejutsu/generate, its options by model, the rules it enforces, and its gem price.","openapi":"api/openapi.json POST /v1/magejutsu/generate","href":"/api/models/magejutsu"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Options by model","slug":"options-by-model","depth":2,"children":[]},{"title":"Mentions","slug":"mentions","depth":2,"children":[]},{"title":"Rules","slug":"rules","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"operationId":"generate_magejutsu","summary":"Magejutsu","description":"Generate video with Magejutsu through the Mage API: the fields of POST /v1/magejutsu/generate, its options by model, the rules it enforces, and its gem price.","tags":["Video models"],"parameters":["4849cb82-963e-4647-a4f6-09be80d6529f"],"requestBody":"b9a8450f-e8f3-402f-99cb-bf2432da9fd4","responses":{"202":"604d11b3-4891-4e4a-8f94-eb41a25f47ab","400":"d0e382fb-4d2c-4121-9c8b-9bad540d432d","401":"c12ac2da-0217-4725-abb3-b598eafc7d38","402":"8f2c29f4-1ba9-456c-ae07-ee87cd6093f7","403":"08f99fa1-dc1a-44ce-aa39-c34136d6319f","410":"1638959a-bb40-4532-a2b1-133118405396","429":"cd0a50a5-2f32-4a67-82f1-7f693f22c41d","451":"e6e0311e-dd16-49b9-99e6-f3dfc6020ee5","500":"52ae45ae-f5c6-4252-8f9b-1deffa25223f"},"x-codeSamples":[{"lang":"typescript","label":"TypeScript SDK","source":"import Mage from '@mage-space/sdk';\n\nconst mage = new Mage(); // reads MAGE_API_KEY\n\nconst request = await mage.run('magejutsu', {\n prompt: 'A slow push-in on a lighthouse at dusk, waves breaking below',\n videos: [\n 'https://example.com/input.jpg',\n ],\n image: 'https://example.com/input.jpg',\n});\n\nconsole.log(request.result.url);"},{"lang":"python","label":"Python SDK","source":"from mage_space import Mage\n\nmage = Mage() # reads MAGE_API_KEY\n\nrequest = mage.run(\"magejutsu\", {\n \"prompt\": \"A slow push-in on a lighthouse at dusk, waves breaking below\",\n \"videos\": [\n \"https://example.com/input.jpg\",\n ],\n \"image\": \"https://example.com/input.jpg\",\n})\n\nprint(request[\"result\"][\"url\"])"}],"method":"post","type":"path","servers":["171f709a-8df4-4c79-bc15-ded0fb5fcb5d"],"security":["00d2701e-5991-4597-9d99-72e1e58be430"],"path":"/v1/magejutsu/generate","baseUrlOptions":["https://api.mage.space"],"title":"Magejutsu","codeSamples":[{"label":"TypeScript SDK","lang":"typescript","source":"import Mage from '@mage-space/sdk';\n\nconst mage = new Mage(); // reads MAGE_API_KEY\n\nconst request = await mage.run('magejutsu', {\n prompt: 'A slow push-in on a lighthouse at dusk, waves breaking below',\n videos: [\n 'https://example.com/input.jpg',\n ],\n image: 'https://example.com/input.jpg',\n});\n\nconsole.log(request.result.url);"},{"label":"Python SDK","lang":"python","source":"from mage_space import Mage\n\nmage = Mage() # reads MAGE_API_KEY\n\nrequest = mage.run(\"magejutsu\", {\n \"prompt\": \"A slow push-in on a lighthouse at dusk, waves breaking below\",\n \"videos\": [\n \"https://example.com/input.jpg\",\n ],\n \"image\": \"https://example.com/input.jpg\",\n})\n\nprint(request[\"result\"][\"url\"])"}],"requestExampleLanguages":["bash","typescript","python","javascript"],"requiredOnlyExamples":false,"requestExampleType":"codeSamples","responseExampleType":"generated"},"dependencies":{"parameters":{"4849cb82-963e-4647-a4f6-09be80d6529f":{"name":"Idempotency-Key","in":"header","required":false,"description":"A key of your choosing, 1 to 255 characters, scoped to your API key. A retried submit with the same key returns the original request with `200` instead of charging again. The key identifies the first submission made with it; later bodies are not compared. A refusal recorded under the key (its envelope carries `request_id`) replays the same way, so a new attempt needs a new key.","schema":{"type":"string","minLength":1,"maxLength":255,"isRequired":false,"description":"A key of your choosing, 1 to 255 characters, scoped to your API key. A retried submit with the same key returns the original request with `200` instead of charging again. The key identifies the first submission made with it; later bodies are not compared. A refusal recorded under the key (its envelope carries `request_id`) replays the same way, so a new attempt needs a new key.","uniqueKey":"","typeLabel":"string"}}},"requestBody":{"required":true,"description":"A partial config for Magejutsu.","content":{"application/json":{"schema":{"type":"object","properties":{"prompt":{"type":"string","description":"Optional directions; leave out to let the model decide.","default":"","uniqueKey":"prompt","typeLabel":"string"},"seed":{"oneOf":[{"type":"integer","description":"Integer seed for reproducible output; omit or send null for a random seed.","uniqueKey":"seed.oneOf.0","typeLabel":"integer"},{"type":"null","description":"Integer seed for reproducible output; omit or send null for a random seed.","uniqueKey":"seed.oneOf.1","typeLabel":"null"}],"uniqueKey":"seed","typeLabel":"integer | null"},"model_id":{"type":"string","enum":["magejutsu","magejutsu-lite","magejutsu-feather"],"description":"The model variant to generate with.","default":"magejutsu","uniqueKey":"model_id","typeLabel":"enum\u003cstring>"},"resolution":{"type":"string","enum":["480p","720p","1080p"],"description":"Output resolution token.","default":"720p","uniqueKey":"resolution","typeLabel":"enum\u003cstring>"},"mode":{"type":"string","enum":["motion_transfer","object_swap"],"description":"One of the listed tokens.","default":"motion_transfer","uniqueKey":"mode","typeLabel":"enum\u003cstring>"},"image":{"oneOf":[{"type":"string","description":"The reference image. An https URL or a data URL.","format":"uri","uniqueKey":"image.oneOf.0","typeLabel":"string\u003curi>"},{"type":"string","description":"The reference image. An https URL or a data URL.","pattern":"^data:[^;,]+(?:;[^;,]+)*;base64,","uniqueKey":"image.oneOf.1","typeLabel":"string"}],"uniqueKey":"image","typeLabel":"string\u003curi> | string"},"additional_images":{"type":"array","items":{"oneOf":[{"type":"string","format":"uri","uniqueKey":"additional_images.items.[INDEX].oneOf.0","typeLabel":"string\u003curi>"},{"type":"string","pattern":"^data:[^;,]+(?:;[^;,]+)*;base64,","uniqueKey":"additional_images.items.[INDEX].oneOf.1","typeLabel":"string"}],"uniqueKey":"additional_images.items.[INDEX]","typeLabel":"string\u003curi> | string"},"description":"Additional reference images. Each an https URL or a data URL.","uniqueKey":"additional_images","typeLabel":"(string\u003curi> | string)[]"},"videos":{"type":"array","items":{"oneOf":[{"type":"string","format":"uri","uniqueKey":"videos.items.[INDEX].oneOf.0","typeLabel":"string\u003curi>"},{"type":"string","pattern":"^data:[^;,]+(?:;[^;,]+)*;base64,","uniqueKey":"videos.items.[INDEX].oneOf.1","typeLabel":"string"}],"uniqueKey":"videos.items.[INDEX]","typeLabel":"string\u003curi> | string"},"description":"The source videos. Each an https URL or a data URL.","uniqueKey":"videos","typeLabel":"(string\u003curi> | string)[]"},"keep_original_audio":{"type":"boolean","default":true,"uniqueKey":"keep_original_audio","typeLabel":"boolean"}},"additionalProperties":true,"required":[],"uniqueKey":"","typeLabel":"object"},"example":{"prompt":"A slow push-in on a lighthouse at dusk, waves breaking below","videos":["https://example.com/input.jpg"],"image":"https://example.com/input.jpg"},"examples":{"Example":{"title":"Example","value":{"prompt":"A slow push-in on a lighthouse at dusk, waves breaking below","videos":["https://example.com/input.jpg"],"image":"https://example.com/input.jpg"}}},"exampleType":"examples"}},"exampleType":"examples"},"responses":{"604d11b3-4891-4e4a-8f94-eb41a25f47ab":{"description":"The request was accepted; poll `status_url` for the result. A retried submit whose `Idempotency-Key` was used before answers `200` with the same shape, the original request, and charges nothing.","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string","format":"uuid","description":"The request id, also the id in `status_url` and `cancel_url`.","isRequired":true,"uniqueKey":"request_id","typeLabel":"string\u003cuuid>"},"status":{"type":"string","enum":["queued","in_progress","completed","failed","cancelled"],"description":"`queued` and `in_progress` are live; `completed`, `failed`, and `cancelled` are final.","isRequired":true,"uniqueKey":"status","typeLabel":"enum\u003cstring>"},"architecture":{"type":"string","description":"The architecture the request generates with.","isRequired":true,"uniqueKey":"architecture","typeLabel":"string"},"model_id":{"oneOf":[{"type":"string","description":"The model variant, when the architecture has variants.","isRequired":true,"uniqueKey":"model_id.oneOf.0","typeLabel":"string"},{"type":"null","description":"The model variant, when the architecture has variants.","isRequired":true,"uniqueKey":"model_id.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"model_id","typeLabel":"string | null"},"created_at":{"type":"string","format":"date-time","description":"When the request was accepted.","isRequired":true,"uniqueKey":"created_at","typeLabel":"string\u003cdate-time>"},"updated_at":{"type":"string","format":"date-time","description":"When the request last changed.","isRequired":true,"uniqueKey":"updated_at","typeLabel":"string\u003cdate-time>"},"billing":{"type":"object","properties":{"mode":{"type":"string","const":"gems","description":"Every API request is paid in gems.","isRequired":true,"uniqueKey":"billing.mode","typeLabel":"string"},"gems_charged":{"type":"number","description":"Gems debited for the request.","isRequired":true,"uniqueKey":"billing.gems_charged","typeLabel":"number"},"gems_refunded":{"description":"Gems returned to the account; present on failed requests.","type":"number","uniqueKey":"billing.gems_refunded","typeLabel":"number"}},"required":["mode","gems_charged"],"additionalProperties":false,"isRequired":true,"uniqueKey":"billing","typeLabel":"object"},"result":{"oneOf":[{"type":"object","description":"The output once `status` is `completed`, else null.","required":["type","url","width","height","seed","expires_at","moderation"],"properties":{"type":{"type":"string","enum":["image","video","audio"],"description":"The media type of the output.","isRequired":true,"uniqueKey":"result.oneOf.0.type","typeLabel":"enum\u003cstring>"},"url":{"type":"string","format":"uri","description":"Where to download the output.","isRequired":true,"uniqueKey":"result.oneOf.0.url","typeLabel":"string\u003curi>"},"width":{"type":"integer","description":"Output width in pixels; 0 for audio.","isRequired":true,"uniqueKey":"result.oneOf.0.width","typeLabel":"integer"},"height":{"type":"integer","description":"Output height in pixels; 0 for audio.","isRequired":true,"uniqueKey":"result.oneOf.0.height","typeLabel":"integer"},"seed":{"type":"integer","description":"The seed the generation ran with.","isRequired":true,"uniqueKey":"result.oneOf.0.seed","typeLabel":"integer"},"expires_at":{"oneOf":[{"type":"string","description":"When `url` stops working: 30 days after the request for temporary media, or null for permanent media.","format":"date-time","isRequired":true,"uniqueKey":"result.oneOf.0.expires_at.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","description":"When `url` stops working: 30 days after the request for temporary media, or null for permanent media.","isRequired":true,"uniqueKey":"result.oneOf.0.expires_at.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"result.oneOf.0.expires_at","typeLabel":"string\u003cdate-time> | null"},"moderation":{"type":"object","properties":{"nsfw":{"type":"boolean","description":"Whether moderation flagged the output as NSFW.","isRequired":true,"uniqueKey":"result.oneOf.0.moderation.nsfw","typeLabel":"boolean"}},"required":["nsfw"],"additionalProperties":false,"description":"Moderation flags on the output.","isRequired":true,"uniqueKey":"result.oneOf.0.moderation","typeLabel":"object"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"result.oneOf.0","typeLabel":"object"},{"type":"null","description":"The output once `status` is `completed`, else null.","isRequired":true,"uniqueKey":"result.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"result","typeLabel":"object | null"},"error":{"oneOf":[{"type":"object","description":"Why the request failed once `status` is `failed`, else null.","required":["code","message"],"properties":{"code":{"type":"string","enum":["unauthorized","invalid_request","invalid_config","architecture_not_found","architecture_retired","request_not_found","character_not_found","reference_not_found","not_found","insufficient_gems","payment_required","forbidden","content_blocked","request_finished","handle_taken","too_many_requests","generation_failed","preprocess_refused","internal_error"],"description":"A stable error code.","isRequired":true,"uniqueKey":"error.oneOf.0.code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"What went wrong, for a person.","isRequired":true,"uniqueKey":"error.oneOf.0.message","typeLabel":"string"},"reason":{"description":"Present on `content_blocked` when the model's external provider refused the content, not Mage: `likeness` (a real person or celebrity), `ip` (copyrighted or trademarked material), `nsfw` (content past the model's own limit: sexual, violent, or otherwise sensitive), `minors` (may involve a minor), `audio` (the audio, usually copyrighted music or a real voice), or `unspecified` (the provider gave no reason). An open set: treat an unknown value as `unspecified`.","type":"string","enum":["likeness","ip","nsfw","minors","audio","unspecified"],"uniqueKey":"error.oneOf.0.reason","typeLabel":"enum\u003cstring>"},"stage":{"oneOf":[{"type":"string","description":"With `reason`: `input` when the provider refused the prompt or input media, `output` when it refused the generated media, or null when it did not say.","enum":["input","output"],"uniqueKey":"error.oneOf.0.stage.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","description":"With `reason`: `input` when the provider refused the prompt or input media, `output` when it refused the generated media, or null when it did not say.","uniqueKey":"error.oneOf.0.stage.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.oneOf.0.stage","typeLabel":"enum\u003cstring> | null"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"error.oneOf.0","typeLabel":"object"},{"type":"null","description":"Why the request failed once `status` is `failed`, else null.","isRequired":true,"uniqueKey":"error.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"error","typeLabel":"object | null"},"status_url":{"type":"string","format":"uri","description":"Poll this URL for the request.","isRequired":true,"uniqueKey":"status_url","typeLabel":"string\u003curi>"},"cancel_url":{"type":"string","format":"uri","description":"POST to this URL to stop the request.","isRequired":true,"uniqueKey":"cancel_url","typeLabel":"string\u003curi>"}},"required":["request_id","status","architecture","model_id","created_at","updated_at","billing","result","error","status_url","cancel_url"],"additionalProperties":false,"uniqueKey":"","typeLabel":"object"},"example":{"request_id":"d7e6c0f3-6699-4f6c-bb45-2ad7fd9158ff","status":"in_progress","architecture":"magejutsu","model_id":"magejutsu","created_at":"2026-09-17T14:52:48.000Z","updated_at":"2026-09-17T14:52:49.000Z","billing":{"mode":"gems","gems_charged":1586},"result":null,"error":null,"status_url":"https://api.mage.space/v1/requests/d7e6c0f3-6699-4f6c-bb45-2ad7fd9158ff/status","cancel_url":"https://api.mage.space/v1/requests/d7e6c0f3-6699-4f6c-bb45-2ad7fd9158ff/cancel"},"examples":{"Example":{"title":"Example","value":{"request_id":"d7e6c0f3-6699-4f6c-bb45-2ad7fd9158ff","status":"in_progress","architecture":"magejutsu","model_id":"magejutsu","created_at":"2026-09-17T14:52:48.000Z","updated_at":"2026-09-17T14:52:49.000Z","billing":{"mode":"gems","gems_charged":1586},"result":null,"error":null,"status_url":"https://api.mage.space/v1/requests/d7e6c0f3-6699-4f6c-bb45-2ad7fd9158ff/status","cancel_url":"https://api.mage.space/v1/requests/d7e6c0f3-6699-4f6c-bb45-2ad7fd9158ff/cancel"}}},"exampleType":"examples"}},"exampleType":"examples"},"d0e382fb-4d2c-4121-9c8b-9bad540d432d":{"description":"The body is not a JSON object, sets a server-owned field, contradicts the architecture, breaks a field's type or token list, mentions an `@handle` that does not resolve or that the model does not support, exceeds the image or audio budget, or breaks a model rule; or the `Idempotency-Key` is malformed. `invalid_config` names the field, the handle, or the rule.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["unauthorized","invalid_request","invalid_config","architecture_not_found","architecture_retired","request_not_found","character_not_found","reference_not_found","not_found","insufficient_gems","payment_required","forbidden","content_blocked","request_finished","handle_taken","too_many_requests","generation_failed","preprocess_refused","internal_error"],"description":"A stable error code; treat an unknown code by its HTTP status.","isRequired":true,"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"What went wrong, for a person.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"request_id":{"description":"The request the refusal belongs to, when one was recorded before the refusal.","type":"string","format":"uuid","uniqueKey":"error.request_id","typeLabel":"string\u003cuuid>"},"gems_required":{"description":"The price of the refused generation, on `insufficient_gems`.","type":"number","uniqueKey":"error.gems_required","typeLabel":"number"},"docs_url":{"description":"Where to read the API reference, on `not_found`.","type":"string","format":"uri","uniqueKey":"error.docs_url","typeLabel":"string\u003curi>"},"handle":{"description":"The handle that is taken, on `handle_taken`.","type":"string","uniqueKey":"error.handle","typeLabel":"string"}},"required":["code","message"],"additionalProperties":true,"description":"Further fields depend on the code.","isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"additionalProperties":false,"uniqueKey":"","typeLabel":"object"},"example":{"error":{"code":"invalid_config","message":"`resolution` must be one of: 768P, 2K."}},"examples":{"Example":{"title":"Example","value":{"error":{"code":"invalid_config","message":"`resolution` must be one of: 768P, 2K."}}}},"exampleType":"examples"}},"exampleType":"examples"},"c12ac2da-0217-4725-abb3-b598eafc7d38":{"description":"The key is missing, malformed, unknown, or revoked.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["unauthorized","invalid_request","invalid_config","architecture_not_found","architecture_retired","request_not_found","character_not_found","reference_not_found","not_found","insufficient_gems","payment_required","forbidden","content_blocked","request_finished","handle_taken","too_many_requests","generation_failed","preprocess_refused","internal_error"],"description":"A stable error code; treat an unknown code by its HTTP status.","isRequired":true,"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"What went wrong, for a person.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"request_id":{"description":"The request the refusal belongs to, when one was recorded before the refusal.","type":"string","format":"uuid","uniqueKey":"error.request_id","typeLabel":"string\u003cuuid>"},"gems_required":{"description":"The price of the refused generation, on `insufficient_gems`.","type":"number","uniqueKey":"error.gems_required","typeLabel":"number"},"docs_url":{"description":"Where to read the API reference, on `not_found`.","type":"string","format":"uri","uniqueKey":"error.docs_url","typeLabel":"string\u003curi>"},"handle":{"description":"The handle that is taken, on `handle_taken`.","type":"string","uniqueKey":"error.handle","typeLabel":"string"}},"required":["code","message"],"additionalProperties":true,"description":"Further fields depend on the code.","isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"additionalProperties":false,"uniqueKey":"","typeLabel":"object"},"example":{"error":{"code":"unauthorized","message":"The API key is invalid or has been revoked."}},"examples":{"Example":{"title":"Example","value":{"error":{"code":"unauthorized","message":"The API key is invalid or has been revoked."}}}},"exampleType":"examples"}},"exampleType":"examples"},"8f2c29f4-1ba9-456c-ae07-ee87cd6093f7":{"description":"The gems balance is below the price (`insufficient_gems`; `gems_required` is the price), or the account has never paid (`payment_required`).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["unauthorized","invalid_request","invalid_config","architecture_not_found","architecture_retired","request_not_found","character_not_found","reference_not_found","not_found","insufficient_gems","payment_required","forbidden","content_blocked","request_finished","handle_taken","too_many_requests","generation_failed","preprocess_refused","internal_error"],"description":"A stable error code; treat an unknown code by its HTTP status.","isRequired":true,"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"What went wrong, for a person.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"request_id":{"description":"The request the refusal belongs to, when one was recorded before the refusal.","type":"string","format":"uuid","uniqueKey":"error.request_id","typeLabel":"string\u003cuuid>"},"gems_required":{"description":"The price of the refused generation, on `insufficient_gems`.","type":"number","uniqueKey":"error.gems_required","typeLabel":"number"},"docs_url":{"description":"Where to read the API reference, on `not_found`.","type":"string","format":"uri","uniqueKey":"error.docs_url","typeLabel":"string\u003curi>"},"handle":{"description":"The handle that is taken, on `handle_taken`.","type":"string","uniqueKey":"error.handle","typeLabel":"string"}},"required":["code","message"],"additionalProperties":true,"description":"Further fields depend on the code.","isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"additionalProperties":false,"uniqueKey":"","typeLabel":"object"},"example":{"error":{"code":"insufficient_gems","message":"This generation costs 40 gems and the account balance is too low.","request_id":"d7e6c0f3-6699-4f6c-bb45-2ad7fd9158ff","gems_required":40}},"examples":{"Example":{"title":"Example","value":{"error":{"code":"insufficient_gems","message":"This generation costs 40 gems and the account balance is too low.","request_id":"d7e6c0f3-6699-4f6c-bb45-2ad7fd9158ff","gems_required":40}}}},"exampleType":"examples"}},"exampleType":"examples"},"08f99fa1-dc1a-44ce-aa39-c34136d6319f":{"description":"The account cannot generate (`forbidden`), or the request was blocked by the content policy before it ran (`content_blocked`).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["unauthorized","invalid_request","invalid_config","architecture_not_found","architecture_retired","request_not_found","character_not_found","reference_not_found","not_found","insufficient_gems","payment_required","forbidden","content_blocked","request_finished","handle_taken","too_many_requests","generation_failed","preprocess_refused","internal_error"],"description":"A stable error code; treat an unknown code by its HTTP status.","isRequired":true,"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"What went wrong, for a person.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"request_id":{"description":"The request the refusal belongs to, when one was recorded before the refusal.","type":"string","format":"uuid","uniqueKey":"error.request_id","typeLabel":"string\u003cuuid>"},"gems_required":{"description":"The price of the refused generation, on `insufficient_gems`.","type":"number","uniqueKey":"error.gems_required","typeLabel":"number"},"docs_url":{"description":"Where to read the API reference, on `not_found`.","type":"string","format":"uri","uniqueKey":"error.docs_url","typeLabel":"string\u003curi>"},"handle":{"description":"The handle that is taken, on `handle_taken`.","type":"string","uniqueKey":"error.handle","typeLabel":"string"}},"required":["code","message"],"additionalProperties":true,"description":"Further fields depend on the code.","isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"additionalProperties":false,"uniqueKey":"","typeLabel":"object"},"example":{"error":{"code":"content_blocked","message":"The request was blocked by Mage's content policy.","request_id":"d7e6c0f3-6699-4f6c-bb45-2ad7fd9158ff"}},"examples":{"Example":{"title":"Example","value":{"error":{"code":"content_blocked","message":"The request was blocked by Mage's content policy.","request_id":"d7e6c0f3-6699-4f6c-bb45-2ad7fd9158ff"}}}},"exampleType":"examples"}},"exampleType":"examples"},"1638959a-bb40-4532-a2b1-133118405396":{"description":"The architecture has been retired.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["unauthorized","invalid_request","invalid_config","architecture_not_found","architecture_retired","request_not_found","character_not_found","reference_not_found","not_found","insufficient_gems","payment_required","forbidden","content_blocked","request_finished","handle_taken","too_many_requests","generation_failed","preprocess_refused","internal_error"],"description":"A stable error code; treat an unknown code by its HTTP status.","isRequired":true,"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"What went wrong, for a person.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"request_id":{"description":"The request the refusal belongs to, when one was recorded before the refusal.","type":"string","format":"uuid","uniqueKey":"error.request_id","typeLabel":"string\u003cuuid>"},"gems_required":{"description":"The price of the refused generation, on `insufficient_gems`.","type":"number","uniqueKey":"error.gems_required","typeLabel":"number"},"docs_url":{"description":"Where to read the API reference, on `not_found`.","type":"string","format":"uri","uniqueKey":"error.docs_url","typeLabel":"string\u003curi>"},"handle":{"description":"The handle that is taken, on `handle_taken`.","type":"string","uniqueKey":"error.handle","typeLabel":"string"}},"required":["code","message"],"additionalProperties":true,"description":"Further fields depend on the code.","isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"additionalProperties":false,"uniqueKey":"","typeLabel":"object"},"example":{"error":{"code":"architecture_retired","message":"This architecture has been retired.","request_id":"d7e6c0f3-6699-4f6c-bb45-2ad7fd9158ff"}},"examples":{"Example":{"title":"Example","value":{"error":{"code":"architecture_retired","message":"This architecture has been retired.","request_id":"d7e6c0f3-6699-4f6c-bb45-2ad7fd9158ff"}}}},"exampleType":"examples"}},"exampleType":"examples"},"cd0a50a5-2f32-4a67-82f1-7f693f22c41d":{"description":"The account already has its cap of generations in flight (20 unless set otherwise for the account), web and API together. Wait for some to finish.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["unauthorized","invalid_request","invalid_config","architecture_not_found","architecture_retired","request_not_found","character_not_found","reference_not_found","not_found","insufficient_gems","payment_required","forbidden","content_blocked","request_finished","handle_taken","too_many_requests","generation_failed","preprocess_refused","internal_error"],"description":"A stable error code; treat an unknown code by its HTTP status.","isRequired":true,"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"What went wrong, for a person.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"request_id":{"description":"The request the refusal belongs to, when one was recorded before the refusal.","type":"string","format":"uuid","uniqueKey":"error.request_id","typeLabel":"string\u003cuuid>"},"gems_required":{"description":"The price of the refused generation, on `insufficient_gems`.","type":"number","uniqueKey":"error.gems_required","typeLabel":"number"},"docs_url":{"description":"Where to read the API reference, on `not_found`.","type":"string","format":"uri","uniqueKey":"error.docs_url","typeLabel":"string\u003curi>"},"handle":{"description":"The handle that is taken, on `handle_taken`.","type":"string","uniqueKey":"error.handle","typeLabel":"string"}},"required":["code","message"],"additionalProperties":true,"description":"Further fields depend on the code.","isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"additionalProperties":false,"uniqueKey":"","typeLabel":"object"},"example":{"error":{"code":"too_many_requests","message":"At most 20 generations may be in flight at once for this account; 20 are running now."}},"examples":{"Example":{"title":"Example","value":{"error":{"code":"too_many_requests","message":"At most 20 generations may be in flight at once for this account; 20 are running now."}}}},"exampleType":"examples"}},"exampleType":"examples"},"e6e0311e-dd16-49b9-99e6-f3dfc6020ee5":{"description":"The request was blocked by an external content restriction.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["unauthorized","invalid_request","invalid_config","architecture_not_found","architecture_retired","request_not_found","character_not_found","reference_not_found","not_found","insufficient_gems","payment_required","forbidden","content_blocked","request_finished","handle_taken","too_many_requests","generation_failed","preprocess_refused","internal_error"],"description":"A stable error code; treat an unknown code by its HTTP status.","isRequired":true,"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"What went wrong, for a person.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"request_id":{"description":"The request the refusal belongs to, when one was recorded before the refusal.","type":"string","format":"uuid","uniqueKey":"error.request_id","typeLabel":"string\u003cuuid>"},"gems_required":{"description":"The price of the refused generation, on `insufficient_gems`.","type":"number","uniqueKey":"error.gems_required","typeLabel":"number"},"docs_url":{"description":"Where to read the API reference, on `not_found`.","type":"string","format":"uri","uniqueKey":"error.docs_url","typeLabel":"string\u003curi>"},"handle":{"description":"The handle that is taken, on `handle_taken`.","type":"string","uniqueKey":"error.handle","typeLabel":"string"}},"required":["code","message"],"additionalProperties":true,"description":"Further fields depend on the code.","isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"additionalProperties":false,"uniqueKey":"","typeLabel":"object"},"example":{"error":{"code":"content_blocked","message":"The request was blocked by an external content restriction.","request_id":"d7e6c0f3-6699-4f6c-bb45-2ad7fd9158ff"}},"examples":{"Example":{"title":"Example","value":{"error":{"code":"content_blocked","message":"The request was blocked by an external content restriction.","request_id":"d7e6c0f3-6699-4f6c-bb45-2ad7fd9158ff"}}}},"exampleType":"examples"}},"exampleType":"examples"},"52ae45ae-f5c6-4252-8f9b-1deffa25223f":{"description":"Something failed on Mage's side. Retry, and contact support if it persists.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["unauthorized","invalid_request","invalid_config","architecture_not_found","architecture_retired","request_not_found","character_not_found","reference_not_found","not_found","insufficient_gems","payment_required","forbidden","content_blocked","request_finished","handle_taken","too_many_requests","generation_failed","preprocess_refused","internal_error"],"description":"A stable error code; treat an unknown code by its HTTP status.","isRequired":true,"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"What went wrong, for a person.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"request_id":{"description":"The request the refusal belongs to, when one was recorded before the refusal.","type":"string","format":"uuid","uniqueKey":"error.request_id","typeLabel":"string\u003cuuid>"},"gems_required":{"description":"The price of the refused generation, on `insufficient_gems`.","type":"number","uniqueKey":"error.gems_required","typeLabel":"number"},"docs_url":{"description":"Where to read the API reference, on `not_found`.","type":"string","format":"uri","uniqueKey":"error.docs_url","typeLabel":"string\u003curi>"},"handle":{"description":"The handle that is taken, on `handle_taken`.","type":"string","uniqueKey":"error.handle","typeLabel":"string"}},"required":["code","message"],"additionalProperties":true,"description":"Further fields depend on the code.","isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"additionalProperties":false,"uniqueKey":"","typeLabel":"object"},"example":{"error":{"code":"internal_error","message":"Something went wrong on our side. Retry, and contact support if it persists."}},"examples":{"Example":{"title":"Example","value":{"error":{"code":"internal_error","message":"Something went wrong on our side. Retry, and contact support if it persists."}}}},"exampleType":"examples"}},"exampleType":"examples"}},"security":{"00d2701e-5991-4597-9d99-72e1e58be430":{"apiKey":{"type":"http","scheme":"bearer","description":"Create a key in [API → API Keys](https://www.mage.space/api?tab=api-keys): select **Create API key**, name it in the popup, then select **Create key**. Copy the one-time key and send it as `Authorization: Bearer mage_sk_…`. Keys are for server-side code only.","scopes":[],"schemeName":"apiKey"}}},"servers":{"171f709a-8df4-4c79-bc15-ded0fb5fcb5d":{"url":"https://api.mage.space","description":"Production"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"http","scheme":"bearer","description":"Create a key in [API → API Keys](https://www.mage.space/api?tab=api-keys): select **Create API key**, name it in the popup, then select **Create key**. Copy the one-time key and send it as `Authorization: Bearer mage_sk_…`. Keys are for server-side code only.","scopes":[],"schemeName":"apiKey"},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"Create a key in [API → API Keys](https://www.mage.space/api?tab=api-keys): select **Create API key**, name it in the popup, then select **Create key**. Copy the one-time key and send it as `Authorization: Bearer mage_sk_…`. Keys are for server-side code only.","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"apiKey","name":"Authorization"}],"title":"apiKey"}]},"originalFileLocation":"api/openapi.json"},"subdomain":"mage-space","siteName":"Mage","title":"Magejutsu - Mage","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-31T03:23:11.188Z","gitLastModified":"2026-10-31T03:22:58.000Z","originalFileLocation":"api/models/magejutsu.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"dark\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Generate video with Magejutsu through the Mage API: the fields of POST /v1/magejutsu/generate, its options by model, the rules it enforces, and its gem price.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Mage\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/mage-space/RwBJFP0egq-BZOBp/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/mage-space/RwBJFP0egq-BZOBp/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/mage-space/RwBJFP0egq-BZOBp/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/mage-space/RwBJFP0egq-BZOBp/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/mage-space/RwBJFP0egq-BZOBp/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/mage-space/RwBJFP0egq-BZOBp/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/mage-space/RwBJFP0egq-BZOBp/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/mage-space/RwBJFP0egq-BZOBp/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/mage-space/RwBJFP0egq-BZOBp/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Magejutsu - Mage\">\u003cmeta data-mint-head property=\"og:description\" content=\"Generate video with Magejutsu through the Mage API: the fields of POST /v1/magejutsu/generate, its options by model, the rules it enforces, and its gem price.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Mage Docs\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.mage.space/api/models/magejutsu\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://mage-space.mintlify.app/_mintlify/api/og/v2?division=Video+models\u0026amp;title=Magejutsu\u0026amp;description=Generate+video+with+Magejutsu+through+the+Mage+API%3A+the+fields+of+POST+%2Fv1%2Fmagejutsu%2Fgenerate%2C+its+options+by+model%2C+the+rules+it+enforces%2C+and+its+gem+price.\u0026amp;theme=15e3959de07cfae439e998da\u0026amp;signature=dff8b3da41f8326ede6d9e326a66dcc0572225e34dde3b18c1064890c3f4d855\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Magejutsu - Mage\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Generate video with Magejutsu through the Mage API: the fields of POST /v1/magejutsu/generate, its options by model, the rules it enforces, and its gem price.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://mage-space.mintlify.app/_mintlify/api/og/v2?division=Video+models\u0026amp;title=Magejutsu\u0026amp;description=Generate+video+with+Magejutsu+through+the+Mage+API%3A+the+fields+of+POST+%2Fv1%2Fmagejutsu%2Fgenerate%2C+its+options+by+model%2C+the+rules+it+enforces%2C+and+its+gem+price.\u0026amp;theme=15e3959de07cfae439e998da\u0026amp;signature=dff8b3da41f8326ede6d9e326a66dcc0572225e34dde3b18c1064890c3f4d855\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/mage-space/RwBJFP0egq-BZOBp/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Mage\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#fd7e14\">\u003cmeta data-mint-head name=\"msvalidate.01\" content=\"5EDBC0AF9865EE5A2B8FF37EA278E2FF\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.mage.space/api/models/magejutsu\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api/models/magejutsu.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://www.mage.space/#organization\",\"name\":\"Mage\",\"legalName\":\"Ollano, Inc.\",\"url\":\"https://www.mage.space\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/mage-space/YzEDodIOcFhjY5Nm/logo/light.png?fit=max\u0026auto=format\u0026n=YzEDodIOcFhjY5Nm\u0026q=85\u0026s=64222af9a7e55b8fd0c6f477679de40d\"},\"sameAs\":[\"https://x.com/MageSpace_\",\"https://www.youtube.com/@MageSpace\",\"https://www.instagram.com/magespace_\",\"https://www.tiktok.com/@magespace_\",\"https://www.linkedin.com/company/magespace\",\"https://github.com/mage-space\",\"https://discord.gg/GT9bPgxyFP\"]},{\"@type\":\"WebSite\",\"@id\":\"https://docs.mage.space#website\",\"name\":\"Mage\",\"url\":\"https://docs.mage.space\",\"publisher\":{\"@id\":\"https://www.mage.space/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.mage.space/api/models/magejutsu#webpage\",\"url\":\"https://docs.mage.space/api/models/magejutsu\",\"name\":\"Magejutsu\",\"description\":\"Generate video with Magejutsu through the Mage API: the fields of POST /v1/magejutsu/generate, its options by model, the rules it enforces, and its gem price.\",\"dateModified\":\"2026-10-31T03:22:58.000Z\",\"isPartOf\":{\"@id\":\"https://docs.mage.space#website\"},\"breadcrumb\":{\"@id\":\"https://docs.mage.space/api/models/magejutsu#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.mage.space/api/models/magejutsu#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Video models\",\"item\":\"https://docs.mage.space/api/models/berry\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Magejutsu\",\"item\":\"https://docs.mage.space/api/models/magejutsu\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.mage.space/api/models/magejutsu#apireference\",\"headline\":\"Magejutsu\",\"name\":\"Magejutsu\",\"description\":\"Generate video with Magejutsu through the Mage API: the fields of POST /v1/magejutsu/generate, its options by model, the rules it enforces, and its gem price.\",\"url\":\"https://docs.mage.space/api/models/magejutsu\",\"mainEntityOfPage\":{\"@id\":\"https://docs.mage.space/api/models/magejutsu#webpage\"},\"dateModified\":\"2026-10-31T03:22:58.000Z\",\"publisher\":{\"@id\":\"https://www.mage.space/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.mage.space#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Mage\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Mage","nav":{"global":null,"tabs":[{"tab":"Guides","pages":[{"title":"Guides","href":""}]},{"tab":"Models","pages":[{"title":"Models","href":"/models/overview"}]},{"tab":"Apps","pages":[{"title":"Apps","href":"/apps/overview"}]},{"tab":"API","groups":[{"group":"Get started","pages":[{"title":"Mage API","sidebarTitle":"Overview","href":"/api/overview"},{"title":"Quickstart","sidebarTitle":"Quickstart","href":"/api/quickstart"},{"title":"Authentication","sidebarTitle":"Authentication","href":"/api/authentication"},{"title":"Use Mage from Claude, ChatGPT, Grok, and Cursor","sidebarTitle":"MCP server","href":"/api/mcp"}]},{"group":"SDKs and integrations","pages":[{"title":"TypeScript SDK","sidebarTitle":"TypeScript","href":"/api/sdks/typescript"},{"title":"Python SDK","sidebarTitle":"Python","href":"/api/sdks/python"},{"title":"Mage for ComfyUI","sidebarTitle":"ComfyUI","href":"/api/integrations/comfyui"},{"title":"Mage skills for Claude, Codex, and Cursor","sidebarTitle":"Agent skills","href":"/api/integrations/skills"}]},{"group":"Concepts","pages":[{"title":"Requests and lifecycle","sidebarTitle":"Requests and lifecycle","href":"/api/requests"},{"title":"Inputs and uploads","sidebarTitle":"Inputs and uploads","href":"/api/inputs"},{"title":"Errors and retries","sidebarTitle":"Errors and retries","href":"/api/errors"},{"title":"Rate limits and concurrency","sidebarTitle":"Rate limits","href":"/api/limits"},{"title":"Billing and retention","sidebarTitle":"Billing and retention","href":"/api/billing"},{"title":"Versioning and changes","sidebarTitle":"Versioning","href":"/api/versioning"}]},{"group":"Endpoints","pages":[{"title":"Generate","sidebarTitle":"Generate","openapi":"api/openapi.json POST /v1/{architecture}/generate","href":"/api/endpoints/generate"},{"title":"List architectures","sidebarTitle":"List architectures","openapi":"api/openapi.json GET /v1/architectures","href":"/api/endpoints/list-architectures"},{"title":"Get request status","sidebarTitle":"Get request status","openapi":"api/openapi.json GET /v1/requests/{request_id}/status","href":"/api/endpoints/get-request-status"},{"title":"Cancel request","sidebarTitle":"Cancel request","openapi":"api/openapi.json POST /v1/requests/{request_id}/cancel","href":"/api/endpoints/cancel-request"},{"title":"Get account","sidebarTitle":"Get account","openapi":"api/openapi.json GET /v1/account","href":"/api/endpoints/get-account"},{"title":"Create upload","sidebarTitle":"Create upload","openapi":"api/openapi.json POST /v1/uploads","href":"/api/endpoints/create-upload"},{"title":"List characters","sidebarTitle":"List characters","openapi":"api/openapi.json GET /v1/characters","href":"/api/endpoints/list-characters"},{"title":"Create character","sidebarTitle":"Create character","openapi":"api/openapi.json POST /v1/characters","href":"/api/endpoints/create-character"},{"title":"Delete character","sidebarTitle":"Delete character","openapi":"api/openapi.json DELETE /v1/characters/{character_id}","href":"/api/endpoints/delete-character"},{"title":"List references","sidebarTitle":"List references","openapi":"api/openapi.json GET /v1/references","href":"/api/endpoints/list-references"},{"title":"Create reference","sidebarTitle":"Create reference","openapi":"api/openapi.json POST /v1/references","href":"/api/endpoints/create-reference"},{"title":"Delete reference","sidebarTitle":"Delete reference","openapi":"api/openapi.json DELETE /v1/references/{reference_id}","href":"/api/endpoints/delete-reference"}]},{"group":"Models","pages":[{"title":"Models in the API","sidebarTitle":"Overview","href":"/api/models/overview"}]},{"group":"Image models","pages":[{"title":"Anima","sidebarTitle":"Anima","openapi":"api/openapi.json POST /v1/anima/generate","href":"/api/models/anima"},{"title":"Chroma","sidebarTitle":"Chroma","openapi":"api/openapi.json POST /v1/chroma/generate","href":"/api/models/chroma"},{"title":"Flux 2","sidebarTitle":"Flux 2","openapi":"api/openapi.json POST /v1/flux2/generate","href":"/api/models/flux2"},{"title":"GPT Image 2","sidebarTitle":"GPT Image 2","openapi":"api/openapi.json POST /v1/gpt_image_2/generate","href":"/api/models/gpt_image_2"},{"title":"Grok Image","sidebarTitle":"Grok Image","openapi":"api/openapi.json POST /v1/grok_image/generate","href":"/api/models/grok_image"},{"title":"Guava","sidebarTitle":"Guava","openapi":"api/openapi.json POST /v1/guava/generate","href":"/api/models/guava"},{"title":"HiDream","sidebarTitle":"HiDream","openapi":"api/openapi.json POST /v1/hidream/generate","href":"/api/models/hidream"},{"title":"Krea 2","sidebarTitle":"Krea 2","openapi":"api/openapi.json POST /v1/krea_2/generate","href":"/api/models/krea_2"},{"title":"Mango","sidebarTitle":"Mango","openapi":"api/openapi.json POST /v1/mango/generate","href":"/api/models/mango"},{"title":"MOSS-Image","sidebarTitle":"MOSS-Image","openapi":"api/openapi.json POST /v1/moss_image/generate","href":"/api/models/moss_image"},{"title":"Nano Banana 2","sidebarTitle":"Nano Banana 2","openapi":"api/openapi.json POST /v1/nano_banana_v2/generate","href":"/api/models/nano_banana_v2"},{"title":"SDXL Plus","sidebarTitle":"SDXL Plus","openapi":"api/openapi.json POST /v1/sdxl_plus/generate","href":"/api/models/sdxl_plus"},{"title":"Stable Diffusion v1.5","sidebarTitle":"Stable Diffusion v1.5","openapi":"api/openapi.json POST /v1/stable_diffusion_v15/generate","href":"/api/models/stable_diffusion_v15"},{"title":"Stable Diffusion v3.5 Large","sidebarTitle":"Stable Diffusion v3.5 Large","openapi":"api/openapi.json POST /v1/stable_diffusion_v35_large/generate","href":"/api/models/stable_diffusion_v35_large"},{"title":"Stable Diffusion XL","sidebarTitle":"Stable Diffusion XL","openapi":"api/openapi.json POST /v1/stable_diffusion_xl/generate","href":"/api/models/stable_diffusion_xl"},{"title":"Z-Image","sidebarTitle":"Z-Image","openapi":"api/openapi.json POST /v1/z_image/generate","href":"/api/models/z_image"}]},{"group":"Video models","pages":[{"title":"Berry","sidebarTitle":"Berry","openapi":"api/openapi.json POST /v1/berry/generate","href":"/api/models/berry"},{"title":"Blueberry","sidebarTitle":"Blueberry","openapi":"api/openapi.json POST /v1/blueberry/generate","href":"/api/models/blueberry"},{"title":"Cherry","sidebarTitle":"Cherry","openapi":"api/openapi.json POST /v1/cherry/generate","href":"/api/models/cherry"},{"title":"Grok Video","sidebarTitle":"Grok Video","openapi":"api/openapi.json POST /v1/grok_video/generate","href":"/api/models/grok_video"},{"title":"Kiwi","sidebarTitle":"Kiwi","openapi":"api/openapi.json POST /v1/kiwi/generate","href":"/api/models/kiwi"},{"title":"Lemon","sidebarTitle":"Lemon","openapi":"api/openapi.json POST /v1/lemon/generate","href":"/api/models/lemon"},{"title":"LTX Video","sidebarTitle":"LTX Video","description":"Generate video with LTX Video through the Mage API: the fields of POST /v1/ltx_video/generate, its options by model, the rules it enforces, and its gem price.","openapi":"api/openapi.json POST /v1/ltx_video/generate","href":"/api/models/ltx_video"},{"title":"Magejutsu","sidebarTitle":"Magejutsu","openapi":"api/openapi.json POST /v1/magejutsu/generate","href":"/api/models/magejutsu"},{"title":"Melon","sidebarTitle":"Melon","description":"Generate video with Melon through the Mage API: the fields of POST /v1/melon/generate, its options by model, the rules it enforces, and its gem price.","openapi":"api/openapi.json POST /v1/melon/generate","href":"/api/models/melon"},{"title":"MiniMax-H3","sidebarTitle":"MiniMax-H3","openapi":"api/openapi.json POST /v1/minimax_h3/generate","href":"/api/models/minimax_h3"},{"title":"Plum","sidebarTitle":"Plum","openapi":"api/openapi.json POST /v1/plum/generate","href":"/api/models/plum"},{"title":"Raspberry","sidebarTitle":"Raspberry","openapi":"api/openapi.json POST /v1/raspberry/generate","href":"/api/models/raspberry"},{"title":"Wan Video v2.2","sidebarTitle":"Wan Video v2.2","openapi":"api/openapi.json POST /v1/wan_22/generate","href":"/api/models/wan_22"}]},{"group":"Audio models","pages":[{"title":"Eleven Music","sidebarTitle":"Eleven Music","openapi":"api/openapi.json POST /v1/eleven_music/generate","href":"/api/models/eleven_music"},{"title":"Eleven Speech","sidebarTitle":"Eleven Speech","openapi":"api/openapi.json POST /v1/eleven_speech/generate","href":"/api/models/eleven_speech"},{"title":"Seed Audio","sidebarTitle":"Seed Audio","openapi":"api/openapi.json POST /v1/seed_audio/generate","href":"/api/models/seed_audio"}]}]}]},"basePath":"","title":"Magejutsu - Mage","buildId":"dpl_G9nrg4qeJSZtah1Ziwbc2n6WkLch","deploymentId":"dpl_G9nrg4qeJSZtah1Ziwbc2n6WkLch","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-B7XKH4J3.js","utils-lOYzL7z-.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-DF6jUUIM.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-Dpsj5f7C.js","snippetPresets-CYeiDe8v.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-CUFz1YZ_.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-D8H_iLS4.js","shallow-DdluZBHX.js","getApiPlaygroundDisplay-B9922vev.js","CodeSnippet-CMoRNGYs.js","CodeSnippets-DwyrPHuw.js","Page-DSVu9Ucl.js","getPastedJson-G-zIvlHh.js","icon-B03fnEy0.js","MethodPill-CW7teklc.js","DuplicateIcon-CtO8eekd.js","createIcon-DZTKdM_A.js","DynamicMarkdown-D5M2At0B.js","SectionHeading-C_2NaA2U.js","axios-vUo_bRtp.js","Markdown-D7QRHV3m.js","clsx-D1Z-ELXV.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-lvhuD9Du.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-CKfC4ywL.js"]}