Send the full puzzle background separately from the draggable pieces. Put the pieces in the images array in a known order, and keep that order until you receive the result. Add an instruction if the intended placement is not obvious.
Each task reserves $0.015 from your wallet. Successful tasks cost 1.5 times the provider cost; unused reserved credit is returned. Failed tasks are not charged. Billing details
The result order matches the order of the images array.
A null entry means that piece was not moved. It is not a task failure or a point at (0, 0). Preserve its position in the array.
Keep the background and pieces cropped cleanly so the matching area is visible.
For the complete examples, prepare background.png, piece-1.png, piece-2.png, piece-3.png. You can change these filenames in the code.
Explain how to place the pieces, in up to 1000 characters.
Decoded file limits use 1 KB = 1,000 bytes. The complete JSON payload must fit within 5,000,000 bytes after Base64 encoding.
03 / Result
Understand the result
Creation returns HTTP 201. Fetching the task returns HTTP 200. Both wrap the task in task; always check its status before reading the solution.
Each result entry belongs to the piece at the same array position. A null entry means that piece was not moved. Do not remove null entries before matching answers to pieces, because that would shift all later indexes.
Saved instructions and input metadata. Raw files are not returned.
04 / Integrate
Complete examples
These Node.js and Python scripts prepare the input, create one task and poll until it is ready or failed. They stop waiting after approximately 3 minutes. A client timeout does not cancel the task.
Set SCRAPINGBUDDY_API_KEY in your server environment.
Place the input files beside your script, or update the filenames.
For Node.js, use version 20+ and save as solve.mjs. For Python, install requests and save as solve.py.
Run the script and retain the printed request and task IDs.
cURL shows task creation only. Use the GET example to retrieve its result.
When something goes wrong
Check whether you received an HTTP error or a task with status: failed. Fix validation errors before retrying. For HTTP 429, pause for Retry-After; all requests share the account limit of 60 per minute.
If creation times out, do not automatically submit another task. Keep your request ID and check the existing task or Usage first.