Skip to main content
This guide walks you through creating an Anti-AI protection order — from uploading an image to downloading the protected result.
You can also provide image URLs directly instead of uploading files. See the Create Anti-AI order API for URL mode details.

Prerequisites

  • A BIZ MORI API key (get one here)
  • An image file to protect (jpeg, jpg, png, webp, tiff, or bmp)

Step 1: Create an order

Create an order and receive presigned S3 URLs for uploading your files.
curl -X POST https://api.bizmori.com/api/v2/orders/anti-ai \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "idempotencyKey": "my-first-order-001",
    "files": [{ "fileName": "photo.jpg" }],
    "options": { "strength": "high" }
  }'
Response:
{
  "data": {
    "orderName": "anti_ai_2026-02-19",
    "orderId": "123456789",
    "status": "pending",
    "files": [
      {
        "fileId": 1,
        "fileName": "photo.jpg",
        "uploadUrl": "https://s3.amazonaws.com/...",
        "fileKey": "temp/123456789/0/photo.jpg"
      }
    ]
  }
}

Step 2: Upload files

PUT your file to the presigned uploadUrl from Step 1. This is a direct S3 upload — no Authorization header needed.
cURL
curl -X PUT "https://s3.amazonaws.com/..." \
  -H "Content-Type: image/jpeg" \
  --data-binary @photo.jpg
Presigned URLs expire after 1 hour. If yours has expired, use the Refresh URLs endpoint to generate new ones.

Step 3: Confirm the order

After uploading all files, call confirm to start processing:
curl -X POST https://api.bizmori.com/api/v2/orders/anti-ai/confirm \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"idempotencyKey": "my-confirm-001", "orderId": "123456789"}'

Step 4: Check order status

Poll the order or use webhooks to receive a push notification when processing completes.
curl https://api.bizmori.com/api/v2/orders/123456789 \
  -H "Authorization: Bearer YOUR_API_TOKEN"
Order statuses:
StatusMeaning
pendingWaiting for file upload
inProgressProcessing
completeReady for download
failedProcessing failed

Step 5: Download the result

Once status is complete, fetch the download URL:
curl https://api.bizmori.com/api/v2/orders/123456789/download \
  -H "Authorization: Bearer YOUR_API_TOKEN"
Response:
{
  "data": {
    "downloadUrl": "https://s3.amazonaws.com/...",
    "expiresIn": 3600
  }
}
The downloadUrl is a presigned S3 URL valid for 1 hour. Download the protected file directly from this URL.

Error handling

HTTP StatusMeaningAction
400Invalid requestCheck parameters and file format
401Authentication failedVerify your API key
429Rate limit exceededReduce request frequency or upgrade plan
For the complete error code reference, see Error Codes.

Next steps

Watermark Embed

Embed invisible watermarks into your images.

Watermark Extract

Detect and extract watermarks from images.

AI Detection

Detect AI-generated images with probability scores.

Webhooks

Set up webhooks to get notified when processing completes.