This guide walks you through detecting a watermark in an image — from creating an order to reading the extraction result.
Prerequisites
A BIZ MORI API key (get one here )
A watermarked image file (jpeg, jpg, png, webp, bmp, or tiff) or PDF
Step 1: Create an order
Create a watermark extraction order with your file.
curl -X POST https://api.bizmori.com/api/v2/orders/wtr-extract \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"idempotencyKey": "my-extract-001",
"file": {
"fileName": "watermarked.jpg"
}
}'
Response:
{
"data" : {
"orderName" : "wtr_extract_2026-03-18" ,
"orderId" : "123456789" ,
"file" : {
"fileId" : 1 ,
"fileName" : "watermarked.jpg" ,
"uploadUrl" : "https://s3.amazonaws.com/..." ,
"fileKey" : "123/456/watermarked.jpg"
}
}
}
You can include the original (pre-watermarked) image for more accurate extraction. Set "includeOriginal": true and provide "originalFile": { "fileName": "original.jpg" } in the request. This option is available for images only, not PDFs.
Step 2: Upload the file
PUT your file to the presigned uploadUrl from Step 1. This is a direct S3 upload — no Authorization header needed .
curl -X PUT "https://s3.amazonaws.com/..." \
-H "Content-Type: image/jpeg" \
--data-binary @watermarked.jpg
No confirm step needed. Like Watermark Embed, Watermark Extract processing starts automatically after your file upload completes. Proceed directly to checking the result.
Presigned URLs expire after 1 hour . If yours has expired, use the Refresh URLs endpoint to generate new ones.
Step 3: Check the result
Poll the order or use webhooks to receive a push notification when extraction completes.
curl https://api.bizmori.com/api/v2/orders/123456789 \
-H "Authorization: Bearer YOUR_API_TOKEN"
Response (watermark detected):
{
"data" : {
"type" : "watermarkExtract" ,
"orderId" : "123456789" ,
"status" : "detected" ,
"statusCode" : "detected" ,
"watermarkText" : "MORI_WATERMARK"
}
}
Response (no watermark found):
{
"data" : {
"type" : "watermarkExtract" ,
"orderId" : "123456789" ,
"status" : "undetected" ,
"statusCode" : "undetected" ,
"watermarkText" : null
}
}
Status Meaning detectedWatermark found — check watermarkText for the extracted text undetectedNo watermark detected in the image failedExtraction failed
Error handling
HTTP Status Meaning Action 400Invalid request Check parameters and file format 401Authentication failed Verify your API key 429Rate limit exceeded Reduce request frequency or upgrade plan
For the complete error code reference, see Error Codes .
Next steps
Anti-AI Protect images from AI training and generation.
Watermark Embed Embed invisible watermarks into images.
AI Detection Detect AI-generated images with probability scores.
Webhooks Set up webhooks to get notified when processing completes.