{"componentChunkName":"component---src-templates-simple-markdown-js","path":"/docs/ai/document-ai/signatures/","matchPath":"","result":{"data":{"markdownRemark":{"html":"<h1 style=\"position:relative;\"><a href=\"#signatures\" aria-label=\"signatures permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a><div class=\"hidden-anchor\" id=\"signatures\"></div>Signatures</h1>\n<p>Document AI provides two complementary ways to work with signatures:</p>\n<ol>\n<li>\n<strong>Detected signature regions</strong>\n identify marks and their locations on processed pages.\n</li>\n<li>\n<strong>Structured signature results</strong>\n describe the business role and status of expected signatures when the selected extraction configuration includes the \n<code class=\"language-text\">signature</code>\n schema.\n</li>\n</ol>\n<p>Neither capability verifies a signer's identity or determines the legal validity of a signature.</p>\n<h2 style=\"position:relative;\"><a href=\"#detected-signature-regions\" aria-label=\"detected signature regions permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a><div class=\"hidden-anchor\" id=\"detected-signature-regions\"></div>Detected signature regions</h2>\n<p>Completed documents can expose detected signatures through the investigation endpoints. Each item identifies its page, result, and normalized location.</p>\n\n      <div class=\"code-snippets-tabs\" >\n    <div class=\"snippets-tabs-headers\">\n      <span class=\"tab-header active\" data-lang=\"curl\" data-snippet-id=\"curl\">curl</span><span class=\"tab-header \" data-lang=\"python\" data-snippet-id=\"python\">python</span>\n    </div>\n    <div class=\"snippets-tabs-contents\">\n      <div class=\"tab-content active\" data-lang=\"curl\" data-snippet-id=\"curl\"><div class=\"code-wrapper\">\n        <div class=\"gatsby-code-button-container\"\n             data-toaster-id=\"56698429049660555000\"\n             data-toaster-duration=\"1500\"\n             onClick=\"copyCodeToClipboard(`curl \\\\\n  &quot;https://sandbox-api.shipwell.com/document-store/documents/<document-id>/signatures&quot; \\\\\n  -H &quot;Authorization: Token <user-token>&quot;`, `56698429049660555000`)\"\n        >\n          <div class=\"gatsby-code-button\" title=\"Copy the code snippet\">Copy</div>\n          <div class=\"done-indicator done-indicator-56698429049660555000\">Copied</div>\n        </div>\n        <div class=\"gatsby-highlight\" data-language=\"curl\"><pre class=\"language-curl\"><code class=\"language-curl\">curl \\\n  &quot;https://sandbox-api.shipwell.com/document-store/documents/&lt;document-id&gt;/signatures&quot; \\\n  -H &quot;Authorization: Token &lt;user-token&gt;&quot;</code></pre></div>\n      </div></div><div class=\"tab-content \" data-lang=\"python\" data-snippet-id=\"python\"><div class=\"code-wrapper\">\n        <div class=\"gatsby-code-button-container\"\n             data-toaster-id=\"74260283703618760000\"\n             data-toaster-duration=\"1500\"\n             onClick=\"copyCodeToClipboard(`import requests\n\nresponse = requests.get(\n    &quot;https://sandbox-api.shipwell.com/document-store/documents/<document-id>/signatures&quot;,\n    headers={&quot;Authorization&quot;: &quot;Token <user-token>&quot;},\n    timeout=30,\n)\nresponse.raise_for_status()\nsignatures = response.json()`, `74260283703618760000`)\"\n        >\n          <div class=\"gatsby-code-button\" title=\"Copy the code snippet\">Copy</div>\n          <div class=\"done-indicator done-indicator-74260283703618760000\">Copied</div>\n        </div>\n        <div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\"><span class=\"token keyword\">import</span> requests\n\nresponse <span class=\"token operator\">=</span> requests<span class=\"token punctuation\">.</span>get<span class=\"token punctuation\">(</span>\n    <span class=\"token string\">\"https://sandbox-api.shipwell.com/document-store/documents/&lt;document-id>/signatures\"</span><span class=\"token punctuation\">,</span>\n    headers<span class=\"token operator\">=</span><span class=\"token punctuation\">{</span><span class=\"token string\">\"Authorization\"</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"Token &lt;user-token>\"</span><span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n    timeout<span class=\"token operator\">=</span><span class=\"token number\">30</span><span class=\"token punctuation\">,</span>\n<span class=\"token punctuation\">)</span>\nresponse<span class=\"token punctuation\">.</span>raise_for_status<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span>\nsignatures <span class=\"token operator\">=</span> response<span class=\"token punctuation\">.</span>json<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span></code></pre></div>\n      </div></div>\n    </div></div>\n    \n<p>Each item includes a <code class=\"language-text\">page_number</code>, <code class=\"language-text\">result_id</code>, and normalized <code class=\"language-text\">geometry</code>.</p>\n<p>Use optional <code class=\"language-text\">run_id</code> or <code class=\"language-text\">result_id</code> query parameters to inspect one processing attempt or split result.</p>\n<!-- SCREENSHOT PLACEHOLDER\nFile: images/signature-source-overlay.png\nCapture: Run Inspector highlighting a synthetic signature region with no real names or customer data.\nAlt: Detected signature region in the document viewer\n-->\n<h2 style=\"position:relative;\"><a href=\"#structured-signature-results\" aria-label=\"structured signature results permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a><div class=\"hidden-anchor\" id=\"structured-signature-results\"></div>Structured signature results</h2>\n<p>All platform-managed configurations include a <code class=\"language-text\">signature</code> extraction schema. It can return one entry for each expected execution role.</p>\n<p>A structured signature value can include:</p>\n<ul>\n<li>\n<code class=\"language-text\">role</code>\n — such as shipper, carrier driver, consignee receiver, customer, vendor, or authorized representative\n</li>\n<li>\n<code class=\"language-text\">status</code>\n — \n<code class=\"language-text\">present</code>\n, \n<code class=\"language-text\">absent</code>\n, or \n<code class=\"language-text\">unclear</code>\n</li>\n<li>\n<code class=\"language-text\">signer_name</code>\n and \n<code class=\"language-text\">signer_title</code>\n, when readable\n</li>\n<li>\n<code class=\"language-text\">organization</code>\n</li>\n<li>\nPrinted signing date or time\n</li>\n<li>\n<code class=\"language-text\">method</code>\n — handwritten, electronic, stamp, initials, or unknown\n</li>\n</ul>\n<p>The selected configuration defines which document context is considered. For example, Shipment Operations emphasizes transportation execution roles, while Carrier Compliance covers agreements and compliance forms.</p>\n<h2 style=\"position:relative;\"><a href=\"#which-signature-surface-should-i-use\" aria-label=\"which signature surface should i use permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a><div class=\"hidden-anchor\" id=\"which-signature-surface-should-i-use\"></div>Which signature surface should I use?</h2>\n<p>Use detected regions when you need to:</p>\n<ul>\n<li>\nDraw every detected signature mark in a document viewer\n</li>\n<li>\nCount possible signatures by page\n</li>\n<li>\nReview spatial evidence without applying a business role\n</li>\n</ul>\n<p>Use structured results when you need to:</p>\n<ul>\n<li>\nDetermine whether an expected role appears signed\n</li>\n<li>\nDistinguish shipper, carrier, receiver, taxpayer, or representative roles\n</li>\n<li>\nIntegrate signature status into a review workflow\n</li>\n<li>\nRead signer details when the source supports them\n</li>\n</ul>\n<p>For high-impact workflows, show the structured result together with its source region.</p>\n<h2 style=\"position:relative;\"><a href=\"#proof-of-delivery-workflow\" aria-label=\"proof of delivery workflow permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a><div class=\"hidden-anchor\" id=\"proof-of-delivery-workflow\"></div>Proof-of-delivery workflow</h2>\n<ol>\n<li>\nProcess a proof of delivery with Shipment Operations or Universal Logistics.\n</li>\n<li>\nWait for the run to reach \n<code class=\"language-text\">completed</code>\n.\n</li>\n<li>\nFind \n<code class=\"language-text\">signature</code>\n entries in the result's \n<code class=\"language-text\">schemas</code>\n.\n</li>\n<li>\nRetrieve \n<code class=\"language-text\">/signatures</code>\n or the relevant page to display the evidence.\n</li>\n<li>\nRoute absent or unclear expected signatures for human review.\n</li>\n</ol>\n<h2 style=\"position:relative;\"><a href=\"#important-limitations\" aria-label=\"important limitations permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a><div class=\"hidden-anchor\" id=\"important-limitations\"></div>Important limitations</h2>\n<ul>\n<li>\nA detected mark is not proof of signer identity.\n</li>\n<li>\nAn empty signature list does not prove that a document is unsigned.\n</li>\n<li>\nPrinted text near an empty signature line should not be treated as a signature.\n</li>\n<li>\nLow-quality scans can produce an \n<code class=\"language-text\">unclear</code>\n result.\n</li>\n<li>\nAlways retain human review for legal, compliance, payment, or claims decisions.\n</li>\n</ul>","headings":[{"value":"Signatures","depth":1},{"value":"Detected signature regions","depth":2},{"value":"Structured signature results","depth":2},{"value":"Which signature surface should I use?","depth":2},{"value":"Proof-of-delivery workflow","depth":2},{"value":"Important limitations","depth":2}]},"contentItem":{"data":{"lastModified":"2026-07-17T16:00:10.000Z","enableToc":null,"disableLastModified":null,"tocMaxDepth":null,"requestLogin":false}},"siteConfig":{"enableToc":true,"disableLastModified":false,"tocMaxDepth":4}},"pageContext":{"matchPath":"","id":"2ae0e1b5-2b43-5183-a61f-2a2057272925__redocly content/docs/ai/document-ai/signatures/","seo":{"title":"Signatures","description":null,"image":"","keywords":null,"jsonLd":null,"lang":null,"siteUrl":null},"pageId":"docs/ai/document-ai/signatures.md","pageBaseUrl":"/docs/ai/document-ai/signatures","type":"markdown","toc":{"enable":true,"maxDepth":4,"headings":[{"depth":1,"value":"Signatures","id":"signatures"},{"depth":2,"value":"Detected signature regions","id":"detected-signature-regions"},{"depth":2,"value":"Structured signature results","id":"structured-signature-results"},{"depth":2,"value":"Which signature surface should I use?","id":"which-signature-surface-should-i-use"},{"depth":2,"value":"Proof-of-delivery workflow","id":"proof-of-delivery-workflow"},{"depth":2,"value":"Important limitations","id":"important-limitations"}]},"data":{"title":"Signatures"},"catalogInfo":null,"link":"/docs/ai/document-ai/signatures/","sidebarName":"developerPortal","isLanding":false,"showPrevButton":null,"showNextButton":null,"apiVersions":null,"apiVersionId":null,"isDefaultApiVersion":null}},"staticQueryHashes":["1123603147","1302185487","1344209882","1398840060","1520077861","1975142765","2667623876","2950305614","3240152602","3743992808","561138138"]}