Use the Midjourney API or the hosted MCP server.
clawhub install @acedatacloud/midjourney. Check that the ClawHub publisher is @acedatacloud.Bearer ; a platform-... management token is not a service API key./midjourney/imagine and /midjourney/tasks for the first image. Other actions below need their own routes.ACEDATACLOUD_API_TOKEN=your_api_key_here in ~/.openclaw/.env, then restart the Gateway and start a new session. For a direct terminal test, run export ACEDATACLOUD_API_TOKEN="your_api_key_here" in that shell. Never put the key in a prompt or commit an .env file.Token setup and troubleshooting
Check your current Midjourney pricing and balance in the Ace Data Cloud console before submitting a generation. One imagine request can produce a 2×2 grid. Use async: true so the request returns a task_id promptly:
bash
curl -X POST https://api.acedata.cloud/midjourney/imagine \
-H "Authorization: Bearer $ACEDATACLOUD_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"prompt":"A small red sailboat on a calm lake at sunrise --ar 1:1","mode":"fast","async":true}'
Save the returned task_id. Poll that same ID; do not repeat the imagine call to check progress:
bash
curl -X POST https://api.acedata.cloud/midjourney/tasks \
-H "Authorization: Bearer $ACEDATACLOUD_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"action":"retrieve","id":"TASK_ID_FROM_FIRST_CALL"}'
An accepted task is not a finished image. Only present the final artifact after the retrieved task contains response.success: true and a usable response.image_url or response.raw_image_url. Stop and report the error when the task fails. Keep the task ID when a query or network connection is interrupted; querying the same ID does not submit another generation. See the task API guide.
image_id and an action such as upscale1, variation1, or reroll through POST /midjourney/imagine. These are new billable actions, not task queries.POST /midjourney/edits.POST /midjourney/describe.POST /midjourney/videos. Save its task ID and query the same task.version parameter or prompt flags only for a version documented by the live API. Midjourney V8.1 supports fast and relax, not turbo, and does not accept a quality parameter.The hosted Streamable HTTP server is https://midjourney.mcp.acedata.cloud/mcp. Configure Authorization: Bearer <Ace token> privately in the MCP client. Its named tools include midjourney_imagine, midjourney_edit, midjourney_blend, midjourney_describe, midjourney_generate_video, midjourney_get_task, and midjourney_get_tasks_batch. Use midjourney_get_task with the exact ID returned by a generation tool until the final success or failure is clear. The MCP server source documents the full tool surface.
The server can also run locally from the published mcp-midjourney package. Do not add a substitute model or service if an operation fails.
401: check the token value and expiry. 403: check Midjourney access or content policy. 429: wait for the advised rate-limit interval. A 5xx or transport timeout after task submission is not a reason to create another task; query the saved ID first.