Skip to main content
Two calls, no key. Pick any string as the client id; a new one per image is what the clients do.

1. Submit

Success is {"code":0,"data":{"id":"<task id>", ...}}. The quota wall is also HTTP 200 with code 0: {"code":0,"data":{"wall":true,"reason":"anon_ip_daily"}}. Check data.wall before reading data.id, or the failure surfaces as a missing task id.

2. Poll

Poll every few seconds with the same client id. When data.images[0] is present it is the permanent CDN URL, and data.watermarked[0] says whether a mark was drawn. data.status moves between pending and processing and is not monotonic; only failed or error is terminal, and that means the content filter refused the prompt. A run usually takes 40 to 120 seconds.