Create an order that checks one file for an invisible watermark.
Submit the original file together with the file to inspect on every request
Image originals accept jpg, jpeg, png, webp, bmp, tif, or tiff files to inspect. PDF originals accept PDF, PNG, or JPEG files to inspect
BMP and TIFF files follow the same limits as watermark embed. A file that cannot be processed finishes as complete with detectionStatusunsupported, not failed, and the credit is refunded
The response files[] contains two entries: files[0] is the original and files[1] is the file to inspect. Upload each with PUT to its uploadUrl
Processing starts automatically when both files are uploaded. Each order uses 1 credit, and unsupported or error results are refunded
v3 watermark extract cannot detect watermarks embedded with v2. Switching from the v2 endpoint does not make existing v2-watermarked images detectable.
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.
Idempotency key. Use a new UUIDv4 for each new order and reuse it only when retrying the same request. The same key returns the existing order; the same key with a different request body returns 409 WATERMARK_V2_CONFLICT.
Invisible watermark order created with the v3 API, as returned by the order creation endpoints. Use GET /api/v3/orders/{orderId} for the order detail, which has a different shape
Presigned PUT URL for uploading the file, valid for 900 seconds. Issued only while the order status is pending, the retention period has not ended, and the file is waiting for upload.
It is null for files given by originalFileUrl, files already uploaded, orders that became failed after the 12-hour upload window, and expired orders.
Identifier of the output within the order in {inputFileId}-{ordinal} format. Used only in the order creation response. result.outputFiles[].fileId of the order detail and files[].fileId of the download response are numeric strings and differ from this value
Embedded text of the detected watermark. Returned only when detectionStatus is detected, your account embedded the watermark, and exactly one issuance record matches.
Otherwise null, for example when another account embedded the watermark.
When the order files are deleted. Downloads and reports return ORDER_EXPIRED afterwards
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"ContentCare API Documentation","colors":{"primary":"#6366F1","light":"#818CF8","dark":"#4F46E5"},"logo":{"light":"https://mintcdn.com/mori-7d8a16e6/uiCwTpjPPKH9gjDZ/logo/light.svg?fit=max\u0026auto=format\u0026n=uiCwTpjPPKH9gjDZ\u0026q=85\u0026s=cd317193218c94284b35aa84c52b5d17","dark":"https://mintcdn.com/mori-7d8a16e6/uiCwTpjPPKH9gjDZ/logo/dark.svg?fit=max\u0026auto=format\u0026n=uiCwTpjPPKH9gjDZ\u0026q=85\u0026s=3ca4613110f4781acc20a8f41010eb25"},"favicon":"https://mintcdn.com/mori-7d8a16e6/cf99juWefDk4kbc7/favicon.svg?fit=max\u0026auto=format\u0026n=cf99juWefDk4kbc7\u0026q=85\u0026s=435a67276a065858333792f3481060d7","api":{"openapi":["api-reference/openapi.yaml","ko/api-reference/openapi.yaml","ja/api-reference/openapi.yaml"],"params":{"expanded":"all"}},"navbar":{"links":[{"href":"mailto:support@contentcare.ai","label":"Support"}],"primary":{"type":"button","label":"Dashboard","href":"https://app.contentcare.ai"}},"footer":{"socials":{"website":"https://app.contentcare.ai"},"links":[{"items":[{"label":"Dashboard","href":"https://app.contentcare.ai"},{"label":"MORI Corp.","href":"https://www.mori-corp.io"},{"label":"Contact Support","href":"mailto:support@contentcare.ai"},{"label":"Status","href":"https://status.bizmori.com"}]},{"items":[{"label":"Guides","href":"/index"},{"label":"API Reference","href":"/api-reference/introduction"},{"label":"Error Codes","href":"/errors"},{"label":"Webhooks","href":"/webhooks"},{"label":"What's new","href":"/changelog"}]},{"items":[{"label":"Terms of Service","href":"/legal/terms"},{"label":"Privacy Policy","href":"/legal/privacy"},{"label":"DPA","href":"/legal/dpa"},{"label":"Acceptable Use","href":"/legal/aup"},{"label":"Sub-processors","href":"/legal/sub-processors"}]}]},"styling":{"latex":false},"navigation":{"global":{"anchors":[{"anchor":"ContentCare Dashboard","icon":"code","href":"https://app.contentcare.ai"},{"anchor":"Support","icon":"envelope","href":"mailto:support@contentcare.ai"},{"anchor":"Status","icon":"signal-bars","href":"https://status.bizmori.com"}]},"languages":[{"language":"en","href":""},{"language":"ko","href":"ko"},{"language":"ja","href":"ja"}]}},"deployment":{"deploymentMetadataValue":{"subdomain":"mori-7d8a16e6","hasAudioNarration":false,"actualSubdomain":"mori-7d8a16e6","customDomains":["docs.contentcare.ai"],"gitSource":{"type":"github","owner":"moriproject","repo":"docs","deployBranch":"main","contentDirectory":"","isPrivate":false,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6adf20b6ebccf90c95aed79e","collectionId":"baf5a4e1-d8a9-48a9-8286-f39968aeca3c","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6adf20b6ebccf90c95aed79e"},"entitlements":{},"buildId":"6adf20b6ebccf90c95aed79e","clientVersion":"0.0.3966","searchFilterCounts":[{"language":"en","tag":"API Reference","count":27},{"language":"ja","tag":"API リファレンス","count":27},{"language":"ko","tag":"API 레퍼런스","count":27},{"language":"en","tag":"Guides","count":14},{"language":"ja","tag":"ガイド","count":14},{"language":"ko","tag":"가이드","count":14},{"language":"en","tag":"Webhooks","count":8},{"language":"en","tag":"Getting Started","count":8},{"language":"ja","tag":"Webhooks","count":8},{"language":"ja","tag":"はじめに","count":8},{"language":"ko","tag":"Webhooks","count":8},{"language":"ko","tag":"시작하기","count":8},{"language":"en","tag":"Orders","count":7},{"language":"ja","tag":"Orders","count":7},{"language":"ko","tag":"Orders","count":7},{"language":"en","tag":"Legal","count":6},{"language":"ja","tag":"法的事項","count":6},{"language":"ko","tag":"법적 고지","count":6},{"language":"en","tag":"Anti-AI","count":3},{"language":"ja","tag":"Anti-AI","count":3},{"language":"ko","tag":"Anti-AI","count":3},{"language":"en","tag":"AI Detection","count":2},{"language":"en","tag":"Reports","count":2},{"language":"en","tag":"Watermark Embed","count":2},{"language":"ja","tag":"AI Detection","count":2},{"language":"ja","tag":"レポート","count":2},{"language":"ja","tag":"Watermark-Embed","count":2},{"language":"ko","tag":"AI Detection","count":2},{"language":"ko","tag":"보고서","count":2},{"language":"ko","tag":"Watermark-Embed","count":2}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableAskAiSearchBar":true},"hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-v7-file-tree","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"pause-universal-search-reconcile","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"per-site-search-delta","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-private-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-nav-generations","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-agent-model-picker","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"isAtlas":false,"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"api-reference/watermark-extract/create-order-v3","slug":"/api-reference/watermark-extract/create-order-v3","pageMetadata":{"tag":"v3","title":"Create watermark extract order","openapi":"api-reference/openapi.yaml POST /api/v3/orders/wtr-extract","description":"Create an order that checks one file for an invisible watermark.\n\n- Submit the original file together with the file to inspect on every request\n- Image originals accept `jpg`, `jpeg`, `png`, `webp`, `bmp`, `tif`, or `tiff` files to inspect. PDF originals accept PDF, PNG, or JPEG files to inspect\n- BMP and TIFF files follow the same limits as watermark embed. A file that cannot be processed finishes as `complete` with `detectionStatus` `unsupported`, not `failed`, and the credit is refunded\n- The response `files[]` contains two entries: `files[0]` is the original and `files[1]` is the file to inspect. Upload each with `PUT` to its `uploadUrl`\n- Processing starts automatically when both files are uploaded. Each order uses 1 credit, and `unsupported` or `error` results are refunded\n- Read the outcome from `result` in [`GET /api/v3/orders/{orderId}`](/api-reference/orders/get-order-v3)\n","href":"/api-reference/watermark-extract/create-order-v3"},"description":{"compiledSource":"\"use strict\";\nconst {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n a: \"a\",\n code: \"code\",\n li: \"li\",\n p: \"p\",\n ul: \"ul\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsx(_components.p, {\n children: \"Create an order that checks one file for an invisible watermark.\"\n }), \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsx(_components.li, {\n children: \"Submit the original file together with the file to inspect on every request\"\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"Image originals accept \", _jsx(_components.code, {\n children: \"jpg\"\n }), \", \", _jsx(_components.code, {\n children: \"jpeg\"\n }), \", \", _jsx(_components.code, {\n children: \"png\"\n }), \", \", _jsx(_components.code, {\n children: \"webp\"\n }), \", \", _jsx(_components.code, {\n children: \"bmp\"\n }), \", \", _jsx(_components.code, {\n children: \"tif\"\n }), \", or \", _jsx(_components.code, {\n children: \"tiff\"\n }), \" files to inspect. PDF originals accept PDF, PNG, or JPEG files to inspect\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"BMP and TIFF files follow the same limits as watermark embed. A file that cannot be processed finishes as \", _jsx(_components.code, {\n children: \"complete\"\n }), \" with \", _jsx(_components.code, {\n children: \"detectionStatus\"\n }), \" \", _jsx(_components.code, {\n children: \"unsupported\"\n }), \", not \", _jsx(_components.code, {\n children: \"failed\"\n }), \", and the credit is refunded\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"The response \", _jsx(_components.code, {\n children: \"files[]\"\n }), \" contains two entries: \", _jsx(_components.code, {\n children: \"files[0]\"\n }), \" is the original and \", _jsx(_components.code, {\n children: \"files[1]\"\n }), \" is the file to inspect. Upload each with \", _jsx(_components.code, {\n children: \"PUT\"\n }), \" to its \", _jsx(_components.code, {\n children: \"uploadUrl\"\n })]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"Processing starts automatically when both files are uploaded. Each order uses 1 credit, and \", _jsx(_components.code, {\n children: \"unsupported\"\n }), \" or \", _jsx(_components.code, {\n children: \"error\"\n }), \" results are refunded\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"Read the outcome from \", _jsx(_components.code, {\n children: \"result\"\n }), \" in \", _jsx(_components.a, {\n href: \"/api-reference/orders/get-order-v3\",\n children: _jsx(_components.code, {\n children: \"GET /api/v3/orders/{orderId}\"\n })\n })]\n }), \"\\n\"]\n })]\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{jsx:_jsx}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={p:`p`,..._provideComponents(),...props.components},{Warning}=_components;if(!Warning)_missingMdxReference(`Warning`,true);return _jsx(Warning,{children:_jsx(_components.p,{children:`v3 watermark extract cannot detect watermarks embedded with v2. Switching from the v2 endpoint does not make existing v2-watermarked images detectable.`})})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"tag":"v3","title":"Create watermark extract order","openapi":"api-reference/openapi.yaml POST /api/v3/orders/wtr-extract","description":"Create an order that checks one file for an invisible watermark.\n\n- Submit the original file together with the file to inspect on every request\n- Image originals accept `jpg`, `jpeg`, `png`, `webp`, `bmp`, `tif`, or `tiff` files to inspect. PDF originals accept PDF, PNG, or JPEG files to inspect\n- BMP and TIFF files follow the same limits as watermark embed. A file that cannot be processed finishes as `complete` with `detectionStatus` `unsupported`, not `failed`, and the credit is refunded\n- The response `files[]` contains two entries: `files[0]` is the original and `files[1]` is the file to inspect. Upload each with `PUT` to its `uploadUrl`\n- Processing starts automatically when both files are uploaded. Each order uses 1 credit, and `unsupported` or `error` results are refunded\n- Read the outcome from `result` in [`GET /api/v3/orders/{orderId}`](/api-reference/orders/get-order-v3)\n","href":"/api-reference/watermark-extract/create-order-v3"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"summary":"Create a watermark extract order","operationId":"createWatermarkV1ExtractOrder","description":"Create an order that checks one file for an invisible watermark.\n\n- Submit the original file together with the file to inspect on every request\n- Image originals accept `jpg`, `jpeg`, `png`, `webp`, `bmp`, `tif`, or `tiff` files to inspect. PDF originals accept PDF, PNG, or JPEG files to inspect\n- BMP and TIFF files follow the same limits as watermark embed. A file that cannot be processed finishes as `complete` with `detectionStatus` `unsupported`, not `failed`, and the credit is refunded\n- The response `files[]` contains two entries: `files[0]` is the original and `files[1]` is the file to inspect. Upload each with `PUT` to its `uploadUrl`\n- Processing starts automatically when both files are uploaded. Each order uses 1 credit, and `unsupported` or `error` results are refunded\n- Read the outcome from `result` in [`GET /api/v3/orders/{orderId}`](/api-reference/orders/get-order-v3)\n","tags":["Watermark Extract"],"security":["ff2e4ef4-8a36-4b0b-aadb-7fc522dc68d9"],"requestBody":"c78daf89-46f6-4e79-9769-d7cda50e136b","responses":{"200":"ee456336-1c06-470a-90c4-ebaaa865339c","400":"5e350ade-622f-4c4c-868c-2b04b4896723","401":"426e4a3b-e162-4386-ada1-013207a58f90","409":"6427ef75-e0d3-44c3-9480-8eda375b607c","429":"ada4d5f1-7ad9-4a68-94db-63211c75b22d","500":"5801d110-143e-421e-b742-4c01c52673f1","503":"79bdcce0-bc19-421b-b73c-9e1798569bca"},"x-codeSamples":[{"lang":"curl","label":"cURL","source":"curl -X POST https://api.bizmori.com/api/v3/orders/wtr-extract \\\n -H \"Authorization: Bearer YOUR_API_KEY\" \\\n -H \"Content-Type: application/json\" \\\n -d '{\n \"idempotencyKey\": \"6c3b9f7e-2d41-4a8e-9b5f-0e1d2c3b4a59\",\n \"file\": {\n \"fileName\": \"suspect.png\",\n \"originalFile\": {\n \"fileName\": \"campaign.png\"\n }\n }\n}'\n"},{"lang":"javascript","label":"JavaScript","source":"const response = await fetch(`https://api.bizmori.com/api/v3/orders/wtr-extract`, {\n method: 'POST',\n headers: {\n 'Authorization': 'Bearer YOUR_API_KEY',\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n \"idempotencyKey\": \"6c3b9f7e-2d41-4a8e-9b5f-0e1d2c3b4a59\",\n \"file\": {\n \"fileName\": \"suspect.png\",\n \"originalFile\": {\n \"fileName\": \"campaign.png\"\n }\n }\n })\n});\nconst { data } = await response.json();\n"},{"lang":"python","label":"Python","source":"import requests\n\nresponse = requests.post(\n f'https://api.bizmori.com/api/v3/orders/wtr-extract',\n headers={'Authorization': 'Bearer YOUR_API_KEY'},\n json={\n \"idempotencyKey\": \"6c3b9f7e-2d41-4a8e-9b5f-0e1d2c3b4a59\",\n \"file\": {\n \"fileName\": \"suspect.png\",\n \"originalFile\": {\n \"fileName\": \"campaign.png\"\n }\n }\n }\n)\ndata = response.json()['data']\n"}],"method":"post","type":"path","servers":["12c53202-44d6-48f4-884a-b8d4bc669414"],"path":"/api/v3/orders/wtr-extract","baseUrlOptions":["https://api.bizmori.com"],"title":"Create a watermark extract order","codeSamples":[{"label":"cURL","lang":"curl","source":"curl -X POST https://api.bizmori.com/api/v3/orders/wtr-extract \\\n -H \"Authorization: Bearer YOUR_API_KEY\" \\\n -H \"Content-Type: application/json\" \\\n -d '{\n \"idempotencyKey\": \"6c3b9f7e-2d41-4a8e-9b5f-0e1d2c3b4a59\",\n \"file\": {\n \"fileName\": \"suspect.png\",\n \"originalFile\": {\n \"fileName\": \"campaign.png\"\n }\n }\n}'\n"},{"label":"JavaScript","lang":"javascript","source":"const response = await fetch(`https://api.bizmori.com/api/v3/orders/wtr-extract`, {\n method: 'POST',\n headers: {\n 'Authorization': 'Bearer YOUR_API_KEY',\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n \"idempotencyKey\": \"6c3b9f7e-2d41-4a8e-9b5f-0e1d2c3b4a59\",\n \"file\": {\n \"fileName\": \"suspect.png\",\n \"originalFile\": {\n \"fileName\": \"campaign.png\"\n }\n }\n })\n});\nconst { data } = await response.json();\n"},{"label":"Python","lang":"python","source":"import requests\n\nresponse = requests.post(\n f'https://api.bizmori.com/api/v3/orders/wtr-extract',\n headers={'Authorization': 'Bearer YOUR_API_KEY'},\n json={\n \"idempotencyKey\": \"6c3b9f7e-2d41-4a8e-9b5f-0e1d2c3b4a59\",\n \"file\": {\n \"fileName\": \"suspect.png\",\n \"originalFile\": {\n \"fileName\": \"campaign.png\"\n }\n }\n }\n)\ndata = response.json()['data']\n"}],"requiredOnlyExamples":false,"requestExampleType":"codeSamples","responseExampleType":"generated"},"dependencies":{"parameters":{},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["idempotencyKey","file"],"properties":{"idempotencyKey":{"type":"string","maxLength":255,"description":"Idempotency key. Use a new UUIDv4 for each new order and reuse it only when retrying the same request. The same key returns the existing order; the same key with a different request body returns `409 WATERMARK_V2_CONFLICT`.","isRequired":true,"uniqueKey":"idempotencyKey","typeLabel":"string"},"file":{"type":"object","required":["fileName","originalFile"],"description":"The file to inspect","properties":{"fileName":{"type":"string","maxLength":255,"description":"File name of the file to inspect, with extension","isRequired":true,"uniqueKey":"file.fileName","typeLabel":"string"},"originalFile":{"type":"object","required":["fileName"],"description":"The original file the watermark was embedded into","properties":{"fileName":{"type":"string","maxLength":255,"isRequired":true,"uniqueKey":"file.originalFile.fileName","typeLabel":"string"}},"isRequired":true,"uniqueKey":"file.originalFile","typeLabel":"object"}},"isRequired":true,"uniqueKey":"file","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"example":{"idempotencyKey":"6c3b9f7e-2d41-4a8e-9b5f-0e1d2c3b4a59","file":{"fileName":"suspect.png","originalFile":{"fileName":"campaign.png"}}},"examples":{"Example":{"title":"Example","value":{"idempotencyKey":"6c3b9f7e-2d41-4a8e-9b5f-0e1d2c3b4a59","file":{"fileName":"suspect.png","originalFile":{"fileName":"campaign.png"}}}}},"exampleType":"examples"}},"exampleType":"examples"},"responses":{"ee456336-1c06-470a-90c4-ebaaa865339c":{"description":"Order created with upload URLs for the original file and the file to inspect","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"type":"object","description":"Invisible watermark order created with the v3 API, as returned by the order creation endpoints. Use `GET /api/v3/orders/{orderId}` for the order detail, which has a different shape","required":["orderId","status","processingDelayed","files","outputs","result","reports"],"properties":{"orderId":{"type":"string","description":"Order ID","isRequired":true,"uniqueKey":"data.orderId","typeLabel":"string"},"status":{"type":"string","enum":["pending","inProgress","complete","failed","expired"],"description":"Order processing status\n\n* `pending` - Waiting for file uploads\n* `inProgress` - Processing\n* `complete` - Processing finished. For extract orders, read the outcome from `result`\n* `failed` - Processing failed, or files were not uploaded within 12 hours\n* `expired` - The retention period has ended and files were deleted\n","isRequired":true,"uniqueKey":"data.status","typeLabel":"enum\u003cstring>"},"processingDelayed":{"type":"boolean","description":"`true` when automatic retries are exhausted and the order is waiting for manual recovery. The order stays `inProgress`","isRequired":true,"uniqueKey":"data.processingDelayed","typeLabel":"boolean"},"files":{"type":"array","description":"Uploaded input files, in request order. Extract orders return the original first and the file to inspect second","items":{"type":"object","required":["fileId","uploadUrl"],"properties":{"fileId":{"type":"string","description":"Input file ID","isRequired":true,"uniqueKey":"data.files.items.[INDEX].fileId","typeLabel":"string"},"uploadUrl":{"oneOf":[{"type":"string","format":"uri","description":"Presigned `PUT` URL for uploading the file, valid for 900 seconds. Issued only while the order `status` is `pending`, the retention period has not ended, and the file is waiting for upload.\nIt is `null` for files given by `originalFileUrl`, files already uploaded, orders that became `failed` after the 12-hour upload window, and expired orders.\n","isRequired":true,"uniqueKey":"data.files.items.[INDEX].uploadUrl.oneOf.0","typeLabel":"string\u003curi>"},{"type":"null","format":"uri","description":"Presigned `PUT` URL for uploading the file, valid for 900 seconds. Issued only while the order `status` is `pending`, the retention period has not ended, and the file is waiting for upload.\nIt is `null` for files given by `originalFileUrl`, files already uploaded, orders that became `failed` after the 12-hour upload window, and expired orders.\n","isRequired":true,"uniqueKey":"data.files.items.[INDEX].uploadUrl.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.files.items.[INDEX].uploadUrl","typeLabel":"string\u003curi> | null"}},"uniqueKey":"data.files.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"data.files","typeLabel":"object[]"},"outputs":{"type":"array","description":"Embed outputs. One entry per watermark text. Empty for extract orders","items":{"type":"object","required":["fileId","inputFileId","outputIndex","watermarkText","status","mediaKind"],"properties":{"fileId":{"type":"string","description":"Identifier of the output within the order in `{inputFileId}-{ordinal}` format. Used only in the order creation response. `result.outputFiles[].fileId` of the order detail and `files[].fileId` of the download response are numeric strings and differ from this value","isRequired":true,"uniqueKey":"data.outputs.items.[INDEX].fileId","typeLabel":"string"},"inputFileId":{"type":"string","description":"ID of the input file this output was created from","isRequired":true,"uniqueKey":"data.outputs.items.[INDEX].inputFileId","typeLabel":"string"},"outputIndex":{"type":"integer","minimum":0,"description":"Position of the watermark text within the input file's `watermarks`","isRequired":true,"uniqueKey":"data.outputs.items.[INDEX].outputIndex","typeLabel":"integer"},"watermarkText":{"type":"string","description":"The embedded watermark text","isRequired":true,"uniqueKey":"data.outputs.items.[INDEX].watermarkText","typeLabel":"string"},"status":{"type":"string","enum":["pending","queued","processing","completed","failed","retry_required"],"description":"Processing status of this output","isRequired":true,"uniqueKey":"data.outputs.items.[INDEX].status","typeLabel":"enum\u003cstring>"},"mediaKind":{"type":"string","enum":["image","pdf"],"isRequired":true,"uniqueKey":"data.outputs.items.[INDEX].mediaKind","typeLabel":"enum\u003cstring>"}},"uniqueKey":"data.outputs.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"data.outputs","typeLabel":"object[]"},"result":{"oneOf":[{"type":"object","description":"Extract result summary. `null` for embed orders and until the result is ready. Contains only the fields below","required":["detectionStatus","reportSupported","watermarkText"],"additionalProperties":false,"properties":{"detectionStatus":{"type":"string","enum":["detected","not_detected","inconclusive","unsupported","error"],"description":"* `detected` - A watermark was found\n* `not_detected` - The file was fully checked and no watermark was found\n* `inconclusive` - A candidate was found but did not meet the confidence threshold\n* `unsupported` - The input cannot be processed (credit refunded)\n* `error` - Detection failed. This is not the same as no watermark (credit refunded)\n","isRequired":true,"uniqueKey":"data.result.oneOf.0.detectionStatus","typeLabel":"enum\u003cstring>"},"reportSupported":{"type":"boolean","description":"Whether a report can be created from this result. `false` for images captured from a PDF","isRequired":true,"uniqueKey":"data.result.oneOf.0.reportSupported","typeLabel":"boolean"},"watermarkText":{"oneOf":[{"type":"string","description":"Embedded text of the detected watermark. Returned only when `detectionStatus` is `detected`, your account embedded the watermark, and exactly one issuance record matches.\nOtherwise `null`, for example when another account embedded the watermark.\n","isRequired":true,"uniqueKey":"data.result.oneOf.0.watermarkText.oneOf.0","typeLabel":"string"},{"type":"null","description":"Embedded text of the detected watermark. Returned only when `detectionStatus` is `detected`, your account embedded the watermark, and exactly one issuance record matches.\nOtherwise `null`, for example when another account embedded the watermark.\n","isRequired":true,"uniqueKey":"data.result.oneOf.0.watermarkText.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.result.oneOf.0.watermarkText","typeLabel":"string | null"}},"isRequired":true,"uniqueKey":"data.result.oneOf.0","typeLabel":"object"},{"type":"null","description":"Extract result summary. `null` for embed orders and until the result is ready. Contains only the fields below","required":["detectionStatus","reportSupported","watermarkText"],"additionalProperties":false,"properties":{"detectionStatus":{"type":"string","enum":["detected","not_detected","inconclusive","unsupported","error"],"description":"* `detected` - A watermark was found\n* `not_detected` - The file was fully checked and no watermark was found\n* `inconclusive` - A candidate was found but did not meet the confidence threshold\n* `unsupported` - The input cannot be processed (credit refunded)\n* `error` - Detection failed. This is not the same as no watermark (credit refunded)\n"},"reportSupported":{"type":"boolean","description":"Whether a report can be created from this result. `false` for images captured from a PDF"},"watermarkText":{"oneOf":[{"type":"string","description":"Embedded text of the detected watermark. Returned only when `detectionStatus` is `detected`, your account embedded the watermark, and exactly one issuance record matches.\nOtherwise `null`, for example when another account embedded the watermark.\n"},{"type":"null","description":"Embedded text of the detected watermark. Returned only when `detectionStatus` is `detected`, your account embedded the watermark, and exactly one issuance record matches.\nOtherwise `null`, for example when another account embedded the watermark.\n"}]}},"isRequired":true,"uniqueKey":"data.result.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.result","typeLabel":"object | null"},"reports":{"type":"array","description":"Reports requested for this order","items":{"type":"object","required":["locale","status"],"properties":{"locale":{"type":"string","enum":["ko-KR","en-US","ja-JP"],"isRequired":true,"uniqueKey":"data.reports.items.[INDEX].locale","typeLabel":"enum\u003cstring>"},"status":{"type":"string","enum":["queued","processing","completed","failed"],"isRequired":true,"uniqueKey":"data.reports.items.[INDEX].status","typeLabel":"enum\u003cstring>"}},"uniqueKey":"data.reports.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"data.reports","typeLabel":"object[]"},"expiresAt":{"oneOf":[{"type":"string","format":"date-time","description":"When the order files are deleted. Downloads and reports return `ORDER_EXPIRED` afterwards","uniqueKey":"data.expiresAt.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","format":"date-time","description":"When the order files are deleted. Downloads and reports return `ORDER_EXPIRED` afterwards","uniqueKey":"data.expiresAt.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.expiresAt","typeLabel":"string\u003cdate-time> | null"}},"isRequired":true,"uniqueKey":"data","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"data":{"orderId":"\u003cstring>","status":"pending","processingDelayed":true,"files":[{"fileId":"\u003cstring>","uploadUrl":"\u003cstring>"}],"outputs":[{"fileId":"\u003cstring>","inputFileId":"\u003cstring>","outputIndex":1,"watermarkText":"\u003cstring>","status":"pending","mediaKind":"image"}],"result":{"detectionStatus":"detected","reportSupported":true,"watermarkText":"\u003cstring>"},"reports":[{"locale":"ko-KR","status":"queued"}],"expiresAt":"2023-11-07T05:31:56Z"}}}},"exampleType":"generated"}},"exampleType":"generated"},"5e350ade-622f-4c4c-868c-2b04b4896723":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string","description":"Error code","uniqueKey":"code","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"example":{"code":"VALIDATION_FAILED"},"examples":{"Example":{"title":"Example","value":{"code":"VALIDATION_FAILED"}}},"exampleType":"examples"}},"exampleType":"examples"},"426e4a3b-e162-4386-ada1-013207a58f90":{"description":"Authentication failed","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string","description":"Error code","uniqueKey":"code","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"example":{"code":"AUTH_NOT_AUTHENTICATED"},"examples":{"Example":{"title":"Example","value":{"code":"AUTH_NOT_AUTHENTICATED"}}},"exampleType":"examples"}},"exampleType":"examples"},"6427ef75-e0d3-44c3-9480-8eda375b607c":{"description":"The same `idempotencyKey` was used with a different request body","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string","description":"Error code","uniqueKey":"code","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"example":{"code":"WATERMARK_V2_CONFLICT"},"examples":{"Example":{"title":"Example","value":{"code":"WATERMARK_V2_CONFLICT"}}},"exampleType":"examples"}},"exampleType":"examples"},"ada4d5f1-7ad9-4a68-94db-63211c75b22d":{"description":"Too many requests","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string","description":"Error code","uniqueKey":"code","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"example":{"code":"RATE_LIMIT_EXCEEDED"},"examples":{"Example":{"title":"Example","value":{"code":"RATE_LIMIT_EXCEEDED"}}},"exampleType":"examples"}},"exampleType":"examples"},"5801d110-143e-421e-b742-4c01c52673f1":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string","description":"Error code","uniqueKey":"code","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"example":{"code":"SERVER_INTERNAL_ERROR"},"examples":{"Example":{"title":"Example","value":{"code":"SERVER_INTERNAL_ERROR"}}},"exampleType":"examples"}},"exampleType":"examples"},"79bdcce0-bc19-421b-b73c-9e1798569bca":{"description":"Watermark processing is temporarily unavailable","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string","description":"Error code","uniqueKey":"code","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"example":{"code":"WATERMARK_V2_UNAVAILABLE"},"examples":{"Example":{"title":"Example","value":{"code":"WATERMARK_V2_UNAVAILABLE"}}},"exampleType":"examples"}},"exampleType":"examples"}},"security":{"ff2e4ef4-8a36-4b0b-aadb-7fc522dc68d9":{"BearerAuth":{"type":"http","scheme":"bearer","description":"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.","scopes":[],"schemeName":"BearerAuth"}}},"servers":{"12c53202-44d6-48f4-884a-b8d4bc669414":{"url":"https://api.bizmori.com","description":"Production"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"http","scheme":"bearer","description":"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.","scopes":[],"schemeName":"BearerAuth"},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"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.","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"BearerAuth","name":"Authorization"}],"title":"BearerAuth"}]},"originalFileLocation":"api-reference/openapi.yaml"},"subdomain":"mori-7d8a16e6","siteName":"ContentCare API Documentation","title":"Create watermark extract order - ContentCare API Documentation","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{"en":{"href":"/api-reference/watermark-extract/create-order-v3","matchLevel":0},"ko":{"href":"/ko/api-reference/watermark-extract/create-order-v3","matchLevel":1},"ja":{"href":"/ja/api-reference/watermark-extract/create-order-v3","matchLevel":1}}},"lastModified":"2026-10-22T14:09:47.789Z","originalFileLocation":"api-reference/watermark-extract/create-order-v3.mdx","locale":"en"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Create an order that checks one file for an invisible watermark. - Submit the original file together with the file to inspect on every request - Image originals accept jpg, jpeg, png, webp, bmp, tif, or tiff files to inspect. PDF originals accept PDF, PNG, or JPEG files to inspect - BMP and TIFF files follow the same limits as watermark embed. A file that cannot be processed finishes as complete with detectionStatus unsupported, not failed, and the credit is refunded - The response files[] contains two entries: files[0] is the original and files[1] is the file to inspect. Upload each with PUT to its uploadUrl - Processing starts automatically when both files are uploaded. Each order uses 1 credit, and unsupported or error results are refunded - Read the outcome from result in GET /api/v3/orders/{orderId}\">\u003cmeta data-mint-head name=\"application-name\" content=\"ContentCare API Documentation\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/mori-7d8a16e6/GYT2KKGJvFLTeKFD/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/mori-7d8a16e6/GYT2KKGJvFLTeKFD/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/mori-7d8a16e6/GYT2KKGJvFLTeKFD/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/mori-7d8a16e6/GYT2KKGJvFLTeKFD/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/mori-7d8a16e6/GYT2KKGJvFLTeKFD/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/mori-7d8a16e6/GYT2KKGJvFLTeKFD/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/mori-7d8a16e6/GYT2KKGJvFLTeKFD/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/mori-7d8a16e6/GYT2KKGJvFLTeKFD/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/mori-7d8a16e6/GYT2KKGJvFLTeKFD/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Create watermark extract order - ContentCare API Documentation\">\u003cmeta data-mint-head property=\"og:description\" content=\"Create an order that checks one file for an invisible watermark. - Submit the original file together with the file to inspect on every request - Image originals accept jpg, jpeg, png, webp, bmp, tif, or tiff files to inspect. PDF originals accept PDF, PNG, or JPEG files to inspect - BMP and TIFF files follow the same limits as watermark embed. A file that cannot be processed finishes as complete with detectionStatus unsupported, not failed, and the credit is refunded - The response files[] contains two entries: files[0] is the original and files[1] is the file to inspect. Upload each with PUT to its uploadUrl - Processing starts automatically when both files are uploaded. Each order uses 1 credit, and unsupported or error results are refunded - Read the outcome from result in GET /api/v3/orders/{orderId}\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"ContentCare API Documentation\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.contentcare.ai/api-reference/watermark-extract/create-order-v3\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://mori-7d8a16e6.mintlify.app/_mintlify/api/og/v2?division=Watermark+Extract\u0026amp;title=Create+watermark+extract+order\u0026amp;description=Create+an+order+that+checks+one+file+for+an+invisible+watermark.%0A%0A-+Submit+the+original+file+together+with+the+file+to+inspect+on+every+request%0A-+Image+original\u0026amp;theme=7c39b3866236068a07646682\u0026amp;signature=1657bb987b6d7d00cef0dfa7c9314bfb1b554e49ea4e4a67bed615146529b0e3\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Create watermark extract order - ContentCare API Documentation\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Create an order that checks one file for an invisible watermark. - Submit the original file together with the file to inspect on every request - Image originals accept jpg, jpeg, png, webp, bmp, tif, or tiff files to inspect. PDF originals accept PDF, PNG, or JPEG files to inspect - BMP and TIFF files follow the same limits as watermark embed. A file that cannot be processed finishes as complete with detectionStatus unsupported, not failed, and the credit is refunded - The response files[] contains two entries: files[0] is the original and files[1] is the file to inspect. Upload each with PUT to its uploadUrl - Processing starts automatically when both files are uploaded. Each order uses 1 credit, and unsupported or error results are refunded - Read the outcome from result in GET /api/v3/orders/{orderId}\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://mori-7d8a16e6.mintlify.app/_mintlify/api/og/v2?division=Watermark+Extract\u0026amp;title=Create+watermark+extract+order\u0026amp;description=Create+an+order+that+checks+one+file+for+an+invisible+watermark.%0A%0A-+Submit+the+original+file+together+with+the+file+to+inspect+on+every+request%0A-+Image+original\u0026amp;theme=7c39b3866236068a07646682\u0026amp;signature=1657bb987b6d7d00cef0dfa7c9314bfb1b554e49ea4e4a67bed615146529b0e3\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/mori-7d8a16e6/GYT2KKGJvFLTeKFD/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"ContentCare API Documentation\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#6366F1\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.contentcare.ai/api-reference/watermark-extract/create-order-v3\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/watermark-extract/create-order-v3.md\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"en\" href=\"https://docs.contentcare.ai/api-reference/watermark-extract/create-order-v3\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"ko\" href=\"https://docs.contentcare.ai/ko/api-reference/watermark-extract/create-order-v3\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"ja\" href=\"https://docs.contentcare.ai/ja/api-reference/watermark-extract/create-order-v3\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"x-default\" href=\"https://docs.contentcare.ai/api-reference/watermark-extract/create-order-v3\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.contentcare.ai/#organization\",\"name\":\"ContentCare API Documentation\",\"url\":\"https://docs.contentcare.ai\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/mori-7d8a16e6/uiCwTpjPPKH9gjDZ/logo/light.svg?fit=max\u0026auto=format\u0026n=uiCwTpjPPKH9gjDZ\u0026q=85\u0026s=cd317193218c94284b35aa84c52b5d17\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.contentcare.ai#website\",\"name\":\"ContentCare API Documentation\",\"url\":\"https://docs.contentcare.ai\",\"publisher\":{\"@id\":\"https://docs.contentcare.ai/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.contentcare.ai/api-reference/watermark-extract/create-order-v3#webpage\",\"url\":\"https://docs.contentcare.ai/api-reference/watermark-extract/create-order-v3\",\"name\":\"Create watermark extract order\",\"description\":\"Create an order that checks one file for an invisible watermark. - Submit the original file together with the file to inspect on every request - Image originals accept jpg, jpeg, png, webp, bmp, tif, or tiff files to inspect. PDF originals accept PDF, PNG, or JPEG files to inspect - BMP and TIFF files follow the same limits as watermark embed. A file that cannot be processed finishes as complete with detectionStatus unsupported, not failed, and the credit is refunded - The response files[] contains two entries: files[0] is the original and files[1] is the file to inspect. Upload each with PUT to its uploadUrl - Processing starts automatically when both files are uploaded. Each order uses 1 credit, and unsupported or error results are refunded - Read the outcome from result in GET /api/v3/orders/{orderId}\",\"dateModified\":\"2026-10-22T14:09:47.789Z\",\"isPartOf\":{\"@id\":\"https://docs.contentcare.ai#website\"},\"breadcrumb\":{\"@id\":\"https://docs.contentcare.ai/api-reference/watermark-extract/create-order-v3#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.contentcare.ai/api-reference/watermark-extract/create-order-v3#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Watermark Extract\",\"item\":\"https://docs.contentcare.ai/api-reference/watermark-extract/create-order\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Create watermark extract order\",\"item\":\"https://docs.contentcare.ai/api-reference/watermark-extract/create-order-v3\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.contentcare.ai/api-reference/watermark-extract/create-order-v3#apireference\",\"headline\":\"Create watermark extract order\",\"name\":\"Create watermark extract order\",\"description\":\"Create an order that checks one file for an invisible watermark. - Submit the original file together with the file to inspect on every request - Image originals accept jpg, jpeg, png, webp, bmp, tif, or tiff files to inspect. PDF originals accept PDF, PNG, or JPEG files to inspect - BMP and TIFF files follow the same limits as watermark embed. A file that cannot be processed finishes as complete with detectionStatus unsupported, not failed, and the credit is refunded - The response files[] contains two entries: files[0] is the original and files[1] is the file to inspect. Upload each with PUT to its uploadUrl - Processing starts automatically when both files are uploaded. Each order uses 1 credit, and unsupported or error results are refunded - Read the outcome from result in GET /api/v3/orders/{orderId}\",\"url\":\"https://docs.contentcare.ai/api-reference/watermark-extract/create-order-v3\",\"mainEntityOfPage\":{\"@id\":\"https://docs.contentcare.ai/api-reference/watermark-extract/create-order-v3#webpage\"},\"dateModified\":\"2026-10-22T14:09:47.789Z\",\"publisher\":{\"@id\":\"https://docs.contentcare.ai/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.contentcare.ai#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"ContentCare API Documentation\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"ContentCare API Documentation","nav":{"global":{"anchors":[{"anchor":"ContentCare Dashboard","icon":"code","href":"https://app.contentcare.ai"},{"anchor":"Support","icon":"envelope","href":"mailto:support@contentcare.ai"},{"anchor":"Status","icon":"signal-bars","href":"https://status.bizmori.com"}]},"languages":[{"language":"en","tabs":[{"tab":"Guides","pages":[{"title":"Guides","href":""}]},{"tab":"API Reference","groups":[{"group":"Overview","pages":[{"title":"API Reference","href":"/api-reference/introduction"}]},{"group":"Anti-AI","pages":[{"title":"Create Anti-AI order","openapi":"api-reference/openapi.yaml POST /api/v2/orders/anti-ai","href":"/api-reference/anti-ai/create-order"},{"title":"Confirm Anti-AI order","openapi":"api-reference/openapi.yaml POST /api/v2/orders/anti-ai/confirm","href":"/api-reference/anti-ai/confirm-order"},{"title":"Create Anti-AI order with URLs","openapi":"api-reference/openapi.yaml POST /api/v2/orders/anti-ai/with-urls","href":"/api-reference/anti-ai/create-order-urls"}]},{"group":"AI Detection","pages":[{"title":"Create AI Detection order","openapi":"api-reference/openapi.yaml POST /api/v2/orders/ai-detection","href":"/api-reference/ai-detection/create-order"},{"title":"Confirm AI Detection order","openapi":"api-reference/openapi.yaml POST /api/v2/orders/ai-detection/confirm","href":"/api-reference/ai-detection/confirm-order"}]},{"group":"Watermark Embed","pages":[{"tag":"v2","title":"Create watermark embed order","openapi":"api-reference/openapi.yaml POST /api/v2/orders/wtr-embed","href":"/api-reference/watermark-embed/create-order"},{"tag":"v3","title":"Create watermark embed order","openapi":"api-reference/openapi.yaml POST /api/v3/orders/wtr-embed","href":"/api-reference/watermark-embed/create-order-v3"}]},{"group":"Watermark Extract","pages":[{"tag":"v2","title":"Create watermark extract order","openapi":"api-reference/openapi.yaml POST /api/v2/orders/wtr-extract","description":"**Support ended.** This endpoint ended support at 09:00 KST on October 9, 2026 (00:00 UTC). Use `POST /api/v3/orders/wtr-extract` instead.\n\nEvery response from this endpoint, including authentication errors and the `410` response, includes the `Deprecation: true`, `Sunset: Fri, 09 Oct 2026 00:00:00 GMT`, and `Link: \u003c/api/v3/orders/wtr-extract>; rel=\"successor-version\"` headers.\n\nFrom 09:00 KST on October 9, 2026 (00:00 UTC):\n- Authentication and permission checks still run first, so `401` and `403` errors are returned as before.\n- Authenticated requests to the v2 watermark embed and extract endpoints return `410 Gone` with `{ \"code\": \"WATERMARK_V2_API_SUNSET\" }`, for both live and `sk_test_` keys. The `Link` header points to the v3 endpoint. Create new orders with v3.\n- v2 orders that have not started processing by then fail without being processed. The order details (`errors.errorCode`) and the failed webhook carry `WATERMARK_V2_API_SUNSET` with a message pointing to v3. The order is not charged, and its credits are restored.\n- Orders already processing at that time finish and record their result. No new run starts for them afterwards.\n\nCreate a watermark extraction order.\n- Only 1 file per order\n- Supports image (jpg, jpeg, png, webp, bmp, tiff) or PDF files\n- For images, `includeOriginal: true` allows uploading the original file alongside\n- PDF does not support `includeOriginal`\n","href":"/api-reference/watermark-extract/create-order"},{"tag":"v3","title":"Create watermark extract order","openapi":"api-reference/openapi.yaml POST /api/v3/orders/wtr-extract","href":"/api-reference/watermark-extract/create-order-v3"}]},{"group":"Orders","pages":[{"title":"List orders","openapi":"api-reference/openapi.yaml GET /api/v2/orders","description":"Retrieve orders with pagination.\n- Filter by status, type, and channel\n- Keyword search supported\n- Sorted by most recent\n","href":"/api-reference/orders/list-orders"},{"tag":"v2","title":"Get order details","openapi":"api-reference/openapi.yaml GET /api/v2/orders/{orderId}","href":"/api-reference/orders/get-order"},{"tag":"v3","title":"Get order details","openapi":"api-reference/openapi.yaml GET /api/v3/orders/{orderId}","href":"/api-reference/orders/get-order-v3"},{"tag":"v2","title":"Get download URL","openapi":"api-reference/openapi.yaml GET /api/v2/orders/{orderId}/download","href":"/api-reference/orders/download-order"},{"tag":"v3","title":"Get order result download URLs","openapi":"api-reference/openapi.yaml GET /api/v3/orders/{orderId}/download","href":"/api-reference/orders/download-order-v3"},{"title":"Refresh presigned URLs","openapi":"api-reference/openapi.yaml POST /api/v2/orders/{orderId}/refresh-urls","href":"/api-reference/orders/refresh-urls"},{"title":"Recent usage statistics","openapi":"api-reference/openapi.yaml GET /api/v2/orders/stats/recent","href":"/api-reference/orders/recent-stats"}]},{"group":"Reports","pages":[{"tag":"v3","title":"Create order report","openapi":"api-reference/openapi.yaml POST /api/v3/orders/{orderId}/reports","href":"/api-reference/reports/create-report"},{"tag":"v3","title":"Get order report","openapi":"api-reference/openapi.yaml GET /api/v3/orders/{orderId}/reports/{locale}","href":"/api-reference/reports/get-report"}]},{"group":"Webhooks","pages":[{"title":"List webhooks","openapi":"api-reference/openapi.yaml GET /api/v2/orders/webhooks","href":"/api-reference/webhooks/list-webhooks"},{"title":"Create webhook","openapi":"api-reference/openapi.yaml POST /api/v2/orders/webhooks","href":"/api-reference/webhooks/create-webhook"},{"title":"Get webhook details","openapi":"api-reference/openapi.yaml GET /api/v2/orders/webhooks/{webhookId}","href":"/api-reference/webhooks/get-webhook"},{"title":"Update webhook","openapi":"api-reference/openapi.yaml PUT /api/v2/orders/webhooks/{webhookId}","href":"/api-reference/webhooks/update-webhook"},{"title":"Delete webhook","openapi":"api-reference/openapi.yaml DELETE /api/v2/orders/webhooks/{webhookId}","href":"/api-reference/webhooks/delete-webhook"},{"title":"List webhook events","openapi":"api-reference/openapi.yaml GET /api/v2/orders/webhooks/{webhookId}/events","href":"/api-reference/webhooks/list-events"},{"title":"Retry webhook event","openapi":"api-reference/openapi.yaml POST /api/v2/orders/webhooks/{webhookId}/events/{eventId}/retry","href":"/api-reference/webhooks/retry-event"},{"title":"Retry failed webhook events","openapi":"api-reference/openapi.yaml POST /api/v2/orders/webhooks/{webhookId}/events/retry-failed","href":"/api-reference/webhooks/retry-failed-events"}]}]},{"tab":"What's new","pages":[{"title":"What's new","href":"/changelog"}]},{"tab":"Legal","pages":[{"title":"Legal","href":"/legal/terms"}]}]},{"language":"ko","pages":[{"title":"ko","href":"/ko/api-reference/watermark-extract/create-order-v3"}]},{"language":"ja","pages":[{"title":"ja","href":"/ja/api-reference/watermark-extract/create-order-v3"}]}]},"title":"Create watermark extract order - ContentCare API Documentation","buildId":"dpl_cadrRc5H9XQiJQbDFN5mcYRs2PAj","deploymentId":"dpl_cadrRc5H9XQiJQbDFN5mcYRs2PAj","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-DKJwRUt2.js","utils-CWD_VS3u.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-oFjciODD.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-C76WsxC3.js","snippetPresets-DvPMxpX_.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-CuNQfndH.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-BVFpVUoF.js","shallow-t59Jg5Kr.js","getApiPlaygroundDisplay-C_JZ4amX.js","CodeSnippet-CLRDnx_h.js","CodeSnippets-C2myU4kc.js","Page-7TwLLapg.js","getPastedJson-B-JaVXw7.js","icon-BA-iDhH3.js","MethodPill-D4qZABFp.js","DuplicateIcon-THIDKO1O.js","createIcon-CYYJwgFd.js","DynamicMarkdown-UGQuxDKp.js","SectionHeading-jYELb23h.js","axios-vUo_bRtp.js","Markdown-DKsLa3wy.js","clsx-CefdjKz2.js","lib--scc4DXi.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-BaREnp3o.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-sgx_0XzF.js"]}