Support ended. This endpoint ended support at 09:00 KST on October 9, 2026 (00:00 UTC). Use POST /api/v3/orders/wtr-embed instead.
Every 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: </api/v3/orders/wtr-embed>; rel="successor-version" headers.
From 09:00 KST on October 9, 2026 (00:00 UTC):
Authentication and permission checks still run first, so 401 and 403 errors are returned as before.
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.
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.
Orders already processing at that time finish and record their result. No new run starts for them afterwards.
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 (originalFileUrl provided): 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.
Support ended. This v2 endpoint ended support at 09:00 KST on October 9, 2026 (00:00 UTC). Use POST /api/v3/orders/wtr-embed for new integrations, and see the watermark embed quickstart to migrate.After v2 support ends (from 09:00 KST on October 9, 2026, which is 00:00 UTC):
Authentication and permission checks still run first, so 401 and 403 errors are returned as before.
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.
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.
Orders already processing at that time finish and record their result. No new run starts for them afterwards.
You can still get existing v2 orders and download results and reports that were already created, within the existing retention period. New v2 reports cannot be created or regenerated.
Until then, the request and response behavior is unchanged, except that every response from these endpoints includes the Deprecation: true, Sunset: Fri, 09 Oct 2026 00:00:00 GMT, and Link headers.
v3 watermark extract cannot detect watermarks embedded with v2. Switching to the v3 endpoint does not make existing v2-watermarked images detectable, and there will be no exception for v2 detection after v2 support ends.
Send a new request to the v3 endpoint in the Link header.
With an sk_test_ key, upload to the returned BIZ MORI test upload URL. The order moves to processing after its uploads finish, without a confirm call. Test processing does not create a downloadable result file.
Once your order reaches complete status, call Get order result download URLs. One call returns a URL for each output file in files[] and a ZIP archive of all results in archiveUrl:
curl -X GET https://api.bizmori.com/api/v3/orders/{orderId}/download \ -H "Authorization: Bearer YOUR_API_KEY"
The URLs are valid for up to 1 hour, so request new ones each time you download. You can download files until the order’s expiresAt; after that, the endpoint returns 400 ORDER_EXPIRED. For an sk_test_ order, the URLs point to fixed sample files instead of your results.
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.
Upload URL, returned in upload mode only. 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. 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.
{"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":"6adf208ed13963272de7eba3","collectionId":"4bdea990-6916-48da-ae92-82d12b94e97c","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6adf208ed13963272de7eba3"},"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-embed/create-order","slug":"/api-reference/watermark-embed/create-order","pageMetadata":{"tag":"v2","title":"Create watermark embed order","openapi":"api-reference/openapi.yaml POST /api/v2/orders/wtr-embed","description":"**Support ended.** This endpoint ended support at 09:00 KST on October 9, 2026 (00:00 UTC). Use `POST /api/v3/orders/wtr-embed` 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-embed>; 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 embedding order.\n- Up to 10 watermark texts per image\n- Up to 100 files per order\n- Supported image formats (IMG): jpg, jpeg, png, webp, bmp, tiff\n- Supported document formats (DOCUMENT): pdf\n\n## Input Modes (Upload / URL / Mixed)\nThe input mode is determined by the presence of `originalFileUrl` in each file object:\n- **Upload mode** (no `originalFileUrl`): Presigned URL issued → Client uploads to S3 → Processing starts automatically\n- **URL mode** (`originalFileUrl` provided): Image downloaded from the URL and processed immediately\n- **Mixed mode**: Some files in Upload mode, others in URL mode simultaneously\n\n### Behavior\n| Condition | Order Status | Confirm Required |\n|-----------|-------------|-----------------|\n| All files have `originalFileUrl` | `pending` | No (auto-starts after server downloads) |\n| Any file without `originalFileUrl` | `pending` | No (auto-starts after upload) |\n\n\u003cNote>Unlike Anti-AI and AI Detection, Watermark Embed does not require a separate confirm step. Processing starts automatically after file upload completes.\u003c/Note>\n","href":"/api-reference/watermark-embed/create-order"},"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 code: \"code\",\n h2: \"h2\",\n h3: \"h3\",\n li: \"li\",\n p: \"p\",\n strong: \"strong\",\n table: \"table\",\n tbody: \"tbody\",\n td: \"td\",\n th: \"th\",\n thead: \"thead\",\n tr: \"tr\",\n ul: \"ul\",\n ..._provideComponents(),\n ...props.components\n }, {Note} = _components;\n if (!Note) _missingMdxReference(\"Note\", true);\n return _jsxs(_Fragment, {\n children: [_jsxs(_components.p, {\n children: [_jsx(_components.strong, {\n children: \"Support ended.\"\n }), \" This endpoint ended support at 09:00 KST on October 9, 2026 (00:00 UTC). Use \", _jsx(_components.code, {\n children: \"POST /api/v3/orders/wtr-embed\"\n }), \" instead.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"Every response from this endpoint, including authentication errors and the \", _jsx(_components.code, {\n children: \"410\"\n }), \" response, includes the \", _jsx(_components.code, {\n children: \"Deprecation: true\"\n }), \", \", _jsx(_components.code, {\n children: \"Sunset: Fri, 09 Oct 2026 00:00:00 GMT\"\n }), \", and \", _jsx(_components.code, {\n children: \"Link: \u003c/api/v3/orders/wtr-embed>; rel=\\\"successor-version\\\"\"\n }), \" headers.\"]\n }), \"\\n\", _jsx(_components.p, {\n children: \"From 09:00 KST on October 9, 2026 (00:00 UTC):\"\n }), \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [\"Authentication and permission checks still run first, so \", _jsx(_components.code, {\n children: \"401\"\n }), \" and \", _jsx(_components.code, {\n children: \"403\"\n }), \" errors are returned as before.\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"Authenticated requests to the v2 watermark embed and extract endpoints return \", _jsx(_components.code, {\n children: \"410 Gone\"\n }), \" with \", _jsx(_components.code, {\n children: \"{ \\\"code\\\": \\\"WATERMARK_V2_API_SUNSET\\\" }\"\n }), \", for both live and \", _jsx(_components.code, {\n children: \"sk_test_\"\n }), \" keys. The \", _jsx(_components.code, {\n children: \"Link\"\n }), \" header points to the v3 endpoint. Create new orders with v3.\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"v2 orders that have not started processing by then fail without being processed. The order details (\", _jsx(_components.code, {\n children: \"errors.errorCode\"\n }), \") and the failed webhook carry \", _jsx(_components.code, {\n children: \"WATERMARK_V2_API_SUNSET\"\n }), \" with a message pointing to v3. The order is not charged, and its credits are restored.\"]\n }), \"\\n\", _jsx(_components.li, {\n children: \"Orders already processing at that time finish and record their result. No new run starts for them afterwards.\"\n }), \"\\n\"]\n }), \"\\n\", _jsx(_components.p, {\n children: \"Create a watermark embedding order.\"\n }), \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsx(_components.li, {\n children: \"Up to 10 watermark texts per image\"\n }), \"\\n\", _jsx(_components.li, {\n children: \"Up to 100 files per order\"\n }), \"\\n\", _jsx(_components.li, {\n children: \"Supported image formats (IMG): jpg, jpeg, png, webp, bmp, tiff\"\n }), \"\\n\", _jsx(_components.li, {\n children: \"Supported document formats (DOCUMENT): pdf\"\n }), \"\\n\"]\n }), \"\\n\", _jsx(_components.h2, {\n children: \"Input Modes (Upload / URL / Mixed)\"\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"The input mode is determined by the presence of \", _jsx(_components.code, {\n children: \"originalFileUrl\"\n }), \" in each file object:\"]\n }), \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.strong, {\n children: \"Upload mode\"\n }), \" (no \", _jsx(_components.code, {\n children: \"originalFileUrl\"\n }), \"): Presigned URL issued → Client uploads to S3 → Processing starts automatically\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.strong, {\n children: \"URL mode\"\n }), \" (\", _jsx(_components.code, {\n children: \"originalFileUrl\"\n }), \" provided): Image downloaded from the URL and processed immediately\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.strong, {\n children: \"Mixed mode\"\n }), \": Some files in Upload mode, others in URL mode simultaneously\"]\n }), \"\\n\"]\n }), \"\\n\", _jsx(_components.h3, {\n children: \"Behavior\"\n }), \"\\n\", _jsxs(_components.table, {\n children: [_jsx(_components.thead, {\n children: _jsxs(_components.tr, {\n children: [_jsx(_components.th, {\n children: \"Condition\"\n }), _jsx(_components.th, {\n children: \"Order Status\"\n }), _jsx(_components.th, {\n children: \"Confirm Required\"\n })]\n })\n }), _jsxs(_components.tbody, {\n children: [_jsxs(_components.tr, {\n children: [_jsxs(_components.td, {\n children: [\"All files have \", _jsx(_components.code, {\n children: \"originalFileUrl\"\n })]\n }), _jsx(_components.td, {\n children: _jsx(_components.code, {\n children: \"pending\"\n })\n }), _jsx(_components.td, {\n children: \"No (auto-starts after server downloads)\"\n })]\n }), _jsxs(_components.tr, {\n children: [_jsxs(_components.td, {\n children: [\"Any file without \", _jsx(_components.code, {\n children: \"originalFileUrl\"\n })]\n }), _jsx(_components.td, {\n children: _jsx(_components.code, {\n children: \"pending\"\n })\n }), _jsx(_components.td, {\n children: \"No (auto-starts after upload)\"\n })]\n })]\n })]\n }), \"\\n\", _jsx(Note, {\n children: \"Unlike Anti-AI and AI Detection, Watermark Embed does not require a separate confirm step. Processing starts automatically after file upload completes.\"\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};\nfunction _missingMdxReference(id, component) {\n throw new Error(\"Expected \" + (component ? \"component\" : \"object\") + \" `\" + id + \"` to be defined: you likely forgot to import, pass, or provide it.\");\n}\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,li:`li`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,ul:`ul`,..._provideComponents(),...props.components},{CodeBlock,Heading,Note,Warning}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Note)_missingMdxReference(`Note`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsxs(Warning,{children:[_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Support ended.`}),` This v2 endpoint ended support at 09:00 KST on October 9, 2026 (00:00 UTC). Use `,_jsx(_components.a,{href:`/api-reference/watermark-embed/create-order-v3`,children:_jsx(_components.code,{children:`POST /api/v3/orders/wtr-embed`})}),` for new integrations, and see the `,_jsx(_components.a,{href:`/quickstart/watermark-embed#migrating-from-v2-to-v3`,children:`watermark embed quickstart`}),` to migrate.`]}),_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`After v2 support ends`}),` (from 09:00 KST on October 9, 2026, which is 00:00 UTC):`]}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Authentication and permission checks still run first, so `,_jsx(_components.code,{children:`401`}),` and `,_jsx(_components.code,{children:`403`}),` errors are returned as before.`]}),`\n`,_jsxs(_components.li,{children:[`Authenticated requests to the v2 watermark embed and extract endpoints return `,_jsx(_components.code,{children:`410 Gone`}),` with `,_jsx(_components.code,{children:`{ \"code\": \"WATERMARK_V2_API_SUNSET\" }`}),`, for both live and `,_jsx(_components.code,{children:`sk_test_`}),` keys. The `,_jsx(_components.code,{children:`Link`}),` header points to the v3 endpoint. Create new orders with v3.`]}),`\n`,_jsxs(_components.li,{children:[`v2 orders that have not started processing by then fail without being processed. The order details (`,_jsx(_components.code,{children:`errors.errorCode`}),`) and the failed webhook carry `,_jsx(_components.code,{children:`WATERMARK_V2_API_SUNSET`}),` with a message pointing to v3. The order is not charged, and its credits are restored.`]}),`\n`,_jsx(_components.li,{children:`Orders already processing at that time finish and record their result. No new run starts for them afterwards.`}),`\n`,_jsx(_components.li,{children:`You can still get existing v2 orders and download results and reports that were already created, within the existing retention period. New v2 reports cannot be created or regenerated.`}),`\n`]}),_jsxs(_components.p,{children:[`Until then, the request and response behavior is unchanged, except that every response from these endpoints includes the `,_jsx(_components.code,{children:`Deprecation: true`}),`, `,_jsx(_components.code,{children:`Sunset: Fri, 09 Oct 2026 00:00:00 GMT`}),`, and `,_jsx(_components.code,{children:`Link`}),` headers.`]})]}),`\n`,_jsx(Warning,{children:_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`v3 watermark extract cannot detect watermarks embedded with v2.`}),` Switching to the v3 endpoint does not make existing v2-watermarked images detectable, and there will be no exception for v2 detection after v2 support ends.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`response-after-support-ends`,children:`Response after support ends`}),`\n`,_jsx(_components.p,{children:`From 09:00 KST on October 9, 2026 (00:00 UTC), an authenticated request to this endpoint returns:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`7`,language:`http`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`http`,children:_jsxs(_components.code,{language:`http`,numberOfLines:`7`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`HTTP`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`/`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`1.1`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:` 410`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` Gone`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`Content-Type`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` application/json; charset=utf-8`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`Deprecation`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` true`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`Sunset`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` Fri, 09 Oct 2026 00:00:00 GMT`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`Link`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \u003c/api/v3/orders/wtr-embed>; rel=\"successor-version\"`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{ `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"code\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"WATERMARK_V2_API_SUNSET\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})]}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`Send a new request to the v3 endpoint in the `,_jsx(_components.code,{children:`Link`}),` header.`]}),`\n`,_jsx(Note,{children:_jsxs(_components.p,{children:[`With an `,_jsx(_components.code,{children:`sk_test_`}),` key, upload to the returned BIZ MORI test upload URL. The order moves to processing after its uploads finish, without a confirm call. Test processing does not create a downloadable result file.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`download-order-results`,children:`Download order results`}),`\n`,_jsxs(_components.p,{children:[`Once your order reaches `,_jsx(_components.code,{children:`complete`}),` status, call `,_jsx(_components.a,{href:`/api-reference/orders/download-order-v3`,children:`Get order result download URLs`}),`. One call returns a URL for each output file in `,_jsx(_components.code,{children:`files[]`}),` and a ZIP archive of all results in `,_jsx(_components.code,{children:`archiveUrl`}),`:`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`2`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`2`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`curl`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -X`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` GET`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` https://api.bizmori.com/api/v3/orders/{orderId}/download`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -H`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"Authorization: Bearer YOUR_API_KEY\"`})]}),`\n`]})})}),`\n`,_jsx(Warning,{children:_jsxs(_components.p,{children:[`The URLs are valid for up to 1 hour, so request new ones each time you download. You can download files until the order’s `,_jsx(_components.code,{children:`expiresAt`}),`; after that, the endpoint returns `,_jsx(_components.code,{children:`400 ORDER_EXPIRED`}),`. For an `,_jsx(_components.code,{children:`sk_test_`}),` order, the URLs point to fixed sample files instead of your results.`]})})]})}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":"v2","title":"Create watermark embed order","openapi":"api-reference/openapi.yaml POST /api/v2/orders/wtr-embed","description":"**Support ended.** This endpoint ended support at 09:00 KST on October 9, 2026 (00:00 UTC). Use `POST /api/v3/orders/wtr-embed` 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-embed>; 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 embedding order.\n- Up to 10 watermark texts per image\n- Up to 100 files per order\n- Supported image formats (IMG): jpg, jpeg, png, webp, bmp, tiff\n- Supported document formats (DOCUMENT): pdf\n\n## Input Modes (Upload / URL / Mixed)\nThe input mode is determined by the presence of `originalFileUrl` in each file object:\n- **Upload mode** (no `originalFileUrl`): Presigned URL issued → Client uploads to S3 → Processing starts automatically\n- **URL mode** (`originalFileUrl` provided): Image downloaded from the URL and processed immediately\n- **Mixed mode**: Some files in Upload mode, others in URL mode simultaneously\n\n### Behavior\n| Condition | Order Status | Confirm Required |\n|-----------|-------------|-----------------|\n| All files have `originalFileUrl` | `pending` | No (auto-starts after server downloads) |\n| Any file without `originalFileUrl` | `pending` | No (auto-starts after upload) |\n\n\u003cNote>Unlike Anti-AI and AI Detection, Watermark Embed does not require a separate confirm step. Processing starts automatically after file upload completes.\u003c/Note>\n","href":"/api-reference/watermark-embed/create-order"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Response after support ends","slug":"response-after-support-ends","depth":2,"children":[]},{"title":"Download order results","slug":"download-order-results","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"summary":"Create watermark embed order","operationId":"createWatermarkEmbedOrder","deprecated":true,"description":"**Support ended.** This endpoint ended support at 09:00 KST on October 9, 2026 (00:00 UTC). Use `POST /api/v3/orders/wtr-embed` 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-embed>; 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 embedding order.\n- Up to 10 watermark texts per image\n- Up to 100 files per order\n- Supported image formats (IMG): jpg, jpeg, png, webp, bmp, tiff\n- Supported document formats (DOCUMENT): pdf\n\n## Input Modes (Upload / URL / Mixed)\nThe input mode is determined by the presence of `originalFileUrl` in each file object:\n- **Upload mode** (no `originalFileUrl`): Presigned URL issued → Client uploads to S3 → Processing starts automatically\n- **URL mode** (`originalFileUrl` provided): Image downloaded from the URL and processed immediately\n- **Mixed mode**: Some files in Upload mode, others in URL mode simultaneously\n\n### Behavior\n| Condition | Order Status | Confirm Required |\n|-----------|-------------|-----------------|\n| All files have `originalFileUrl` | `pending` | No (auto-starts after server downloads) |\n| Any file without `originalFileUrl` | `pending` | No (auto-starts after upload) |\n\n\u003cNote>Unlike Anti-AI and AI Detection, Watermark Embed does not require a separate confirm step. Processing starts automatically after file upload completes.\u003c/Note>\n","tags":["Watermark Embed"],"security":["4191bd7f-6bc9-479b-8184-233b25f97f4b"],"requestBody":"119af40d-6629-4f10-8872-898a9a1d3783","responses":{"200":"b4bcc4f4-70c0-4902-937a-b0a0b4c9daee","400":"7a8a17fd-6a51-44e3-ac97-f01f8d5e0465","401":"e96d608a-69ac-4e17-9798-4db1dc844c20","403":"71d59a0e-8e67-40ad-ae64-aa8d8d1b8f9f","410":"defce11d-29e8-47c3-bd78-5693726cae64","429":"28ad0624-e50b-42ec-bac4-07feb0e2d95b"},"x-codeSamples":[{"lang":"curl","label":"cURL","source":"curl -X POST https://api.bizmori.com/api/v2/orders/wtr-embed \\\n -H \"Authorization: Bearer YOUR_API_TOKEN\" \\\n -H \"Content-Type: application/json\" \\\n -d '{\n \"idempotencyKey\": \"5e9c7a3b-b4d2-4f18-83e6-8b1a2d5f7c93\",\n \"files\": [\n {\n \"fileName\": \"image.jpg\",\n \"watermarks\": [{\"text\": \"MORI_WATERMARK\"}]\n }\n ]\n }'"},{"lang":"javascript","label":"JavaScript","source":"const response = await fetch('https://api.bizmori.com/api/v2/orders/wtr-embed', {\n method: 'POST',\n headers: {\n 'Authorization': 'Bearer YOUR_API_TOKEN',\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n idempotencyKey: '5e9c7a3b-b4d2-4f18-83e6-8b1a2d5f7c93',\n files: [\n {\n fileName: 'image.jpg',\n watermarks: [{ text: 'MORI_WATERMARK' }]\n }\n ]\n })\n});\nconst data = await response.json();"},{"lang":"python","label":"Python","source":"import requests\n\nresponse = requests.post(\n 'https://api.bizmori.com/api/v2/orders/wtr-embed',\n headers={'Authorization': 'Bearer YOUR_API_TOKEN'},\n json={\n 'idempotencyKey': '5e9c7a3b-b4d2-4f18-83e6-8b1a2d5f7c93',\n 'files': [\n {\n 'fileName': 'image.jpg',\n 'watermarks': [{'text': 'MORI_WATERMARK'}]\n }\n ]\n }\n)\ndata = response.json()"}],"method":"post","type":"path","servers":["12c53202-44d6-48f4-884a-b8d4bc669414"],"path":"/api/v2/orders/wtr-embed","baseUrlOptions":["https://api.bizmori.com"],"title":"Create watermark embed order","codeSamples":[{"label":"cURL","lang":"curl","source":"curl -X POST https://api.bizmori.com/api/v2/orders/wtr-embed \\\n -H \"Authorization: Bearer YOUR_API_TOKEN\" \\\n -H \"Content-Type: application/json\" \\\n -d '{\n \"idempotencyKey\": \"5e9c7a3b-b4d2-4f18-83e6-8b1a2d5f7c93\",\n \"files\": [\n {\n \"fileName\": \"image.jpg\",\n \"watermarks\": [{\"text\": \"MORI_WATERMARK\"}]\n }\n ]\n }'"},{"label":"JavaScript","lang":"javascript","source":"const response = await fetch('https://api.bizmori.com/api/v2/orders/wtr-embed', {\n method: 'POST',\n headers: {\n 'Authorization': 'Bearer YOUR_API_TOKEN',\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n idempotencyKey: '5e9c7a3b-b4d2-4f18-83e6-8b1a2d5f7c93',\n files: [\n {\n fileName: 'image.jpg',\n watermarks: [{ text: 'MORI_WATERMARK' }]\n }\n ]\n })\n});\nconst data = await response.json();"},{"label":"Python","lang":"python","source":"import requests\n\nresponse = requests.post(\n 'https://api.bizmori.com/api/v2/orders/wtr-embed',\n headers={'Authorization': 'Bearer YOUR_API_TOKEN'},\n json={\n 'idempotencyKey': '5e9c7a3b-b4d2-4f18-83e6-8b1a2d5f7c93',\n 'files': [\n {\n 'fileName': 'image.jpg',\n 'watermarks': [{'text': 'MORI_WATERMARK'}]\n }\n ]\n }\n)\ndata = response.json()"}],"requiredOnlyExamples":false,"requestExampleType":"codeSamples","responseExampleType":"generated"},"dependencies":{"parameters":{},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["idempotencyKey","files"],"properties":{"idempotencyKey":{"type":"string","description":"Idempotency key","isRequired":true,"uniqueKey":"idempotencyKey","typeLabel":"string"},"files":{"type":"array","minItems":1,"maxItems":100,"items":{"type":"object","required":["fileName","watermarks"],"properties":{"fileName":{"type":"string","description":"File name","example":"image.jpg","isRequired":true,"uniqueKey":"files.items.[INDEX].fileName","typeLabel":"string"},"watermarks":{"type":"array","minItems":1,"maxItems":10,"items":{"type":"object","required":["text"],"properties":{"text":{"type":"string","maxLength":1000,"description":"Watermark text","isRequired":true,"uniqueKey":"files.items.[INDEX].watermarks.items.[INDEX].text","typeLabel":"string"}},"uniqueKey":"files.items.[INDEX].watermarks.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"files.items.[INDEX].watermarks","typeLabel":"object[]"},"originalFileUrl":{"type":"string","format":"uri","description":"Original image URL (optional)\n- Provided: URL mode (no presigned URL issued, immediate processing)\n- Not provided: Upload mode (presigned URL issued)\n","example":"https://example.com/image.jpg","uniqueKey":"files.items.[INDEX].originalFileUrl","typeLabel":"string\u003curi>"}},"uniqueKey":"files.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"files","typeLabel":"object[]"}},"uniqueKey":"","typeLabel":"object"},"examples":{"uploadMode":{"title":"uploadMode","value":{"idempotencyKey":"5e9c7a3b-b4d2-4f18-83e6-8b1a2d5f7c93","files":[{"fileName":"image1.jpg","watermarks":[{"text":"MORI_WATERMARK"}]},{"fileName":"image2.png","watermarks":[{"text":"MORI_WATERMARK"}]}]}},"urlMode":{"title":"urlMode","value":{"idempotencyKey":"6f1d8b4c-c5e3-4029-94f7-9c2b3e6a8d04","files":[{"fileName":"image1.jpg","originalFileUrl":"https://example.com/image1.jpg","watermarks":[{"text":"MORI_WATERMARK"}]},{"fileName":"image2.png","originalFileUrl":"https://example.com/image2.png","watermarks":[{"text":"MORI_WATERMARK"}]}]}},"mixedMode":{"title":"mixedMode","value":{"idempotencyKey":"7a2e9c5d-d6f4-413a-a5b8-0d3c4f7b9e15","files":[{"fileName":"upload-file.jpg","watermarks":[{"text":"MORI_WATERMARK"}]},{"fileName":"url-file.png","originalFileUrl":"https://example.com/image.png","watermarks":[{"text":"MORI_WATERMARK"}]}]}}},"exampleType":"examples"}},"exampleType":"examples"},"responses":{"b4bcc4f4-70c0-4902-937a-b0a0b4c9daee":{"description":"Order created successfully","headers":{"Deprecation":{"description":"Indicates that this API is deprecated","schema":{"type":"string","example":"true"}},"Sunset":{"description":"When support ends (RFC 8594 HTTP-date, 09:00 KST on October 9, 2026)","schema":{"type":"string","example":"Fri, 09 Oct 2026 00:00:00 GMT"}},"Link":{"description":"Path of the successor v3 API","schema":{"type":"string","example":"\u003c/api/v3/orders/wtr-embed>; rel=\"successor-version\""}}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"orderName":{"type":"string","uniqueKey":"data.orderName","typeLabel":"string"},"orderId":{"type":"string","uniqueKey":"data.orderId","typeLabel":"string"},"status":{"type":"string","enum":["pending"],"description":"Order status\n- `pending`: Always returned regardless of input mode\n","uniqueKey":"data.status","typeLabel":"enum\u003cstring>"},"files":{"type":"array","items":{"type":"object","description":"File info (fields vary by mode)\n- Upload mode: fileId, fileName, uploadUrl, fileKey, fileFormat, fileType\n- URL mode: fileId, fileName, originalFileUrl, fileKey, fileFormat, fileType","properties":{"fileId":{"type":"integer","uniqueKey":"data.files.items.[INDEX].fileId","typeLabel":"integer"},"fileName":{"type":"string","uniqueKey":"data.files.items.[INDEX].fileName","typeLabel":"string"},"uploadUrl":{"type":"string","format":"uri","description":"Upload URL, returned in upload mode only. 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. 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.","uniqueKey":"data.files.items.[INDEX].uploadUrl","typeLabel":"string\u003curi>"},"originalFileUrl":{"type":"string","format":"uri","description":"Public image URL provided in the request. Returned in URL mode only.","uniqueKey":"data.files.items.[INDEX].originalFileUrl","typeLabel":"string\u003curi>"},"fileKey":{"type":"string","description":"File identifier: an S3 object key for live keys or an isolated logical key for test keys.\n","uniqueKey":"data.files.items.[INDEX].fileKey","typeLabel":"string"},"fileFormat":{"type":"string","description":"File format.","enum":["JPG","PNG","WEBP","BMP","TIFF","PDF"],"uniqueKey":"data.files.items.[INDEX].fileFormat","typeLabel":"enum\u003cstring>"},"fileType":{"type":"string","description":"File type category.","enum":["IMG","DOCUMENT"],"uniqueKey":"data.files.items.[INDEX].fileType","typeLabel":"enum\u003cstring>"}},"uniqueKey":"data.files.items.[INDEX]","typeLabel":"object"},"uniqueKey":"data.files","typeLabel":"object[]"}},"uniqueKey":"data","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"uploadModeResponse":{"title":"uploadModeResponse","value":{"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\u0026...","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\u0026...","fileKey":"wtr-embed/424706541233094656/documents/2/document.pdf","fileFormat":"PDF","fileType":"DOCUMENT"}]}}},"urlModeResponse":{"title":"urlModeResponse","value":{"data":{"orderName":"wtr_embed_20260318120000.000","orderId":"424707536709206016","status":"pending","files":[{"fileId":2490,"fileName":"image.png","originalFileUrl":"https://example.com/image.jpg","fileKey":"wtr-embed/424707536709206016/images/1/image.png","fileFormat":"PNG","fileType":"IMG"}]}}},"mixedModeResponse":{"title":"mixedModeResponse","value":{"data":{"orderName":"wtr_embed_20260318120000.000","orderId":"424707536709206016","status":"pending","files":[{"fileId":2490,"fileName":"image.png","originalFileUrl":"https://example.com/image.jpg","fileKey":"wtr-embed/424707536709206016/images/1/image.png","fileFormat":"PNG","fileType":"IMG"},{"fileId":2491,"fileName":"photo.jpeg","uploadUrl":"https://s3.ap-northeast-2.amazonaws.com/...?X-Amz-Algorithm=AWS4-HMAC-SHA256\u0026...","fileKey":"wtr-embed/424707536709206016/images/2/photo.jpeg","fileFormat":"JPG","fileType":"IMG"}]}}}},"exampleType":"examples"}},"exampleType":"examples"},"7a8a17fd-6a51-44e3-ac97-f01f8d5e0465":{"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"},"e96d608a-69ac-4e17-9798-4db1dc844c20":{"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"},"71d59a0e-8e67-40ad-ae64-aa8d8d1b8f9f":{"description":"The API key is not allowed to use the requested mode","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string","description":"Error code","uniqueKey":"code","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"example":{"code":"AUTH_FORBIDDEN"},"examples":{"Example":{"title":"Example","value":{"code":"AUTH_FORBIDDEN"}}},"exampleType":"examples"}},"exampleType":"examples"},"defce11d-29e8-47c3-bd78-5693726cae64":{"description":"v2 watermark support has ended (from 09:00 KST on October 9, 2026). Returned only after authentication and permission checks pass. Send a new request to the v3 path in the `Link` header.","headers":{"Link":{"description":"Path of the successor v3 API","schema":{"type":"string","example":"\u003c/api/v3/orders/wtr-embed>; rel=\"successor-version\""}}},"content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string","description":"Error code","uniqueKey":"code","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"example":{"code":"WATERMARK_V2_API_SUNSET"},"examples":{"Example":{"title":"Example","value":{"code":"WATERMARK_V2_API_SUNSET"}}},"exampleType":"examples"}},"exampleType":"examples"},"28ad0624-e50b-42ec-bac4-07feb0e2d95b":{"description":"Usage limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string","description":"Error code","uniqueKey":"code","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"example":{"code":"USAGE_LIMIT_EXCEEDED"},"examples":{"Example":{"title":"Example","value":{"code":"USAGE_LIMIT_EXCEEDED"}}},"exampleType":"examples"}},"exampleType":"examples"}},"security":{"4191bd7f-6bc9-479b-8184-233b25f97f4b":{"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 embed order - ContentCare API Documentation","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{"en":{"href":"/api-reference/watermark-embed/create-order","matchLevel":0},"ko":{"href":"/ko/api-reference/watermark-embed/create-order","matchLevel":1},"ja":{"href":"/ja/api-reference/watermark-embed/create-order","matchLevel":1}}},"lastModified":"2026-10-10T04:52:08.003Z","originalFileLocation":"api-reference/watermark-embed/create-order.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=\"Support ended. This endpoint ended support at 09:00 KST on October 9, 2026 (00:00 UTC). Use POST /api/v3/orders/wtr-embed instead. Every 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: ; rel=\u0026quot;successor-version\u0026quot; headers. From 09:00 KST on October 9, 2026 (00:00 UTC): - Authentication and permission checks still run first, so 401 and 403 errors are returned as before. - Authenticated requests to the v2 watermark embed and extract endpoints return 410 Gone with { \u0026quot;code\u0026quot;: \u0026quot;WATERMARK_V2_API_SUNSET\u0026quot; }, for both live and sk_test_ keys. The Link header points to the v3 endpoint. Create new orders with v3. - 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. - Orders already processing at that time finish and record their result. No new run starts for them afterwards. 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 (originalFileUrl provided): 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.\">\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 embed order - ContentCare API Documentation\">\u003cmeta data-mint-head property=\"og:description\" content=\"Support ended. This endpoint ended support at 09:00 KST on October 9, 2026 (00:00 UTC). Use POST /api/v3/orders/wtr-embed instead. Every 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: ; rel=\u0026quot;successor-version\u0026quot; headers. From 09:00 KST on October 9, 2026 (00:00 UTC): - Authentication and permission checks still run first, so 401 and 403 errors are returned as before. - Authenticated requests to the v2 watermark embed and extract endpoints return 410 Gone with { \u0026quot;code\u0026quot;: \u0026quot;WATERMARK_V2_API_SUNSET\u0026quot; }, for both live and sk_test_ keys. The Link header points to the v3 endpoint. Create new orders with v3. - 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. - Orders already processing at that time finish and record their result. No new run starts for them afterwards. 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 (originalFileUrl provided): 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.\">\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-embed/create-order\">\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+Embed\u0026amp;title=Create+watermark+embed+order\u0026amp;description=**Support+ended.**+This+endpoint+ended+support+at+09%3A00+KST+on+October+9%2C+2026+%2800%3A00+UTC%29.+Use+%60POST+%2Fapi%2Fv3%2Forders%2Fwtr-embed%60+instead.%0A%0AEvery+response+from+th\u0026amp;theme=7c39b3866236068a07646682\u0026amp;signature=96a692b9059727045f6821317438f8f068f2c45d92b2fbe9126bf62c83c8c515\">\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 embed order - ContentCare API Documentation\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Support ended. This endpoint ended support at 09:00 KST on October 9, 2026 (00:00 UTC). Use POST /api/v3/orders/wtr-embed instead. Every 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: ; rel=\u0026quot;successor-version\u0026quot; headers. From 09:00 KST on October 9, 2026 (00:00 UTC): - Authentication and permission checks still run first, so 401 and 403 errors are returned as before. - Authenticated requests to the v2 watermark embed and extract endpoints return 410 Gone with { \u0026quot;code\u0026quot;: \u0026quot;WATERMARK_V2_API_SUNSET\u0026quot; }, for both live and sk_test_ keys. The Link header points to the v3 endpoint. Create new orders with v3. - 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. - Orders already processing at that time finish and record their result. No new run starts for them afterwards. 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 (originalFileUrl provided): 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.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://mori-7d8a16e6.mintlify.app/_mintlify/api/og/v2?division=Watermark+Embed\u0026amp;title=Create+watermark+embed+order\u0026amp;description=**Support+ended.**+This+endpoint+ended+support+at+09%3A00+KST+on+October+9%2C+2026+%2800%3A00+UTC%29.+Use+%60POST+%2Fapi%2Fv3%2Forders%2Fwtr-embed%60+instead.%0A%0AEvery+response+from+th\u0026amp;theme=7c39b3866236068a07646682\u0026amp;signature=96a692b9059727045f6821317438f8f068f2c45d92b2fbe9126bf62c83c8c515\">\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-embed/create-order\">\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-embed/create-order.md\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"en\" href=\"https://docs.contentcare.ai/api-reference/watermark-embed/create-order\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"ko\" href=\"https://docs.contentcare.ai/ko/api-reference/watermark-embed/create-order\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"ja\" href=\"https://docs.contentcare.ai/ja/api-reference/watermark-embed/create-order\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"x-default\" href=\"https://docs.contentcare.ai/api-reference/watermark-embed/create-order\">\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-embed/create-order#webpage\",\"url\":\"https://docs.contentcare.ai/api-reference/watermark-embed/create-order\",\"name\":\"Create watermark embed order\",\"description\":\"Support ended. This endpoint ended support at 09:00 KST on October 9, 2026 (00:00 UTC). Use POST /api/v3/orders/wtr-embed instead. Every 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: ; rel=\\\"successor-version\\\" headers. From 09:00 KST on October 9, 2026 (00:00 UTC): - Authentication and permission checks still run first, so 401 and 403 errors are returned as before. - 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. - 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. - Orders already processing at that time finish and record their result. No new run starts for them afterwards. 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 (originalFileUrl provided): 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.\",\"dateModified\":\"2026-10-10T04:52:08.003Z\",\"isPartOf\":{\"@id\":\"https://docs.contentcare.ai#website\"},\"breadcrumb\":{\"@id\":\"https://docs.contentcare.ai/api-reference/watermark-embed/create-order#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.contentcare.ai/api-reference/watermark-embed/create-order#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"ContentCare API Documentation\",\"item\":\"https://docs.contentcare.ai\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Create watermark embed order\",\"item\":\"https://docs.contentcare.ai/api-reference/watermark-embed/create-order\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.contentcare.ai/api-reference/watermark-embed/create-order#apireference\",\"headline\":\"Create watermark embed order\",\"name\":\"Create watermark embed order\",\"description\":\"Support ended. This endpoint ended support at 09:00 KST on October 9, 2026 (00:00 UTC). Use POST /api/v3/orders/wtr-embed instead. Every 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: ; rel=\\\"successor-version\\\" headers. From 09:00 KST on October 9, 2026 (00:00 UTC): - Authentication and permission checks still run first, so 401 and 403 errors are returned as before. - 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. - 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. - Orders already processing at that time finish and record their result. No new run starts for them afterwards. 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 (originalFileUrl provided): 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.\",\"url\":\"https://docs.contentcare.ai/api-reference/watermark-embed/create-order\",\"mainEntityOfPage\":{\"@id\":\"https://docs.contentcare.ai/api-reference/watermark-embed/create-order#webpage\"},\"dateModified\":\"2026-10-10T04:52:08.003Z\",\"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","description":"Confirms that the image upload is complete and starts processing.\n\nCall this endpoint after uploading the image to the upload URL received from the create order endpoint. The order status will change from `pending` to `inProgress`.\n\nThe detection result is delivered via webhook (`order.aiDetection.completed` or `order.aiDetection.failed`), or can be retrieved by polling the [Get order](/api-reference/orders/get-order) endpoint.\n","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","description":"Create an order that embeds invisible watermarks into images and PDFs.\n\n- Up to 100 files per order, 1–10 watermark texts per file, 1–1,000 characters per text\n- Each watermark text produces its own output file in `outputs[]` and uses 1 credit\n- Supported extensions: `jpg`, `jpeg`, `png`, `webp`, `bmp`, `tif`, `tiff`, `pdf`. BMP must be uncompressed 24-bit RGB or 1- or 8-bit grayscale. TIFF must be single-page 8-bit RGB or 1- or 8-bit grayscale, without alpha\n- A BMP or TIFF file outside that range (multi-page, 16-bit, palette, alpha, CMYK, and so on) fails the order with a public `errorCode`, and the credits are restored\n- For each file without `originalFileUrl`, upload the file with `PUT` to `files[].uploadUrl` (valid for 900 seconds)\n- Processing starts automatically when every file is uploaded. There is no confirm step\n- Orders whose files are not uploaded within 12 hours become `failed`\n- Poll [`GET /api/v3/orders/{orderId}`](/api-reference/orders/get-order-v3) until `status` is `complete`, then call the download endpoint\n","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","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","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-embed/create-order"}]},{"language":"ja","pages":[{"title":"ja","href":"/ja/api-reference/watermark-embed/create-order"}]}]},"title":"Create watermark embed 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"]}