{
"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."
}
}
Image models
GPT Image 2
Generate images with GPT Image 2 through the Mage API: the fields of POST /v1/gpt_image_2/generate, its options by model, the rules it enforces, and its gem price.
POST
/
v1
/
gpt_image_2
/
generate
cURL
curl --request POST \ --url https://api.mage.space/v1/gpt_image_2/generate \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --data '{ "prompt": "Editorial portrait in soft daylight, 35mm film look", "aspect_ratio": "4:5"}'
import Mage from '@mage-space/sdk';
const mage = new Mage(); // reads MAGE_API_KEY
const request = await mage.run('gpt_image_2', {
prompt: 'Editorial portrait in soft daylight, 35mm film look',
aspect_ratio: '4:5',
});
console.log(request.result.url);
from mage_space import Mage
mage = Mage() # reads MAGE_API_KEY
request = mage.run("gpt_image_2", {
"prompt": "Editorial portrait in soft daylight, 35mm film look",
"aspect_ratio": "4:5",
})
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."
}
}
OpenAI’s GPT Image 2, GPT Image 2.5 Flare, and GPT Image 2.5 Sunburst, for generation and edits. OpenAI’s safety filter applies.
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
15 images, characters, and references per request
References
All models
15 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.
Each model offers some quality levels only; a level the chosen model does not offer is refused.
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":"6ae6177a3aae848cfc96f715","collectionId":"7cce8119-0f0e-476e-8d96-988ff894b41b","liveDeploymentHistoryId":"6ae6177a3aae848cfc96f715","schemaVersion":"v3"},"entitlements":{"AI_CHAT":{"status":"DISABLED"},"WEB_MCP":{"status":"DISABLED"},"NARRATION":{"status":"DISABLED"}},"buildId":"6ae6177a3aae848cfc96f715","clientVersion":"0.0.4044","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},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"api/models/gpt_image_2","slug":"/api/models/gpt_image_2","pageMetadata":{"title":"GPT Image 2","sidebarTitle":"GPT Image 2","description":"Generate images with GPT Image 2 through the Mage API: the fields of POST /v1/gpt_image_2/generate, its options by model, the rules it enforces, and its gem price.","openapi":"api/openapi.json POST /v1/gpt_image_2/generate","href":"/api/models/gpt_image_2"},"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 images with GPT Image 2 through the Mage API: the fields of POST /v1/gpt_image_2/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:`OpenAI’s GPT Image 2, GPT Image 2.5 Flare, and GPT Image 2.5 Sunburst, for generation and edits. OpenAI’s safety filter applies.`}),`\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:`Image`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Models`}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`gpt-image-2`}),` (GPT Image 2, default), `,_jsx(_components.code,{children:`gpt-image-2.5-flare`}),` (GPT Image 2.5 Flare), `,_jsx(_components.code,{children:`gpt-image-2.5-sunburst`}),` (GPT Image 2.5 Sunburst)`]})]}),_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`}),_jsx(_components.td,{children:`None`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Gems`}),_jsx(_components.td,{children:`9 at the default settings`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Model page`}),_jsx(_components.td,{children:_jsx(_components.a,{href:`/models/gpt-image-2`,children:`GPT Image 2`})})]})]})]}),`\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:`15 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:`15 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:[`Each model offers some `,_jsx(_components.code,{children:`quality`}),` levels only; a level the chosen model does not offer is refused.`]}),`\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":"GPT Image 2","sidebarTitle":"GPT Image 2","description":"Generate images with GPT Image 2 through the Mage API: the fields of POST /v1/gpt_image_2/generate, its options by model, the rules it enforces, and its gem price.","openapi":"api/openapi.json POST /v1/gpt_image_2/generate","href":"/api/models/gpt_image_2"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Mentions","slug":"mentions","depth":2,"children":[]},{"title":"Rules","slug":"rules","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"operationId":"generate_gpt_image_2","summary":"GPT Image 2","description":"Generate images with GPT Image 2 through the Mage API: the fields of POST /v1/gpt_image_2/generate, its options by model, the rules it enforces, and its gem price.","tags":["Image models"],"parameters":["32097265-03ca-413c-95de-473254247955"],"requestBody":"e1ae23a2-105f-4320-b0dd-2285039a1498","responses":{"202":"90ac615a-f99e-4a4c-b513-f29bf67f6bac","400":"e7b129dc-3e44-4a79-9e6f-5683b4f9f029","401":"243021e6-84c1-4a8b-b897-8e4974f7e7b4","402":"a4f29605-7271-4044-a120-72f416f86bc4","403":"7523a243-ab71-49d2-81d2-afdddf1a88cf","410":"556c6b55-c26e-4f4a-b97a-09ff3c4b5117","429":"5a3488ef-0708-49c2-8f2b-e049f403a2dd","451":"1979ac44-28a8-41c3-aad1-4bae48496b4e","500":"aaa79cfc-7926-434f-91cc-e19706b1b5ce"},"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('gpt_image_2', {\n prompt: 'Editorial portrait in soft daylight, 35mm film look',\n aspect_ratio: '4:5',\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(\"gpt_image_2\", {\n \"prompt\": \"Editorial portrait in soft daylight, 35mm film look\",\n \"aspect_ratio\": \"4:5\",\n})\n\nprint(request[\"result\"][\"url\"])"}],"method":"post","type":"path","servers":["e5ff5bd1-5582-414a-ae5b-03de4e310ca9"],"security":["a5188668-a3c5-4df7-ac0e-0b1363dda753"],"path":"/v1/gpt_image_2/generate","baseUrlOptions":["https://api.mage.space"],"title":"GPT Image 2","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('gpt_image_2', {\n prompt: 'Editorial portrait in soft daylight, 35mm film look',\n aspect_ratio: '4:5',\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(\"gpt_image_2\", {\n \"prompt\": \"Editorial portrait in soft daylight, 35mm film look\",\n \"aspect_ratio\": \"4:5\",\n})\n\nprint(request[\"result\"][\"url\"])"}],"requestExampleLanguages":["bash","typescript","python","javascript"],"requiredOnlyExamples":false,"requestExampleType":"codeSamples","responseExampleType":"generated"},"dependencies":{"parameters":{"32097265-03ca-413c-95de-473254247955":{"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 GPT Image 2.","content":{"application/json":{"schema":{"type":"object","properties":{"prompt":{"type":"string","minLength":1,"description":"The text prompt.","isRequired":true,"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":["gpt-image-2","gpt-image-2.5-flare","gpt-image-2.5-sunburst"],"description":"The model variant to generate with.","default":"gpt-image-2","uniqueKey":"model_id","typeLabel":"enum\u003cstring>"},"aspect_ratio":{"type":"string","enum":["21:9","16:9","3:2","5:4","1:1","4:5","2:3","9:16","9:21"],"description":"Aspect ratio as `W:H`.","default":"4:5","uniqueKey":"aspect_ratio","typeLabel":"enum\u003cstring>"},"resolution":{"type":"string","enum":["1K","2K"],"description":"Output resolution token.","default":"1K","uniqueKey":"resolution","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)[]"},"quality":{"type":"string","default":"low","uniqueKey":"quality","typeLabel":"string"}},"required":["prompt"],"additionalProperties":true,"uniqueKey":"","typeLabel":"object"},"example":{"prompt":"Editorial portrait in soft daylight, 35mm film look","aspect_ratio":"4:5"},"examples":{"Example":{"title":"Example","value":{"prompt":"Editorial portrait in soft daylight, 35mm film look","aspect_ratio":"4:5"}}},"exampleType":"examples"}},"exampleType":"examples"},"responses":{"90ac615a-f99e-4a4c-b513-f29bf67f6bac":{"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":"gpt_image_2","model_id":"gpt-image-2","created_at":"2026-09-17T14:52:48.000Z","updated_at":"2026-09-17T14:52:49.000Z","billing":{"mode":"gems","gems_charged":9},"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":"gpt_image_2","model_id":"gpt-image-2","created_at":"2026-09-17T14:52:48.000Z","updated_at":"2026-09-17T14:52:49.000Z","billing":{"mode":"gems","gems_charged":9},"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"},"e7b129dc-3e44-4a79-9e6f-5683b4f9f029":{"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"},"243021e6-84c1-4a8b-b897-8e4974f7e7b4":{"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"},"a4f29605-7271-4044-a120-72f416f86bc4":{"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"},"7523a243-ab71-49d2-81d2-afdddf1a88cf":{"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"},"556c6b55-c26e-4f4a-b97a-09ff3c4b5117":{"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"},"5a3488ef-0708-49c2-8f2b-e049f403a2dd":{"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"},"1979ac44-28a8-41c3-aad1-4bae48496b4e":{"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"},"aaa79cfc-7926-434f-91cc-e19706b1b5ce":{"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":{"a5188668-a3c5-4df7-ac0e-0b1363dda753":{"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":{"e5ff5bd1-5582-414a-ae5b-03de4e310ca9":{"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":"GPT Image 2 - Mage","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-09-22T20:35:16.265Z","gitLastModified":"2026-09-23T01:20:57.000Z","originalFileLocation":"api/models/gpt_image_2.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 images with GPT Image 2 through the Mage API: the fields of POST /v1/gpt_image_2/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=\"GPT Image 2 - Mage\">\u003cmeta data-mint-head property=\"og:description\" content=\"Generate images with GPT Image 2 through the Mage API: the fields of POST /v1/gpt_image_2/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/gpt_image_2\">\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=Image+models\u0026amp;title=GPT+Image+2\u0026amp;description=Generate+images+with+GPT+Image+2+through+the+Mage+API%3A+the+fields+of+POST+%2Fv1%2Fgpt_image_2%2Fgenerate%2C+its+options+by+model%2C+the+rules+it+enforces%2C+and+its+gem+pri\u0026amp;theme=15e3959de07cfae439e998da\u0026amp;signature=54a88bb55aeb65acbc8dc4c35157678fea53a07e1c3257b52ae49aabf4d2ac37\">\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=\"GPT Image 2 - Mage\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Generate images with GPT Image 2 through the Mage API: the fields of POST /v1/gpt_image_2/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=Image+models\u0026amp;title=GPT+Image+2\u0026amp;description=Generate+images+with+GPT+Image+2+through+the+Mage+API%3A+the+fields+of+POST+%2Fv1%2Fgpt_image_2%2Fgenerate%2C+its+options+by+model%2C+the+rules+it+enforces%2C+and+its+gem+pri\u0026amp;theme=15e3959de07cfae439e998da\u0026amp;signature=54a88bb55aeb65acbc8dc4c35157678fea53a07e1c3257b52ae49aabf4d2ac37\">\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/gpt_image_2\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api/models/gpt_image_2.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/gpt_image_2#webpage\",\"url\":\"https://docs.mage.space/api/models/gpt_image_2\",\"name\":\"GPT Image 2\",\"description\":\"Generate images with GPT Image 2 through the Mage API: the fields of POST /v1/gpt_image_2/generate, its options by model, the rules it enforces, and its gem price.\",\"dateModified\":\"2026-09-23T01:20:57.000Z\",\"isPartOf\":{\"@id\":\"https://docs.mage.space#website\"},\"breadcrumb\":{\"@id\":\"https://docs.mage.space/api/models/gpt_image_2#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.mage.space/api/models/gpt_image_2#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Image models\",\"item\":\"https://docs.mage.space/api/models/anima\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"GPT Image 2\",\"item\":\"https://docs.mage.space/api/models/gpt_image_2\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.mage.space/api/models/gpt_image_2#apireference\",\"headline\":\"GPT Image 2\",\"name\":\"GPT Image 2\",\"description\":\"Generate images with GPT Image 2 through the Mage API: the fields of POST /v1/gpt_image_2/generate, its options by model, the rules it enforces, and its gem price.\",\"url\":\"https://docs.mage.space/api/models/gpt_image_2\",\"mainEntityOfPage\":{\"@id\":\"https://docs.mage.space/api/models/gpt_image_2#webpage\"},\"dateModified\":\"2026-09-23T01:20:57.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","description":"Generate images with Flux 2 through the Mage API: the fields of POST /v1/flux2/generate, its options by model, the rules it enforces, and its gem price.","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","description":"Generate images with Grok Image through the Mage API: the fields of POST /v1/grok_image/generate, its options by model, the rules it enforces, and its gem price.","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","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","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":"GPT Image 2 - Mage","buildId":"dpl_DeHjVRGfFnhYQwHnfC2pjeXXv8h9","deploymentId":"dpl_DeHjVRGfFnhYQwHnfC2pjeXXv8h9","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-CS552b7R.js","utils-DDTCYAF2.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-De8ttokP.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-DrwRDvAh.js","snippetPresets-DtAN0nWx.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-D5rWArI6.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-O2i12wsz.js","shallow-DV8xABTt.js","getApiPlaygroundDisplay-DBZ0B5Jx.js","CodeSnippet-BVi0tPUX.js","CodeSnippets-CqASbIwY.js","Page-m07pfKpT.js","getPastedJson-DG9vsMS8.js","icon-CXzRSCr8.js","MethodPill-BdKVtEuX.js","DuplicateIcon-CZlmBrJI.js","createIcon-biFEUKPL.js","DynamicMarkdown-B54_zNBF.js","SectionHeading-DwwHK3Pt.js","axios-vUo_bRtp.js","Markdown-DfhCTwyA.js","clsx-xpJZXxdP.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-BTZUMDnx.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-DqdKa2R4.js"]}