One API key works for the REST API, the MCP server and the Agent Skill. Agents create images and videos with your account credits, and failed runs are refunded just like on the web.
curl https://solart.app/api/v1/me \
-H "Authorization: Bearer slr_..."Solart runs a remote MCP server over Streamable HTTP. Add it to your agent once and it knows how to browse models, upload reference images and create images and videos.
https://solart.app/api/mcpSend your API key in the Authorization: Bearer slr_... headerclaude mcp add --transport http solart https://solart.app/api/mcp \
--header "Authorization: Bearer slr_..."Any client that supports Streamable HTTP only needs the MCP URL and the Authorization header above. For stdio-only clients use the mcp-remote bridge as in the Claude Desktop config.
get_accountEmail and credit balancelist_modelsEnabled models, credit prices, supported ratios and resolutionslist_templatesReady-made prompt templatesget_templateVariables a template needsupload_imageStore a reference image from a URL or base64generateCreate an image or video and wait up to 45 seconds for itget_generationStatus and result links, can wait longerlist_generationsRecent creation historyThe skill is a SKILL.md file that teaches agents how to call the Solart API: pick a model, upload images, create and wait for results, handle errors. Use it when your agent can run commands (curl) but you would rather not install MCP.
mkdir -p ~/.claude/skills/solart
curl -fsSL https://solart.app/skill.md -o ~/.claude/skills/solart/SKILL.mdexport SOLART_API_KEY="slr_..."Claude.ai and Claude Desktop: download the zip, then go to Settings > Capabilities > Skills > Upload skill.
Use the base URL below and send the Authorization header with every request. Requests and responses are JSON, result links are absolute URLs.
https://solart.app/api/v1GET/meAccount and credit balanceGET/modelsModels, prices and capabilities (filter with ?type=image|video)GET/templatesTemplate listGET/templates/{slug}Template details and variablesPOST/uploadsUpload a reference image: multipart file, JSON url or base64 dataGET/generationsCreation history, paginate with beforePOST/generationsCreate an image or video. ?wait=55 to wait for the resultGET/generations/{id}Status and result. ?wait=55 to waitDELETE/generations/{id}Move to trashcurl -X POST "https://solart.app/api/v1/generations?wait=55" \
-H "Authorization: Bearer slr_..." \
-H "Content-Type: application/json" \
-d '{
"mode": "custom",
"type": "image",
"prompt": "A girl in a white ao dai by a lotus pond at sunrise",
"params": { "aspectRatio": "3:4" }
}'Create an image from a prompt and wait for it in the same request.
{
"id": "8f0c...",
"type": "image",
"status": "succeeded",
"outputs": [
{
"type": "image",
"url": "https://solart.app/api/files/...",
"downloadUrl": "https://solart.app/api/files/...?download=1"
}
],
"error": null,
"creditCost": 24,
"refunded": false,
"filesExpireAt": "2026-10-13T09:00:00.000Z",
"webUrl": "https://solart.app/generations/8f0c..."
}Without wait the run is returned right away with status queued. Call GET /generations/:id?wait=55 until status is succeeded or failed. Images usually finish in 10 to 60 seconds, videos take a few minutes. Result files are deleted after filesExpireAt, download them if you need to keep them.
Up to 20 creations per minute per account, with the same pending-run limit as on the web.
401Missing, invalid or revoked API key (code invalid_api_key).402Not enough credits, top up on the Pricing page.422Invalid parameters: ratio, resolution or duration not supported by the model, or missing template variables. Read error and details.429Rate limit or pending-run limit reached, wait for the Retry-After header.status failed: the run failed and its credits were refunded (refunded: true).
Agents can discover everything through /llms.txt and openapi.json.