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": "8b3f1d6e-e7a5-424b-b6c9-1e4d5a8c0f26",
"file": {
"fileName": "watermarked.jpg"
}
}'const response = await fetch('https://api.bizmori.com/api/v2/orders/wtr-extract', {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Content-Type': 'application/json'
},
body: JSON.stringify({
idempotencyKey: '8b3f1d6e-e7a5-424b-b6c9-1e4d5a8c0f26',
file: {
fileName: 'watermarked.jpg'
}
})
});
const data = await response.json();import requests
response = requests.post(
'https://api.bizmori.com/api/v2/orders/wtr-extract',
headers={'Authorization': 'Bearer YOUR_API_TOKEN'},
json={
'idempotencyKey': '8b3f1d6e-e7a5-424b-b6c9-1e4d5a8c0f26',
'file': {
'fileName': 'watermarked.jpg'
}
}
)
data = response.json()<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.bizmori.com/api/v2/orders/wtr-extract",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'idempotencyKey' => '8b3f1d6e-e7a5-424b-b6c9-1e4d5a8c0f26',
'file' => [
'fileName' => 'watermarked.jpg'
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.bizmori.com/api/v2/orders/wtr-extract"
payload := strings.NewReader("{\n \"idempotencyKey\": \"8b3f1d6e-e7a5-424b-b6c9-1e4d5a8c0f26\",\n \"file\": {\n \"fileName\": \"watermarked.jpg\"\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.bizmori.com/api/v2/orders/wtr-extract")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"idempotencyKey\": \"8b3f1d6e-e7a5-424b-b6c9-1e4d5a8c0f26\",\n \"file\": {\n \"fileName\": \"watermarked.jpg\"\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.bizmori.com/api/v2/orders/wtr-extract")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"idempotencyKey\": \"8b3f1d6e-e7a5-424b-b6c9-1e4d5a8c0f26\",\n \"file\": {\n \"fileName\": \"watermarked.jpg\"\n }\n}"
response = http.request(request)
puts response.read_body{
"data": {
"orderName": "wtr_extract_2026-02-13",
"orderId": "123456789",
"file": {
"fileId": 1,
"fileName": "watermarked.jpg",
"uploadUrl": "https://s3.amazonaws.com/...",
"fileKey": "123/456/watermarked.jpg",
"fileFormat": "JPG",
"fileType": "IMG",
"role": "watermarked",
"sequence": 1
}
}
}Create watermark extract order
Create a watermark extraction order.
- Only 1 file per order
- Supports image (jpg, jpeg, png, webp, bmp, tiff) or PDF files
- For images,
includeOriginal: trueallows uploading the original file alongside - PDF does not support
includeOriginal
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": "8b3f1d6e-e7a5-424b-b6c9-1e4d5a8c0f26",
"file": {
"fileName": "watermarked.jpg"
}
}'const response = await fetch('https://api.bizmori.com/api/v2/orders/wtr-extract', {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Content-Type': 'application/json'
},
body: JSON.stringify({
idempotencyKey: '8b3f1d6e-e7a5-424b-b6c9-1e4d5a8c0f26',
file: {
fileName: 'watermarked.jpg'
}
})
});
const data = await response.json();import requests
response = requests.post(
'https://api.bizmori.com/api/v2/orders/wtr-extract',
headers={'Authorization': 'Bearer YOUR_API_TOKEN'},
json={
'idempotencyKey': '8b3f1d6e-e7a5-424b-b6c9-1e4d5a8c0f26',
'file': {
'fileName': 'watermarked.jpg'
}
}
)
data = response.json()<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.bizmori.com/api/v2/orders/wtr-extract",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'idempotencyKey' => '8b3f1d6e-e7a5-424b-b6c9-1e4d5a8c0f26',
'file' => [
'fileName' => 'watermarked.jpg'
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.bizmori.com/api/v2/orders/wtr-extract"
payload := strings.NewReader("{\n \"idempotencyKey\": \"8b3f1d6e-e7a5-424b-b6c9-1e4d5a8c0f26\",\n \"file\": {\n \"fileName\": \"watermarked.jpg\"\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.bizmori.com/api/v2/orders/wtr-extract")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"idempotencyKey\": \"8b3f1d6e-e7a5-424b-b6c9-1e4d5a8c0f26\",\n \"file\": {\n \"fileName\": \"watermarked.jpg\"\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.bizmori.com/api/v2/orders/wtr-extract")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"idempotencyKey\": \"8b3f1d6e-e7a5-424b-b6c9-1e4d5a8c0f26\",\n \"file\": {\n \"fileName\": \"watermarked.jpg\"\n }\n}"
response = http.request(request)
puts response.read_body{
"data": {
"orderName": "wtr_extract_2026-02-13",
"orderId": "123456789",
"file": {
"fileId": 1,
"fileName": "watermarked.jpg",
"uploadUrl": "https://s3.amazonaws.com/...",
"fileKey": "123/456/watermarked.jpg",
"fileFormat": "JPG",
"fileType": "IMG",
"role": "watermarked",
"sequence": 1
}
}
}sk_test_ key, upload to the returned BIZ MORI test upload URL. Watermark Extract starts after the upload finishes and uses _detected or _undetected in the file name to select the simulated result.Authorizations
Bearer API key for external client access. Live keys use the sk_ prefix; test keys use the sk_test_ prefix and support order-lifecycle testing with mock responses without processing or credit usage.
Body
Idempotency key
Hide child attributes
Hide child attributes
Watermarked file name (with extension)
"watermarked.jpg"
Include original file (image only)
- true: Upload URL for original file is also issued
- Not available for PDF files
Response
Order created successfully
Hide child attributes
Hide child attributes
Order name (auto-generated)
Order ID
Watermark extract order file info
Hide child attributes
Hide child attributes
File ID
File name
Upload URL. Live keys receive an S3 presigned URL; test keys receive an absolute https://api.bizmori.com/api/v2/test-uploads/{signedToken} URL. Both expire after one hour and can be renewed with POST /api/v2/orders/{orderId}/refresh-urls. PUT needs no Authorization header because the signed token authorizes the test upload. Test request bodies are streamed, not stored; test orders move to simulated results without usage consumption or actual external processing.
File identifier: an S3 object key for live keys or an isolated logical key for test keys.
File format
"JPG"
File type (image or PDF)
IMG, DOCUMENT File role (always "watermarked" for the main file)
watermarked File sequence number (always 1)
1
Original file info (only when includeOriginal is true)
Hide child attributes
Hide child attributes
File ID
File name
Upload URL. Live keys receive an S3 presigned URL; test keys receive an absolute https://api.bizmori.com/api/v2/test-uploads/{signedToken} URL. Both expire after one hour and can be renewed with POST /api/v2/orders/{orderId}/refresh-urls. PUT needs no Authorization header because the signed token authorizes the test upload. Test request bodies are streamed, not stored; test orders move to simulated results without usage consumption or actual external processing.
File identifier: an S3 object key for live keys or an isolated logical key for test keys.
File format
File type (image only)
IMG File role (always "original")
original File sequence number (always 1)
1