Skip to main content
Demarker

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/upload

Get a presigned URL (15 minutes) to PUT your image to.

free
POST /api/v1/identify

Create a job from the uploadKey and run the free scan. Returns the report, the offers and the price table.

free
POST /api/v1/jobs/{id}/process

Pick QUICK or GPU and debit the credits. A short balance returns 402 and the job stays identified.

per offer
GET /api/v1/jobs/{id}

Status, report, offers and a one-hour URL for the result.

free
GET /api/v1/jobs

List your jobs.

free
DELETE /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.

free
GET /api/v1/balance

Your credit balance.

free
GET /api/v1/pricing

The public price table.

free
GET/POST/DELETE /api/v1/webhooks

Manage webhooks for job.identified, job.refused, job.process_blocked, job.completed and job.failed.

free

Quickstart

curl
# 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