API
Upload, scan for free, process and download. The full reference is the OpenAPI spec and every error code is listed at /api/v1/errors. Longer guides are coming.
Endpoints
POST /api/v1/uploadGet a presigned URL (15 minutes) to PUT your image to.
freePOST /api/v1/identifyCreate a job from the uploadKey and run the free scan. Returns the report, the offers and the price table.
freePOST /api/v1/jobs/{id}/processPick QUICK or GPU and debit the credits. A short balance returns 402 and the job stays identified.
per offerGET /api/v1/jobs/{id}Status, report, offers and a one-hour URL for the result.
freeGET /api/v1/jobsList your jobs.
freeDELETE /api/v1/jobs/{id}Delete the original and the result now (except material held under Privacy Policy section 8). Credits are refunded while the job is still queued.
freeGET /api/v1/balanceYour credit balance.
freeGET /api/v1/pricingThe public price table.
freeGET/POST/DELETE /api/v1/webhooksManage webhooks for job.identified, job.refused, job.process_blocked, job.completed and job.failed.
freeQuickstart
# 1. Get an upload URL
curl -X POST https://YOUR_HOST/api/v1/upload \
-H "Authorization: Bearer sk_live_xxx" \
-H "Content-Type: application/json" \
-d '{"filename": "image.png"}'
# 2. PUT the file to the returned uploadUrl (send the returned contentType)
# 3. Scan it, free
curl -X POST https://YOUR_HOST/api/v1/identify \
-H "Authorization: Bearer sk_live_xxx" \
-H "Content-Type: application/json" \
-d '{"uploadKey": "uploads/api_.../input.png"}'
# 4. Process
# rightsAttested must reflect a real confirmation by the person who owns or may
# edit the image. See the Terms, section 12.
curl -X POST https://YOUR_HOST/api/v1/jobs/JOB_ID/process \
-H "Authorization: Bearer sk_live_xxx" \
-H "Content-Type: application/json" \
-d '{"tier": "QUICK", "rightsAttested": true}'Rules
- Authenticate with a Bearer sk_live_ key. 60 requests a minute per key.
- One credit is one Quick clean with output up to 12 MP. Prices come back with every identify.
- API cleans use credits and get no free daily Quick cleans.
- Every process call needs rightsAttested: true, and it must reflect a real confirmation by the person who owns or may edit the image. Setting it automatically, without that confirmation, breaches the Terms.
- Images over 25 MP can be scanned but not processed.
- Hidden-watermark removal is best effort and cannot be verified from the file.
- Output may still need a label or disclosure where it is published (EU AI Act Article 50, China, India and the places you publish). You are responsible for it.
- Not available in sanctioned jurisdictions or mainland China (451). In India the API is also blocked, and only the free scan on the website is offered.