Create a single article (synchronous), or bulk-import articles (asynchronous). For purchase articles, a supplier must be specified (via supplierId or supplierName). Sale articles are automatically linked to your company. Batch rows upsert idempotently on internalArticleNr. Batch form (array, or {"rows": […]} envelope, max 5000 rows) is asynchronous: it stages an import job and returns 202 with a jobId — poll GET /api/v1/import-jobs/{jobId} for progress and the final result. A single object stays synchronous (201). See the Batch Import guide.
Fallback when you have no supplierId (prefer supplierId). Matched against your existing suppliers ignoring case and surrounding/repeated whitespace; if none matches, a new supplier is created. Required for purchase articles if supplierId is not provided.
Set to true to override soft duplicate warnings. If omitted/false and the article triggers a soft warning (duplicate name or duplicate EAN), the request returns 409 with a machine-readable warnings array instead of creating the article. A hard duplicate of internalArticleNr always returns 409 and cannot be overridden.
The stored article fields. Further keys may be present and are not part of the contract; read the full article with GET /api/v1/articles/{id}.
Show child attributes
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Polygon One Helpcenter","colors":{"primary":"#15803D","light":"#07C983","dark":"#15803D"},"logo":{"light":"https://mintcdn.com/polygonone/AMoRp9VbcW46gNsT/logo/light.svg?fit=max\u0026auto=format\u0026n=AMoRp9VbcW46gNsT\u0026q=85\u0026s=4a316da81d50e49c7f9f6480a235558e","dark":"https://mintcdn.com/polygonone/AMoRp9VbcW46gNsT/logo/dark.svg?fit=max\u0026auto=format\u0026n=AMoRp9VbcW46gNsT\u0026q=85\u0026s=2f010ff600ff4880f154678933ee7214"},"favicon":"https://mintcdn.com/polygonone/ySkQMGGRhMNkPSTt/favicon.svg?fit=max\u0026auto=format\u0026n=ySkQMGGRhMNkPSTt\u0026q=85\u0026s=90cbe4fd3ee2dbffcb8de6167a8d47f3","api":{"playground":{"display":"simple"}},"navbar":{"links":[{"href":"mailto:help@polygon-one.eu","label":"Support"}],"primary":{"type":"button","label":"App","href":"https://app.polygon-one.com/"}},"footer":{"socials":{"website":"https://polygon-one.com"}},"search":{"prompt":"Suche..."},"integrations":{"posthog":{"apiKey":"phc_uKa9gMArvxxjzGfYWUWS4YLP7yT7gPETBzA3ktR7mUTD","apiHost":"https://eu.i.posthog.com","sessionRecording":false}},"contextual":{"options":["copy","view","chatgpt","claude","perplexity","mcp","cursor","vscode"],"display":"header"},"styling":{"latex":false},"navigation":{"global":{"anchors":[]},"languages":[{"language":"de","default":true,"href":""},{"language":"en","href":"en"},{"language":"fr","href":"fr/lieferanten/start"},{"language":"es","href":"es/lieferanten/start"},{"language":"zh","href":"zh/lieferanten/start"}]}},"deployment":{"deploymentMetadataValue":{"subdomain":"polygonone","hasAudioNarration":false,"actualSubdomain":"polygonone","customDomains":["help.polygon-one.com"],"gitSource":{"type":"github","owner":"polygon-one","repo":"docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ae0b07ed03bec028f0a63ad","collectionId":"0d95f0d6-0f41-4003-828c-a1abdfd66982","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ae0b07ed03bec028f0a63ad"},"entitlements":{},"buildId":"6ae0b07ed03bec028f0a63ad","clientVersion":"0.0.3971","searchFilterCounts":[{"language":"de","tag":"API-Referenz","count":62},{"language":"en","tag":"API Reference","count":62},{"language":"de","tag":"EUDR","count":53},{"language":"en","tag":"EUDR","count":53},{"language":"de","tag":"Für Lieferanten","count":28},{"language":"en","tag":"For suppliers","count":28},{"language":"es","tag":"Para proveedores","count":28},{"language":"fr","tag":"Pour les fournisseurs","count":28},{"language":"zh","tag":"供应商帮助","count":28},{"language":"de","tag":"PPWR","count":25},{"language":"en","tag":"PPWR","count":25},{"language":"de","tag":"API-Dokumentation","count":10},{"language":"en","tag":"API Documentation","count":10},{"language":"de","tag":"PPWR – Verpackungsdaten","count":9},{"language":"de","tag":"Ihr Datenformat","count":9},{"language":"en","tag":"PPWR – Packaging Data","count":9},{"language":"en","tag":"Your data format","count":9},{"language":"es","tag":"Su formato de datos","count":9},{"language":"fr","tag":"Votre format de données","count":9},{"language":"zh","tag":"数据格式指南","count":9},{"language":"de","tag":"Datensammlung (Art. 9 EUDR)","count":8},{"language":"de","tag":"DDS \u0026 Bestellungen (Art. 3 EUDR)","count":8},{"language":"de","tag":"Optional","count":8},{"language":"en","tag":"Data Collection (Art. 9 EUDR)","count":8},{"language":"en","tag":"DDS \u0026 Orders (Art. 3 EUDR)","count":8},{"language":"en","tag":"Optional","count":8},{"language":"es","tag":"Solicitud EUDR","count":7},{"language":"fr","tag":"Demande EUDR","count":7},{"language":"zh","tag":"EUDR 请求","count":7},{"language":"es","tag":"Espacio del proveedor","count":4},{"language":"es","tag":"Solicitud PPWR","count":4},{"language":"fr","tag":"Espace fournisseur","count":4},{"language":"fr","tag":"Demande PPWR","count":4},{"language":"zh","tag":"供应商工作区","count":4},{"language":"zh","tag":"PPWR 请求","count":4},{"language":"es","tag":"Resolver un problema","count":3},{"language":"fr","tag":"Résoudre un problème","count":3},{"language":"zh","tag":"更正、审核和状态","count":3},{"language":"es","tag":"Empiece aquí","count":1},{"language":"fr","tag":"Commencer ici","count":1},{"language":"zh","tag":"从这里开始","count":1}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","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":"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}],"isAtlas":false,"googleFontsInlined":false},"customCss":[{"filePath":"style.css","content":"html:has(#content[data-page-href$=\"/lieferanten/start\"]) #pagination,html:has(#content[data-page-href*=\"/lieferanten/\"]) #mobile-nav #navigation-items>div:has(>#localization-select-trigger)>div:has(>button[aria-haspopup=menu]),html:has(#content[data-page-href*=\"/lieferanten/\"]) #navbar div:has(>div>a[href$=\"/lieferanten/start\"]),html:has(#content[data-page-href*=\"/lieferanten/\"]) #navbar li:has(>a[href=\"https://app.polygon-one.com/\"]),html:has(#content[data-page-href*=\"/lieferanten/\"]) [role=dialog] li:has(>a[href=\"https://app.polygon-one.com/\"]){display:none!important}"}],"page":{"pagePath":"en/api-reference/endpoint/articles/create","slug":"/en/api-reference/endpoint/articles/create","pageMetadata":{"title":"Create Article","openapi":"POST /api/v1/articles","description":"Create a single article (synchronous), or bulk-import articles (asynchronous). For purchase articles, a supplier must be specified (via `supplierId` or `supplierName`). Sale articles are automatically linked to your company. Batch rows upsert idempotently on `internalArticleNr`. **Batch form (array, or `{\"rows\": […]}` envelope, max 5000 rows) is asynchronous:** it stages an import job and returns `202` with a `jobId` — poll `GET /api/v1/import-jobs/{jobId}` for progress and the final result. A single object stays synchronous (`201`). See the Batch Import guide.","href":"/en/api-reference/endpoint/articles/create"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n code: \"code\",\n p: \"p\",\n strong: \"strong\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_components.p, {\n children: [\"Create a single article (synchronous), or bulk-import articles (asynchronous). For purchase articles, a supplier must be specified (via \", _jsx(_components.code, {\n children: \"supplierId\"\n }), \" or \", _jsx(_components.code, {\n children: \"supplierName\"\n }), \"). Sale articles are automatically linked to your company. Batch rows upsert idempotently on \", _jsx(_components.code, {\n children: \"internalArticleNr\"\n }), \". \", _jsxs(_components.strong, {\n children: [\"Batch form (array, or \", _jsx(_components.code, {\n children: \"{\\\"rows\\\": […]}\"\n }), \" envelope, max 5000 rows) is asynchronous:\"]\n }), \" it stages an import job and returns \", _jsx(_components.code, {\n children: \"202\"\n }), \" with a \", _jsx(_components.code, {\n children: \"jobId\"\n }), \" — poll \", _jsx(_components.code, {\n children: \"GET /api/v1/import-jobs/{jobId}\"\n }), \" for progress and the final result. A single object stays synchronous (\", _jsx(_components.code, {\n children: \"201\"\n }), \"). See the Batch Import guide.\"]\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":{"title":"Create Article","openapi":"POST /api/v1/articles","description":"Create a single article (synchronous), or bulk-import articles (asynchronous). For purchase articles, a supplier must be specified (via `supplierId` or `supplierName`). Sale articles are automatically linked to your company. Batch rows upsert idempotently on `internalArticleNr`. **Batch form (array, or `{\"rows\": […]}` envelope, max 5000 rows) is asynchronous:** it stages an import job and returns `202` with a `jobId` — poll `GET /api/v1/import-jobs/{jobId}` for progress and the final result. A single object stays synchronous (`201`). See the Batch Import guide.","href":"/en/api-reference/endpoint/articles/create"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"operationId":"createArticle","summary":"Create Article","description":"Create a single article (synchronous), or bulk-import articles (asynchronous). For purchase articles, a supplier must be specified (via `supplierId` or `supplierName`). Sale articles are automatically linked to your company. Batch rows upsert idempotently on `internalArticleNr`. **Batch form (array, or `{\"rows\": […]}` envelope, max 5000 rows) is asynchronous:** it stages an import job and returns `202` with a `jobId` — poll `GET /api/v1/import-jobs/{jobId}` for progress and the final result. A single object stays synchronous (`201`). See the Batch Import guide.","tags":["Articles"],"requestBody":"524210f4-b766-4898-8d68-45012e0b507c","responses":{"201":"228889af-764e-45d6-b4d9-2dc36a9a20b3","202":"cca4a7b8-dcfb-4aa1-9c98-d461a88447f3","400":"ec6da291-770c-41bb-8c69-8500d988935e","401":"80279be3-7d78-43f6-b35c-9397b1205518","403":"a531f28e-3906-4a76-9d55-d2643c54f1dd","409":"b7da9c31-a8d6-46e8-ba6e-31748fa22cbe","413":"b2569f57-fb1b-42cb-a6c2-8ccd30fc3198","429":"6c3fcc7a-197c-4e00-a39c-471bb06d2222","500":"5b05d989-7ba9-4262-8187-6d24238f7591"},"method":"post","type":"path","servers":["525ee7a2-0b29-4150-83c9-6311c95aea37"],"security":["bae4c7a0-d716-46dc-bfdc-909a8704f12f"],"path":"/api/v1/articles","baseUrlOptions":["https://app.polygon-one.com"],"title":"Create Article","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{},"requestBody":{"required":true,"content":{"application/json":{"schema":{"oneOf":[{"type":"object","required":["name","internalArticleNr","hsCode"],"properties":{"name":{"type":"string","minLength":1,"description":"Article name","isRequired":true,"uniqueKey":"oneOf.0.name","typeLabel":"string"},"internalArticleNr":{"type":"string","minLength":1,"description":"Internal article number (must be unique per company)","isRequired":true,"uniqueKey":"oneOf.0.internalArticleNr","typeLabel":"string"},"hsCode":{"type":"string","minLength":1,"description":"HS code — EUDR relevance and commodity group are determined automatically","isRequired":true,"uniqueKey":"oneOf.0.hsCode","typeLabel":"string"},"shortDescription":{"type":"string","description":"Short description of the article.","uniqueKey":"oneOf.0.shortDescription","typeLabel":"string"},"articleType":{"type":"string","enum":["purchase","sale"],"description":"Defaults to `purchase`. Sale articles are automatically linked to your company as supplier.","uniqueKey":"oneOf.0.articleType","typeLabel":"enum\u003cstring>"},"externalArticleNr":{"type":"string","description":"External article number, e.g. a supplier's or customer's number.","uniqueKey":"oneOf.0.externalArticleNr","typeLabel":"string"},"ean":{"type":"string","description":"EAN / GTIN barcode.","uniqueKey":"oneOf.0.ean","typeLabel":"string"},"weightPerPieceKg":{"type":"number","exclusiveMinimum":0,"description":"Weight of one piece in kg; must be greater than 0. Lets order lines be sent as a piece count.","uniqueKey":"oneOf.0.weightPerPieceKg","typeLabel":"number"},"sourceScope":{"type":"string","enum":["standing","perOrder"],"description":"`standing` (default): the source is fixed. `perOrder`: the source varies per order and order import creates one copy of the article per order.","uniqueKey":"oneOf.0.sourceScope","typeLabel":"enum\u003cstring>"},"supplierId":{"oneOf":[{"type":"string","description":"Link to an existing supplier (recommended — fetch IDs via `GET /api/v1/suppliers`). Required for purchase articles if `supplierName` is not provided.","format":"uuid","uniqueKey":"oneOf.0.supplierId.oneOf.0","typeLabel":"string\u003cuuid>"},{"type":"string","description":"Link to an existing supplier (recommended — fetch IDs via `GET /api/v1/suppliers`). Required for purchase articles if `supplierName` is not provided.","enum":[""],"uniqueKey":"oneOf.0.supplierId.oneOf.1","typeLabel":"enum\u003cstring>"}],"uniqueKey":"oneOf.0.supplierId","typeLabel":"string\u003cuuid> | enum\u003cstring>"},"supplierName":{"type":"string","description":"Fallback when you have no `supplierId` (prefer `supplierId`). Matched against your existing suppliers ignoring case and surrounding/repeated whitespace; if none matches, a new supplier is created. Required for purchase articles if `supplierId` is not provided.","uniqueKey":"oneOf.0.supplierName","typeLabel":"string"},"supplierEmail":{"oneOf":[{"type":"string","description":"Optional supplier contact email. Used when creating a new supplier via `supplierName`.","format":"email","uniqueKey":"oneOf.0.supplierEmail.oneOf.0","typeLabel":"string\u003cemail>"},{"type":"string","description":"Optional supplier contact email. Used when creating a new supplier via `supplierName`.","enum":[""],"uniqueKey":"oneOf.0.supplierEmail.oneOf.1","typeLabel":"enum\u003cstring>"}],"uniqueKey":"oneOf.0.supplierEmail","typeLabel":"string\u003cemail> | enum\u003cstring>"},"eudrRelevant":{"type":"boolean","description":"Explicit EUDR classification; overrides the one derived from the HS code.","uniqueKey":"oneOf.0.eudrRelevant","typeLabel":"boolean"},"commodityGroup":{"type":"string","enum":["cattle","cocoa","coffee","oil_palm","rubber","soya","wood","non_relevant"],"description":"Explicit EUDR commodity group; overrides the one derived from the HS code.","uniqueKey":"oneOf.0.commodityGroup","typeLabel":"enum\u003cstring>"},"acknowledgeWarnings":{"type":"boolean","description":"Set to `true` to override soft duplicate warnings. If omitted/false and the article triggers a soft warning (duplicate name or duplicate EAN), the request returns `409` with a machine-readable `warnings` array instead of creating the article. A hard duplicate of `internalArticleNr` always returns `409` and cannot be overridden.","uniqueKey":"oneOf.0.acknowledgeWarnings","typeLabel":"boolean"}},"uniqueKey":"oneOf.0","typeLabel":"object"},{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","minLength":1,"description":"Article name.","isRequired":true,"uniqueKey":"oneOf.1.items.[INDEX].name","typeLabel":"string"},"internalArticleNr":{"type":"string","minLength":1,"description":"Internal article number (your ERP ID) — the key the batch upserts on.","isRequired":true,"uniqueKey":"oneOf.1.items.[INDEX].internalArticleNr","typeLabel":"string"},"hsCode":{"type":"string","minLength":1,"description":"HS code — EUDR relevance and commodity group are derived from it.","isRequired":true,"uniqueKey":"oneOf.1.items.[INDEX].hsCode","typeLabel":"string"},"shortDescription":{"oneOf":[{"type":"string","description":"Short description of the article.","uniqueKey":"oneOf.1.items.[INDEX].shortDescription.oneOf.0","typeLabel":"string"},{"type":"null","description":"Short description of the article.","uniqueKey":"oneOf.1.items.[INDEX].shortDescription.oneOf.1","typeLabel":"null"}],"uniqueKey":"oneOf.1.items.[INDEX].shortDescription","typeLabel":"string | null"},"articleType":{"type":"string","description":"`purchase` (default) or `sale`.","uniqueKey":"oneOf.1.items.[INDEX].articleType","typeLabel":"string"},"externalArticleNr":{"oneOf":[{"type":"string","description":"External article number, e.g. a supplier's or customer's number.","uniqueKey":"oneOf.1.items.[INDEX].externalArticleNr.oneOf.0","typeLabel":"string"},{"type":"null","description":"External article number, e.g. a supplier's or customer's number.","uniqueKey":"oneOf.1.items.[INDEX].externalArticleNr.oneOf.1","typeLabel":"null"}],"uniqueKey":"oneOf.1.items.[INDEX].externalArticleNr","typeLabel":"string | null"},"ean":{"oneOf":[{"type":"string","description":"EAN / GTIN barcode.","uniqueKey":"oneOf.1.items.[INDEX].ean.oneOf.0","typeLabel":"string"},{"type":"null","description":"EAN / GTIN barcode.","uniqueKey":"oneOf.1.items.[INDEX].ean.oneOf.1","typeLabel":"null"}],"uniqueKey":"oneOf.1.items.[INDEX].ean","typeLabel":"string | null"},"weightPerPieceKg":{"oneOf":[{"type":"number","exclusiveMinimum":0,"description":"Weight of one piece in kg; must be greater than 0.","uniqueKey":"oneOf.1.items.[INDEX].weightPerPieceKg.oneOf.0","typeLabel":"number"},{"type":"null","exclusiveMinimum":0,"description":"Weight of one piece in kg; must be greater than 0.","uniqueKey":"oneOf.1.items.[INDEX].weightPerPieceKg.oneOf.1","typeLabel":"null"}],"uniqueKey":"oneOf.1.items.[INDEX].weightPerPieceKg","typeLabel":"number | null"},"sourceScope":{"oneOf":[{"type":"string","enum":["standing","perOrder",null],"description":"`standing` (default): the source is fixed. `perOrder`: the source varies per order and order import creates one copy of the article per order.","uniqueKey":"oneOf.1.items.[INDEX].sourceScope.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","enum":["standing","perOrder",null],"description":"`standing` (default): the source is fixed. `perOrder`: the source varies per order and order import creates one copy of the article per order.","uniqueKey":"oneOf.1.items.[INDEX].sourceScope.oneOf.1","typeLabel":"null"}],"uniqueKey":"oneOf.1.items.[INDEX].sourceScope","typeLabel":"enum\u003cstring> | null"},"supplierId":{"type":"string","description":"Purchase articles: UUID of an existing supplier of your company to link the article to.","uniqueKey":"oneOf.1.items.[INDEX].supplierId","typeLabel":"string"},"supplierName":{"type":"string","description":"Purchase articles: supplier name, used to find a supplier or to create one when none matches.","uniqueKey":"oneOf.1.items.[INDEX].supplierName","typeLabel":"string"},"supplierEmail":{"type":"string","description":"Contact email for a supplier the import creates.","uniqueKey":"oneOf.1.items.[INDEX].supplierEmail","typeLabel":"string"},"supplierCountry":{"type":"string","description":"Country for a supplier the import creates.","uniqueKey":"oneOf.1.items.[INDEX].supplierCountry","typeLabel":"string"},"supplierAddress":{"type":"string","description":"Address (one line) for a supplier the import creates.","uniqueKey":"oneOf.1.items.[INDEX].supplierAddress","typeLabel":"string"},"supplierExternalId":{"type":"string","description":"Your ERP id of the supplier. Used to match an existing supplier and stored on a supplier the import creates.","uniqueKey":"oneOf.1.items.[INDEX].supplierExternalId","typeLabel":"string"}},"required":["name","internalArticleNr","hsCode"],"description":"One article row of a batch import.","uniqueKey":"oneOf.1.items.[INDEX]","typeLabel":"object"},"description":"Batch import (bare array form) — asynchronous, returns 202","maxItems":5000,"minItems":1,"uniqueKey":"oneOf.1","typeLabel":"object[]"},{"type":"object","description":"Batch envelope form (unknown extra keys are ignored)","required":["rows"],"properties":{"rows":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","minLength":1,"description":"Article name.","isRequired":true,"uniqueKey":"oneOf.2.rows.items.[INDEX].name","typeLabel":"string"},"internalArticleNr":{"type":"string","minLength":1,"description":"Internal article number (your ERP ID) — the key the batch upserts on.","isRequired":true,"uniqueKey":"oneOf.2.rows.items.[INDEX].internalArticleNr","typeLabel":"string"},"hsCode":{"type":"string","minLength":1,"description":"HS code — EUDR relevance and commodity group are derived from it.","isRequired":true,"uniqueKey":"oneOf.2.rows.items.[INDEX].hsCode","typeLabel":"string"},"shortDescription":{"oneOf":[{"type":"string","description":"Short description of the article.","uniqueKey":"oneOf.2.rows.items.[INDEX].shortDescription.oneOf.0","typeLabel":"string"},{"type":"null","description":"Short description of the article.","uniqueKey":"oneOf.2.rows.items.[INDEX].shortDescription.oneOf.1","typeLabel":"null"}],"uniqueKey":"oneOf.2.rows.items.[INDEX].shortDescription","typeLabel":"string | null"},"articleType":{"type":"string","description":"`purchase` (default) or `sale`.","uniqueKey":"oneOf.2.rows.items.[INDEX].articleType","typeLabel":"string"},"externalArticleNr":{"oneOf":[{"type":"string","description":"External article number, e.g. a supplier's or customer's number.","uniqueKey":"oneOf.2.rows.items.[INDEX].externalArticleNr.oneOf.0","typeLabel":"string"},{"type":"null","description":"External article number, e.g. a supplier's or customer's number.","uniqueKey":"oneOf.2.rows.items.[INDEX].externalArticleNr.oneOf.1","typeLabel":"null"}],"uniqueKey":"oneOf.2.rows.items.[INDEX].externalArticleNr","typeLabel":"string | null"},"ean":{"oneOf":[{"type":"string","description":"EAN / GTIN barcode.","uniqueKey":"oneOf.2.rows.items.[INDEX].ean.oneOf.0","typeLabel":"string"},{"type":"null","description":"EAN / GTIN barcode.","uniqueKey":"oneOf.2.rows.items.[INDEX].ean.oneOf.1","typeLabel":"null"}],"uniqueKey":"oneOf.2.rows.items.[INDEX].ean","typeLabel":"string | null"},"weightPerPieceKg":{"oneOf":[{"type":"number","exclusiveMinimum":0,"description":"Weight of one piece in kg; must be greater than 0.","uniqueKey":"oneOf.2.rows.items.[INDEX].weightPerPieceKg.oneOf.0","typeLabel":"number"},{"type":"null","exclusiveMinimum":0,"description":"Weight of one piece in kg; must be greater than 0.","uniqueKey":"oneOf.2.rows.items.[INDEX].weightPerPieceKg.oneOf.1","typeLabel":"null"}],"uniqueKey":"oneOf.2.rows.items.[INDEX].weightPerPieceKg","typeLabel":"number | null"},"sourceScope":{"oneOf":[{"type":"string","enum":["standing","perOrder",null],"description":"`standing` (default): the source is fixed. `perOrder`: the source varies per order and order import creates one copy of the article per order.","uniqueKey":"oneOf.2.rows.items.[INDEX].sourceScope.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","enum":["standing","perOrder",null],"description":"`standing` (default): the source is fixed. `perOrder`: the source varies per order and order import creates one copy of the article per order.","uniqueKey":"oneOf.2.rows.items.[INDEX].sourceScope.oneOf.1","typeLabel":"null"}],"uniqueKey":"oneOf.2.rows.items.[INDEX].sourceScope","typeLabel":"enum\u003cstring> | null"},"supplierId":{"type":"string","description":"Purchase articles: UUID of an existing supplier of your company to link the article to.","uniqueKey":"oneOf.2.rows.items.[INDEX].supplierId","typeLabel":"string"},"supplierName":{"type":"string","description":"Purchase articles: supplier name, used to find a supplier or to create one when none matches.","uniqueKey":"oneOf.2.rows.items.[INDEX].supplierName","typeLabel":"string"},"supplierEmail":{"type":"string","description":"Contact email for a supplier the import creates.","uniqueKey":"oneOf.2.rows.items.[INDEX].supplierEmail","typeLabel":"string"},"supplierCountry":{"type":"string","description":"Country for a supplier the import creates.","uniqueKey":"oneOf.2.rows.items.[INDEX].supplierCountry","typeLabel":"string"},"supplierAddress":{"type":"string","description":"Address (one line) for a supplier the import creates.","uniqueKey":"oneOf.2.rows.items.[INDEX].supplierAddress","typeLabel":"string"},"supplierExternalId":{"type":"string","description":"Your ERP id of the supplier. Used to match an existing supplier and stored on a supplier the import creates.","uniqueKey":"oneOf.2.rows.items.[INDEX].supplierExternalId","typeLabel":"string"}},"required":["name","internalArticleNr","hsCode"],"description":"One article row of a batch import.","uniqueKey":"oneOf.2.rows.items.[INDEX]","typeLabel":"object"},"minItems":1,"maxItems":5000,"description":"The rows, at most 5000 per request.","isRequired":true,"uniqueKey":"oneOf.2.rows","typeLabel":"object[]"}},"uniqueKey":"oneOf.2","typeLabel":"object"}],"uniqueKey":"","typeLabel":"object · object[] · object"},"examples":{"single":{"title":"single","value":{"name":"Pine plank 20 mm","shortDescription":"Kiln-dried pine plank, 20 × 100 × 2400 mm","internalArticleNr":"ART-1001","hsCode":"4407.11","articleType":"purchase","weightPerPieceKg":2.5,"supplierId":"5a1d8c3e-7f24-4b9a-a6e0-1c3f5b8d2e94"}},"batch":{"title":"batch","value":{"rows":[{"name":"Pine plank 20 mm","internalArticleNr":"ART-1001","hsCode":"4407.11","articleType":"purchase","weightPerPieceKg":2.5,"supplierName":"Sawmill Example GmbH","supplierExternalId":"LIEF-4711"}]}}},"exampleType":"examples"}},"exampleType":"examples"},"responses":{"228889af-764e-45d6-b4d9-2dc36a9a20b3":{"description":"Article created successfully (single)","content":{"application/json":{"schema":{"type":"object","properties":{"article":{"type":"object","properties":{"id":{"type":"string","description":"UUID of the article.","isRequired":true,"uniqueKey":"article.id","typeLabel":"string"},"name":{"type":"string","description":"Article name.","isRequired":true,"uniqueKey":"article.name","typeLabel":"string"},"shortDescription":{"type":"string","description":"Short description of the article; empty string when none was given.","isRequired":true,"uniqueKey":"article.shortDescription","typeLabel":"string"},"internalArticleNr":{"type":"string","description":"Internal article number (your ERP ID), unique per company. A per-order copy of an article carries `\u003cinternalArticleNr>#\u003corderNumber>`; the number to show to people is `externalArticleNr` when set, else `internalArticleNr`.","isRequired":true,"uniqueKey":"article.internalArticleNr","typeLabel":"string"},"externalArticleNr":{"oneOf":[{"type":"string","description":"External article number, e.g. a supplier's or customer's number. On a per-order copy it holds the original article's `internalArticleNr`.","isRequired":true,"uniqueKey":"article.externalArticleNr.oneOf.0","typeLabel":"string"},{"type":"null","description":"External article number, e.g. a supplier's or customer's number. On a per-order copy it holds the original article's `internalArticleNr`.","isRequired":true,"uniqueKey":"article.externalArticleNr.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"article.externalArticleNr","typeLabel":"string | null"},"ean":{"oneOf":[{"type":"string","description":"EAN / GTIN barcode, or `null`.","isRequired":true,"uniqueKey":"article.ean.oneOf.0","typeLabel":"string"},{"type":"null","description":"EAN / GTIN barcode, or `null`.","isRequired":true,"uniqueKey":"article.ean.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"article.ean","typeLabel":"string | null"},"hsCode":{"type":"string","description":"Harmonized System code","isRequired":true,"uniqueKey":"article.hsCode","typeLabel":"string"},"articleType":{"type":"string","description":"`purchase` (bought from a supplier) or `sale` (sold by your company).","isRequired":true,"uniqueKey":"article.articleType","typeLabel":"string"},"sourceScope":{"type":"string","description":"`standing`: the article's source is fixed. `perOrder`: the article is a template whose source varies per order; order import creates one copy per order from it.","isRequired":true,"uniqueKey":"article.sourceScope","typeLabel":"string"},"eudrRelevant":{"type":"boolean","description":"Automatically determined from HS code","isRequired":true,"uniqueKey":"article.eudrRelevant","typeLabel":"boolean"},"commodityGroup":{"type":"string","description":"EUDR commodity group, derived from the HS code unless set explicitly. One of the `CommodityGroup` values.","isRequired":true,"uniqueKey":"article.commodityGroup","typeLabel":"string"},"needsManualCheck":{"type":"boolean","description":"`true` when the EUDR classification derived from the HS code should be checked by a person.","isRequired":true,"uniqueKey":"article.needsManualCheck","typeLabel":"boolean"},"hsPlausibility":{"oneOf":[{"type":"object","additionalProperties":{"oneOf":[{}],"uniqueKey":"article.hsPlausibility.oneOf.0.additionalProperties","typeLabel":"any"},"description":"Stored result of an advisory check of the HS code against the article description, or `null` when not checked. Stored only: it never warns about or blocks a create or update. The object's shape is not part of the v1 contract and may change — do not depend on it.","isRequired":true,"uniqueKey":"article.hsPlausibility.oneOf.0","typeLabel":"object"},{"type":"null","additionalProperties":{"oneOf":[{}],"uniqueKey":"article.hsPlausibility.oneOf.1.additionalProperties","typeLabel":"any"},"description":"Stored result of an advisory check of the HS code against the article description, or `null` when not checked. Stored only: it never warns about or blocks a create or update. The object's shape is not part of the v1 contract and may change — do not depend on it.","isRequired":true,"uniqueKey":"article.hsPlausibility.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"article.hsPlausibility","typeLabel":"object | null"},"deletedAt":{"oneOf":[{"type":"string","description":"When the article was moved to the trash (ISO 8601, UTC); `null` for a live article.","isRequired":true,"uniqueKey":"article.deletedAt.oneOf.0","typeLabel":"string"},{"type":"null","description":"When the article was moved to the trash (ISO 8601, UTC); `null` for a live article.","isRequired":true,"uniqueKey":"article.deletedAt.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"article.deletedAt","typeLabel":"string | null"}},"required":["id","name","shortDescription","internalArticleNr","externalArticleNr","ean","hsCode","articleType","sourceScope","eudrRelevant","commodityGroup","needsManualCheck","hsPlausibility","deletedAt"],"description":"The stored article fields. Further keys may be present and are not part of the contract; read the full article with `GET /api/v1/articles/{id}`.","isRequired":true,"uniqueKey":"article","typeLabel":"object"}},"required":["article"],"uniqueKey":"","typeLabel":"object"},"example":{"article":{"id":"7c4e2b19-3a85-4d6f-b210-8e9a5c1d7f36","name":"Pine plank 20 mm","shortDescription":"Kiln-dried pine plank, 20 × 100 × 2400 mm","internalArticleNr":"ART-1001","externalArticleNr":null,"ean":null,"hsCode":"4407.11","articleType":"purchase","sourceScope":"standing","eudrRelevant":true,"commodityGroup":"wood","needsManualCheck":false,"hsPlausibility":null,"deletedAt":null}},"examples":{"Example":{"title":"Example","value":{"article":{"id":"7c4e2b19-3a85-4d6f-b210-8e9a5c1d7f36","name":"Pine plank 20 mm","shortDescription":"Kiln-dried pine plank, 20 × 100 × 2400 mm","internalArticleNr":"ART-1001","externalArticleNr":null,"ean":null,"hsCode":"4407.11","articleType":"purchase","sourceScope":"standing","eudrRelevant":true,"commodityGroup":"wood","needsManualCheck":false,"hsPlausibility":null,"deletedAt":null}}}},"exampleType":"examples"}},"exampleType":"examples"},"cca4a7b8-dcfb-4aa1-9c98-d461a88447f3":{"description":"Batch accepted — async import job staged. Nothing imported yet; poll the job.","headers":{"Location":{"description":"URL of the import job to poll","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"jobId":{"type":"string","description":"UUID of the staged import job — pass it to `GET /api/v1/import-jobs/{jobId}`.","isRequired":true,"uniqueKey":"jobId","typeLabel":"string"},"status":{"type":"string","description":"Always `queued` — nothing is imported yet.","isRequired":true,"uniqueKey":"status","typeLabel":"string"},"statusUrl":{"type":"string","description":"The poll URL, also sent as the `Location` header.","isRequired":true,"uniqueKey":"statusUrl","typeLabel":"string"}},"required":["jobId","status","statusUrl"],"description":"Batch import staged as an async job. Nothing is imported yet — poll `statusUrl` for progress and the final result.","uniqueKey":"","typeLabel":"object"},"example":{"jobId":"d2f7a4c9-8e15-4b63-9a2d-1c6e5f0b8d37","status":"queued","statusUrl":"/api/import-jobs/d2f7a4c9-8e15-4b63-9a2d-1c6e5f0b8d37"},"examples":{"Example":{"title":"Example","value":{"jobId":"d2f7a4c9-8e15-4b63-9a2d-1c6e5f0b8d37","status":"queued","statusUrl":"/api/import-jobs/d2f7a4c9-8e15-4b63-9a2d-1c6e5f0b8d37"}}},"exampleType":"examples"}},"exampleType":"examples"},"ec6da291-770c-41bb-8c69-8500d988935e":{"description":"Invalid request data","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable message, or a stable machine key (e.g. `batchTooLarge`, `overwriteRequired`, `duplicate`) on the batch, PPWR and upload endpoints.","isRequired":true,"uniqueKey":"error","typeLabel":"string"},"code":{"type":"string","description":"Stable machine code on some `400` and `409` answers, e.g. `plot_geometry_invalid` or `FORK_HAS_ORDER`. Match on it rather than on `error`. Further flat keys may accompany it (e.g. `precisionDigits`, `field`).","uniqueKey":"code","typeLabel":"string"},"details":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string","description":"Machine code of the issue, e.g. `invalid_type`, `too_small`, `custom`.","isRequired":true,"uniqueKey":"details.items.[INDEX].code","typeLabel":"string"},"path":{"type":"array","items":{"oneOf":[{"type":"string","uniqueKey":"details.items.[INDEX].path.items.[INDEX].oneOf.0","typeLabel":"string"},{"type":"number","uniqueKey":"details.items.[INDEX].path.items.[INDEX].oneOf.1","typeLabel":"number"}],"uniqueKey":"details.items.[INDEX].path.items.[INDEX]","typeLabel":"string | number"},"description":"Location of the offending value in the request: object keys and 0-based array positions.","isRequired":true,"uniqueKey":"details.items.[INDEX].path","typeLabel":"(string | number)[]"},"message":{"type":"string","description":"Human-readable English explanation. The wording may change; match on `code` and `path`.","isRequired":true,"uniqueKey":"details.items.[INDEX].message","typeLabel":"string"}},"required":["code","path","message"],"additionalProperties":{"oneOf":[{}],"uniqueKey":"details.items.[INDEX].additionalProperties","typeLabel":"any"},"description":"One validation issue. Issue-specific keys (e.g. `expected`, `minimum`) may accompany the three listed.","uniqueKey":"details.items.[INDEX]","typeLabel":"object"},"description":"The validation issues on a `400` validation error.","uniqueKey":"details","typeLabel":"object[]"},"warnings":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["duplicateName","duplicateEan"],"description":"`duplicateName`: a live article of your company already has this name. `duplicateEan`: a live article already has this EAN.","isRequired":true,"uniqueKey":"warnings.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"existingInternalArticleNr":{"type":"string","description":"`duplicateName` only: internal article number of the existing article.","uniqueKey":"warnings.items.[INDEX].existingInternalArticleNr","typeLabel":"string"},"existingArticleName":{"type":"string","description":"`duplicateEan` only: name of the existing article.","uniqueKey":"warnings.items.[INDEX].existingArticleName","typeLabel":"string"}},"required":["type"],"uniqueKey":"warnings.items.[INDEX]","typeLabel":"object"},"description":"`POST /articles` `409` only: soft duplicate warnings. Resend with `acknowledgeWarnings: true` to create the article anyway.","uniqueKey":"warnings","typeLabel":"object[]"}},"required":["error"],"additionalProperties":{"oneOf":[{}],"uniqueKey":"additionalProperties","typeLabel":"any"},"description":"Error body of every endpoint except the `429` the edge answers. Some errors add flat machine-readable keys next to `error`, e.g. `maxBatchSize` on `413 batchTooLarge` or `confirmUpdateCount` on `409 overwriteRequired`.","uniqueKey":"","typeLabel":"object"},"example":{"error":"Validation failed","details":[{"origin":"string","code":"too_small","minimum":1,"inclusive":true,"path":["address","street"],"message":"Address is required."}]},"examples":{"Example":{"title":"Example","value":{"error":"Validation failed","details":[{"origin":"string","code":"too_small","minimum":1,"inclusive":true,"path":["address","street"],"message":"Address is required."}]}}},"exampleType":"examples"}},"exampleType":"examples"},"80279be3-7d78-43f6-b35c-9397b1205518":{"description":"Invalid or expired API key, or the key's user account is not active.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable message, or a stable machine key (e.g. `batchTooLarge`, `overwriteRequired`, `duplicate`) on the batch, PPWR and upload endpoints.","isRequired":true,"uniqueKey":"error","typeLabel":"string"},"code":{"type":"string","description":"Stable machine code on some `400` and `409` answers, e.g. `plot_geometry_invalid` or `FORK_HAS_ORDER`. Match on it rather than on `error`. Further flat keys may accompany it (e.g. `precisionDigits`, `field`).","uniqueKey":"code","typeLabel":"string"},"details":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string","description":"Machine code of the issue, e.g. `invalid_type`, `too_small`, `custom`.","isRequired":true,"uniqueKey":"details.items.[INDEX].code","typeLabel":"string"},"path":{"type":"array","items":{"oneOf":[{"type":"string","uniqueKey":"details.items.[INDEX].path.items.[INDEX].oneOf.0","typeLabel":"string"},{"type":"number","uniqueKey":"details.items.[INDEX].path.items.[INDEX].oneOf.1","typeLabel":"number"}],"uniqueKey":"details.items.[INDEX].path.items.[INDEX]","typeLabel":"string | number"},"description":"Location of the offending value in the request: object keys and 0-based array positions.","isRequired":true,"uniqueKey":"details.items.[INDEX].path","typeLabel":"(string | number)[]"},"message":{"type":"string","description":"Human-readable English explanation. The wording may change; match on `code` and `path`.","isRequired":true,"uniqueKey":"details.items.[INDEX].message","typeLabel":"string"}},"required":["code","path","message"],"additionalProperties":{"oneOf":[{}],"uniqueKey":"details.items.[INDEX].additionalProperties","typeLabel":"any"},"description":"One validation issue. Issue-specific keys (e.g. `expected`, `minimum`) may accompany the three listed.","uniqueKey":"details.items.[INDEX]","typeLabel":"object"},"description":"The validation issues on a `400` validation error.","uniqueKey":"details","typeLabel":"object[]"},"warnings":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["duplicateName","duplicateEan"],"description":"`duplicateName`: a live article of your company already has this name. `duplicateEan`: a live article already has this EAN.","isRequired":true,"uniqueKey":"warnings.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"existingInternalArticleNr":{"type":"string","description":"`duplicateName` only: internal article number of the existing article.","uniqueKey":"warnings.items.[INDEX].existingInternalArticleNr","typeLabel":"string"},"existingArticleName":{"type":"string","description":"`duplicateEan` only: name of the existing article.","uniqueKey":"warnings.items.[INDEX].existingArticleName","typeLabel":"string"}},"required":["type"],"uniqueKey":"warnings.items.[INDEX]","typeLabel":"object"},"description":"`POST /articles` `409` only: soft duplicate warnings. Resend with `acknowledgeWarnings: true` to create the article anyway.","uniqueKey":"warnings","typeLabel":"object[]"}},"required":["error"],"additionalProperties":{"oneOf":[{}],"uniqueKey":"additionalProperties","typeLabel":"any"},"description":"Error body of every endpoint except the `429` the edge answers. Some errors add flat machine-readable keys next to `error`, e.g. `maxBatchSize` on `413 batchTooLarge` or `confirmUpdateCount` on `409 overwriteRequired`.","uniqueKey":"","typeLabel":"object"},"example":{"error":"Invalid or expired API key"},"examples":{"Example":{"title":"Example","value":{"error":"Invalid or expired API key"}}},"exampleType":"examples"}},"exampleType":"examples"},"a531f28e-3906-4a76-9d55-d2643c54f1dd":{"description":"Insufficient permissions for this resource","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable message, or a stable machine key (e.g. `batchTooLarge`, `overwriteRequired`, `duplicate`) on the batch, PPWR and upload endpoints.","isRequired":true,"uniqueKey":"error","typeLabel":"string"},"code":{"type":"string","description":"Stable machine code on some `400` and `409` answers, e.g. `plot_geometry_invalid` or `FORK_HAS_ORDER`. Match on it rather than on `error`. Further flat keys may accompany it (e.g. `precisionDigits`, `field`).","uniqueKey":"code","typeLabel":"string"},"details":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string","description":"Machine code of the issue, e.g. `invalid_type`, `too_small`, `custom`.","isRequired":true,"uniqueKey":"details.items.[INDEX].code","typeLabel":"string"},"path":{"type":"array","items":{"oneOf":[{"type":"string","uniqueKey":"details.items.[INDEX].path.items.[INDEX].oneOf.0","typeLabel":"string"},{"type":"number","uniqueKey":"details.items.[INDEX].path.items.[INDEX].oneOf.1","typeLabel":"number"}],"uniqueKey":"details.items.[INDEX].path.items.[INDEX]","typeLabel":"string | number"},"description":"Location of the offending value in the request: object keys and 0-based array positions.","isRequired":true,"uniqueKey":"details.items.[INDEX].path","typeLabel":"(string | number)[]"},"message":{"type":"string","description":"Human-readable English explanation. The wording may change; match on `code` and `path`.","isRequired":true,"uniqueKey":"details.items.[INDEX].message","typeLabel":"string"}},"required":["code","path","message"],"additionalProperties":{"oneOf":[{}],"uniqueKey":"details.items.[INDEX].additionalProperties","typeLabel":"any"},"description":"One validation issue. Issue-specific keys (e.g. `expected`, `minimum`) may accompany the three listed.","uniqueKey":"details.items.[INDEX]","typeLabel":"object"},"description":"The validation issues on a `400` validation error.","uniqueKey":"details","typeLabel":"object[]"},"warnings":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["duplicateName","duplicateEan"],"description":"`duplicateName`: a live article of your company already has this name. `duplicateEan`: a live article already has this EAN.","isRequired":true,"uniqueKey":"warnings.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"existingInternalArticleNr":{"type":"string","description":"`duplicateName` only: internal article number of the existing article.","uniqueKey":"warnings.items.[INDEX].existingInternalArticleNr","typeLabel":"string"},"existingArticleName":{"type":"string","description":"`duplicateEan` only: name of the existing article.","uniqueKey":"warnings.items.[INDEX].existingArticleName","typeLabel":"string"}},"required":["type"],"uniqueKey":"warnings.items.[INDEX]","typeLabel":"object"},"description":"`POST /articles` `409` only: soft duplicate warnings. Resend with `acknowledgeWarnings: true` to create the article anyway.","uniqueKey":"warnings","typeLabel":"object[]"}},"required":["error"],"additionalProperties":{"oneOf":[{}],"uniqueKey":"additionalProperties","typeLabel":"any"},"description":"Error body of every endpoint except the `429` the edge answers. Some errors add flat machine-readable keys next to `error`, e.g. `maxBatchSize` on `413 batchTooLarge` or `confirmUpdateCount` on `409 overwriteRequired`.","uniqueKey":"","typeLabel":"object"},"example":{"error":"Forbidden"},"examples":{"Example":{"title":"Example","value":{"error":"Forbidden"}}},"exampleType":"examples"}},"exampleType":"examples"},"b7da9c31-a8d6-46e8-ba6e-31748fa22cbe":{"description":"An article with this `internalArticleNr` already exists (cannot be overridden), or the article has overridable `warnings` (`duplicateName`, `duplicateEan`) — resend with `acknowledgeWarnings: true`. Single-object form only.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable message, or a stable machine key (e.g. `batchTooLarge`, `overwriteRequired`, `duplicate`) on the batch, PPWR and upload endpoints.","isRequired":true,"uniqueKey":"error","typeLabel":"string"},"code":{"type":"string","description":"Stable machine code on some `400` and `409` answers, e.g. `plot_geometry_invalid` or `FORK_HAS_ORDER`. Match on it rather than on `error`. Further flat keys may accompany it (e.g. `precisionDigits`, `field`).","uniqueKey":"code","typeLabel":"string"},"details":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string","description":"Machine code of the issue, e.g. `invalid_type`, `too_small`, `custom`.","isRequired":true,"uniqueKey":"details.items.[INDEX].code","typeLabel":"string"},"path":{"type":"array","items":{"oneOf":[{"type":"string","uniqueKey":"details.items.[INDEX].path.items.[INDEX].oneOf.0","typeLabel":"string"},{"type":"number","uniqueKey":"details.items.[INDEX].path.items.[INDEX].oneOf.1","typeLabel":"number"}],"uniqueKey":"details.items.[INDEX].path.items.[INDEX]","typeLabel":"string | number"},"description":"Location of the offending value in the request: object keys and 0-based array positions.","isRequired":true,"uniqueKey":"details.items.[INDEX].path","typeLabel":"(string | number)[]"},"message":{"type":"string","description":"Human-readable English explanation. The wording may change; match on `code` and `path`.","isRequired":true,"uniqueKey":"details.items.[INDEX].message","typeLabel":"string"}},"required":["code","path","message"],"additionalProperties":{"oneOf":[{}],"uniqueKey":"details.items.[INDEX].additionalProperties","typeLabel":"any"},"description":"One validation issue. Issue-specific keys (e.g. `expected`, `minimum`) may accompany the three listed.","uniqueKey":"details.items.[INDEX]","typeLabel":"object"},"description":"The validation issues on a `400` validation error.","uniqueKey":"details","typeLabel":"object[]"},"warnings":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["duplicateName","duplicateEan"],"description":"`duplicateName`: a live article of your company already has this name. `duplicateEan`: a live article already has this EAN.","isRequired":true,"uniqueKey":"warnings.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"existingInternalArticleNr":{"type":"string","description":"`duplicateName` only: internal article number of the existing article.","uniqueKey":"warnings.items.[INDEX].existingInternalArticleNr","typeLabel":"string"},"existingArticleName":{"type":"string","description":"`duplicateEan` only: name of the existing article.","uniqueKey":"warnings.items.[INDEX].existingArticleName","typeLabel":"string"}},"required":["type"],"uniqueKey":"warnings.items.[INDEX]","typeLabel":"object"},"description":"`POST /articles` `409` only: soft duplicate warnings. Resend with `acknowledgeWarnings: true` to create the article anyway.","uniqueKey":"warnings","typeLabel":"object[]"}},"required":["error"],"additionalProperties":{"oneOf":[{}],"uniqueKey":"additionalProperties","typeLabel":"any"},"description":"Error body of every endpoint except the `429` the edge answers. Some errors add flat machine-readable keys next to `error`, e.g. `maxBatchSize` on `413 batchTooLarge` or `confirmUpdateCount` on `409 overwriteRequired`.","uniqueKey":"","typeLabel":"object"},"example":{"error":"Article has unresolved warnings. Resubmit with acknowledgeWarnings=true to override.","warnings":[{"type":"duplicateName","existingInternalArticleNr":"ART-0999"}]},"examples":{"Example":{"title":"Example","value":{"error":"Article has unresolved warnings. Resubmit with acknowledgeWarnings=true to override.","warnings":[{"type":"duplicateName","existingInternalArticleNr":"ART-0999"}]}}},"exampleType":"examples"}},"exampleType":"examples"},"b2569f57-fb1b-42cb-a6c2-8ccd30fc3198":{"description":"Batch exceeds the row cap (`error: \"batchTooLarge\"`, plus `maxBatchSize`). Nothing staged — page the sync across multiple requests (orders: keep all lines of one order in the same request, see the Batch Import guide).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable message, or a stable machine key (e.g. `batchTooLarge`, `overwriteRequired`, `duplicate`) on the batch, PPWR and upload endpoints.","isRequired":true,"uniqueKey":"error","typeLabel":"string"},"code":{"type":"string","description":"Stable machine code on some `400` and `409` answers, e.g. `plot_geometry_invalid` or `FORK_HAS_ORDER`. Match on it rather than on `error`. Further flat keys may accompany it (e.g. `precisionDigits`, `field`).","uniqueKey":"code","typeLabel":"string"},"details":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string","description":"Machine code of the issue, e.g. `invalid_type`, `too_small`, `custom`.","isRequired":true,"uniqueKey":"details.items.[INDEX].code","typeLabel":"string"},"path":{"type":"array","items":{"oneOf":[{"type":"string","uniqueKey":"details.items.[INDEX].path.items.[INDEX].oneOf.0","typeLabel":"string"},{"type":"number","uniqueKey":"details.items.[INDEX].path.items.[INDEX].oneOf.1","typeLabel":"number"}],"uniqueKey":"details.items.[INDEX].path.items.[INDEX]","typeLabel":"string | number"},"description":"Location of the offending value in the request: object keys and 0-based array positions.","isRequired":true,"uniqueKey":"details.items.[INDEX].path","typeLabel":"(string | number)[]"},"message":{"type":"string","description":"Human-readable English explanation. The wording may change; match on `code` and `path`.","isRequired":true,"uniqueKey":"details.items.[INDEX].message","typeLabel":"string"}},"required":["code","path","message"],"additionalProperties":{"oneOf":[{}],"uniqueKey":"details.items.[INDEX].additionalProperties","typeLabel":"any"},"description":"One validation issue. Issue-specific keys (e.g. `expected`, `minimum`) may accompany the three listed.","uniqueKey":"details.items.[INDEX]","typeLabel":"object"},"description":"The validation issues on a `400` validation error.","uniqueKey":"details","typeLabel":"object[]"},"warnings":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["duplicateName","duplicateEan"],"description":"`duplicateName`: a live article of your company already has this name. `duplicateEan`: a live article already has this EAN.","isRequired":true,"uniqueKey":"warnings.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"existingInternalArticleNr":{"type":"string","description":"`duplicateName` only: internal article number of the existing article.","uniqueKey":"warnings.items.[INDEX].existingInternalArticleNr","typeLabel":"string"},"existingArticleName":{"type":"string","description":"`duplicateEan` only: name of the existing article.","uniqueKey":"warnings.items.[INDEX].existingArticleName","typeLabel":"string"}},"required":["type"],"uniqueKey":"warnings.items.[INDEX]","typeLabel":"object"},"description":"`POST /articles` `409` only: soft duplicate warnings. Resend with `acknowledgeWarnings: true` to create the article anyway.","uniqueKey":"warnings","typeLabel":"object[]"}},"required":["error"],"additionalProperties":{"oneOf":[{}],"uniqueKey":"additionalProperties","typeLabel":"any"},"description":"Error body of every endpoint except the `429` the edge answers. Some errors add flat machine-readable keys next to `error`, e.g. `maxBatchSize` on `413 batchTooLarge` or `confirmUpdateCount` on `409 overwriteRequired`.","uniqueKey":"","typeLabel":"object"},"example":{"error":"batchTooLarge","maxBatchSize":5000},"examples":{"Example":{"title":"Example","value":{"error":"batchTooLarge","maxBatchSize":5000}}},"exampleType":"examples"}},"exampleType":"examples"},"6c3fcc7a-197c-4e00-a39c-471bb06d2222":{"description":"Rate limit exceeded: currently 1000 requests per 60 seconds per client IP across all `/api` paths. Issued by the edge before the application runs, so the JSON body differs from every other error: `error` is an object. A `429` with an HTML body instead of JSON means the request carried no API key.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["rate_limited"],"description":"Always `rate_limited`.","isRequired":true,"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"Human-readable explanation.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"}},"required":["code","message"],"description":"Unlike every other error body, `error` is an object here.","isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"uniqueKey":"","typeLabel":"object"},"example":{"error":{"code":"rate_limited","message":"…"}},"examples":{"Example":{"title":"Example","value":{"error":{"code":"rate_limited","message":"…"}}}},"exampleType":"examples"}},"exampleType":"examples"},"5b05d989-7ba9-4262-8187-6d24238f7591":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable message, or a stable machine key (e.g. `batchTooLarge`, `overwriteRequired`, `duplicate`) on the batch, PPWR and upload endpoints.","isRequired":true,"uniqueKey":"error","typeLabel":"string"},"code":{"type":"string","description":"Stable machine code on some `400` and `409` answers, e.g. `plot_geometry_invalid` or `FORK_HAS_ORDER`. Match on it rather than on `error`. Further flat keys may accompany it (e.g. `precisionDigits`, `field`).","uniqueKey":"code","typeLabel":"string"},"details":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string","description":"Machine code of the issue, e.g. `invalid_type`, `too_small`, `custom`.","isRequired":true,"uniqueKey":"details.items.[INDEX].code","typeLabel":"string"},"path":{"type":"array","items":{"oneOf":[{"type":"string","uniqueKey":"details.items.[INDEX].path.items.[INDEX].oneOf.0","typeLabel":"string"},{"type":"number","uniqueKey":"details.items.[INDEX].path.items.[INDEX].oneOf.1","typeLabel":"number"}],"uniqueKey":"details.items.[INDEX].path.items.[INDEX]","typeLabel":"string | number"},"description":"Location of the offending value in the request: object keys and 0-based array positions.","isRequired":true,"uniqueKey":"details.items.[INDEX].path","typeLabel":"(string | number)[]"},"message":{"type":"string","description":"Human-readable English explanation. The wording may change; match on `code` and `path`.","isRequired":true,"uniqueKey":"details.items.[INDEX].message","typeLabel":"string"}},"required":["code","path","message"],"additionalProperties":{"oneOf":[{}],"uniqueKey":"details.items.[INDEX].additionalProperties","typeLabel":"any"},"description":"One validation issue. Issue-specific keys (e.g. `expected`, `minimum`) may accompany the three listed.","uniqueKey":"details.items.[INDEX]","typeLabel":"object"},"description":"The validation issues on a `400` validation error.","uniqueKey":"details","typeLabel":"object[]"},"warnings":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["duplicateName","duplicateEan"],"description":"`duplicateName`: a live article of your company already has this name. `duplicateEan`: a live article already has this EAN.","isRequired":true,"uniqueKey":"warnings.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"existingInternalArticleNr":{"type":"string","description":"`duplicateName` only: internal article number of the existing article.","uniqueKey":"warnings.items.[INDEX].existingInternalArticleNr","typeLabel":"string"},"existingArticleName":{"type":"string","description":"`duplicateEan` only: name of the existing article.","uniqueKey":"warnings.items.[INDEX].existingArticleName","typeLabel":"string"}},"required":["type"],"uniqueKey":"warnings.items.[INDEX]","typeLabel":"object"},"description":"`POST /articles` `409` only: soft duplicate warnings. Resend with `acknowledgeWarnings: true` to create the article anyway.","uniqueKey":"warnings","typeLabel":"object[]"}},"required":["error"],"additionalProperties":{"oneOf":[{}],"uniqueKey":"additionalProperties","typeLabel":"any"},"description":"Error body of every endpoint except the `429` the edge answers. Some errors add flat machine-readable keys next to `error`, e.g. `maxBatchSize` on `413 batchTooLarge` or `confirmUpdateCount` on `409 overwriteRequired`.","uniqueKey":"","typeLabel":"object"},"example":{"error":"Internal server error"},"examples":{"Example":{"title":"Example","value":{"error":"Internal server error"}}},"exampleType":"examples"}},"exampleType":"examples"}},"security":{"bae4c7a0-d716-46dc-bfdc-909a8704f12f":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"API Key","description":"API key generated in Settings > API Keys. Include as `Authorization: Bearer \u003ckey>`.","scopes":[],"schemeName":"bearerAuth"}}},"servers":{"525ee7a2-0b29-4150-83c9-6311c95aea37":{"url":"https://app.polygon-one.com","description":"Production Server"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"http","scheme":"bearer","bearerFormat":"API Key","description":"API key generated in Settings > API Keys. Include as `Authorization: Bearer \u003ckey>`.","scopes":[],"schemeName":"bearerAuth"},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"API key generated in Settings > API Keys. Include as `Authorization: Bearer \u003ckey>`.","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"bearerAuth","name":"Authorization"}],"title":"bearerAuth"}]},"originalFileLocation":"api-reference/openapi.json"},"subdomain":"polygonone","siteName":"Polygon One Helpcenter","title":"Create Article - Polygon One Helpcenter","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{"de":{"href":"/api-reference/endpoint/articles/create","matchLevel":1},"en":{"href":"/en/api-reference/endpoint/articles/create","matchLevel":0},"fr":{"href":"/fr/lieferanten/start","matchLevel":4},"es":{"href":"/es/lieferanten/start","matchLevel":4},"zh":{"href":"/zh/lieferanten/start","matchLevel":4}}},"lastModified":"2026-09-24T20:18:15.310Z","originalFileLocation":"en/api-reference/endpoint/articles/create.mdx","locale":"en"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Create a single article (synchronous), or bulk-import articles (asynchronous). For purchase articles, a supplier must be specified (via supplierId or supplierName). Sale articles are automatically linked to your company. Batch rows upsert idempotently on internalArticleNr. Batch form (array, or {\u0026quot;rows\u0026quot;: […]} envelope, max 5000 rows) is asynchronous: it stages an import job and returns 202 with a jobId — poll GET /api/v1/import-jobs/{jobId} for progress and the final result. A single object stays synchronous (201). See the Batch Import guide.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Polygon One Helpcenter\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/polygonone/32k2Y3_9P8MpmQgs/_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/polygonone/32k2Y3_9P8MpmQgs/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/polygonone/32k2Y3_9P8MpmQgs/_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/polygonone/32k2Y3_9P8MpmQgs/_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/polygonone/32k2Y3_9P8MpmQgs/_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/polygonone/32k2Y3_9P8MpmQgs/_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/polygonone/32k2Y3_9P8MpmQgs/_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/polygonone/32k2Y3_9P8MpmQgs/_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/polygonone/32k2Y3_9P8MpmQgs/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Create Article - Polygon One Helpcenter\">\u003cmeta data-mint-head property=\"og:description\" content=\"Create a single article (synchronous), or bulk-import articles (asynchronous). For purchase articles, a supplier must be specified (via supplierId or supplierName). Sale articles are automatically linked to your company. Batch rows upsert idempotently on internalArticleNr. Batch form (array, or {\u0026quot;rows\u0026quot;: […]} envelope, max 5000 rows) is asynchronous: it stages an import job and returns 202 with a jobId — poll GET /api/v1/import-jobs/{jobId} for progress and the final result. A single object stays synchronous (201). See the Batch Import guide.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Polygon One Helpcenter\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://help.polygon-one.com/en/api-reference/endpoint/articles/create\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://polygonone.mintlify.app/_mintlify/api/og/v2?division=Articles\u0026amp;title=Create+Article\u0026amp;description=Create+a+single+article+%28synchronous%29%2C+or+bulk-import+articles+%28asynchronous%29.+For+purchase+articles%2C+a+supplier+must+be+specified+%28via+%60supplierId%60+or+%60supplie\u0026amp;theme=0c175d962800f7cffd688852\u0026amp;signature=2fd2505478f22ae28d31f95bcab48651fe4c988abdb85043095b222f44f8bbd2\">\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 Article - Polygon One Helpcenter\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Create a single article (synchronous), or bulk-import articles (asynchronous). For purchase articles, a supplier must be specified (via supplierId or supplierName). Sale articles are automatically linked to your company. Batch rows upsert idempotently on internalArticleNr. Batch form (array, or {\u0026quot;rows\u0026quot;: […]} envelope, max 5000 rows) is asynchronous: it stages an import job and returns 202 with a jobId — poll GET /api/v1/import-jobs/{jobId} for progress and the final result. A single object stays synchronous (201). See the Batch Import guide.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://polygonone.mintlify.app/_mintlify/api/og/v2?division=Articles\u0026amp;title=Create+Article\u0026amp;description=Create+a+single+article+%28synchronous%29%2C+or+bulk-import+articles+%28asynchronous%29.+For+purchase+articles%2C+a+supplier+must+be+specified+%28via+%60supplierId%60+or+%60supplie\u0026amp;theme=0c175d962800f7cffd688852\u0026amp;signature=2fd2505478f22ae28d31f95bcab48651fe4c988abdb85043095b222f44f8bbd2\">\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/polygonone/32k2Y3_9P8MpmQgs/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Polygon One Helpcenter\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#15803D\">\u003clink data-mint-head rel=\"canonical\" href=\"https://help.polygon-one.com/en/api-reference/endpoint/articles/create\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/en/api-reference/endpoint/articles/create.md\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"en\" href=\"https://help.polygon-one.com/en/api-reference/endpoint/articles/create\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"de\" href=\"https://help.polygon-one.com/api-reference/endpoint/articles/create\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"x-default\" href=\"https://help.polygon-one.com/api-reference/endpoint/articles/create\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://help.polygon-one.com/#organization\",\"name\":\"Polygon One Helpcenter\",\"url\":\"https://help.polygon-one.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/polygonone/AMoRp9VbcW46gNsT/logo/light.svg?fit=max\u0026auto=format\u0026n=AMoRp9VbcW46gNsT\u0026q=85\u0026s=4a316da81d50e49c7f9f6480a235558e\"}},{\"@type\":\"WebSite\",\"@id\":\"https://help.polygon-one.com#website\",\"name\":\"Polygon One Helpcenter\",\"url\":\"https://help.polygon-one.com\",\"publisher\":{\"@id\":\"https://help.polygon-one.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://help.polygon-one.com/en/api-reference/endpoint/articles/create#webpage\",\"url\":\"https://help.polygon-one.com/en/api-reference/endpoint/articles/create\",\"name\":\"Create Article\",\"description\":\"Create a single article (synchronous), or bulk-import articles (asynchronous). For purchase articles, a supplier must be specified (via supplierId or supplierName). Sale articles are automatically linked to your company. Batch rows upsert idempotently on internalArticleNr. Batch form (array, or {\\\"rows\\\": […]} envelope, max 5000 rows) is asynchronous: it stages an import job and returns 202 with a jobId — poll GET /api/v1/import-jobs/{jobId} for progress and the final result. A single object stays synchronous (201). See the Batch Import guide.\",\"dateModified\":\"2026-09-24T20:18:15.310Z\",\"isPartOf\":{\"@id\":\"https://help.polygon-one.com#website\"},\"breadcrumb\":{\"@id\":\"https://help.polygon-one.com/en/api-reference/endpoint/articles/create#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://help.polygon-one.com/en/api-reference/endpoint/articles/create#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Articles\",\"item\":\"https://help.polygon-one.com/en/api-reference/endpoint/articles/list\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Create Article\",\"item\":\"https://help.polygon-one.com/en/api-reference/endpoint/articles/create\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://help.polygon-one.com/en/api-reference/endpoint/articles/create#apireference\",\"headline\":\"Create Article\",\"name\":\"Create Article\",\"description\":\"Create a single article (synchronous), or bulk-import articles (asynchronous). For purchase articles, a supplier must be specified (via supplierId or supplierName). Sale articles are automatically linked to your company. Batch rows upsert idempotently on internalArticleNr. Batch form (array, or {\\\"rows\\\": […]} envelope, max 5000 rows) is asynchronous: it stages an import job and returns 202 with a jobId — poll GET /api/v1/import-jobs/{jobId} for progress and the final result. A single object stays synchronous (201). See the Batch Import guide.\",\"url\":\"https://help.polygon-one.com/en/api-reference/endpoint/articles/create\",\"mainEntityOfPage\":{\"@id\":\"https://help.polygon-one.com/en/api-reference/endpoint/articles/create#webpage\"},\"dateModified\":\"2026-09-24T20:18:15.310Z\",\"publisher\":{\"@id\":\"https://help.polygon-one.com/#organization\"},\"isPartOf\":{\"@id\":\"https://help.polygon-one.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Polygon One Helpcenter\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Polygon One Helpcenter","nav":{"global":{"anchors":[]},"languages":[{"language":"de","default":true,"pages":[{"title":"de","href":"/api-reference/endpoint/articles/create"}]},{"language":"en","tabs":[{"tab":"EUDR","pages":[{"title":"EUDR","href":"/en"}]},{"tab":"PPWR","pages":[{"title":"PPWR","href":"/en/ppwr/uebersicht"}]},{"tab":"API Reference","groups":[{"group":"API Documentation","pages":[{"title":"Introduction","href":"/en/api-reference/introduction"},{"title":"Quickstart","href":"/en/api-reference/quickstart"},{"title":"Recommended integration flows","sidebarTitle":"Integration flows","href":"/en/api-reference/integration-flows"},{"title":"Connect Claude, ChatGPT and Copilot (MCP)","sidebarTitle":"AI assistants (MCP)","href":"/en/api-reference/ki-assistenten"},{"title":"Batch Import (async)","href":"/en/api-reference/batch-import"},{"title":"Orders: lines, positions, status, delta sync","sidebarTitle":"Orders","href":"/en/api-reference/orders"},{"title":"PPWR: Packaging Data, Quantities, Volume Reports","href":"/en/api-reference/ppwr"},{"title":"Geo analysis over the API","href":"/en/api-reference/geo-analysis"},{"title":"Errors \u0026 limits","href":"/en/api-reference/errors-and-limits"},{"title":"Changelog","href":"/en/api-reference/changelog"}]},{"group":"Articles","pages":[{"title":"List Articles","openapi":"GET /api/v1/articles","description":"Retrieve a paginated list of articles. Supports filtering by article number, HS code, supplier number, order number, species, commodity group, article type, and EUDR relevance.","href":"/en/api-reference/endpoint/articles/list"},{"title":"Create Article","openapi":"POST /api/v1/articles","href":"/en/api-reference/endpoint/articles/create"},{"title":"Get Article by ID","openapi":"GET /api/v1/articles/{id}","description":"Retrieve one article of your company with its suppliers, supplier links, compliance results and its distinct plots (without geometry, at most 1000 — see `plotsTruncated`). A deleted article and an article of another company answer `404`. Requires `articles:read`.","href":"/en/api-reference/endpoint/articles/get"},{"title":"Update Article","openapi":"PATCH /api/v1/articles/{id}","href":"/en/api-reference/endpoint/articles/update"},{"title":"Delete Article","openapi":"DELETE /api/v1/articles/{id}","href":"/en/api-reference/endpoint/articles/delete"}]},{"group":"Suppliers","pages":[{"title":"List Suppliers","openapi":"GET /api/v1/suppliers","href":"/en/api-reference/endpoint/suppliers/list"},{"title":"Create Supplier","openapi":"POST /api/v1/suppliers","href":"/en/api-reference/endpoint/suppliers/create"},{"title":"Get Supplier by ID","openapi":"GET /api/v1/suppliers/{id}","href":"/en/api-reference/endpoint/suppliers/get"},{"title":"Update Supplier","openapi":"PATCH /api/v1/suppliers/{id}","href":"/en/api-reference/endpoint/suppliers/update"},{"title":"Delete Supplier","openapi":"DELETE /api/v1/suppliers/{id}","href":"/en/api-reference/endpoint/suppliers/delete"}]},{"group":"Plots","pages":[{"title":"List Plots","openapi":"GET /api/v1/plots","href":"/en/api-reference/endpoint/plots/list"},{"title":"Create Plot","openapi":"POST /api/v1/plots","href":"/en/api-reference/endpoint/plots/create"},{"title":"Validate Plot Geometry","openapi":"POST /api/v1/plots/validate","href":"/en/api-reference/endpoint/plots/validate"},{"title":"Get Plot by ID","openapi":"GET /api/v1/plots/{id}","href":"/en/api-reference/endpoint/plots/get"},{"title":"Download Plot Report","openapi":"GET /api/v1/plots/{id}/report","href":"/en/api-reference/endpoint/plots/report"},{"title":"Update Plot Links","openapi":"PATCH /api/v1/plots/{id}","href":"/en/api-reference/endpoint/plots/update"},{"title":"Delete Plot","openapi":"DELETE /api/v1/plots/{id}","href":"/en/api-reference/endpoint/plots/delete"}]},{"group":"Evidence","pages":[{"title":"Create Evidence Upload URL","openapi":"POST /api/v1/evidence/upload-url","href":"/en/api-reference/endpoint/evidence/upload-url"},{"title":"Attach Evidence","openapi":"POST /api/v1/evidence","href":"/en/api-reference/endpoint/evidence/create"},{"title":"List Evidence","openapi":"GET /api/v1/evidence","href":"/en/api-reference/endpoint/evidence/list"}]},{"group":"Orders","pages":[{"title":"List Orders","openapi":"GET /api/v1/orders","href":"/en/api-reference/endpoint/orders/list"},{"title":"Create Order","openapi":"POST /api/v1/orders","href":"/en/api-reference/endpoint/orders/create"},{"title":"Get Order by ID","openapi":"GET /api/v1/orders/{id}","href":"/en/api-reference/endpoint/orders/get"},{"title":"Update Order","openapi":"PATCH /api/v1/orders/{id}","href":"/en/api-reference/endpoint/orders/update"},{"title":"Delete Order","openapi":"DELETE /api/v1/orders/{id}","href":"/en/api-reference/endpoint/orders/delete"},{"title":"Request Supplier Origin Confirmation","openapi":"POST /api/v1/orders/{id}/origin-confirmation","href":"/en/api-reference/endpoint/orders/origin-confirmation"}]},{"group":"Import Jobs","pages":[{"title":"Get Import Job","openapi":"GET /api/v1/import-jobs/{jobId}","href":"/en/api-reference/endpoint/import-jobs/get"}]},{"group":"DDS Statements","pages":[{"title":"List DDS Statements","openapi":"GET /api/v1/dds-statements","href":"/en/api-reference/endpoint/dds-statements/list"},{"title":"Create DDS Statement","openapi":"POST /api/v1/dds-statements","href":"/en/api-reference/endpoint/dds-statements/create"},{"title":"Get DDS Statement","openapi":"GET /api/v1/dds-statements/{id}","href":"/en/api-reference/endpoint/dds-statements/get"},{"title":"Update DDS Statement","openapi":"PATCH /api/v1/dds-statements/{id}","href":"/en/api-reference/endpoint/dds-statements/update"},{"title":"Delete DDS Statement","openapi":"DELETE /api/v1/dds-statements/{id}","href":"/en/api-reference/endpoint/dds-statements/delete"}]},{"group":"PPWR – Packaging Data","pages":[{"title":"List Packaging Components","openapi":"GET /api/v1/ppwr/components","href":"/en/api-reference/endpoint/ppwr/components/list"},{"title":"Upsert Packaging Components","openapi":"POST /api/v1/ppwr/components","href":"/en/api-reference/endpoint/ppwr/components/upsert"},{"title":"Get Packaging Component by ID","openapi":"GET /api/v1/ppwr/components/{id}","href":"/en/api-reference/endpoint/ppwr/components/get"},{"title":"List Packaging Units","openapi":"GET /api/v1/ppwr/units","href":"/en/api-reference/endpoint/ppwr/units/list"},{"title":"Upsert Packaging Units","openapi":"POST /api/v1/ppwr/units","href":"/en/api-reference/endpoint/ppwr/units/upsert"},{"title":"Get Packaging Unit by ID","openapi":"GET /api/v1/ppwr/units/{id}","href":"/en/api-reference/endpoint/ppwr/units/get"},{"title":"Upsert Packaging Sizes","openapi":"POST /api/v1/ppwr/formats","href":"/en/api-reference/endpoint/ppwr/formats/upsert"},{"title":"Create Bill-of-Materials Links","openapi":"POST /api/v1/ppwr/links","href":"/en/api-reference/endpoint/ppwr/links/create"},{"title":"Create Article Links","openapi":"POST /api/v1/ppwr/article-links","href":"/en/api-reference/endpoint/ppwr/article-links/create"}]},{"group":"PPWR – Documents","pages":[{"title":"Create Document Upload URL","openapi":"POST /api/v1/ppwr/documents/upload-url","href":"/en/api-reference/endpoint/ppwr/documents/upload-url"},{"title":"Attach Document","openapi":"POST /api/v1/ppwr/documents","href":"/en/api-reference/endpoint/ppwr/documents/create"}]},{"group":"PPWR – Declarations of Conformity","pages":[{"title":"List Declarations of Conformity","openapi":"GET /api/v1/ppwr/declarations","href":"/en/api-reference/endpoint/ppwr/declarations/list"},{"title":"Get Declaration of Conformity by ID","openapi":"GET /api/v1/ppwr/declarations/{id}","href":"/en/api-reference/endpoint/ppwr/declarations/get"},{"title":"Download Declaration of Conformity","openapi":"GET /api/v1/ppwr/declarations/{id}/pdf","href":"/en/api-reference/endpoint/ppwr/declarations/pdf"}]},{"group":"PPWR – Quantities \u0026 Volume Reports","pages":[{"title":"Push SKU Quantities","openapi":"POST /api/v1/ppwr/quantities","href":"/en/api-reference/endpoint/ppwr/quantities/create"},{"title":"Push Material Tonnage","openapi":"POST /api/v1/ppwr/tonnage","href":"/en/api-reference/endpoint/ppwr/tonnage/create"},{"title":"Delete Material Tonnage","openapi":"DELETE /api/v1/ppwr/tonnage","href":"/en/api-reference/endpoint/ppwr/tonnage/delete"},{"title":"List Volume Reports","openapi":"GET /api/v1/ppwr/mengenmeldung/reports","href":"/en/api-reference/endpoint/ppwr/mengenmeldung/list"},{"title":"Generate Volume Report","openapi":"POST /api/v1/ppwr/mengenmeldung/reports","href":"/en/api-reference/endpoint/ppwr/mengenmeldung/create"},{"title":"Download Volume Report File","openapi":"GET /api/v1/ppwr/mengenmeldung/{reportId}/xml","href":"/en/api-reference/endpoint/ppwr/mengenmeldung/download"}]}]},{"tab":"For suppliers","icon":"truck","pages":[{"title":"For suppliers","href":"/en/lieferanten/start"}]}]},{"language":"fr","pages":[{"title":"fr","href":"/fr/lieferanten/start"}]},{"language":"es","pages":[{"title":"es","href":"/es/lieferanten/start"}]},{"language":"zh","pages":[{"title":"zh","href":"/zh/lieferanten/start"}]}]},"title":"Create Article - Polygon One Helpcenter","buildId":"dpl_DFJrtvUi8HS5F9nkooKuDJsuD5BM","deploymentId":"dpl_DFJrtvUi8HS5F9nkooKuDJsuD5BM","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-rfhihCWU.js","utils-BmH1XFxk.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-BcNsxPKB.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-BAES3tkd.js","snippetPresets-DCMQBKLP.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-D6l_bzE9.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-BOktbnNh.js","shallow-BCs8SgM7.js","getApiPlaygroundDisplay-DEmW5bJB.js","CodeSnippet-CpZOpB9C.js","CodeSnippets-BOBDqibl.js","Page-D5fEM6aW.js","getPastedJson-DH2JBvmr.js","icon-BBJH-kKh.js","MethodPill-D2Sd5NLC.js","DuplicateIcon-CGgfL2qN.js","createIcon-BKudBBzi.js","DynamicMarkdown-85clUA0i.js","SectionHeading-D0JiMgDx.js","axios-vUo_bRtp.js","Markdown-Cfiy0xZO.js","clsx-rL8ZCCw4.js","lib--scc4DXi.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-aeztFa9U.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-BywkCr5C.js"]}