Creates an optimization workflow that processes a previously uploaded artifact. Provide the artifact_id returned by POST /v2/optimize/artifacts as input.artifact.artifact_id.
Workflows run in supervised mode by default. The workflow pauses at human-in-the-loop review gates that allow reviewers to approve taxonomy mappings, sample enrichments, and the final publish step.
Review gates are approved in the CommerceOS web application, not through the API. When a workflow reaches status: REVIEW_PENDING, direct a reviewer to CommerceOS to evaluate and approve the active gate. Once the reviewer acts in the UI, the workflow resumes automatically and the next poll of GET /v2/optimize/workflows/{workflow_id} reflects the new state.
The brand domain name (for example, vessel.com or containerstore.com) used to scope the request to a specific brand's data and configuration. The authenticated principal must be authorized for the specified brand.
Example:
"vessel.com"
Body
application/json
Request body for creating an optimization workflow. Customer integrations should set origin to API. Supervised review gating is applied automatically.
Selects the publish target for the run's enriched catalog. Each value maps to a separate destination, allowing the same brand to publish to distinct environments.
Optional. When omitted, the run publishes to the brand's existing configured destination.
Arbitrary JSON object stored on the workflow for caller use.
Response
Workflow created
Workflow state envelope returned by POST /v2/optimize/workflows and GET /v2/optimize/workflows/{workflow_id}. The status value progresses through PENDING, then RUNNING or IN_PROGRESS, then REVIEW_PENDING, and ultimately COMPLETED. FAILED and CANCELLED are terminal alternatives.
Active human-in-the-loop review gate. Populated when status is REVIEW_PENDING. One of VALIDATION_REVIEW, TAXONOMY_REVIEW, SAMPLE_REVIEW, ENRICHMENT_SAMPLE_REVIEW, FULL_ENRICHMENT_REVIEW, ENRICHMENT_FULL_REVIEW, or PUBLISH_APPROVAL.
Phase-keyed progress for the workflow, computed at read time. The phases object contains one key per phase (validation, taxonomy, enrichment, publish), each carrying a phase-specific structure.
Aggregate counts across categories at the current enrichment-side review gate. This summary supports diagnosing which categories are blocking progression. For non-enrichment gates (taxonomy, validation, publish) the counts are typically zero, because those gates are workflow-level rather than per-category.
Resolved reference for the created_by and updated_by audit fields. A type of unknown is returned when the referenced identifier can no longer be resolved (for example, when a user has been hard-deleted).
Resolved reference for the created_by and updated_by audit fields. A type of unknown is returned when the referenced identifier can no longer be resolved (for example, when a user has been hard-deleted).
Show child attributes
Was this page helpful?
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Fabric","colors":{"primary":"#ff2ec1","light":"#ff2ec1","dark":"#ff2ec1"},"logo":{"light":"https://mintcdn.com/fabric-demo/OzlZxX-hOwze1Aen/logo/darkneon.png?fit=max\u0026auto=format\u0026n=OzlZxX-hOwze1Aen\u0026q=85\u0026s=332d2284d5f41dc42f5b9e0bcd473872","dark":"https://mintcdn.com/fabric-demo/OzlZxX-hOwze1Aen/logo/darkneon.png?fit=max\u0026auto=format\u0026n=OzlZxX-hOwze1Aen\u0026q=85\u0026s=332d2284d5f41dc42f5b9e0bcd473872","href":"https://developer.fabric.inc"},"favicon":"https://mintcdn.com/fabric-demo/ZXHlkaduf1S9hYir/neon-favicon.webp?fit=max\u0026auto=format\u0026n=ZXHlkaduf1S9hYir\u0026q=85\u0026s=fc87341b907a3b0ed573af9c896468b2","navbar":{"primary":{"type":"button","label":"Request Demo","href":"https://fabric.inc/demo-request"}},"footer":{"socials":{"twitter":"https://twitter.com/fabric_commerce?lang=en","linkedin":"https://www.linkedin.com/company/teamfabric"}},"integrations":{"ga4":{"measurementId":"G-5RS60WM116"}},"contextual":{"options":["copy","chatgpt","claude","perplexity","mcp","cursor","vscode"],"display":"header"},"styling":{"latex":true},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"fabric-demo","hasAudioNarration":false,"actualSubdomain":"fabric-demo","customDomains":["developer.fabric.inc"],"gitSource":{"type":"gitlab","owner":"fabric2/docs","repo":"developer-docs","projectId":58049997,"deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6a27c05109a51e5ad494d5d6","collectionId":"7afabdbc-2ae6-4c34-9795-efeea513c17c","schemaVersion":"v3"},"feedback":{"thumbs":true,"edits":true,"issues":true},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"REMOVE_BRANDING":{"status":"ENABLED"},"CONTEXTUAL_FEEDBACK":{"status":"ENABLED"},"CODE_SNIPPET_FEEDBACK":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6a905beb40741431493de2c3:failure","clientVersion":"0.0.4006","searchFilterCounts":[{"language":"default","tag":"API Reference","count":721},{"language":"default","tag":"Orders \u0026 Inventory","count":276},{"language":"default","tag":"Product Catalog","count":245},{"language":"default","tag":"Dropship","count":242},{"language":"default","tag":"Orders v2 (OMS v2)","count":162},{"language":"default","tag":"Orders API Endpoints","count":145},{"language":"default","tag":"Customer","count":144},{"language":"default","tag":"Offers","count":118},{"language":"default","tag":"Product Catalog API","count":102},{"language":"default","tag":"Orders v1 (OMS v1)","count":100}]},"assistantConfig":{},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"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":"workos-sso-scim","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},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[{"filePath":"style.css","content":"/* devanagari */\n@font-face {\n font-family: 'Poppins';\n font-style: italic;\n font-weight: 100;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/poppins/v24/pxiAyp8kv8JHgFVrJJLmE0tDMPKzSQ.woff2) format('woff2');\n unicode-range: U+0900-097F, U+1CD0-1CF4, U+1CF7-1CF9, U+200C-200D, U+20A8, U+20B9, U+20F0, U+25CC, U+A830-A839, U+A8E0-A8FF, U+11B00-11B0A;\n}\n/* latin-ext */\n@font-face {\n font-family: 'Poppins';\n font-style: italic;\n font-weight: 100;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/poppins/v24/pxiAyp8kv8JHgFVrJJLmE0tMMPKzSQ.woff2) format('woff2');\n unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n/* latin */\n@font-face {\n font-family: 'Poppins';\n font-style: italic;\n font-weight: 100;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/poppins/v24/pxiAyp8kv8JHgFVrJJLmE0tCMPI.woff2) format('woff2');\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n/* devanagari */\n@font-face {\n font-family: 'Poppins';\n font-style: italic;\n font-weight: 200;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/poppins/v24/pxiDyp8kv8JHgFVrJJLmv1pVFteOcEg.woff2) format('woff2');\n unicode-range: U+0900-097F, U+1CD0-1CF4, U+1CF7-1CF9, U+200C-200D, U+20A8, U+20B9, U+20F0, U+25CC, U+A830-A839, U+A8E0-A8FF, U+11B00-11B0A;\n}\n/* latin-ext */\n@font-face {\n font-family: 'Poppins';\n font-style: italic;\n font-weight: 200;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/poppins/v24/pxiDyp8kv8JHgFVrJJLmv1pVGdeOcEg.woff2) format('woff2');\n unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n/* latin */\n@font-face {\n font-family: 'Poppins';\n font-style: italic;\n font-weight: 200;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/poppins/v24/pxiDyp8kv8JHgFVrJJLmv1pVF9eO.woff2) format('woff2');\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n/* devanagari */\n@font-face {\n font-family: 'Poppins';\n font-style: italic;\n font-weight: 300;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/poppins/v24/pxiDyp8kv8JHgFVrJJLm21lVFteOcEg.woff2) format('woff2');\n unicode-range: U+0900-097F, U+1CD0-1CF4, U+1CF7-1CF9, U+200C-200D, U+20A8, U+20B9, U+20F0, U+25CC, U+A830-A839, U+A8E0-A8FF, U+11B00-11B0A;\n}\n/* latin-ext */\n@font-face {\n font-family: 'Poppins';\n font-style: italic;\n font-weight: 300;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/poppins/v24/pxiDyp8kv8JHgFVrJJLm21lVGdeOcEg.woff2) format('woff2');\n unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n/* latin */\n@font-face {\n font-family: 'Poppins';\n font-style: italic;\n font-weight: 300;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/poppins/v24/pxiDyp8kv8JHgFVrJJLm21lVF9eO.woff2) format('woff2');\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n/* devanagari */\n@font-face {\n font-family: 'Poppins';\n font-style: italic;\n font-weight: 400;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/poppins/v24/pxiGyp8kv8JHgFVrJJLucXtAKPY.woff2) format('woff2');\n unicode-range: U+0900-097F, U+1CD0-1CF4, U+1CF7-1CF9, U+200C-200D, U+20A8, U+20B9, U+20F0, U+25CC, U+A830-A839, U+A8E0-A8FF, U+11B00-11B0A;\n}\n/* latin-ext */\n@font-face {\n font-family: 'Poppins';\n font-style: italic;\n font-weight: 400;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/poppins/v24/pxiGyp8kv8JHgFVrJJLufntAKPY.woff2) format('woff2');\n unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n/* latin */\n@font-face {\n font-family: 'Poppins';\n font-style: italic;\n font-weight: 400;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/poppins/v24/pxiGyp8kv8JHgFVrJJLucHtA.woff2) format('woff2');\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n/* devanagari */\n@font-face {\n font-family: 'Poppins';\n font-style: italic;\n font-weight: 500;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/poppins/v24/pxiDyp8kv8JHgFVrJJLmg1hVFteOcEg.woff2) format('woff2');\n unicode-range: U+0900-097F, U+1CD0-1CF4, U+1CF7-1CF9, U+200C-200D, U+20A8, U+20B9, U+20F0, U+25CC, U+A830-A839, U+A8E0-A8FF, U+11B00-11B0A;\n}\n/* latin-ext */\n@font-face {\n font-family: 'Poppins';\n font-style: italic;\n font-weight: 500;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/poppins/v24/pxiDyp8kv8JHgFVrJJLmg1hVGdeOcEg.woff2) format('woff2');\n unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n/* latin */\n@font-face {\n font-family: 'Poppins';\n font-style: italic;\n font-weight: 500;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/poppins/v24/pxiDyp8kv8JHgFVrJJLmg1hVF9eO.woff2) format('woff2');\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n/* devanagari */\n@font-face {\n font-family: 'Poppins';\n font-style: italic;\n font-weight: 600;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/poppins/v24/pxiDyp8kv8JHgFVrJJLmr19VFteOcEg.woff2) format('woff2');\n unicode-range: U+0900-097F, U+1CD0-1CF4, U+1CF7-1CF9, U+200C-200D, U+20A8, U+20B9, U+20F0, U+25CC, U+A830-A839, U+A8E0-A8FF, U+11B00-11B0A;\n}\n/* latin-ext */\n@font-face {\n font-family: 'Poppins';\n font-style: italic;\n font-weight: 600;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/poppins/v24/pxiDyp8kv8JHgFVrJJLmr19VGdeOcEg.woff2) format('woff2');\n unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n/* latin */\n@font-face {\n font-family: 'Poppins';\n font-style: italic;\n font-weight: 600;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/poppins/v24/pxiDyp8kv8JHgFVrJJLmr19VF9eO.woff2) format('woff2');\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n/* devanagari */\n@font-face {\n font-family: 'Poppins';\n font-style: italic;\n font-weight: 700;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/poppins/v24/pxiDyp8kv8JHgFVrJJLmy15VFteOcEg.woff2) format('woff2');\n unicode-range: U+0900-097F, U+1CD0-1CF4, U+1CF7-1CF9, U+200C-200D, U+20A8, U+20B9, U+20F0, U+25CC, U+A830-A839, U+A8E0-A8FF, U+11B00-11B0A;\n}\n/* latin-ext */\n@font-face {\n font-family: 'Poppins';\n font-style: italic;\n font-weight: 700;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/poppins/v24/pxiDyp8kv8JHgFVrJJLmy15VGdeOcEg.woff2) format('woff2');\n unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n/* latin */\n@font-face {\n font-family: 'Poppins';\n font-style: italic;\n font-weight: 700;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/poppins/v24/pxiDyp8kv8JHgFVrJJLmy15VF9eO.woff2) format('woff2');\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n/* devanagari */\n@font-face {\n font-family: 'Poppins';\n font-style: italic;\n font-weight: 800;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/poppins/v24/pxiDyp8kv8JHgFVrJJLm111VFteOcEg.woff2) format('woff2');\n unicode-range: U+0900-097F, U+1CD0-1CF4, U+1CF7-1CF9, U+200C-200D, U+20A8, U+20B9, U+20F0, U+25CC, U+A830-A839, U+A8E0-A8FF, U+11B00-11B0A;\n}\n/* latin-ext */\n@font-face {\n font-family: 'Poppins';\n font-style: italic;\n font-weight: 800;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/poppins/v24/pxiDyp8kv8JHgFVrJJLm111VGdeOcEg.woff2) format('woff2');\n unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n/* latin */\n@font-face {\n font-family: 'Poppins';\n font-style: italic;\n font-weight: 800;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/poppins/v24/pxiDyp8kv8JHgFVrJJLm111VF9eO.woff2) format('woff2');\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n/* devanagari */\n@font-face {\n font-family: 'Poppins';\n font-style: italic;\n font-weight: 900;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/poppins/v24/pxiDyp8kv8JHgFVrJJLm81xVFteOcEg.woff2) format('woff2');\n unicode-range: U+0900-097F, U+1CD0-1CF4, U+1CF7-1CF9, U+200C-200D, U+20A8, U+20B9, U+20F0, U+25CC, U+A830-A839, U+A8E0-A8FF, U+11B00-11B0A;\n}\n/* latin-ext */\n@font-face {\n font-family: 'Poppins';\n font-style: italic;\n font-weight: 900;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/poppins/v24/pxiDyp8kv8JHgFVrJJLm81xVGdeOcEg.woff2) format('woff2');\n unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n/* latin */\n@font-face {\n font-family: 'Poppins';\n font-style: italic;\n font-weight: 900;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/poppins/v24/pxiDyp8kv8JHgFVrJJLm81xVF9eO.woff2) format('woff2');\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n/* devanagari */\n@font-face {\n font-family: 'Poppins';\n font-style: normal;\n font-weight: 100;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/poppins/v24/pxiGyp8kv8JHgFVrLPTucXtAKPY.woff2) format('woff2');\n unicode-range: U+0900-097F, U+1CD0-1CF4, U+1CF7-1CF9, U+200C-200D, U+20A8, U+20B9, U+20F0, U+25CC, U+A830-A839, U+A8E0-A8FF, U+11B00-11B0A;\n}\n/* latin-ext */\n@font-face {\n font-family: 'Poppins';\n font-style: normal;\n font-weight: 100;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/poppins/v24/pxiGyp8kv8JHgFVrLPTufntAKPY.woff2) format('woff2');\n unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n/* latin */\n@font-face {\n font-family: 'Poppins';\n font-style: normal;\n font-weight: 100;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/poppins/v24/pxiGyp8kv8JHgFVrLPTucHtA.woff2) format('woff2');\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n/* devanagari */\n@font-face {\n font-family: 'Poppins';\n font-style: normal;\n font-weight: 200;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/poppins/v24/pxiByp8kv8JHgFVrLFj_Z11lFc-K.woff2) format('woff2');\n unicode-range: U+0900-097F, U+1CD0-1CF4, U+1CF7-1CF9, U+200C-200D, U+20A8, U+20B9, U+20F0, U+25CC, U+A830-A839, U+A8E0-A8FF, U+11B00-11B0A;\n}\n/* latin-ext */\n@font-face {\n font-family: 'Poppins';\n font-style: normal;\n font-weight: 200;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/poppins/v24/pxiByp8kv8JHgFVrLFj_Z1JlFc-K.woff2) format('woff2');\n unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n/* latin */\n@font-face {\n font-family: 'Poppins';\n font-style: normal;\n font-weight: 200;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/poppins/v24/pxiByp8kv8JHgFVrLFj_Z1xlFQ.woff2) format('woff2');\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n/* devanagari */\n@font-face {\n font-family: 'Poppins';\n font-style: normal;\n font-weight: 300;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/poppins/v24/pxiByp8kv8JHgFVrLDz8Z11lFc-K.woff2) format('woff2');\n unicode-range: U+0900-097F, U+1CD0-1CF4, U+1CF7-1CF9, U+200C-200D, U+20A8, U+20B9, U+20F0, U+25CC, U+A830-A839, U+A8E0-A8FF, U+11B00-11B0A;\n}\n/* latin-ext */\n@font-face {\n font-family: 'Poppins';\n font-style: normal;\n font-weight: 300;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/poppins/v24/pxiByp8kv8JHgFVrLDz8Z1JlFc-K.woff2) format('woff2');\n unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n/* latin */\n@font-face {\n font-family: 'Poppins';\n font-style: normal;\n font-weight: 300;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/poppins/v24/pxiByp8kv8JHgFVrLDz8Z1xlFQ.woff2) format('woff2');\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n/* devanagari */\n@font-face {\n font-family: 'Poppins';\n font-style: normal;\n font-weight: 400;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/poppins/v24/pxiEyp8kv8JHgFVrJJbecmNE.woff2) format('woff2');\n unicode-range: U+0900-097F, U+1CD0-1CF4, U+1CF7-1CF9, U+200C-200D, U+20A8, U+20B9, U+20F0, U+25CC, U+A830-A839, U+A8E0-A8FF, U+11B00-11B0A;\n}\n/* latin-ext */\n@font-face {\n font-family: 'Poppins';\n font-style: normal;\n font-weight: 400;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/poppins/v24/pxiEyp8kv8JHgFVrJJnecmNE.woff2) format('woff2');\n unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n/* latin */\n@font-face {\n font-family: 'Poppins';\n font-style: normal;\n font-weight: 400;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/poppins/v24/pxiEyp8kv8JHgFVrJJfecg.woff2) format('woff2');\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n/* devanagari */\n@font-face {\n font-family: 'Poppins';\n font-style: normal;\n font-weight: 500;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/poppins/v24/pxiByp8kv8JHgFVrLGT9Z11lFc-K.woff2) format('woff2');\n unicode-range: U+0900-097F, U+1CD0-1CF4, U+1CF7-1CF9, U+200C-200D, U+20A8, U+20B9, U+20F0, U+25CC, U+A830-A839, U+A8E0-A8FF, U+11B00-11B0A;\n}\n/* latin-ext */\n@font-face {\n font-family: 'Poppins';\n font-style: normal;\n font-weight: 500;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/poppins/v24/pxiByp8kv8JHgFVrLGT9Z1JlFc-K.woff2) format('woff2');\n unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n/* latin */\n@font-face {\n font-family: 'Poppins';\n font-style: normal;\n font-weight: 500;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/poppins/v24/pxiByp8kv8JHgFVrLGT9Z1xlFQ.woff2) format('woff2');\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n/* devanagari */\n@font-face {\n font-family: 'Poppins';\n font-style: normal;\n font-weight: 600;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/poppins/v24/pxiByp8kv8JHgFVrLEj6Z11lFc-K.woff2) format('woff2');\n unicode-range: U+0900-097F, U+1CD0-1CF4, U+1CF7-1CF9, U+200C-200D, U+20A8, U+20B9, U+20F0, U+25CC, U+A830-A839, U+A8E0-A8FF, U+11B00-11B0A;\n}\n/* latin-ext */\n@font-face {\n font-family: 'Poppins';\n font-style: normal;\n font-weight: 600;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/poppins/v24/pxiByp8kv8JHgFVrLEj6Z1JlFc-K.woff2) format('woff2');\n unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n/* latin */\n@font-face {\n font-family: 'Poppins';\n font-style: normal;\n font-weight: 600;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/poppins/v24/pxiByp8kv8JHgFVrLEj6Z1xlFQ.woff2) format('woff2');\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n/* devanagari */\n@font-face {\n font-family: 'Poppins';\n font-style: normal;\n font-weight: 700;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/poppins/v24/pxiByp8kv8JHgFVrLCz7Z11lFc-K.woff2) format('woff2');\n unicode-range: U+0900-097F, U+1CD0-1CF4, U+1CF7-1CF9, U+200C-200D, U+20A8, U+20B9, U+20F0, U+25CC, U+A830-A839, U+A8E0-A8FF, U+11B00-11B0A;\n}\n/* latin-ext */\n@font-face {\n font-family: 'Poppins';\n font-style: normal;\n font-weight: 700;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/poppins/v24/pxiByp8kv8JHgFVrLCz7Z1JlFc-K.woff2) format('woff2');\n unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n/* latin */\n@font-face {\n font-family: 'Poppins';\n font-style: normal;\n font-weight: 700;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/poppins/v24/pxiByp8kv8JHgFVrLCz7Z1xlFQ.woff2) format('woff2');\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n/* devanagari */\n@font-face {\n font-family: 'Poppins';\n font-style: normal;\n font-weight: 800;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/poppins/v24/pxiByp8kv8JHgFVrLDD4Z11lFc-K.woff2) format('woff2');\n unicode-range: U+0900-097F, U+1CD0-1CF4, U+1CF7-1CF9, U+200C-200D, U+20A8, U+20B9, U+20F0, U+25CC, U+A830-A839, U+A8E0-A8FF, U+11B00-11B0A;\n}\n/* latin-ext */\n@font-face {\n font-family: 'Poppins';\n font-style: normal;\n font-weight: 800;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/poppins/v24/pxiByp8kv8JHgFVrLDD4Z1JlFc-K.woff2) format('woff2');\n unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n/* latin */\n@font-face {\n font-family: 'Poppins';\n font-style: normal;\n font-weight: 800;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/poppins/v24/pxiByp8kv8JHgFVrLDD4Z1xlFQ.woff2) format('woff2');\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n/* devanagari */\n@font-face {\n font-family: 'Poppins';\n font-style: normal;\n font-weight: 900;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/poppins/v24/pxiByp8kv8JHgFVrLBT5Z11lFc-K.woff2) format('woff2');\n unicode-range: U+0900-097F, U+1CD0-1CF4, U+1CF7-1CF9, U+200C-200D, U+20A8, U+20B9, U+20F0, U+25CC, U+A830-A839, U+A8E0-A8FF, U+11B00-11B0A;\n}\n/* latin-ext */\n@font-face {\n font-family: 'Poppins';\n font-style: normal;\n font-weight: 900;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/poppins/v24/pxiByp8kv8JHgFVrLBT5Z1JlFc-K.woff2) format('woff2');\n unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n/* latin */\n@font-face {\n font-family: 'Poppins';\n font-style: normal;\n font-weight: 900;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/poppins/v24/pxiByp8kv8JHgFVrLBT5Z1xlFQ.woff2) format('woff2');\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\na,body,h1,h2,h3,h4,h5,h6,html,p,span{font-family:Poppins}#navbar,#navbar .bg-background-light{background:#000}#navbar #search-bar-entry{background:rgb(var(--background-dark)/var(--tw-bg-opacity))}#navbar [id^=radix].bg-background-light{border-radius:8px;background:#fff;color:rgb(var(--gray-500));border:0}#navbar .dark\\:text-gray-300{color:rgb(var(--gray-300))}#navbar .dark\\:bg-primary-light{--tw-bg-opacity:1;background-color:rgb(var(--primary-light)/var(--tw-bg-opacity))}#navbar .text-gray-800{color:rgb(var(--gray-200))}#navbar .text-gray-600{color:#d4d4d4}#topbar-cta-button .rounded-full,#topbar-cta-button .rounded-full:is(.dark *){border-radius:31px;background:#000;box-shadow:0 7.57px 30.28px 0 rgba(0,0,0,.08);border:0}#topbar-cta-button .dark\\:text-primary-light,#topbar-cta-button .dark\\:text-primary-light:is(.dark *){color:#fff;text-align:center;font-size:14px;font-style:normal;font-weight:500;line-height:20px;letter-spacing:-.084px}.bodyContainer{max-width:63rem;margin:auto;background:0 0}.bodyFull{background:url(images/hero-background-unmasked-1.svg);position:relative;overflow:hidden}.bodyContainer:is(.dark *),.bodyFull:is(.dark *){background-color:transparent}.box-full{border-radius:8px;box-shadow:0 7.57px 30.28px 0 rgba(0,0,0,.08);padding:16px 20px}.box-full:is(.dark *){background-color:#4d354d;border:1px solid rgba(255,255,255,.2)}button p{font-size:18px}button .bg-primary-light{background-color:#121213}.twocol-cntr{width:75%;margin:auto;margin-top:1rem}.gap-x-4{column-gap:1rem;row-gap:1rem}.pink-boxes .card.block{background-color:#fff;border:1px solid #d9acd9;height:161px}.pink-boxes .card.block h2{font-size:28px;font-weight:300}.my-2{margin:0}.pink-boxes.dark\\:bg-background-dark:is(.dark *),.three-col.dark\\:bg-background-dark:is(.dark *),.twocol-cntr.dark\\:bg-background-dark:is(.dark *){background-color:#0c0a0f!important;z-index:-1;border-radius:15px}.pink-boxes.dark\\:bg-background-dark:is(.dark *) .card.block{background-color:transparent;border:1px solid #494949;position:relative}.three-col.dark\\:bg-background-dark:not(.dark *),.twocol-cntr.dark\\:bg-background-dark:not(.dark *){background-color:#fff!important;z-index:-1;border-radius:15px}.bg-primary{background-color:rgb(var(--gray-950)/var(--tw-bg-opacity))}.image-boxes h2{font-size:24px;font-weight:600;line-height:32px;letter-spacing:-.2px}.subtitle{text-align:center;font-size:20px;font-style:normal;font-weight:400;line-height:28px;letter-spacing:.04px;width:70%;margin:auto}.spacer{height:80px}.resource-boxes{text-align:center}.resource-boxes .dark\\:bg-background-dark:is(.dark *){background-color:#121213}.bodyContainer hr{border-color:#e3dfe2}.bodyContainer:is(.dark *) hr{border-color:#27272a}.col-lg-6{width:50%}.footer{padding-bottom:2.5rem;display:flex;background:0 0}.footer .dark\\:bg-background-dark:is(.dark *){background-color:transparent}.footer li,.footer p{font-size:14px;font-style:normal;font-weight:600;line-height:24px;letter-spacing:-.084px;margin-top:12px}.footer li a{color:#ff2ec1}.footer .updated.col-lg-6{display:flex;justify-content:flex-end}.fa-thin.fa-headphones,.fa-thin.fa-list,.fa-thin.fa-question-circle{mask-image:url(https://mintlify.b-cdn.net/v6.6.0/regular/question.svg);mask-repeat:no-repeat;mask-position:center center}.fa-thin.fa-headphones,.fa-thin.fa-list{mask-image:url(https://mintlify.b-cdn.net/v6.6.0/regular/headphones.svg)}.fa-thin.fa-list{mask-image:url(https://mintlify.b-cdn.net/v6.6.0/regular/list.svg)}.fa-thin:is(.dark *){background-color:#fff}.footer.bg-background-light{background-color:transparent}.dark\\:text-gray-400:is(.dark *){color:#fff}#navbar-transition{display:none}.callout{border-color:rgba(255 46 193 .5);background-color:rgba(255 46 193 .3)}"}],"page":{"pagePath":"product-agent/api-reference/optimize/create-workflow","slug":"/product-agent/api-reference/optimize/create-workflow","pageMetadata":{"openapi":"product-agent.openapi post /v2/optimize/workflows","title":"Create an optimization workflow","description":"Creates an optimization workflow that processes a previously uploaded artifact. Provide the `artifact_id` returned by `POST /v2/optimize/artifacts` as `input.artifact.artifact_id`.\n\nWorkflows run in supervised mode by default. The workflow pauses at human-in-the-loop review gates that allow reviewers to approve taxonomy mappings, sample enrichments, and the final publish step.\n\n**Review gates are approved in the CommerceOS web application, not through the API.** When a workflow reaches `status: REVIEW_PENDING`, direct a reviewer to [CommerceOS](https://commerceos.fabric.inc) to evaluate and approve the active gate. Once the reviewer acts in the UI, the workflow resumes automatically and the next poll of `GET /v2/optimize/workflows/{workflow_id}` reflects the new state.\n","href":"/product-agent/api-reference/optimize/create-workflow"},"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 p: \"p\",\n strong: \"strong\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsxs(_components.p, {\n children: [\"Creates an optimization workflow that processes a previously uploaded artifact. Provide the \", _jsx(_components.code, {\n children: \"artifact_id\"\n }), \" returned by \", _jsx(_components.code, {\n children: \"POST /v2/optimize/artifacts\"\n }), \" as \", _jsx(_components.code, {\n children: \"input.artifact.artifact_id\"\n }), \".\"]\n }), \"\\n\", _jsx(_components.p, {\n children: \"Workflows run in supervised mode by default. The workflow pauses at human-in-the-loop review gates that allow reviewers to approve taxonomy mappings, sample enrichments, and the final publish step.\"\n }), \"\\n\", _jsxs(_components.p, {\n children: [_jsx(_components.strong, {\n children: \"Review gates are approved in the CommerceOS web application, not through the API.\"\n }), \" When a workflow reaches \", _jsx(_components.code, {\n children: \"status: REVIEW_PENDING\"\n }), \", direct a reviewer to \", _jsx(_components.a, {\n href: \"https://commerceos.fabric.inc\",\n children: \"CommerceOS\"\n }), \" to evaluate and approve the active gate. Once the reviewer acts in the UI, the workflow resumes automatically and the next poll of \", _jsx(_components.code, {\n children: \"GET /v2/optimize/workflows/{workflow_id}\"\n }), \" reflects the new state.\"]\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{Fragment:_Fragment,jsx:_jsx}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){return _jsx(_Fragment,{})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"openapi":"product-agent.openapi post /v2/optimize/workflows","title":"Create an optimization workflow","description":"Creates an optimization workflow that processes a previously uploaded artifact. Provide the `artifact_id` returned by `POST /v2/optimize/artifacts` as `input.artifact.artifact_id`.\n\nWorkflows run in supervised mode by default. The workflow pauses at human-in-the-loop review gates that allow reviewers to approve taxonomy mappings, sample enrichments, and the final publish step.\n\n**Review gates are approved in the CommerceOS web application, not through the API.** When a workflow reaches `status: REVIEW_PENDING`, direct a reviewer to [CommerceOS](https://commerceos.fabric.inc) to evaluate and approve the active gate. Once the reviewer acts in the UI, the workflow resumes automatically and the next poll of `GET /v2/optimize/workflows/{workflow_id}` reflects the new state.\n","href":"/product-agent/api-reference/optimize/create-workflow"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":["/_mintlify/custom/fabric-demo/6a81ae5b5ebc4bb2/theme.js","/_mintlify/custom/fabric-demo/aebbe2ead0ce64f7/top-form.v1.js","/_mintlify/custom/fabric-demo/5b243c7a49e8f495/gtag.js"],"openApiReferenceData":{"operation":{"summary":"Create an optimization workflow","description":"Creates an optimization workflow that processes a previously uploaded artifact. Provide the `artifact_id` returned by `POST /v2/optimize/artifacts` as `input.artifact.artifact_id`.\n\nWorkflows run in supervised mode by default. The workflow pauses at human-in-the-loop review gates that allow reviewers to approve taxonomy mappings, sample enrichments, and the final publish step.\n\n**Review gates are approved in the CommerceOS web application, not through the API.** When a workflow reaches `status: REVIEW_PENDING`, direct a reviewer to [CommerceOS](https://commerceos.fabric.inc) to evaluate and approve the active gate. Once the reviewer acts in the UI, the workflow resumes automatically and the next poll of `GET /v2/optimize/workflows/{workflow_id}` reflects the new state.\n","operationId":"createOptimizeWorkflow","security":["f0bab2a9-e649-4581-aab3-7f46df244391"],"parameters":["1c2429db-a4ee-457b-bfa6-8169e1f9bf24"],"requestBody":"7881fa3e-75c7-4167-8a1a-f1430b9fdfe7","responses":{"201":"c5379414-0d52-477e-aa02-bcb03bdde2f9","400":"331fc6ad-b83e-4e39-8c85-da3ee6b0fcc4","401":"3fdc8ab9-db58-4ed0-aef5-9d87e17114c1","403":"8df1ccac-3496-4ef3-9a0c-affb1d24d518","404":"e618ece3-8617-4ac0-9676-2188d23fceb2","422":"fed40245-a53a-482a-beb8-ab81a727af25","500":"b8eb75a5-3325-4a92-9289-57487820b1c6"},"method":"post","type":"path","servers":["e07865d4-66ec-4299-81b1-509ce4c54f15"],"path":"/v2/optimize/workflows","baseUrlOptions":["https://commerceos.aiagents.fabric.inc/api"],"title":"Create an optimization workflow","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"1c2429db-a4ee-457b-bfa6-8169e1f9bf24":{"name":"domain","in":"header","required":true,"schema":{"type":"string","example":"vessel.com","isRequired":true,"description":"The brand domain name (for example, `vessel.com` or `containerstore.com`) used to scope the request to a specific brand's data and configuration. The authenticated principal must be authorized for the specified brand.","uniqueKey":"","typeLabel":"string"},"description":"The brand domain name (for example, `vessel.com` or `containerstore.com`) used to scope the request to a specific brand's data and configuration. The authenticated principal must be authorized for the specified brand."}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["input"],"description":"Request body for creating an optimization workflow. Customer integrations should set `origin` to `API`. Supervised review gating is applied automatically.","properties":{"input":{"type":"object","required":["artifact"],"description":"Specifies the source of the workflow's input data. Provide `artifact.artifact_id` from a prior call to `POST /v2/optimize/artifacts`.","properties":{"artifact":{"type":"object","required":["artifact_id"],"properties":{"artifact_id":{"type":"string","description":"Identifier returned by `POST /v2/optimize/artifacts`.","example":"art_95c650ded4824dc79bb6df16427e4a10","isRequired":true,"uniqueKey":"input.artifact.artifact_id","typeLabel":"string"}},"isRequired":true,"uniqueKey":"input.artifact","typeLabel":"object"}},"isRequired":true,"uniqueKey":"input","typeLabel":"object"},"name":{"oneOf":[{"type":"string","description":"Human-readable name displayed in the Commerce OS UI.","example":"Spring 2026 catalog enrichment","uniqueKey":"name.oneOf.0","typeLabel":"string"},{"type":"null","description":"Human-readable name displayed in the Commerce OS UI.","example":"Spring 2026 catalog enrichment","uniqueKey":"name.oneOf.1","typeLabel":"null"}],"uniqueKey":"name","typeLabel":"string | null"},"tags":{"oneOf":[{"type":"array","items":{"type":"string","uniqueKey":"tags.oneOf.0.items.[INDEX]","typeLabel":"string"},"example":[],"uniqueKey":"tags.oneOf.0","typeLabel":"string[]"},{"type":"null","items":{"type":"string"},"example":[],"uniqueKey":"tags.oneOf.1","typeLabel":"null"}],"uniqueKey":"tags","typeLabel":"string[] | null"},"origin":{"oneOf":[{"type":"string","enum":["COMMERCEOS","API"],"default":"API","description":"Set to `API` for customer integrations. Defaults to `API` when omitted.","uniqueKey":"origin.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","enum":["COMMERCEOS","API"],"default":"API","description":"Set to `API` for customer integrations. Defaults to `API` when omitted.","uniqueKey":"origin.oneOf.1","typeLabel":"null"}],"uniqueKey":"origin","typeLabel":"enum\u003cstring> | null"},"mode":{"oneOf":[{"type":"string","enum":["dev","test","prod"],"description":"Selects the publish target for the run's enriched catalog. Each value maps to a separate destination, allowing the same brand to publish to distinct environments.\n\nOptional. When omitted, the run publishes to the brand's existing configured destination.\n","uniqueKey":"mode.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","enum":["dev","test","prod"],"description":"Selects the publish target for the run's enriched catalog. Each value maps to a separate destination, allowing the same brand to publish to distinct environments.\n\nOptional. When omitted, the run publishes to the brand's existing configured destination.\n","uniqueKey":"mode.oneOf.1","typeLabel":"null"}],"uniqueKey":"mode","typeLabel":"enum\u003cstring> | null"},"metadata":{"oneOf":[{"type":"object","additionalProperties":true,"description":"Arbitrary JSON object stored on the workflow for caller use.","uniqueKey":"metadata.oneOf.0","typeLabel":"object"},{"type":"null","additionalProperties":true,"description":"Arbitrary JSON object stored on the workflow for caller use.","uniqueKey":"metadata.oneOf.1","typeLabel":"null"}],"uniqueKey":"metadata","typeLabel":"object | null"}},"uniqueKey":"","typeLabel":"object"},"example":{"input":{"artifact":{"artifact_id":"art_95c650ded4824dc79bb6df16427e4a10"}},"name":"Spring 2026 catalog enrichment","origin":"API","tags":[]},"examples":{"Example":{"title":"Example","value":{"input":{"artifact":{"artifact_id":"art_95c650ded4824dc79bb6df16427e4a10"}},"name":"Spring 2026 catalog enrichment","origin":"API","tags":[]}}},"exampleType":"examples"}},"exampleType":"examples"},"responses":{"c5379414-0d52-477e-aa02-bcb03bdde2f9":{"description":"Workflow created","content":{"application/json":{"schema":{"type":"object","required":["id","brand_id","status","created_at","updated_at"],"description":"Workflow state envelope returned by `POST /v2/optimize/workflows` and `GET /v2/optimize/workflows/{workflow_id}`. The `status` value progresses through `PENDING`, then `RUNNING` or `IN_PROGRESS`, then `REVIEW_PENDING`, and ultimately `COMPLETED`. `FAILED` and `CANCELLED` are terminal alternatives.\n","properties":{"id":{"type":"string","description":"Workflow identifier. Use this value to poll for status and to construct deep links into the Commerce OS UI.","example":"9349773c-27fe-4d4f-a093-a5793dff8702","isRequired":true,"uniqueKey":"id","typeLabel":"string"},"brand_id":{"type":"string","example":"691df5949676c8e0b1d7b6b3","isRequired":true,"uniqueKey":"brand_id","typeLabel":"string"},"status":{"type":"string","description":"Current lifecycle state.","enum":["PENDING","RUNNING","IN_PROGRESS","REVIEW_PENDING","COMPLETED","FAILED","CANCELLED"],"example":"REVIEW_PENDING","isRequired":true,"uniqueKey":"status","typeLabel":"enum\u003cstring>"},"created_at":{"type":"string","format":"date-time","example":"2026-05-15T10:35:00Z","isRequired":true,"uniqueKey":"created_at","typeLabel":"string\u003cdate-time>"},"updated_at":{"type":"string","format":"date-time","example":"2026-05-15T10:42:08Z","isRequired":true,"uniqueKey":"updated_at","typeLabel":"string\u003cdate-time>"},"type":{"oneOf":[{"type":"string","example":"OPTIMIZE","uniqueKey":"type.oneOf.0","typeLabel":"string"},{"type":"null","example":"OPTIMIZE","uniqueKey":"type.oneOf.1","typeLabel":"null"}],"uniqueKey":"type","typeLabel":"string | null"},"origin":{"oneOf":[{"type":"string","enum":["COMMERCEOS","API"],"example":"API","uniqueKey":"origin.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","enum":["COMMERCEOS","API"],"example":"API","uniqueKey":"origin.oneOf.1","typeLabel":"null"}],"uniqueKey":"origin","typeLabel":"enum\u003cstring> | null"},"mode":{"oneOf":[{"type":"string","enum":["dev","test","prod"],"description":"The publish target the run's enriched catalog is published to. Null when the run uses the brand's existing configured destination.","example":"prod","uniqueKey":"mode.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","enum":["dev","test","prod"],"description":"The publish target the run's enriched catalog is published to. Null when the run uses the brand's existing configured destination.","example":"prod","uniqueKey":"mode.oneOf.1","typeLabel":"null"}],"uniqueKey":"mode","typeLabel":"enum\u003cstring> | null"},"workflow_type":{"oneOf":[{"type":"string","example":null,"uniqueKey":"workflow_type.oneOf.0","typeLabel":"string"},{"type":"null","example":null,"uniqueKey":"workflow_type.oneOf.1","typeLabel":"null"}],"uniqueKey":"workflow_type","typeLabel":"string | null"},"current_step":{"oneOf":[{"type":"string","description":"Current step in the workflow. One of `VALIDATE` / `VALIDATION`, `TAXONOMY_MAP` / `TAXONOMY`, `ENRICH` / `ENRICHMENT`, or `PUBLISH` / `PUBLISHED`.\n","example":"TAXONOMY_MAP","uniqueKey":"current_step.oneOf.0","typeLabel":"string"},{"type":"null","description":"Current step in the workflow. One of `VALIDATE` / `VALIDATION`, `TAXONOMY_MAP` / `TAXONOMY`, `ENRICH` / `ENRICHMENT`, or `PUBLISH` / `PUBLISHED`.\n","example":"TAXONOMY_MAP","uniqueKey":"current_step.oneOf.1","typeLabel":"null"}],"uniqueKey":"current_step","typeLabel":"string | null"},"current_hitl_gate":{"oneOf":[{"type":"string","description":"Active human-in-the-loop review gate. Populated when `status` is `REVIEW_PENDING`. One of `VALIDATION_REVIEW`, `TAXONOMY_REVIEW`, `SAMPLE_REVIEW`, `ENRICHMENT_SAMPLE_REVIEW`, `FULL_ENRICHMENT_REVIEW`, `ENRICHMENT_FULL_REVIEW`, or `PUBLISH_APPROVAL`.\n","example":"TAXONOMY_REVIEW","uniqueKey":"current_hitl_gate.oneOf.0","typeLabel":"string"},{"type":"null","description":"Active human-in-the-loop review gate. Populated when `status` is `REVIEW_PENDING`. One of `VALIDATION_REVIEW`, `TAXONOMY_REVIEW`, `SAMPLE_REVIEW`, `ENRICHMENT_SAMPLE_REVIEW`, `FULL_ENRICHMENT_REVIEW`, `ENRICHMENT_FULL_REVIEW`, or `PUBLISH_APPROVAL`.\n","example":"TAXONOMY_REVIEW","uniqueKey":"current_hitl_gate.oneOf.1","typeLabel":"null"}],"uniqueKey":"current_hitl_gate","typeLabel":"string | null"},"name":{"oneOf":[{"type":"string","example":"Spring 2026 catalog enrichment","uniqueKey":"name.oneOf.0","typeLabel":"string"},{"type":"null","example":"Spring 2026 catalog enrichment","uniqueKey":"name.oneOf.1","typeLabel":"null"}],"uniqueKey":"name","typeLabel":"string | null"},"tags":{"type":"array","items":{"oneOf":[{}],"uniqueKey":"tags.items.[INDEX]","typeLabel":"any"},"example":[],"uniqueKey":"tags","typeLabel":"any[]"},"started_at":{"oneOf":[{"type":"string","format":"date-time","example":"2026-05-15T10:35:12Z","uniqueKey":"started_at.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","format":"date-time","example":"2026-05-15T10:35:12Z","uniqueKey":"started_at.oneOf.1","typeLabel":"null"}],"uniqueKey":"started_at","typeLabel":"string\u003cdate-time> | null"},"completed_at":{"oneOf":[{"type":"string","format":"date-time","example":null,"uniqueKey":"completed_at.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","format":"date-time","example":null,"uniqueKey":"completed_at.oneOf.1","typeLabel":"null"}],"uniqueKey":"completed_at","typeLabel":"string\u003cdate-time> | null"},"last_error":{"oneOf":[{"type":"string","description":"Most recent error message. Populated when `status` is `FAILED`.","example":null,"uniqueKey":"last_error.oneOf.0","typeLabel":"string"},{"type":"null","description":"Most recent error message. Populated when `status` is `FAILED`.","example":null,"uniqueKey":"last_error.oneOf.1","typeLabel":"null"}],"uniqueKey":"last_error","typeLabel":"string | null"},"retry_count":{"type":"integer","default":0,"example":0,"uniqueKey":"retry_count","typeLabel":"integer"},"workflow_metadata":{"oneOf":[{"type":"object","additionalProperties":true,"uniqueKey":"workflow_metadata.oneOf.0","typeLabel":"object"},{"type":"null","additionalProperties":true,"uniqueKey":"workflow_metadata.oneOf.1","typeLabel":"null"}],"uniqueKey":"workflow_metadata","typeLabel":"object | null"},"progress":{"oneOf":[{"type":"object","description":"Phase-keyed progress for the workflow, computed at read time. The `phases` object contains one key per phase (`validation`, `taxonomy`, `enrichment`, `publish`), each carrying a phase-specific structure.\n","properties":{"current_phase":{"oneOf":[{"type":"string","example":"taxonomy","uniqueKey":"progress.oneOf.0.current_phase.oneOf.0","typeLabel":"string"},{"type":"null","example":"taxonomy","uniqueKey":"progress.oneOf.0.current_phase.oneOf.1","typeLabel":"null"}],"uniqueKey":"progress.oneOf.0.current_phase","typeLabel":"string | null"},"current_step":{"oneOf":[{"type":"string","example":"TAXONOMY_MAP","uniqueKey":"progress.oneOf.0.current_step.oneOf.0","typeLabel":"string"},{"type":"null","example":"TAXONOMY_MAP","uniqueKey":"progress.oneOf.0.current_step.oneOf.1","typeLabel":"null"}],"uniqueKey":"progress.oneOf.0.current_step","typeLabel":"string | null"},"current_gate":{"oneOf":[{"type":"string","example":"TAXONOMY_REVIEW","uniqueKey":"progress.oneOf.0.current_gate.oneOf.0","typeLabel":"string"},{"type":"null","example":"TAXONOMY_REVIEW","uniqueKey":"progress.oneOf.0.current_gate.oneOf.1","typeLabel":"null"}],"uniqueKey":"progress.oneOf.0.current_gate","typeLabel":"string | null"},"phases":{"type":"object","additionalProperties":true,"description":"Phase-keyed progress map. Keys are `validation`, `taxonomy`, `enrichment`, `publish`; each value is a phase-specific progress object.","uniqueKey":"progress.oneOf.0.phases","typeLabel":"object"}},"uniqueKey":"progress.oneOf.0","typeLabel":"object"},{"type":"null","uniqueKey":"progress.oneOf.1","typeLabel":"null"}],"uniqueKey":"progress","typeLabel":"object | null"},"review_summary":{"type":"object","description":"Aggregate counts across categories at the current enrichment-side review gate. This summary supports diagnosing which categories are blocking progression. For non-enrichment gates (taxonomy, validation, publish) the counts are typically zero, because those gates are workflow-level rather than per-category.\n","properties":{"total_categories":{"type":"integer","default":0,"uniqueKey":"review_summary.total_categories","typeLabel":"integer"},"decided_categories":{"type":"integer","default":0,"uniqueKey":"review_summary.decided_categories","typeLabel":"integer"},"pending_categories":{"type":"integer","default":0,"uniqueKey":"review_summary.pending_categories","typeLabel":"integer"},"rerunning_categories":{"type":"integer","default":0,"uniqueKey":"review_summary.rerunning_categories","typeLabel":"integer"},"rejected_categories":{"type":"integer","default":0,"uniqueKey":"review_summary.rejected_categories","typeLabel":"integer"},"ready_for_publish_categories":{"type":"integer","default":0,"uniqueKey":"review_summary.ready_for_publish_categories","typeLabel":"integer"},"published_categories":{"type":"integer","default":0,"uniqueKey":"review_summary.published_categories","typeLabel":"integer"}},"uniqueKey":"review_summary","typeLabel":"object"},"reviewer_summary":{"type":"array","items":{"type":"object","required":["reviewer_user_id"],"description":"Per-reviewer summary included in the workflow response. The `name` and `email` fields are resolved from `auth_users` at read time.","properties":{"reviewer_user_id":{"type":"string","example":"user_xyz","isRequired":true,"uniqueKey":"reviewer_summary.items.[INDEX].reviewer_user_id","typeLabel":"string"},"name":{"oneOf":[{"type":"string","example":"Alex Reviewer","uniqueKey":"reviewer_summary.items.[INDEX].name.oneOf.0","typeLabel":"string"},{"type":"null","example":"Alex Reviewer","uniqueKey":"reviewer_summary.items.[INDEX].name.oneOf.1","typeLabel":"null"}],"uniqueKey":"reviewer_summary.items.[INDEX].name","typeLabel":"string | null"},"email":{"oneOf":[{"type":"string","example":"alex@acme.com","uniqueKey":"reviewer_summary.items.[INDEX].email.oneOf.0","typeLabel":"string"},{"type":"null","example":"alex@acme.com","uniqueKey":"reviewer_summary.items.[INDEX].email.oneOf.1","typeLabel":"null"}],"uniqueKey":"reviewer_summary.items.[INDEX].email","typeLabel":"string | null"},"first_name":{"oneOf":[{"type":"string","example":"Alex","uniqueKey":"reviewer_summary.items.[INDEX].first_name.oneOf.0","typeLabel":"string"},{"type":"null","example":"Alex","uniqueKey":"reviewer_summary.items.[INDEX].first_name.oneOf.1","typeLabel":"null"}],"uniqueKey":"reviewer_summary.items.[INDEX].first_name","typeLabel":"string | null"},"last_name":{"oneOf":[{"type":"string","example":"Reviewer","uniqueKey":"reviewer_summary.items.[INDEX].last_name.oneOf.0","typeLabel":"string"},{"type":"null","example":"Reviewer","uniqueKey":"reviewer_summary.items.[INDEX].last_name.oneOf.1","typeLabel":"null"}],"uniqueKey":"reviewer_summary.items.[INDEX].last_name","typeLabel":"string | null"},"category_ids":{"type":"array","items":{"type":"string","uniqueKey":"reviewer_summary.items.[INDEX].category_ids.items.[INDEX]","typeLabel":"string"},"example":["cat_apparel","cat_outerwear"],"uniqueKey":"reviewer_summary.items.[INDEX].category_ids","typeLabel":"string[]"},"categories_at_open_gate":{"type":"integer","default":0,"example":2,"uniqueKey":"reviewer_summary.items.[INDEX].categories_at_open_gate","typeLabel":"integer"},"current_gate":{"oneOf":[{"type":"string","example":"TAXONOMY_REVIEW","uniqueKey":"reviewer_summary.items.[INDEX].current_gate.oneOf.0","typeLabel":"string"},{"type":"null","example":"TAXONOMY_REVIEW","uniqueKey":"reviewer_summary.items.[INDEX].current_gate.oneOf.1","typeLabel":"null"}],"uniqueKey":"reviewer_summary.items.[INDEX].current_gate","typeLabel":"string | null"}},"uniqueKey":"reviewer_summary.items.[INDEX]","typeLabel":"object"},"uniqueKey":"reviewer_summary","typeLabel":"object[]"},"created_by":{"oneOf":[{"type":"object","description":"Resolved reference for the `created_by` and `updated_by` audit fields. A `type` of `unknown` is returned when the referenced identifier can no longer be resolved (for example, when a user has been hard-deleted).\n","required":["id","type"],"properties":{"id":{"type":"string","description":"Either `auth_users.id` or `auth_service_clients.client_id`.","example":"user_xyz","isRequired":true,"uniqueKey":"created_by.oneOf.0.id","typeLabel":"string"},"type":{"type":"string","enum":["user","service","unknown"],"description":"Indicates the principal type: `user` for end-user actors, `service` for machine clients, and `unknown` when the principal cannot be resolved.","isRequired":true,"uniqueKey":"created_by.oneOf.0.type","typeLabel":"enum\u003cstring>"},"name":{"oneOf":[{"type":"string","description":"Display name. Null when `type` is `unknown`.","example":"Alex Reviewer","uniqueKey":"created_by.oneOf.0.name.oneOf.0","typeLabel":"string"},{"type":"null","description":"Display name. Null when `type` is `unknown`.","example":"Alex Reviewer","uniqueKey":"created_by.oneOf.0.name.oneOf.1","typeLabel":"null"}],"uniqueKey":"created_by.oneOf.0.name","typeLabel":"string | null"},"email":{"oneOf":[{"type":"string","description":"Email address. Null when `type` is `service` or `unknown`.","example":"alex@acme.com","uniqueKey":"created_by.oneOf.0.email.oneOf.0","typeLabel":"string"},{"type":"null","description":"Email address. Null when `type` is `service` or `unknown`.","example":"alex@acme.com","uniqueKey":"created_by.oneOf.0.email.oneOf.1","typeLabel":"null"}],"uniqueKey":"created_by.oneOf.0.email","typeLabel":"string | null"}},"uniqueKey":"created_by.oneOf.0","typeLabel":"object"},{"type":"null","uniqueKey":"created_by.oneOf.1","typeLabel":"null"}],"uniqueKey":"created_by","typeLabel":"object | null"},"updated_by":{"oneOf":[{"type":"object","description":"Resolved reference for the `created_by` and `updated_by` audit fields. A `type` of `unknown` is returned when the referenced identifier can no longer be resolved (for example, when a user has been hard-deleted).\n","required":["id","type"],"properties":{"id":{"type":"string","description":"Either `auth_users.id` or `auth_service_clients.client_id`.","example":"user_xyz","isRequired":true,"uniqueKey":"updated_by.oneOf.0.id","typeLabel":"string"},"type":{"type":"string","enum":["user","service","unknown"],"description":"Indicates the principal type: `user` for end-user actors, `service` for machine clients, and `unknown` when the principal cannot be resolved.","isRequired":true,"uniqueKey":"updated_by.oneOf.0.type","typeLabel":"enum\u003cstring>"},"name":{"oneOf":[{"type":"string","description":"Display name. Null when `type` is `unknown`.","example":"Alex Reviewer","uniqueKey":"updated_by.oneOf.0.name.oneOf.0","typeLabel":"string"},{"type":"null","description":"Display name. Null when `type` is `unknown`.","example":"Alex Reviewer","uniqueKey":"updated_by.oneOf.0.name.oneOf.1","typeLabel":"null"}],"uniqueKey":"updated_by.oneOf.0.name","typeLabel":"string | null"},"email":{"oneOf":[{"type":"string","description":"Email address. Null when `type` is `service` or `unknown`.","example":"alex@acme.com","uniqueKey":"updated_by.oneOf.0.email.oneOf.0","typeLabel":"string"},{"type":"null","description":"Email address. Null when `type` is `service` or `unknown`.","example":"alex@acme.com","uniqueKey":"updated_by.oneOf.0.email.oneOf.1","typeLabel":"null"}],"uniqueKey":"updated_by.oneOf.0.email","typeLabel":"string | null"}},"uniqueKey":"updated_by.oneOf.0","typeLabel":"object"},{"type":"null","uniqueKey":"updated_by.oneOf.1","typeLabel":"null"}],"uniqueKey":"updated_by","typeLabel":"object | null"}},"uniqueKey":"","typeLabel":"object"},"example":{"id":"9349773c-27fe-4d4f-a093-a5793dff8702","brand_id":"691df5949676c8e0b1d7b6b3","type":"OPTIMIZE","origin":"API","mode":"prod","workflow_type":null,"status":"PENDING","current_step":null,"current_hitl_gate":null,"name":"Spring 2026 catalog enrichment","tags":[],"started_at":null,"completed_at":null,"last_error":null,"retry_count":0,"workflow_metadata":null,"progress":null,"review_summary":{"total_categories":0,"decided_categories":0,"pending_categories":0,"rerunning_categories":0,"rejected_categories":0,"ready_for_publish_categories":0,"published_categories":0},"reviewer_summary":[],"created_by":{"id":"user_xyz","type":"user","name":"Integration Bot","email":"integration@acme.com"},"updated_by":{"id":"user_xyz","type":"user","name":"Integration Bot","email":"integration@acme.com"},"created_at":"2026-05-15T10:35:00Z","updated_at":"2026-05-15T10:35:00Z"},"examples":{"Example":{"title":"Example","value":{"id":"9349773c-27fe-4d4f-a093-a5793dff8702","brand_id":"691df5949676c8e0b1d7b6b3","type":"OPTIMIZE","origin":"API","mode":"prod","workflow_type":null,"status":"PENDING","current_step":null,"current_hitl_gate":null,"name":"Spring 2026 catalog enrichment","tags":[],"started_at":null,"completed_at":null,"last_error":null,"retry_count":0,"workflow_metadata":null,"progress":null,"review_summary":{"total_categories":0,"decided_categories":0,"pending_categories":0,"rerunning_categories":0,"rejected_categories":0,"ready_for_publish_categories":0,"published_categories":0},"reviewer_summary":[],"created_by":{"id":"user_xyz","type":"user","name":"Integration Bot","email":"integration@acme.com"},"updated_by":{"id":"user_xyz","type":"user","name":"Integration Bot","email":"integration@acme.com"},"created_at":"2026-05-15T10:35:00Z","updated_at":"2026-05-15T10:35:00Z"}}},"exampleType":"examples"}},"exampleType":"examples"},"331fc6ad-b83e-4e39-8c85-da3ee6b0fcc4":{"description":"Bad request. The `input` field is missing or specifies more than one source.","content":{"application/json":{"schema":{"description":"Error response","properties":{"errors":{"description":"Errors","items":{"$circularRef":"358b1fe4-e531-4e1b-a3ce-1d6c8b9956a6"},"type":"array","uniqueKey":"errors","typeLabel":"array"},"message":{"description":"Error message","example":"Bad request","type":"string","uniqueKey":"message","typeLabel":"string"},"type":{"description":"Error type","example":"CLIENT_ERROR","type":"string","uniqueKey":"type","typeLabel":"string"}},"type":"object","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"errors":"\u003carray>","message":"Bad request","type":"CLIENT_ERROR"}}},"exampleType":"generated"}},"exampleType":"generated"},"3fdc8ab9-db58-4ed0-aef5-9d87e17114c1":{"description":"Unauthorized","content":{"application/json":{"schema":{"description":"Error response","properties":{"errors":{"description":"Errors","items":{"$circularRef":"358b1fe4-e531-4e1b-a3ce-1d6c8b9956a6"},"type":"array","uniqueKey":"errors","typeLabel":"array"},"message":{"description":"Error message","example":"Bad request","type":"string","uniqueKey":"message","typeLabel":"string"},"type":{"description":"Error type","example":"CLIENT_ERROR","type":"string","uniqueKey":"type","typeLabel":"string"}},"type":"object","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"errors":"\u003carray>","message":"Bad request","type":"CLIENT_ERROR"}}},"exampleType":"generated"}},"exampleType":"generated"},"8df1ccac-3496-4ef3-9a0c-affb1d24d518":{"description":"Forbidden. The caller is not authorized for the brand specified in the `domain` header, or the referenced artifact belongs to a different brand.","content":{"application/json":{"schema":{"description":"Error response","properties":{"errors":{"description":"Errors","items":{"$circularRef":"358b1fe4-e531-4e1b-a3ce-1d6c8b9956a6"},"type":"array","uniqueKey":"errors","typeLabel":"array"},"message":{"description":"Error message","example":"Bad request","type":"string","uniqueKey":"message","typeLabel":"string"},"type":{"description":"Error type","example":"CLIENT_ERROR","type":"string","uniqueKey":"type","typeLabel":"string"}},"type":"object","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"errors":"\u003carray>","message":"Bad request","type":"CLIENT_ERROR"}}},"exampleType":"generated"}},"exampleType":"generated"},"e618ece3-8617-4ac0-9676-2188d23fceb2":{"description":"Referenced artifact not found","content":{"application/json":{"schema":{"description":"Error response","properties":{"errors":{"description":"Errors","items":{"$circularRef":"358b1fe4-e531-4e1b-a3ce-1d6c8b9956a6"},"type":"array","uniqueKey":"errors","typeLabel":"array"},"message":{"description":"Error message","example":"Bad request","type":"string","uniqueKey":"message","typeLabel":"string"},"type":{"description":"Error type","example":"CLIENT_ERROR","type":"string","uniqueKey":"type","typeLabel":"string"}},"type":"object","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"errors":"\u003carray>","message":"Bad request","type":"CLIENT_ERROR"}}},"exampleType":"generated"}},"exampleType":"generated"},"fed40245-a53a-482a-beb8-ab81a727af25":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","description":"Validation error response body returned with HTTP 422.","properties":{"detail":{"type":"array","items":{"type":"object","required":["loc","msg","type"],"properties":{"loc":{"type":"array","items":{"oneOf":[{"type":"string","uniqueKey":"detail.items.[INDEX].loc.items.[INDEX].oneOf.0","typeLabel":"string"},{"type":"integer","uniqueKey":"detail.items.[INDEX].loc.items.[INDEX].oneOf.1","typeLabel":"integer"}],"uniqueKey":"detail.items.[INDEX].loc.items.[INDEX]","typeLabel":"string | integer"},"isRequired":true,"uniqueKey":"detail.items.[INDEX].loc","typeLabel":"(string | integer)[]"},"msg":{"type":"string","isRequired":true,"uniqueKey":"detail.items.[INDEX].msg","typeLabel":"string"},"type":{"type":"string","isRequired":true,"uniqueKey":"detail.items.[INDEX].type","typeLabel":"string"}},"uniqueKey":"detail.items.[INDEX]","typeLabel":"object"},"uniqueKey":"detail","typeLabel":"object[]"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"detail":[{"loc":["\u003cstring>"],"msg":"\u003cstring>","type":"\u003cstring>"}]}}},"exampleType":"generated"}},"exampleType":"generated"},"b8eb75a5-3325-4a92-9289-57487820b1c6":{"description":"Internal server error","content":{"application/json":{"schema":{"description":"Error response","properties":{"errors":{"description":"Errors","items":{"$circularRef":"358b1fe4-e531-4e1b-a3ce-1d6c8b9956a6"},"type":"array","uniqueKey":"errors","typeLabel":"array"},"message":{"description":"Error message","example":"Bad request","type":"string","uniqueKey":"message","typeLabel":"string"},"type":{"description":"Error type","example":"CLIENT_ERROR","type":"string","uniqueKey":"type","typeLabel":"string"}},"type":"object","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"errors":"\u003carray>","message":"Bad request","type":"CLIENT_ERROR"}}},"exampleType":"generated"}},"exampleType":"generated"}},"security":{"f0bab2a9-e649-4581-aab3-7f46df244391":{"bearerAuth":{"$ref":"944c657a-506e-475d-8695-8464f42a9db5","scopes":[]}}},"servers":{"e07865d4-66ec-4299-81b1-509ce4c54f15":{"url":"https://commerceos.aiagents.fabric.inc/api","description":"Production API"}},"schemas":{"358b1fe4-e531-4e1b-a3ce-1d6c8b9956a6":{"description":"Error response","properties":{"errors":{"description":"Errors","items":{"$circularRef":"358b1fe4-e531-4e1b-a3ce-1d6c8b9956a6"},"type":"array"},"message":{"description":"Error message","example":"Bad request","type":"string"},"type":{"description":"Error type","example":"CLIENT_ERROR","type":"string"}},"type":"object"}}},"originalFileLocation":"openapi/product-agent/product-agent.openapi.yaml"},"subdomain":"fabric-demo","siteName":"Fabric","title":"Create an optimization workflow - Fabric","navMaps":{"firstHrefInVersion":{"Product Agent":{"href":"/product-agent/api-reference/optimize/create-workflow","matchLevel":0},"v3":{"href":"/v3/home","matchLevel":4},"v2":{"href":"/v2/home","matchLevel":4}},"firstHrefInLanguage":{}},"lastModified":"2026-05-18T11:09:02.443Z","originalFileLocation":"product-agent/api-reference/optimize/create-workflow.mdx"},"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=\"Creates an optimization workflow that processes a previously uploaded artifact. Provide the artifact_id returned by POST /v2/optimize/artifacts as input.artifact.artifact_id. Workflows run in supervised mode by default. The workflow pauses at human-in-the-loop review gates that allow reviewers to approve taxonomy mappings, sample enrichments, and the final publish step. Review gates are approved in the CommerceOS web application, not through the API. When a workflow reaches status: REVIEW_PENDING, direct a reviewer to CommerceOS to evaluate and approve the active gate. Once the reviewer acts in the UI, the workflow resumes automatically and the next poll of GET /v2/optimize/workflows/{workflow_id} reflects the new state.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Fabric\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/fabric-demo/4aXl3Y2Jab1lmXrs/_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/fabric-demo/4aXl3Y2Jab1lmXrs/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/fabric-demo/4aXl3Y2Jab1lmXrs/_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/fabric-demo/4aXl3Y2Jab1lmXrs/_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/fabric-demo/4aXl3Y2Jab1lmXrs/_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/fabric-demo/4aXl3Y2Jab1lmXrs/_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/fabric-demo/4aXl3Y2Jab1lmXrs/_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/fabric-demo/4aXl3Y2Jab1lmXrs/_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/fabric-demo/4aXl3Y2Jab1lmXrs/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Create an optimization workflow - Fabric\">\u003cmeta data-mint-head property=\"og:description\" content=\"Creates an optimization workflow that processes a previously uploaded artifact. Provide the artifact_id returned by POST /v2/optimize/artifacts as input.artifact.artifact_id. Workflows run in supervised mode by default. The workflow pauses at human-in-the-loop review gates that allow reviewers to approve taxonomy mappings, sample enrichments, and the final publish step. Review gates are approved in the CommerceOS web application, not through the API. When a workflow reaches status: REVIEW_PENDING, direct a reviewer to CommerceOS to evaluate and approve the active gate. Once the reviewer acts in the UI, the workflow resumes automatically and the next poll of GET /v2/optimize/workflows/{workflow_id} reflects the new state.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Fabric\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://developer.fabric.inc/product-agent/api-reference/optimize/create-workflow\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://fabric-demo.mintlify.app/_mintlify/api/og/v2?division=Optimize\u0026amp;title=Create+an+optimization+workflow\u0026amp;description=Creates+an+optimization+workflow+that+processes+a+previously+uploaded+artifact.+Provide+the+%60artifact_id%60+returned+by+%60POST+%2Fv2%2Foptimize%2Fartifacts%60+as+%60input.ar\u0026amp;theme=d21d2e5604bc479b7e92e42c\u0026amp;signature=2e3551284a982aec181567f0449d24f1a9daab8fcb70ccfd203be5a87bf8fd2a\">\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 an optimization workflow - Fabric\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Creates an optimization workflow that processes a previously uploaded artifact. Provide the artifact_id returned by POST /v2/optimize/artifacts as input.artifact.artifact_id. Workflows run in supervised mode by default. The workflow pauses at human-in-the-loop review gates that allow reviewers to approve taxonomy mappings, sample enrichments, and the final publish step. Review gates are approved in the CommerceOS web application, not through the API. When a workflow reaches status: REVIEW_PENDING, direct a reviewer to CommerceOS to evaluate and approve the active gate. Once the reviewer acts in the UI, the workflow resumes automatically and the next poll of GET /v2/optimize/workflows/{workflow_id} reflects the new state.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://fabric-demo.mintlify.app/_mintlify/api/og/v2?division=Optimize\u0026amp;title=Create+an+optimization+workflow\u0026amp;description=Creates+an+optimization+workflow+that+processes+a+previously+uploaded+artifact.+Provide+the+%60artifact_id%60+returned+by+%60POST+%2Fv2%2Foptimize%2Fartifacts%60+as+%60input.ar\u0026amp;theme=d21d2e5604bc479b7e92e42c\u0026amp;signature=2e3551284a982aec181567f0449d24f1a9daab8fcb70ccfd203be5a87bf8fd2a\">\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/fabric-demo/4aXl3Y2Jab1lmXrs/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Fabric\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#ff2ec1\">\u003clink data-mint-head rel=\"canonical\" href=\"https://developer.fabric.inc/product-agent/api-reference/optimize/create-workflow\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/product-agent/api-reference/optimize/create-workflow.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://developer.fabric.inc/#organization\",\"name\":\"Fabric\",\"url\":\"https://developer.fabric.inc\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/fabric-demo/OzlZxX-hOwze1Aen/logo/darkneon.png?fit=max\u0026auto=format\u0026n=OzlZxX-hOwze1Aen\u0026q=85\u0026s=332d2284d5f41dc42f5b9e0bcd473872\"}},{\"@type\":\"WebSite\",\"@id\":\"https://developer.fabric.inc#website\",\"name\":\"Fabric\",\"url\":\"https://developer.fabric.inc\",\"publisher\":{\"@id\":\"https://developer.fabric.inc/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://developer.fabric.inc/product-agent/api-reference/optimize/create-workflow#webpage\",\"url\":\"https://developer.fabric.inc/product-agent/api-reference/optimize/create-workflow\",\"name\":\"Create an optimization workflow\",\"description\":\"Creates an optimization workflow that processes a previously uploaded artifact. Provide the artifact_id returned by POST /v2/optimize/artifacts as input.artifact.artifact_id. Workflows run in supervised mode by default. The workflow pauses at human-in-the-loop review gates that allow reviewers to approve taxonomy mappings, sample enrichments, and the final publish step. Review gates are approved in the CommerceOS web application, not through the API. When a workflow reaches status: REVIEW_PENDING, direct a reviewer to CommerceOS to evaluate and approve the active gate. Once the reviewer acts in the UI, the workflow resumes automatically and the next poll of GET /v2/optimize/workflows/{workflow_id} reflects the new state.\",\"dateModified\":\"2026-05-18T11:09:02.443Z\",\"isPartOf\":{\"@id\":\"https://developer.fabric.inc#website\"},\"breadcrumb\":{\"@id\":\"https://developer.fabric.inc/product-agent/api-reference/optimize/create-workflow#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://developer.fabric.inc/product-agent/api-reference/optimize/create-workflow#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"API Endpoints\",\"item\":\"https://developer.fabric.inc/product-agent/developer-guides/postman-import-csv-guide\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Create an optimization workflow\",\"item\":\"https://developer.fabric.inc/product-agent/api-reference/optimize/create-workflow\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://developer.fabric.inc/product-agent/api-reference/optimize/create-workflow#apireference\",\"headline\":\"Create an optimization workflow\",\"name\":\"Create an optimization workflow\",\"description\":\"Creates an optimization workflow that processes a previously uploaded artifact. Provide the artifact_id returned by POST /v2/optimize/artifacts as input.artifact.artifact_id. Workflows run in supervised mode by default. The workflow pauses at human-in-the-loop review gates that allow reviewers to approve taxonomy mappings, sample enrichments, and the final publish step. Review gates are approved in the CommerceOS web application, not through the API. When a workflow reaches status: REVIEW_PENDING, direct a reviewer to CommerceOS to evaluate and approve the active gate. Once the reviewer acts in the UI, the workflow resumes automatically and the next poll of GET /v2/optimize/workflows/{workflow_id} reflects the new state.\",\"url\":\"https://developer.fabric.inc/product-agent/api-reference/optimize/create-workflow\",\"mainEntityOfPage\":{\"@id\":\"https://developer.fabric.inc/product-agent/api-reference/optimize/create-workflow#webpage\"},\"dateModified\":\"2026-05-18T11:09:02.443Z\",\"publisher\":{\"@id\":\"https://developer.fabric.inc/#organization\"},\"isPartOf\":{\"@id\":\"https://developer.fabric.inc#website\"}}]}\u003c/script>","siteName":"Fabric","nav":{"global":null,"versions":[{"version":"Product Agent","tabs":[{"tab":"Home","pages":[{"title":"Home","href":"/home"}]},{"tab":"Overview","pages":[{"title":"Overview","href":"/product-agent/overview"}]},{"tab":"Monitor","pages":[{"title":"Monitor","href":"/product-agent/monitor/overview"}]},{"tab":"Activate","groups":[{"group":"Activate","pages":[{"title":"Overview","href":"/product-agent/activate/overview"},{"group":"Product Activation","pages":[{"title":"Introduction","href":"/product-agent/activate/activating-products/introduction"},{"title":"Experiments","href":"/product-agent/activate/activating-products/experiments"},{"title":"Importing Products","href":"/product-agent/activate/activating-products/importing-products"}]},{"title":"Taxonomy Mapping","href":"/product-agent/activate/taxonomy-mapping"},{"title":"Enriching Products","href":"/product-agent/activate/enriching-products"},{"title":"Sampled Enrichment","href":"/product-agent/activate/sampled-enrichment"},{"title":"Enrich All \u0026 Review","href":"/product-agent/activate/enrich-all-review"},{"title":"Publishing Products","href":"/product-agent/activate/publishing-products"}]},{"group":"API Endpoints","pages":[{"title":"Product Import Developer Guide","href":"/product-agent/developer-guides/postman-import-csv-guide"},{"group":"Authentication","pages":[{"openapi":"product-agent.openapi post /platform/v1/auth/token","title":"Create Access Token","href":"/product-agent/api-reference/authorization/get-token"}]},{"group":"Attributes","pages":[{"openapi":"product-agent.openapi post /v2/attributes/import","title":"Import attributes from CSV","href":"/product-agent/api-reference/attributes/import-attributes"},{"openapi":"product-agent.openapi get /v2/attributes/import/{import_id}","title":"Get attribute import status","href":"/product-agent/api-reference/attributes/get-import-status"}]},{"group":"Categories","pages":[{"openapi":"product-agent.openapi post /v2/categories/import","title":"Bulk Import Categories","href":"/product-agent/api-reference/categories/import-categories"},{"openapi":"product-agent.openapi get /v2/categories/import/{import_id}","title":"Get category import status","href":"/product-agent/api-reference/categories/get-import-status"}]},{"group":"Artifacts","pages":[{"openapi":"product-agent.openapi post /v2/optimize/artifacts","title":"Upload a catalog artifact","href":"/product-agent/api-reference/artifacts/upload-artifact"},{"openapi":"product-agent.openapi get /v2/optimize/artifacts/{artifact_id}","title":"Retrieve artifact metadata and download URL","description":"Returns metadata for a previously uploaded artifact along with a short-lived signed `download_url` for retrieving the original file contents. This endpoint supports inspection, auditing, and re-download of an artifact prior to starting a workflow.\n\nThe `download_url` is a presigned URL that remains valid until `download_url_expires_at`. After expiry, call this endpoint again to obtain a new URL.\n","href":"/product-agent/api-reference/artifacts/get-artifact"}]},{"group":"Optimize","pages":[{"openapi":"product-agent.openapi post /v2/optimize/workflows","title":"Create an optimization workflow","href":"/product-agent/api-reference/optimize/create-workflow"},{"openapi":"product-agent.openapi get /v2/optimize/workflows/{workflow_id}","title":"Retrieve optimization workflow status","description":"Returns the current state of an optimization workflow, including `status`, `current_step`, `current_hitl_gate` (when the workflow is paused at a review gate), per-phase progress, and aggregated review and reviewer summaries.\n\nPoll this endpoint to track a workflow through its lifecycle. A `401` response indicates that the access token has expired; re-authenticate and retry the request.\n\nThe `status` value progresses through `PENDING`, then `RUNNING` or `IN_PROGRESS`, then `REVIEW_PENDING` when paused at a human-in-the-loop gate, and ultimately `COMPLETED`. `FAILED` and `CANCELLED` are terminal alternatives.\n\n**When `status` is `REVIEW_PENDING`**, the value of `current_hitl_gate` identifies the active gate. Gate approval is performed in the [CommerceOS](https://commerceos.fabric.inc) web application — direct the assigned reviewer to CommerceOS to evaluate and approve the gate. Once the reviewer acts, the workflow resumes and subsequent polls reflect the new state.\n","href":"/product-agent/api-reference/optimize/get-workflow"}]}]}]},{"tab":"Admin \u0026 Settings","pages":[{"title":"Admin \u0026 Settings","href":"/product-agent/admin-settings/admin/overview"}]}]},{"version":"v3","pages":[{"title":"v3","href":"/v3/home"}]},{"version":"v2","pages":[{"title":"v2","href":"/v2/home"}]}]},"title":"Create an optimization workflow - Fabric","buildId":"dpl_2xiSHD9XEvLsPGPcfoMtkLTB3dy9","deploymentId":"dpl_2xiSHD9XEvLsPGPcfoMtkLTB3dy9","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-DmVyH30O.js","utils-BHQqGGOd.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-CD-E4BIt.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-Bp5Lq9Ds.js","snippetPresets-C4xAVCFP.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-CgXVLxUC.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-BF8I5oUf.js","shallow-Byd0lWnC.js","getApiPlaygroundDisplay-BGOZG1OK.js","CodeSnippet-CpvQL0CY.js","CodeSnippets-B8wkBKXa.js","Page-CBCH2P7b.js","getPastedJson-Ry3scI3Y.js","icon-D7a9HcdD.js","MethodPill-CJ8pmHhz.js","DuplicateIcon-rh1HJF0t.js","createIcon-DvGznqYs.js","DynamicMarkdown-Cc6AuSHS.js","SectionHeading-B4A0S-ep.js","axios-vUo_bRtp.js","Markdown-Cc16CX65.js","clsx-Cs6nMGht.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-zbf22OZA.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-C_fs-y5n.js"]}