cURL
curl -X POST https://api.bizmori.com/api/v2/orders/wtr-embed \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"idempotencyKey": "key-embed-001",
"files": [
{
"fileName": "image.jpg",
"watermarks": [{"text": "MORI_WATERMARK"}]
}
]
}'const response = await fetch('https://api.bizmori.com/api/v2/orders/wtr-embed', {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Content-Type': 'application/json'
},
body: JSON.stringify({
idempotencyKey: 'key-embed-001',
files: [
{
fileName: 'image.jpg',
watermarks: [{ text: 'MORI_WATERMARK' }]
}
]
})
});
const data = await response.json();import requests
response = requests.post(
'https://api.bizmori.com/api/v2/orders/wtr-embed',
headers={'Authorization': 'Bearer YOUR_API_TOKEN'},
json={
'idempotencyKey': 'key-embed-001',
'files': [
{
'fileName': 'image.jpg',
'watermarks': [{'text': 'MORI_WATERMARK'}]
}
]
}
)
data = response.json()<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.bizmori.com/api/v2/orders/wtr-embed",
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' => 'key-embed-001',
'files' => [
[
'fileName' => 'image1.jpg',
'watermarks' => [
[
'text' => 'MORI_WATERMARK'
]
]
],
[
'fileName' => 'image2.png',
'watermarks' => [
[
'text' => 'MORI_WATERMARK'
]
]
]
]
]),
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-embed"
payload := strings.NewReader("{\n \"idempotencyKey\": \"key-embed-001\",\n \"files\": [\n {\n \"fileName\": \"image1.jpg\",\n \"watermarks\": [\n {\n \"text\": \"MORI_WATERMARK\"\n }\n ]\n },\n {\n \"fileName\": \"image2.png\",\n \"watermarks\": [\n {\n \"text\": \"MORI_WATERMARK\"\n }\n ]\n }\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-embed")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"idempotencyKey\": \"key-embed-001\",\n \"files\": [\n {\n \"fileName\": \"image1.jpg\",\n \"watermarks\": [\n {\n \"text\": \"MORI_WATERMARK\"\n }\n ]\n },\n {\n \"fileName\": \"image2.png\",\n \"watermarks\": [\n {\n \"text\": \"MORI_WATERMARK\"\n }\n ]\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.bizmori.com/api/v2/orders/wtr-embed")
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\": \"key-embed-001\",\n \"files\": [\n {\n \"fileName\": \"image1.jpg\",\n \"watermarks\": [\n {\n \"text\": \"MORI_WATERMARK\"\n }\n ]\n },\n {\n \"fileName\": \"image2.png\",\n \"watermarks\": [\n {\n \"text\": \"MORI_WATERMARK\"\n }\n ]\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"data": {
"orderName": "wtr_embed_20260318120000.000",
"orderId": "424706541233094656",
"status": "pending",
"files": [
{
"fileId": 2469,
"fileName": "image.jpg",
"uploadUrl": "https://s3.ap-northeast-2.amazonaws.com/...?X-Amz-Algorithm=AWS4-HMAC-SHA256&...",
"fileKey": "wtr-embed/424706541233094656/images/1/image.jpg",
"fileFormat": "JPG",
"fileType": "IMG"
},
{
"fileId": 2470,
"fileName": "document.pdf",
"uploadUrl": "https://s3.ap-northeast-2.amazonaws.com/...?X-Amz-Algorithm=AWS4-HMAC-SHA256&...",
"fileKey": "wtr-embed/424706541233094656/documents/2/document.pdf",
"fileFormat": "PDF",
"fileType": "DOCUMENT"
}
]
}
}Watermark Embed
Create watermark embed order
Create a watermark embedding order.
- Up to 10 watermark texts per image
- Up to 100 files per order
- Supported image formats (IMG): jpg, jpeg, png, webp, bmp, tiff
- Supported document formats (DOCUMENT): pdf
Input Modes (Upload / URL / Mixed)
The input mode is determined by the presence of originalFileUrl in each file object:
- Upload mode (no
originalFileUrl): Presigned URL issued → Client uploads to S3 → Processing starts automatically - URL mode (
originalFileUrlprovided): Image downloaded from the URL and processed immediately - Mixed mode: Some files in Upload mode, others in URL mode simultaneously
Behavior
| Condition | Order Status | Confirm Required |
|---|---|---|
All files have originalFileUrl | pending | No (auto-starts after server downloads) |
Any file without originalFileUrl | pending | No (auto-starts after upload) |
Unlike Anti-AI and AI Detection, Watermark Embed does not require a separate confirm step. Processing starts automatically after file upload completes.
POST
/
api
/
v2
/
orders
/
wtr-embed
cURL
curl -X POST https://api.bizmori.com/api/v2/orders/wtr-embed \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"idempotencyKey": "key-embed-001",
"files": [
{
"fileName": "image.jpg",
"watermarks": [{"text": "MORI_WATERMARK"}]
}
]
}'const response = await fetch('https://api.bizmori.com/api/v2/orders/wtr-embed', {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Content-Type': 'application/json'
},
body: JSON.stringify({
idempotencyKey: 'key-embed-001',
files: [
{
fileName: 'image.jpg',
watermarks: [{ text: 'MORI_WATERMARK' }]
}
]
})
});
const data = await response.json();import requests
response = requests.post(
'https://api.bizmori.com/api/v2/orders/wtr-embed',
headers={'Authorization': 'Bearer YOUR_API_TOKEN'},
json={
'idempotencyKey': 'key-embed-001',
'files': [
{
'fileName': 'image.jpg',
'watermarks': [{'text': 'MORI_WATERMARK'}]
}
]
}
)
data = response.json()<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.bizmori.com/api/v2/orders/wtr-embed",
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' => 'key-embed-001',
'files' => [
[
'fileName' => 'image1.jpg',
'watermarks' => [
[
'text' => 'MORI_WATERMARK'
]
]
],
[
'fileName' => 'image2.png',
'watermarks' => [
[
'text' => 'MORI_WATERMARK'
]
]
]
]
]),
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-embed"
payload := strings.NewReader("{\n \"idempotencyKey\": \"key-embed-001\",\n \"files\": [\n {\n \"fileName\": \"image1.jpg\",\n \"watermarks\": [\n {\n \"text\": \"MORI_WATERMARK\"\n }\n ]\n },\n {\n \"fileName\": \"image2.png\",\n \"watermarks\": [\n {\n \"text\": \"MORI_WATERMARK\"\n }\n ]\n }\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-embed")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"idempotencyKey\": \"key-embed-001\",\n \"files\": [\n {\n \"fileName\": \"image1.jpg\",\n \"watermarks\": [\n {\n \"text\": \"MORI_WATERMARK\"\n }\n ]\n },\n {\n \"fileName\": \"image2.png\",\n \"watermarks\": [\n {\n \"text\": \"MORI_WATERMARK\"\n }\n ]\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.bizmori.com/api/v2/orders/wtr-embed")
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\": \"key-embed-001\",\n \"files\": [\n {\n \"fileName\": \"image1.jpg\",\n \"watermarks\": [\n {\n \"text\": \"MORI_WATERMARK\"\n }\n ]\n },\n {\n \"fileName\": \"image2.png\",\n \"watermarks\": [\n {\n \"text\": \"MORI_WATERMARK\"\n }\n ]\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"data": {
"orderName": "wtr_embed_20260318120000.000",
"orderId": "424706541233094656",
"status": "pending",
"files": [
{
"fileId": 2469,
"fileName": "image.jpg",
"uploadUrl": "https://s3.ap-northeast-2.amazonaws.com/...?X-Amz-Algorithm=AWS4-HMAC-SHA256&...",
"fileKey": "wtr-embed/424706541233094656/images/1/image.jpg",
"fileFormat": "JPG",
"fileType": "IMG"
},
{
"fileId": 2470,
"fileName": "document.pdf",
"uploadUrl": "https://s3.ap-northeast-2.amazonaws.com/...?X-Amz-Algorithm=AWS4-HMAC-SHA256&...",
"fileKey": "wtr-embed/424706541233094656/documents/2/document.pdf",
"fileFormat": "PDF",
"fileType": "DOCUMENT"
}
]
}
}Download order results
Once your order reachescomplete status, use the Get download URL endpoint to retrieve a presigned download URL:
curl -X GET https://api.bizmori.com/api/v2/orders/{orderId}/download \
-H "Authorization: Bearer YOUR_API_TOKEN"
Order files are available for download for up to 7 days after order creation. After 7 days, the order transitions to
expired status and files can no longer be downloaded.Authorizations
API Key for external client access
Body
application/json
Idempotency key
Required array length:
1 - 100 elementsHide child attributes
Hide child attributes
File name
Example:
"image.jpg"
Original image URL (optional)
- Provided: URL mode (no presigned URL issued, immediate processing)
- Not provided: Upload mode (presigned URL issued)
Example:
"https://example.com/image.jpg"
Response
Order created successfully
Hide child attributes
Hide child attributes
Order status
pending: Always returned regardless of input mode
Available options:
pending Hide child attributes
Hide child attributes
Presigned upload URL. Returned in upload mode only.
Public image URL provided in the request. Returned in URL mode only.
S3 object key for the file.
File format.
Available options:
JPG, PNG, WEBP, BMP, TIFF, PDF File type category.
Available options:
IMG, DOCUMENT ⌘I