{"info":{"_postman_id":"bb3a677b-3436-4705-87d9-cfc04429f106","name":"Assina Ai","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","toc":[],"description":"<html><head></head><body></body></html>","owner":"2588659","collectionId":"bb3a677b-3436-4705-87d9-cfc04429f106","publishedId":"2sBXc7LjGn","public":true,"customColor":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"5d3fd3"},"publishDate":"2026-04-27T23:01:55.000Z"},"item":[{"name":"Autenticação","item":[],"id":"0a2c1636-a4b7-4e59-bdc8-253b23d8df75","description":"<h2 id=\"token-de-api-estático\">Token de API (Estático)</h2>\n<p>Este método de autenticação utiliza um token fixo gerado no painel da <strong>Assina AI</strong>. Diferente de tokens temporários (OAuth2), este token não expira automaticamente, simplificando a integração em sistemas backend e automações.</p>\n<h3 id=\"como-autenticar\">Como autenticar</h3>\n<p>Adicione o header <code>Authorization</code> em cada requisição com o formato:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code>Authorization: Bearer sk_live_xxxxxxxx\n</code></pre><p>Nesta collection, o header é configurado automaticamente via <strong>autenticação de nível de collection</strong>. Basta definir o valor da variável <code>api_token</code>:</p>\n<ol>\n<li>Clique em <strong>...</strong> na collection → <strong>Edit</strong></li>\n<li>Acesse a aba <strong>Variables</strong></li>\n<li>Substitua o valor de <code>api_token</code> pelo seu token real</li>\n</ol>\n<h3 id=\"onde-obter-seu-token\">Onde obter seu token</h3>\n<p>Acesse o <strong>Painel da Assina AI</strong> → Configurações → Integrações → API Keys.</p>\n<hr />\n<p>⚠️ <strong>Nota de Segurança:</strong> Nunca exponha seu token em código frontend público, repositórios abertos ou logs de sistema.</p>\n","_postman_id":"0a2c1636-a4b7-4e59-bdc8-253b23d8df75"},{"name":"Templates","item":[{"name":"Criar documento via Modelo","id":"c3ea2f71-577e-4a09-8c73-ea06aeee6b55","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"signatures\": [\n        {\n            \"recipient\": {\n                \"name\": \"Funcionario\",\n                \"email\": \"funcionario@empresa.com\",\n                \"phone\": \"\",\n                \"routingOrder\": 1,\n                \"action\": \"SIGN\",\n                \"senderType\": \"EMAIL\",\n                \"authenticationType\": \"DEFAULT_SIGN\"\n            }\n        },\n        {\n            \"recipient\": {\n                \"name\": \"Gerente\",\n                \"email\": \"gerente@empresa.com\",\n                \"phone\": \"\",\n                \"routingOrder\": 2,\n                \"action\": \"SIGN\",\n                \"senderType\": \"EMAIL\",\n                \"authenticationType\": \"DEFAULT_SIGN\"\n            }\n        }\n    ],\n    \"variables\": [\n        {\n            \"name\": \"FUNCIONARIO\",\n            \"value\": \"José Luiz de Oliveira\"\n        },\n        {\n            \"name\": \"FUNCIONARIO_CPF\",\n            \"value\": \"072.763.526-15\"\n        }\n    ],\n    \"documentSendConfig\": {\n        \"documentName\": \"Contrato de Trabalho — José Luiz\",\n        \"customEmailMessage\": \"Por favor, assine o documento abaixo.\",\n        \"signatureDeadline\": \"2026-06-30T23:59:00.000Z\",\n        \"sendReminders\": \"EVERY_3_DAYS\",\n        \"observers\": []\n    },\n    \"folderId\": null\n}","options":{"raw":{"language":"json"}}},"url":"https://api.assinaai.com/api/v1/template/create-envelope/{{template_id}}","description":"<h2 id=\"criar-documento-via-modelo-template-docx\">Criar Documento via Modelo (Template DOCX)</h2>\n<p>Gera um novo documento a partir de um modelo <code>.docx</code> pré-existente. O sistema realiza a fusão (<em>merge</em>) dos dados enviados no corpo da requisição com as variáveis definidas no modelo.</p>\n<hr />\n<p><code>POST</code> <code>{{base_url}}/v1/template/create-envelope/{{template_id}}</code></p>\n<h3 id=\"pré-requisitos\">Pré-requisitos</h3>\n<ul>\n<li>O modelo deve ter sido criado previamente no painel web da <strong>Assina AI</strong> (Menu → Templates).</li>\n<li>As variáveis no modelo devem ser definidas com o formato <code>{{NOME_VARIAVEL}}</code>.</li>\n<li><strong>Importante:</strong> A substituição dinâmica é exclusiva para arquivos <code>.docx</code>. Modelos PDF não são compatíveis.</li>\n</ul>\n<hr />\n<h3 id=\"request-body\">Request Body</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>signatures*</td>\n<td>array</td>\n<td>Lista de signatários do documento.</td>\n</tr>\n<tr>\n<td>signatures[].recipient.name*</td>\n<td>string</td>\n<td>Nome completo do signatário.</td>\n</tr>\n<tr>\n<td>signatures[].recipient.email</td>\n<td>string</td>\n<td>E-mail. Obrigatório se <code>senderType = EMAIL</code>.</td>\n</tr>\n<tr>\n<td>signatures[].recipient.phone</td>\n<td>string</td>\n<td>Telefone com DDD. Obrigatório se <code>senderType = WHATSAPP</code>.</td>\n</tr>\n<tr>\n<td>signatures[].recipient.routingOrder*</td>\n<td>integer</td>\n<td>Ordem de assinatura (1 = primeiro).</td>\n</tr>\n<tr>\n<td>signatures[].recipient.action*</td>\n<td>enum</td>\n<td><code>SIGN</code>, <code>APPROVE</code>, <code>REVIEW</code>, <code>WITNESS</code>, <code>RECOGNIZE</code></td>\n</tr>\n<tr>\n<td>signatures[].recipient.senderType*</td>\n<td>enum</td>\n<td><code>EMAIL</code>, <code>WHATSAPP</code></td>\n</tr>\n<tr>\n<td>signatures[].recipient.authenticationType*</td>\n<td>enum</td>\n<td><code>DEFAULT_SIGN</code>, <code>SELFIE_PHOTO</code>, <code>SELFIE_PHOTO_DOCUMENT</code>, <code>SMS_CODE</code>, <code>CERTIFICATE</code></td>\n</tr>\n<tr>\n<td>variables*</td>\n<td>array</td>\n<td>Variáveis para substituição no template. Envie <code>[]</code> se não houver.</td>\n</tr>\n<tr>\n<td>variables[].name*</td>\n<td>string</td>\n<td>Nome da variável no modelo (ex: <code>NOME_CLIENTE</code>).</td>\n</tr>\n<tr>\n<td>variables[].value*</td>\n<td>string</td>\n<td>Valor a ser substituído.</td>\n</tr>\n<tr>\n<td>documentSendConfig.documentName*</td>\n<td>string</td>\n<td>Título do documento gerado.</td>\n</tr>\n<tr>\n<td>documentSendConfig.signatureDeadline</td>\n<td>DateTime</td>\n<td>Prazo de assinatura. ISO 8601: <code>2026-06-30T23:59:00.000Z</code></td>\n</tr>\n<tr>\n<td>documentSendConfig.sendReminders</td>\n<td>enum</td>\n<td><code>EVERY_DAY</code>, <code>EVERY_3_DAYS</code>, <code>EVERY_WEEK</code>, <code>NEVER</code></td>\n</tr>\n<tr>\n<td>documentSendConfig.customEmailMessage</td>\n<td>string</td>\n<td>Mensagem personalizada no e-mail de convite.</td>\n</tr>\n<tr>\n<td>documentSendConfig.observers</td>\n<td>array</td>\n<td>E-mails de observadores (recebem cópia das notificações).</td>\n</tr>\n<tr>\n<td>folderId</td>\n<td>string</td>\n<td>ID da pasta de destino. <code>null</code> = raiz.</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h3 id=\"response-200-ok\">Response <code>200 OK</code></h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>id</td>\n<td>string</td>\n<td>ID único do envelope criado.</td>\n</tr>\n<tr>\n<td>status</td>\n<td>string</td>\n<td>Ex: <code>SENT_FOR_SIGNATURE</code></td>\n</tr>\n<tr>\n<td>templateId</td>\n<td>string</td>\n<td>ID do template de origem.</td>\n</tr>\n<tr>\n<td>file.name</td>\n<td>string</td>\n<td>Nome do arquivo gerado.</td>\n</tr>\n<tr>\n<td>file.latestMaster</td>\n<td>string</td>\n<td><strong>Link temporário</strong> do documento processado (expira em 90 minutos).</td>\n</tr>\n<tr>\n<td>createdAt</td>\n<td>string</td>\n<td>Data/hora da criação (ISO 8601).</td>\n</tr>\n</tbody>\n</table>\n</div><blockquote>\n<p>⚠️ <strong>Links temporários</strong> expiram em 90 minutos. Faça o download imediatamente se necessário.</p>\n</blockquote>\n","urlObject":{"protocol":"https","path":["api","v1","template","create-envelope","{{template_id}}"],"host":["api","assinaai","com"],"query":[],"variable":[]}},"response":[{"id":"08d2931f-5c68-4c5b-baa5-f42c544c7fe5","name":"200 OK — Documento criado","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"},{"key":"Authorization","value":"Bearer sk_live_K3l_yIr_**","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"signatures\": [\n        {\n            \"recipient\": {\n                \"name\": \"Funcionario\",\n                \"email\": \"funcionario@empresa.com\",\n                \"phone\": \"\",\n                \"routingOrder\": 1,\n                \"action\": \"SIGN\",\n                \"senderType\": \"EMAIL\",\n                \"authenticationType\": \"DEFAULT_SIGN\"\n            }\n        },\n        {\n            \"recipient\": {\n                \"name\": \"Gerente\",\n                \"email\": \"gerente@empresa.com\",\n                \"phone\": \"\",\n                \"routingOrder\": 2,\n                \"action\": \"SIGN\",\n                \"senderType\": \"EMAIL\",\n                \"authenticationType\": \"DEFAULT_SIGN\"\n            }\n        }\n    ],\n    \"variables\": [\n        {\n            \"name\": \"FUNCIONARIO\",\n            \"value\": \"José Luiz de Oliveira\"\n        },\n        {\n            \"name\": \"FUNCIONARIO_CPF\",\n            \"value\": \"072.763.526-15\"\n        }\n    ],\n    \"documentSendConfig\": {\n        \"documentName\": \"Contrato de Trabalho — José Luiz\",\n        \"customEmailMessage\": \"Por favor, assine o documento abaixo.\",\n        \"signatureDeadline\": \"2026-06-30T23:59:00.000Z\",\n        \"sendReminders\": \"EVERY_3_DAYS\",\n        \"observers\": []\n    },\n    \"folderId\": null\n}","options":{"raw":{"language":"json"}}},"url":"https://api.assinaai.com/api/v1/template/create-envelope/{{template_id}}"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"id\": \"6983d5216505ab4c80dd9f7c\",\n    \"status\": \"SENT_FOR_SIGNATURE\",\n    \"templateId\": \"697a9fa1d0a31b0ecad6aa65\",\n    \"file\": {\n        \"name\": \"Contrato_de_Trabalho_Jose_Luiz.docx\",\n        \"latestMaster\": \"https://assinaai.s3.amazonaws.com/tenant-envelope-27-04-2026-bc11/original-Contrato.pdf\"\n    },\n    \"createdAt\": \"2026-04-27T20:24:16.889488\"\n}"}],"_postman_id":"c3ea2f71-577e-4a09-8c73-ea06aeee6b55"},{"name":"Listar","id":"0b3c0f6f-16a3-4dab-b6ef-f7d491c82173","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"Content-Type","value":"application/json"},{"key":"Authorization","value":"Bearer sk_live_**","type":"text"}],"url":"https://api.assinaai.com/api/v1/template/list","description":"<h2 id=\"listar-templates-criados\">Listar templates criados</h2>\n","urlObject":{"protocol":"https","path":["api","v1","template","list"],"host":["api","assinaai","com"],"query":[],"variable":[]}},"response":[{"id":"831890ec-e96f-47d6-9261-cd54c78cc671","name":"200 OK — Listar","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"},{"key":"Authorization","value":"Bearer sk_live_K3l_yIr_**","type":"text"}],"url":"https://api.assinaai.com/api/v1/template/list"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"[\n    {\n        \"name\": \"Primeiro Template\",\n        \"id\": \"69c174d2c80978a2940f53e7\"\n    },\n    {\n        \"name\": \"CONTRATO\",\n        \"id\": \"6940021149d6a2693da0c535\"\n    }\n]"}],"_postman_id":"0b3c0f6f-16a3-4dab-b6ef-f7d491c82173"}],"id":"d8e75e2a-eb2f-4043-8bcd-208b1e6f777d","description":"<h2 id=\"templates\">Templates</h2>\n<p>Endpoints para criação de documentos a partir de modelos dinâmicos <code>.docx</code> pré-configurados no painel da Assina AI.</p>\n<p><strong>Pré-requisitos:</strong></p>\n<ul>\n<li>O modelo deve existir no painel (Menu → Templates).</li>\n<li>Apenas arquivos <code>.docx</code> suportam substituição dinâmica de variáveis.</li>\n<li>Modelos PDF não são compatíveis com este fluxo.</li>\n</ul>\n","_postman_id":"d8e75e2a-eb2f-4043-8bcd-208b1e6f777d"},{"name":"Envelopes","item":[{"name":"Criar Envelope (upload PDF)","id":"3272ef0a-df40-4114-b0ca-5456e1a02211","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"formdata","formdata":[{"key":"file","type":"file","description":"<p>Arquivo PDF a ser enviado para assinatura (máx. 5MB).</p>\n","value":null},{"key":"envelope","type":"text","contentType":"application/json","value":"{\"signatures\":[{\"recipient\":{\"name\":\"José \",\"lastname\":\"Oliveira\",\"email\":\"jose@teste.com\",\"routingOrder\":1,\"action\":\"SIGN\",\"senderType\":\"EMAIL\",\"authenticationType\":\"DEFAULT_SIGN\",\"signaturePositions\":[{\"pageNumber\":3,\"x\":42.35229046085771,\"y\":45.874522854066754,\"element\":\"SIGNATURE\"},{\"pageNumber\":2,\"x\":32.617584892242654,\"y\":97.28323941889568,\"element\":\"INITIALS\"}]}}],\"documentSendConfig\":{\"documentName\":\"TERMO_DE_CONFIDENCIALIDADE_E_PROTECAO_DE_DADOS_NDA.pdf\",\"emailSubject\":\"\",\"customEmailMessage\":\"\",\"observers\":[],\"signatureDeadline\":\"2026-05-27T12:50:35.813Z\",\"sendReminders\":\"EVERY_3_DAYS\"},\"status\":\"SENT_FOR_SIGNATURE\",\"folderId\":null}","description":"<p>JSON com os dados do envelope (destinatários, configurações).</p>\n"}]},"url":"https://api.assinaai.com/api/v1/envelopes/create","description":"<h1 id=\"criar-envelope-de-assinatura\">Criar Envelope de Assinatura</h1>\n<p>Envie um documento PDF para um ou mais destinatários assinarem eletronicamente. Suporta assinatura sequencial, paralela, múltiplos tipos de autenticação e notificações via e-mail ou WhatsApp.</p>\n<hr />\n<p><code>POST</code> <a href=\"https://api.assinaai.com/api/v1/%60envelopes/create%60\">https://api.assinaai.com/api/v1/envelopes/create</a></p>\n<h4 id=\"headers\">Headers</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Authorization*</td>\n<td>string</td>\n<td><code>Bearer {{api_token}}</code> (herdado da collection)</td>\n</tr>\n<tr>\n<td>Content-Type*</td>\n<td>string</td>\n<td><code>multipart/form-data</code> (definido automaticamente pelo Postman)</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"request-multipartform-data\">Request (multipart/form-data)</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Part</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>file*</td>\n<td>binary</td>\n<td>Arquivo PDF. Máximo: 5MB.</td>\n</tr>\n<tr>\n<td>envelope*</td>\n<td>application/json</td>\n<td>JSON com destinatários e configurações do envelope.</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h3 id=\"documentsendconfig\">documentSendConfig</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>documentName*</td>\n<td>string</td>\n<td>Nome exibido ao destinatário na notificação e tela de assinatura.</td>\n</tr>\n<tr>\n<td>customEmailMessage</td>\n<td>string</td>\n<td>Mensagem personalizada no e-mail. Default: <code>\"\"</code></td>\n</tr>\n<tr>\n<td>signatureDeadline</td>\n<td>DateTime</td>\n<td>Prazo de assinatura. ISO 8601: <code>2026-06-30T23:59:00.000Z</code></td>\n</tr>\n<tr>\n<td>sendReminders</td>\n<td>enum</td>\n<td><code>EVERY_DAY</code></td>\n</tr>\n<tr>\n<td>observers</td>\n<td>array</td>\n<td>E-mails que recebem cópia das notificações (máx. 20). Default: <code>[]</code></td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"recipient\">recipient</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>name*</td>\n<td>string</td>\n<td>Nome completo do destinatário.</td>\n</tr>\n<tr>\n<td>email</td>\n<td>string</td>\n<td>E-mail. <strong>Obrigatório</strong> se <code>senderType = EMAIL</code>.</td>\n</tr>\n<tr>\n<td>phone</td>\n<td>string</td>\n<td>Telefone com DDD (somente dígitos). <strong>Obrigatório</strong> se <code>senderType = WHATSAPP</code>.</td>\n</tr>\n<tr>\n<td>cpf</td>\n<td>string</td>\n<td>CPF do destinatário. Formato: <code>000.000.000-00</code>.</td>\n</tr>\n<tr>\n<td>routingOrder*</td>\n<td>integer</td>\n<td>Ordem de assinatura. <code>1</code> = primeiro a receber. Mesmo valor = paralelo.</td>\n</tr>\n<tr>\n<td>action*</td>\n<td>enum</td>\n<td><code>SIGN</code></td>\n</tr>\n<tr>\n<td>senderType*</td>\n<td>enum</td>\n<td><code>EMAIL</code></td>\n</tr>\n<tr>\n<td>authenticationType*</td>\n<td>enum</td>\n<td><code>DEFAULT_SIGN</code></td>\n</tr>\n<tr>\n<td>signaturePositions*</td>\n<td>array</td>\n<td>Posições dos elementos no documento. Mínimo: 1 item.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"signaturepositions\">signaturePositions[]</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>element*</td>\n<td>enum</td>\n<td><code>SIGNATURE</code></td>\n</tr>\n<tr>\n<td>pageNumber*</td>\n<td>integer</td>\n<td>Número da página (começa em <code>1</code>).</td>\n</tr>\n<tr>\n<td>x*</td>\n<td>double</td>\n<td>Posição horizontal em % da largura da página (<code>0.0</code> a <code>100.0</code>).</td>\n</tr>\n<tr>\n<td>y*</td>\n<td>double</td>\n<td>Posição vertical em % da altura da página (<code>0.0</code> a <code>100.0</code>).</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h3 id=\"dicas\">Dicas</h3>\n<ul>\n<li><p><strong>Sequencial:</strong> Use <code>routingOrder</code> crescente (<code>1</code>, <code>2</code>, <code>3</code>...). Cada destinatário só é notificado após o anterior concluir.</p>\n</li>\n<li><p><strong>Paralelo:</strong> Use <code>routingOrder: 1</code> para todos. Todos recebem a notificação simultaneamente.</p>\n</li>\n<li><p><strong>Rascunho:</strong> Não inclua <code>documentSendConfig.sendReminders</code> ou inclua <code>status: DRAFT</code> para salvar sem enviar.</p>\n</li>\n<li><p>Use o <code>token</code> retornado na resposta para construir o link de assinatura: <code>https://app.assinaai.com/sign/{token}</code></p>\n</li>\n</ul>\n<hr />\n<h3 id=\"responses\">Responses</h3>\n<p><strong><code>201 Created</code></strong> — Envelope criado e notificações enviadas.</p>\n<p><strong><code>400 Bad Request</code></strong> — JSON inválido ou campos obrigatórios ausentes.</p>\n<p><strong><code>401 Unauthorized</code></strong> — Token ausente ou inválido.</p>\n<p><strong><code>422 Unprocessable Entity</code></strong> — Dados inválidos (ex: <code>email</code> ausente com <code>senderType = EMAIL</code>).</p>\n","urlObject":{"protocol":"https","path":["api","v1","envelopes","create"],"host":["api","assinaai","com"],"query":[],"variable":[]}},"response":[{"id":"f1f6baaa-c994-4dd7-abd1-2f0cfd7b1644","name":"201 Created — Envelope criado","originalRequest":{"method":"POST","header":[{"key":"Accept-Charset","value":"application/json","type":"text"},{"key":"Authorization","value":"Bearer sk_live_K3l_yIr**","type":"text"}],"body":{"mode":"formdata","formdata":[{"key":"file","type":"file","value":null},{"key":"envelope","type":"text","contentType":"application/json","value":"{\"signatures\":[{\"recipient\":{\"name\":\"José \",\"lastname\":\"Oliveira\",\"email\":\"jose@teste.com\",\"routingOrder\":1,\"action\":\"SIGN\",\"senderType\":\"EMAIL\",\"authenticationType\":\"DEFAULT_SIGN\",\"signaturePositions\":[{\"pageNumber\":3,\"x\":42.35229046085771,\"y\":45.874522854066754,\"element\":\"SIGNATURE\"},{\"pageNumber\":2,\"x\":32.617584892242654,\"y\":97.28323941889568,\"element\":\"INITIALS\"}]}}],\"documentSendConfig\":{\"documentName\":\"TERMO_DE_CONFIDENCIALIDADE_E_PROTECAO_DE_DADOS_NDA.pdf\",\"emailSubject\":\"\",\"customEmailMessage\":\"\",\"observers\":[],\"signatureDeadline\":\"2026-05-27T12:50:35.813Z\",\"sendReminders\":\"EVERY_3_DAYS\"},\"status\":\"SENT_FOR_SIGNATURE\",\"folderId\":null}"}]},"url":"https://api.assinaai.com/api/v1/envelopes/create"},"status":"Created","code":201,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"id\": \"69ef6e1f9dabb2b11f412cc0\",\n  \"status\": \"SENT_FOR_SIGNATURE\",\n  \"tenantId\": \"empresa-0d49\",\n  \"createdAt\": \"2026-04-27T11:09:35.572Z\",\n  \"signatures\": [\n    {\n      \"id\": \"173c8a30d0413f0c0ecea8...\",\n      \"createdAt\": \"2026-04-27T14:09:35.564Z\",\n      \"recipient\": {\n        \"id\": \"57259dbc-4359-4557-af23-98cbd68fabf9\",\n        \"name\": \"João Silva\",\n        \"email\": \"joao@empresa.com\",\n        \"status\": \"PENDING\",\n        \"routingOrder\": 1,\n        \"senderType\": \"EMAIL\",\n        \"authenticationType\": \"DEFAULT_SIGN\",\n        \"token\": \"lU3nzLXQrqiMCkOqAlaoRR9dQiB01A\",\n        \"linkExpirationAt\": \"2026-05-27T11:09:35.572Z\",\n        \"signaturePositions\": [\n          { \"element\": \"SIGNATURE\", \"pageNumber\": 1, \"x\": 42.35, \"y\": 85.0, \"z\": 0 }\n        ]\n      },\n      \"emailEvents\": [],\n      \"whatsAppEvents\": []\n    }\n  ],\n  \"documentSendConfig\": {\n    \"documentName\": \"Contrato de Prestação de Serviços\",\n    \"signatureDeadline\": \"2026-06-30\",\n    \"sendReminders\": \"EVERY_3_DAYS\",\n    \"observers\": []\n  },\n  \"file\": {\n    \"name\": \"contrato.pdf\",\n    \"type\": \"application/pdf\",\n    \"size\": 84190\n  },\n  \"auditTrail\": [\n    {\n      \"eventType\": \"ENVELOPE_CREATED\",\n      \"eventTimestamp\": \"2026-04-27T14:09:35.582Z\",\n      \"details\": \"Envelope criado e preparado para envio.\"\n    },\n    {\n      \"eventType\": \"RECIPIENT_NOTIFICATION_SENT\",\n      \"eventTimestamp\": \"2026-04-27T14:09:35.583Z\",\n      \"recipientEmail\": \"joao@empresa.com\",\n      \"senderType\": \"EMAIL\",\n      \"details\": \"Notificação enviada para o destinatário.\"\n    }\n  ]\n}"}],"_postman_id":"3272ef0a-df40-4114-b0ca-5456e1a02211"},{"name":"Listar Envelopes com Filtros","id":"7e406473-50a4-4c03-8ad4-93d4a43dbe63","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://api.assinaai.com/api/v1/envelopes/filter/page?page=0&size=20&sort=createdAt,desc","description":"<h1 id=\"listar-envelopes-com-filtros\">Listar Envelopes com Filtros</h1>\n<p>Retorna uma lista paginada de todos os envelopes do tenant autenticado. Suporta filtragem por status, período, tags, template e busca livre.</p>\n<hr />\n<p><code>GET</code> <a href=\"https://api.assinaai.com/api/v1/envelopes%60/v1/envelopes/filter/page%60\">https://api.assinaai.com/api/v1/envelopes/filter/page</a></p>\n<h3 id=\"query-parameters\">Query Parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Obrigatório</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>page</td>\n<td>integer</td>\n<td>Não</td>\n<td>Número da página (base 0). Default: <code>0</code></td>\n</tr>\n<tr>\n<td>size</td>\n<td>integer</td>\n<td>Não</td>\n<td>Itens por página. Default: <code>20</code></td>\n</tr>\n<tr>\n<td>sort</td>\n<td>string</td>\n<td>Não</td>\n<td>Ordenação. Ex: <code>createdAt,desc</code></td>\n</tr>\n<tr>\n<td>term</td>\n<td>string</td>\n<td>Não</td>\n<td>Busca livre (nome, destinatário).</td>\n</tr>\n<tr>\n<td>status</td>\n<td>string</td>\n<td>Não</td>\n<td>Um ou mais status separados por vírgula.</td>\n</tr>\n<tr>\n<td>tags</td>\n<td>string</td>\n<td>Não</td>\n<td>Tags separadas por vírgula.</td>\n</tr>\n<tr>\n<td>startDate</td>\n<td>string</td>\n<td>Não</td>\n<td>Data inicial (<code>yyyy-MM-dd</code>).</td>\n</tr>\n<tr>\n<td>endDate</td>\n<td>string</td>\n<td>Não</td>\n<td>Data final (<code>yyyy-MM-dd</code>).</td>\n</tr>\n<tr>\n<td>templateId</td>\n<td>string</td>\n<td>Não</td>\n<td>Filtra por template de origem.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"valores-de-status\">Valores de status</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Valor</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>DRAFT</code></td>\n<td>Rascunho</td>\n</tr>\n<tr>\n<td><code>SENT_FOR_SIGNATURE</code></td>\n<td>Enviado para assinatura</td>\n</tr>\n<tr>\n<td><code>PARTIALLY_SIGNED</code></td>\n<td>Parcialmente assinado</td>\n</tr>\n<tr>\n<td><code>COMPLETED</code></td>\n<td>Concluído (todas as assinaturas coletadas)</td>\n</tr>\n<tr>\n<td><code>CANCELED</code></td>\n<td>Cancelado</td>\n</tr>\n<tr>\n<td><code>DECLINED</code></td>\n<td>Declinado por um ou mais signatários</td>\n</tr>\n<tr>\n<td><code>EXPIRED</code></td>\n<td>Prazo expirado</td>\n</tr>\n<tr>\n<td><code>SCHEDULED</code></td>\n<td>Agendado</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h3 id=\"response-200-ok\">Response <code>200 OK</code></h3>\n<p>Retorna objeto paginado com os envelopes encontrados.</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"content\": [...],\n  \"totalElements\": 42,\n  \"totalPages\": 3,\n  \"size\": 20,\n  \"number\": 0\n}\n\n</code></pre>\n","urlObject":{"protocol":"https","path":["api","v1","envelopes","filter","page"],"host":["api","assinaai","com"],"query":[{"description":{"content":"<p>Número da página (base 0).</p>\n","type":"text/plain"},"key":"page","value":"0"},{"description":{"content":"<p>Itens por página.</p>\n","type":"text/plain"},"key":"size","value":"20"},{"description":{"content":"<p>Campo e direção de ordenação. Ex: createdAt,desc</p>\n","type":"text/plain"},"key":"sort","value":"createdAt,desc"},{"disabled":true,"description":{"content":"<p>Busca livre por nome do documento ou destinatário.</p>\n","type":"text/plain"},"key":"term","value":""},{"disabled":true,"description":{"content":"<p>Filtro por status. Múltiplos separados por vírgula. Valores: DRAFT, SENT_FOR_SIGNATURE, PARTIALLY_SIGNED, COMPLETED, CANCELED, DECLINED, EXPIRED, ARCHIVED, DELETED, SCHEDULED.</p>\n","type":"text/plain"},"key":"status","value":""},{"disabled":true,"description":{"content":"<p>Tags separadas por vírgula. Ex: contrato,rh</p>\n","type":"text/plain"},"key":"tags","value":""},{"disabled":true,"description":{"content":"<p>Data inicial do período. Formato: yyyy-MM-dd</p>\n","type":"text/plain"},"key":"startDate","value":""},{"disabled":true,"description":{"content":"<p>Data final do período. Formato: yyyy-MM-dd</p>\n","type":"text/plain"},"key":"endDate","value":""},{"disabled":true,"description":{"content":"<p>Filtra apenas envelopes gerados a partir deste template.</p>\n","type":"text/plain"},"key":"templateId","value":""}],"variable":[]}},"response":[{"id":"019bbdc7-da7c-449f-9c12-e74a3a03a752","name":"200 OK — Lista paginada","originalRequest":{"method":"GET","header":[],"url":{"raw":"{{base_url}}/v1/envelopes/filter/page?page=0&size=20&sort=createdAt,desc","host":["{{base_url}}"],"path":["v1","envelopes","filter","page"],"query":[{"key":"page","value":"0"},{"key":"size","value":"20"},{"key":"sort","value":"createdAt,desc"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"content\": [\n    {\n      \"id\": \"69ef6e1f9dabb2b11f412cc0\",\n      \"status\": \"SENT_FOR_SIGNATURE\",\n      \"createdAt\": \"2026-04-27T11:09:35.572Z\",\n      \"completedAt\": null,\n      \"documentSendConfig\": {\n        \"documentName\": \"Contrato de Prestação de Serviços\"\n      },\n      \"signatures\": [\n        {\n          \"recipient\": {\n            \"name\": \"João Silva\",\n            \"email\": \"joao@empresa.com\",\n            \"status\": \"PENDING\"\n          }\n        }\n      ]\n    }\n  ],\n  \"totalElements\": 1,\n  \"totalPages\": 1,\n  \"size\": 20,\n  \"number\": 0,\n  \"first\": true,\n  \"last\": true\n}"}],"_postman_id":"7e406473-50a4-4c03-8ad4-93d4a43dbe63"},{"name":"Buscar Envelope por ID","id":"bb1cdbd4-4bc1-42c7-9696-805be787661f","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://api.assinaai.com/api/v1/envelopes/69ef673df88976056110c6d0","description":"<h1 id=\"buscar-envelope-por-id\">Buscar Envelope por ID</h1>\n<p>Retorna os detalhes completos de um envelope, incluindo destinatários, status de cada assinatura, audit trail e uma <strong>URL temporária pré-assinada</strong> para acesso ao arquivo original (válida por 90 minutos).</p>\n<hr />\n<p><code>GET</code> <a href=\"https://api.assinaai.com/api/v1/envelopes/%60%7B%7Benvelope_id%7D%7D%60\">https://api.assinaai.com/api/v1/envelopes/{{envelope_id}}</a></p>\n<h3 id=\"path-parameters\">Path Parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>envelope_id*</td>\n<td>string</td>\n<td>ID único do envelope.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-200-ok\">Response <code>200 OK</code></h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>id</td>\n<td>string</td>\n<td>ID único do envelope.</td>\n</tr>\n<tr>\n<td>status</td>\n<td>enum</td>\n<td>Status atual do envelope.</td>\n</tr>\n<tr>\n<td>file.s3TempFileName</td>\n<td>string</td>\n<td>URL temporária do arquivo (expira em 90 min).</td>\n</tr>\n<tr>\n<td>signatures</td>\n<td>array</td>\n<td>Lista de signatários com status individual.</td>\n</tr>\n<tr>\n<td>auditTrail</td>\n<td>array</td>\n<td>Histórico completo de eventos do envelope.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-404-not-found\">Response <code>404 Not Found</code></h3>\n<p>Envelope não encontrado ou não pertence ao tenant autenticado.</p>\n<hr />\n<blockquote>\n<p>⚠️ A URL em <code>file.s3TempFileName</code> expira em <strong>90 minutos</strong>. Faça o download se precisar armazenar o arquivo.</p>\n</blockquote>\n","urlObject":{"protocol":"https","path":["api","v1","envelopes","69ef673df88976056110c6d0"],"host":["api","assinaai","com"],"query":[],"variable":[]}},"response":[{"id":"54c7cfdf-c469-4e81-b255-cca988abc6b1","name":"200 OK — Envelope encontrado","originalRequest":{"method":"GET","header":[],"url":"{{base_url}}/v1/envelopes/{{envelope_id}}"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"id\": \"69ef6e1f9dabb2b11f412cc0\",\n  \"status\": \"SENT_FOR_SIGNATURE\",\n  \"tenantId\": \"empresa-0d49\",\n  \"createdAt\": \"2026-04-27T11:09:35.572Z\",\n  \"completedAt\": null,\n  \"file\": {\n    \"name\": \"contrato.pdf\",\n    \"type\": \"application/pdf\",\n    \"size\": 84190,\n    \"s3TempFileName\": \"https://assinaai.s3.amazonaws.com/signed-url-valid-90min...\"\n  },\n  \"documentSendConfig\": {\n    \"documentName\": \"Contrato de Prestação de Serviços\",\n    \"signatureDeadline\": \"2026-06-30\",\n    \"sendReminders\": \"EVERY_3_DAYS\",\n    \"observers\": []\n  },\n  \"signatures\": [\n    {\n      \"recipient\": {\n        \"id\": \"57259dbc-4359-4557-af23-98cbd68fabf9\",\n        \"name\": \"João Silva\",\n        \"email\": \"joao@empresa.com\",\n        \"status\": \"PENDING\",\n        \"routingOrder\": 1,\n        \"linkExpirationAt\": \"2026-05-27T11:09:35.572Z\"\n      }\n    }\n  ],\n  \"auditTrail\": [\n    {\n      \"eventType\": \"ENVELOPE_CREATED\",\n      \"eventTimestamp\": \"2026-04-27T14:09:35.582Z\",\n      \"details\": \"Envelope criado e preparado para envio.\"\n    }\n  ]\n}"},{"id":"0cd0134b-f568-40e2-ab41-ac0d83fcfaa9","name":"404 Not Found","originalRequest":{"method":"GET","header":[],"url":"{{base_url}}/v1/envelopes/id-inexistente"},"status":"Not Found","code":404,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":""}],"_postman_id":"bb1cdbd4-4bc1-42c7-9696-805be787661f"},{"name":"Cancelar Envelope (Soft Delete)","id":"5a4fd349-640f-463c-a9e8-aaaa27ff4c51","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"DELETE","header":[],"url":"https://api.assinaai.com/api/v1/envelopes/soft-delete/69ef673df88976056110c6d0","description":"<h1 id=\"cancelar-envelope-soft-delete\">Cancelar Envelope (Soft Delete)</h1>\n<p>Remove logicamente um envelope, sem exclusão permanente do banco de dados. O envelope permanece auditável.</p>\n<p>Opcionalmente, informe <code>recipientId</code> para remover apenas a associação de um destinatário específico, mantendo o envelope ativo para os demais.</p>\n<hr />\n<p><code>DELETE</code> <a href=\"https://api.assinaai.com/api/v1/envelopes%60/soft-delete/%7B%7Benvelope_id%7D%7D%60\">https://api.assinaai.com/api/v1/envelopes/soft-delete/{{envelope_id}}</a></p>\n<h3 id=\"path-parameters\">Path Parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>envelope_id*</td>\n<td>string</td>\n<td>ID único do envelope.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"query-parameters\">Query Parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>recipientId</td>\n<td>string</td>\n<td>Se informado, cancela apenas este destinatário.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-200-ok\">Response <code>200 OK</code></h3>\n<p>Corpo: <code>\"Ok\"</code></p>\n","urlObject":{"protocol":"https","path":["api","v1","envelopes","soft-delete","69ef673df88976056110c6d0"],"host":["api","assinaai","com"],"query":[{"disabled":true,"description":{"content":"<p>Opcional. Se informado, remove apenas este destinatário do envelope (sem cancelar o envelope inteiro).</p>\n","type":"text/plain"},"key":"recipientId","value":""}],"variable":[]}},"response":[{"id":"85c72db8-f581-4a41-bee4-e5a6d2ef88b6","name":"200 OK — Cancelado","originalRequest":{"method":"DELETE","header":[],"url":"https://api.assinaai.com/api/v1/envelopes/soft-delete/69ef6e1f9dabb2b11f412cc0"},"status":"OK","code":200,"_postman_previewlanguage":"text","header":[{"key":"Content-Type","value":"text/plain"}],"cookie":[],"responseTime":null,"body":"\"Ok\""}],"_postman_id":"5a4fd349-640f-463c-a9e8-aaaa27ff4c51"},{"name":"Remover Destinatário do Envelope","id":"e54eedaa-efc1-444a-b0c4-263fcfa06479","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"id\": \"{{recipient_id}}\",\n  \"name\": \"João Silva\",\n  \"email\": \"joao@empresa.com\",\n  \"routingOrder\": 1\n}","options":{"raw":{"language":"json"}}},"url":"https://api.assinaai.com/api/v1/envelopes/remove-recipient/69ef673df88976056110c6d0","description":"<h1 id=\"remover-destinatário-do-envelope\">Remover Destinatário do Envelope</h1>\n<p>Remove um destinatário específico de um envelope em andamento.</p>\n<hr />\n<p><code>PUT</code> <a href=\"https://api.assinaai.com/api/v1/envelopes/%60remove-recipient/%7B%7Benvelope_id%7D%7D%60\">https://api.assinaai.com/api/v1/envelopes/remove-recipient/{{envelope_id}}</a></p>\n<h3 id=\"path-parameters\">Path Parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>envelope_id*</td>\n<td>string</td>\n<td>ID único do envelope.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"request-body\">Request Body</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>id*</td>\n<td>string</td>\n<td>ID do destinatário a ser removido.</td>\n</tr>\n<tr>\n<td>name</td>\n<td>string</td>\n<td>Nome do destinatário.</td>\n</tr>\n<tr>\n<td>email</td>\n<td>string</td>\n<td>E-mail do destinatário.</td>\n</tr>\n<tr>\n<td>routingOrder</td>\n<td>integer</td>\n<td>Ordem de assinatura do destinatário.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-204-no-content\">Response <code>204 No Content</code></h3>\n<p>Destinatário removido com sucesso. Sem corpo na resposta.</p>\n","urlObject":{"protocol":"https","path":["api","v1","envelopes","remove-recipient","69ef673df88976056110c6d0"],"host":["api","assinaai","com"],"query":[],"variable":[]}},"response":[{"id":"6aa917a9-73ed-45f8-b0ad-ef057e66dc27","name":"204 No Content — Removido","originalRequest":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"id\": \"8263ba93-6e4c-4115-bf9d-6b26abb99fea\"\n}","options":{"raw":{"language":"json"}}},"url":"https://api.assinaai.com/api/v1/envelopes/remove-recipient/69efab539dabb2b11f412cc1"},"status":"No Content","code":204,"_postman_previewlanguage":"json","header":[],"cookie":[],"responseTime":null,"body":""}],"_postman_id":"e54eedaa-efc1-444a-b0c4-263fcfa06479"},{"name":"Reenviar Link de Assinatura","id":"71d2238d-5e41-4d6d-a39a-e0dd355aec2f","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"senderType\": \"EMAIL\",\n  \"email\": \"joao@empresa.com\"\n}","options":{"raw":{"language":"json"}}},"url":"https://api.assinaai.com/api/v1/envelopes/resend-signer-link/69ef673df88976056110c6d069ef66d2458877e66473ade0","description":"<h1 id=\"reenviar-link-de-assinatura\">Reenviar Link de Assinatura</h1>\n<p>Gera um novo token de acesso e reenvia o link de assinatura para um destinatário via e-mail ou WhatsApp.</p>\n<hr />\n<p><code>POST</code> <a href=\"https://api.assinaai.com/api/v1/envelopes%60/resend-signer-link/%7B%7Benvelope_id%7D%7D/%7B%7Brecipient_id%7D%7D%60\">https://api.assinaai.com/api/v1/envelopes<code>/resend-signer-link/{{envelope_id}}/{{recipient_id}}</code></a></p>\n<h3 id=\"path-parameters\">Path Parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>envelope_id*</td>\n<td>string</td>\n<td>ID único do envelope.</td>\n</tr>\n<tr>\n<td>recipient_id*</td>\n<td>string</td>\n<td>ID único do destinatário.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"request-body\">Request Body</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>senderType*</td>\n<td>enum</td>\n<td>Canal de reenvio: <code>EMAIL</code> ou <code>WHATSAPP</code>.</td>\n</tr>\n<tr>\n<td>email</td>\n<td>string</td>\n<td>E-mail de destino. <strong>Obrigatório</strong> se <code>senderType = EMAIL</code>.</td>\n</tr>\n<tr>\n<td>phone</td>\n<td>string</td>\n<td>Telefone com DDD (somente dígitos). <strong>Obrigatório</strong> se <code>senderType = WHATSAPP</code>.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"exemplos\">Exemplos</h3>\n<p><strong>Via E-mail:</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"senderType\": \"EMAIL\",\n  \"email\": \"joao@empresa.com\"\n}\n\n</code></pre>\n<p><strong>Via WhatsApp:</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"senderType\": \"WHATSAPP\",\n  \"phone\": \"11987654321\"\n}\n\n</code></pre>\n<h3 id=\"response-200-ok\">Response <code>200 OK</code></h3>\n<p>Link reenviado com sucesso. Sem corpo na resposta.</p>\n","urlObject":{"protocol":"https","path":["api","v1","envelopes","resend-signer-link","69ef673df88976056110c6d069ef66d2458877e66473ade0"],"host":["api","assinaai","com"],"query":[],"variable":[]}},"response":[{"id":"f8f9b40f-6533-4716-ac6e-b7bd4252019d","name":"200 OK — Link reenviado (E-mail)","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"senderType\": \"EMAIL\",\n  \"email\": \"joao@empresa.com\"\n}","options":{"raw":{"language":"json"}}},"url":"https://api.assinaai.com/api/v1/envelopes/resend-signer-link/69efab539dabb2b11f412cc1/6f3e4a7d-46f5-4396-8975-273ba19a1642"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[],"cookie":[],"responseTime":null,"body":""},{"id":"678b4186-5736-44f7-8ac6-305dbe45c648","name":"200 OK — Link reenviado (WhatsApp)","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"senderType\": \"WHATSAPP\",\n  \"phone\": \"11987654321\"\n}","options":{"raw":{"language":"json"}}},"url":"{{base_url}}/v1/envelopes/resend-signer-link/{{envelope_id}}/{{recipient_id}}"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[],"cookie":[],"responseTime":null,"body":""}],"_postman_id":"71d2238d-5e41-4d6d-a39a-e0dd355aec2f"},{"name":"Obter ou Renovar Link de Assinatura","id":"236d2b00-57a6-4ca4-a7a9-756010b4f6ae","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://api.assinaai.com/api/v1/envelopes/refresh-token-signer-email-link/69ef66d2458877e66473ade0/69ef673df88976056110c6d0","description":"<h1 id=\"obter-ou-renovar-link-de-assinatura\">Obter ou Renovar Link de Assinatura</h1>\n<p>Retorna o link de assinatura vigente para um destinatário. Se o token estiver expirado, gera automaticamente um novo link antes de retorná-lo.</p>\n<p>Uso ideal: quando você precisa do link de assinatura para enviar por um canal próprio (CRM, e-mail marketing, automação) sem forçar um reenvio desnecessário.</p>\n<hr />\n<p><code>GET</code> <a href=\"https://api.assinaai.com/api/v1/envelopes%60/refresh-token-signer-email-link/%7B%7Benvelope_id%7D%7D/%7B%7Brecipient_id%7D%7D%60\">https://api.assinaai.com/api/v1/envelopes`/refresh-token-signer-email-link/{{envelope_id}}/{{recipient_id}}`</a></p>\n<h3 id=\"path-parameters\">Path Parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>envelope_id*</td>\n<td>string</td>\n<td>ID único do envelope.</td>\n</tr>\n<tr>\n<td>recipient_id*</td>\n<td>string</td>\n<td>ID único do destinatário.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-200-ok\">Response <code>200 OK</code></h3>\n<p>Retorna a URL de assinatura como string simples:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code>https://app.assinaai.com/sign/lU3nzLXQrqiMCkOqAlaoRR9dQiB01A\n\n</code></pre><blockquote>\n<p><strong>Comportamento:</strong> Se o token atual não estiver expirado, o mesmo link é retornado sem geração de novo token. Se estiver expirado, um novo token é gerado e o link atualizado é retornado.</p>\n</blockquote>\n","urlObject":{"protocol":"https","path":["api","v1","envelopes","refresh-token-signer-email-link","69ef66d2458877e66473ade0","69ef673df88976056110c6d0"],"host":["api","assinaai","com"],"query":[],"variable":[]}},"response":[{"id":"ab6da727-bdad-4c07-9231-acee473f0958","name":"200 OK — Link de assinatura","originalRequest":{"method":"GET","header":[],"url":"{{base_url}}/v1/envelopes/refresh-token-signer-email-link/{{envelope_id}}/{{recipient_id}}"},"status":"OK","code":200,"_postman_previewlanguage":"text","header":[{"key":"Content-Type","value":"text/plain"}],"cookie":[],"responseTime":null,"body":"https://app.assinaai.com/sign/lU3nzLXQrqiMCkOqAlaoRR9dQiB01A"}],"_postman_id":"236d2b00-57a6-4ca4-a7a9-756010b4f6ae"}],"id":"24e70115-11c2-42ce-b613-73a437612d9d","description":"<h2 id=\"envelopes\">Envelopes</h2>\n<p>Um <strong>envelope</strong> é o objeto central da Assina AI — representa um documento enviado para coleta de assinaturas eletrônicas.</p>\n<h3 id=\"ciclo-de-vida\">Ciclo de vida</h3>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code>DRAFT → SENT_FOR_SIGNATURE → PARTIALLY_SIGNED → COMPLETED\n                          ↘ CANCELED / DECLINED / EXPIRED\n</code></pre><h3 id=\"endpoints-disponíveis\">Endpoints disponíveis</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Método</th>\n<th>Rota</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>POST</code></td>\n<td><code>/v1/envelopes/create</code></td>\n<td>Criar envelope com upload de PDF</td>\n</tr>\n<tr>\n<td><code>GET</code></td>\n<td><code>/v1/envelopes/filter/page</code></td>\n<td>Listar envelopes com filtros e paginação</td>\n</tr>\n<tr>\n<td><code>GET</code></td>\n<td><code>/v1/envelopes/{id}</code></td>\n<td>Buscar envelope por ID</td>\n</tr>\n<tr>\n<td><code>DELETE</code></td>\n<td><code>/v1/envelopes/soft-delete/{id}</code></td>\n<td>Cancelar envelope</td>\n</tr>\n<tr>\n<td><code>PUT</code></td>\n<td><code>/v1/envelopes/remove-recipient/{envelopeId}</code></td>\n<td>Remover destinatário</td>\n</tr>\n<tr>\n<td><code>POST</code></td>\n<td><code>/v1/envelopes/resend-signer-link/{envelopeId}/{recipientId}</code></td>\n<td>Reenviar link de assinatura</td>\n</tr>\n<tr>\n<td><code>GET</code></td>\n<td><code>/v1/envelopes/refresh-token-signer-email-link/{envelopeId}/{recipientId}</code></td>\n<td>Obter ou renovar link de assinatura</td>\n</tr>\n<tr>\n<td><code>PUT</code></td>\n<td><code>/v1/envelopes/{envelopeId}/signature/recipient/{recipientId}</code></td>\n<td>Registrar assinatura</td>\n</tr>\n</tbody>\n</table>\n</div>","_postman_id":"24e70115-11c2-42ce-b613-73a437612d9d"},{"name":"Webhooks","item":[],"id":"3ad8062b-7e67-4c0a-8cb0-c254e9303f89","description":"<h1 id=\"🔔-webhooks--assina-ai\">🔔 Webhooks — Assina AI</h1>\n<p>Webhooks permitem que seu sistema receba notificações em tempo real sobre eventos do ciclo de vida de um envelope, sem precisar fazer polling na API.</p>\n<p>Quando um evento ocorre, a Assina AI faz uma requisição <code>POST</code> para a URL que você registrou, com o payload do evento no corpo da requisição.</p>\n<hr />\n<h2 id=\"tipos-de-evento\">Tipos de Evento</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>eventType</th>\n<th>Quando é disparado</th>\n<th>Entrega</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>DOCUMENT_CREATED</code></td>\n<td>Envelope enviado aos destinatários pela primeira vez.</td>\n<td>Assíncrona</td>\n</tr>\n<tr>\n<td><code>DOCUMENT_SIGNED</code></td>\n<td>Um destinatário completou sua ação (assinou, aprovou, etc.).</td>\n<td>Assíncrona</td>\n</tr>\n<tr>\n<td><code>DOCUMENT_COMPLETED</code></td>\n<td>Todos os destinatários completaram suas ações.</td>\n<td>Síncrona</td>\n</tr>\n<tr>\n<td><code>ALL_EVENTS</code></td>\n<td>Recebe os três tipos acima em um único endpoint.</td>\n<td>—</td>\n</tr>\n</tbody>\n</table>\n</div><p>Nota: <code>DOCUMENT_COMPLETED</code> é entregue de forma síncrona. Os demais são assíncronos, garantindo que a lentidão do seu endpoint não afete a experiência do signatário.</p>\n<hr />\n<h2 id=\"estrutura-do-payload\">Estrutura do Payload</h2>\n<p>Todos os eventos recebem o mesmo formato base. Campos <code>null</code> são omitidos automaticamente.</p>\n<h3 id=\"raiz\">Raiz</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Campo</th>\n<th>Tipo</th>\n<th>Sempre presente</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>eventId</code></td>\n<td>string (UUID)</td>\n<td>✅</td>\n<td>Identificador único do evento. Use para deduplicação em reentregas.</td>\n</tr>\n<tr>\n<td><code>eventType</code></td>\n<td>enum</td>\n<td>✅</td>\n<td><code>DOCUMENT_CREATED</code></td>\n</tr>\n<tr>\n<td><code>timestamp</code></td>\n<td>Instant (ISO 8601)</td>\n<td>✅</td>\n<td>Data/hora em que o evento foi gerado.</td>\n</tr>\n<tr>\n<td><code>envelopeId</code></td>\n<td>string</td>\n<td>✅</td>\n<td>ID do envelope que gerou o evento.</td>\n</tr>\n<tr>\n<td><code>tenantId</code></td>\n<td>string</td>\n<td>✅</td>\n<td>ID do tenant proprietário do envelope.</td>\n</tr>\n<tr>\n<td><code>status</code></td>\n<td>enum</td>\n<td>✅</td>\n<td>Status atual do envelope. Ver tabela Status do Envelope.</td>\n</tr>\n<tr>\n<td><code>documentName</code></td>\n<td>string</td>\n<td>✅</td>\n<td>Nome do documento definido na configuração de envio.</td>\n</tr>\n<tr>\n<td><code>title</code></td>\n<td>string</td>\n<td>—</td>\n<td>Título do envelope.</td>\n</tr>\n<tr>\n<td><code>description</code></td>\n<td>string</td>\n<td>—</td>\n<td>Descrição do envelope.</td>\n</tr>\n<tr>\n<td><code>templateId</code></td>\n<td>string</td>\n<td>—</td>\n<td>ID do template de origem (quando criado via template).</td>\n</tr>\n<tr>\n<td><code>folderId</code></td>\n<td>string</td>\n<td>—</td>\n<td>Pasta onde o envelope está armazenado.</td>\n</tr>\n<tr>\n<td><code>createdAt</code></td>\n<td>LocalDateTime</td>\n<td>✅</td>\n<td>Data/hora de criação do envelope.</td>\n</tr>\n<tr>\n<td><code>updatedAt</code></td>\n<td>LocalDateTime</td>\n<td>—</td>\n<td>Data/hora da última atualização.</td>\n</tr>\n<tr>\n<td><code>completedAt</code></td>\n<td>LocalDateTime</td>\n<td>—</td>\n<td>Data/hora de conclusão. Presente apenas em <code>DOCUMENT_COMPLETED</code>.</td>\n</tr>\n<tr>\n<td><code>expiresAt</code></td>\n<td>LocalDate</td>\n<td>—</td>\n<td>Data de expiração do prazo de assinatura.</td>\n</tr>\n<tr>\n<td><code>signatureDeadline</code></td>\n<td>LocalDate</td>\n<td>—</td>\n<td>Prazo limite para assinatura.</td>\n</tr>\n<tr>\n<td><code>file</code></td>\n<td>object</td>\n<td>✅</td>\n<td>Informações do arquivo.</td>\n</tr>\n<tr>\n<td><code>signatures</code></td>\n<td>array</td>\n<td>✅</td>\n<td>Lista de signatários.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"file\">file</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Campo</th>\n<th>Tipo</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>name</code></td>\n<td>string</td>\n<td>Nome do arquivo.</td>\n</tr>\n<tr>\n<td><code>type</code></td>\n<td>string</td>\n<td>MIME type. Ex: <code>application/pdf</code></td>\n</tr>\n<tr>\n<td><code>size</code></td>\n<td>integer</td>\n<td>Tamanho em bytes.</td>\n</tr>\n<tr>\n<td><code>originalHash</code></td>\n<td>string</td>\n<td>Hash SHA do documento original (integridade).</td>\n</tr>\n<tr>\n<td><code>finalHash</code></td>\n<td>string</td>\n<td>Hash SHA do documento final. Presente apenas em <code>DOCUMENT_COMPLETED</code>.</td>\n</tr>\n<tr>\n<td><code>documentUrl</code></td>\n<td>string</td>\n<td>URL pré-assinada da versão atual. Expira em 60 minutos.</td>\n</tr>\n<tr>\n<td><code>signedDocumentUrl</code></td>\n<td>string</td>\n<td>URL pré-assinada do documento totalmente assinado. Presente apenas em <code>DOCUMENT_COMPLETED</code>. Expira em 60 minutos.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"signatures\">signatures[]</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Campo</th>\n<th>Tipo</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>string</td>\n<td>ID único da assinatura.</td>\n</tr>\n<tr>\n<td><code>action</code></td>\n<td>enum</td>\n<td><code>SIGN</code></td>\n</tr>\n<tr>\n<td><code>createdAt</code></td>\n<td>Instant</td>\n<td>Data/hora de criação da assinatura.</td>\n</tr>\n<tr>\n<td><code>recipient</code></td>\n<td>object</td>\n<td>Dados do destinatário.</td>\n</tr>\n<tr>\n<td><code>signed</code></td>\n<td>object</td>\n<td>Dados da assinatura realizada. <code>null</code> se ainda pendente.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"recipient\">recipient</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Campo</th>\n<th>Tipo</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>string</td>\n<td>ID único do destinatário.</td>\n</tr>\n<tr>\n<td><code>name</code></td>\n<td>string</td>\n<td>Nome do destinatário.</td>\n</tr>\n<tr>\n<td><code>fullName</code></td>\n<td>string</td>\n<td>Nome completo (quando preenchido pelo signatário).</td>\n</tr>\n<tr>\n<td><code>email</code></td>\n<td>string</td>\n<td>E-mail do destinatário.</td>\n</tr>\n<tr>\n<td><code>status</code></td>\n<td>enum</td>\n<td><code>PENDING</code></td>\n</tr>\n<tr>\n<td><code>senderType</code></td>\n<td>enum</td>\n<td><code>EMAIL</code></td>\n</tr>\n<tr>\n<td><code>authenticationType</code></td>\n<td>enum</td>\n<td><code>DEFAULT_SIGN</code></td>\n</tr>\n<tr>\n<td><code>routingOrder</code></td>\n<td>integer</td>\n<td>Ordem de assinatura.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"signed\">signed</h3>\n<p>Presente apenas quando o destinatário completou sua ação.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Campo</th>\n<th>Tipo</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>signedAt</code></td>\n<td>LocalDateTime</td>\n<td>Data/hora exata da assinatura.</td>\n</tr>\n<tr>\n<td><code>signedDocumentHash</code></td>\n<td>string</td>\n<td>Hash do documento após esta assinatura (rastreabilidade).</td>\n</tr>\n<tr>\n<td><code>geolocation</code></td>\n<td>object</td>\n<td>Geolocalização no momento da assinatura.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"geolocation\">geolocation</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Campo</th>\n<th>Tipo</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>city</code></td>\n<td>string</td>\n<td>Cidade.</td>\n</tr>\n<tr>\n<td><code>country</code></td>\n<td>string</td>\n<td>País.</td>\n</tr>\n<tr>\n<td><code>timezone</code></td>\n<td>string</td>\n<td>Fuso horário. Ex: <code>America/Sao_Paulo</code></td>\n</tr>\n<tr>\n<td><code>latitude</code></td>\n<td>float</td>\n<td>Latitude geográfica.</td>\n</tr>\n<tr>\n<td><code>longitude</code></td>\n<td>float</td>\n<td>Longitude geográfica.</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h2 id=\"exemplos-de-payload-por-evento\">Exemplos de Payload por Evento</h2>\n<h3 id=\"document_created\">DOCUMENT_CREATED</h3>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{ \"eventId\": \"a1b2c3d4-0000-0000-0000-000000000001\", \"eventType\": \"DOCUMENT_CREATED\", \"timestamp\": \"2026-04-28T13:00:00Z\", \"envelopeId\": \"69ef6e1f9dabb2b11f412cc0\", \"tenantId\": \"empresa-0d49\", \"status\": \"SENT_FOR_SIGNATURE\", \"documentName\": \"Contrato de Prestação de Serviços\", \"createdAt\": \"2026-04-28T13:00:00\", \"signatureDeadline\": \"2026-06-30\", \"file\": { \"name\": \"contrato.pdf\", \"type\": \"application/pdf\", \"size\": 84190, \"originalHash\": \"sha256-abc123...\", \"documentUrl\": \"[https://s3.amazonaws.com/presigned-url-60min...\"](https://s3.amazonaws.com/presigned-url-60min...) }, \"signatures\": \\[ { \"id\": \"sig-001\", \"action\": \"SIGN\", \"createdAt\": \"2026-04-28T13:00:00Z\", \"recipient\": { \"id\": \"57259dbc-4359-4557-af23-98cbd68fabf9\", \"name\": \"João Silva\", \"email\": \"[joao@empresa.com](https://mailto:joao@empresa.com)\", \"status\": \"PENDING\", \"senderType\": \"EMAIL\", \"authenticationType\": \"DEFAULT_SIGN\", \"routingOrder\": 1 } }, { \"id\": \"sig-002\", \"action\": \"SIGN\", \"createdAt\": \"2026-04-28T13:00:00Z\", \"recipient\": { \"id\": \"89abc123-0000-0000-0000-000000000002\", \"name\": \"Maria Oliveira\", \"email\": \"[maria@empresa.com](https://mailto:maria@empresa.com)\", \"status\": \"PENDING\", \"senderType\": \"EMAIL\", \"authenticationType\": \"SELFIE_PHOTO\", \"routingOrder\": 2 } } \\]}\n\n</code></pre>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">### DOCUMENT_SIGNED\n{ \"eventId\": \"a1b2c3d4-0000-0000-0000-000000000002\", \"eventType\": \"DOCUMENT_SIGNED\", \"timestamp\": \"2026-04-28T14:35:22Z\", \"envelopeId\": \"69ef6e1f9dabb2b11f412cc0\", \"tenantId\": \"empresa-0d49\", \"status\": \"PARTIALLY_SIGNED\", \"documentName\": \"Contrato de Prestação de Serviços\", \"createdAt\": \"2026-04-28T13:00:00\", \"file\": { \"name\": \"contrato.pdf\", \"type\": \"application/pdf\", \"size\": 84190, \"originalHash\": \"sha256-abc123...\", \"documentUrl\": \"[https://s3.amazonaws.com/presigned-url-60min...\"](https://s3.amazonaws.com/presigned-url-60min...) }, \"signatures\": \\[ { \"id\": \"sig-001\", \"action\": \"SIGN\", \"recipient\": { \"id\": \"57259dbc-4359-4557-af23-98cbd68fabf9\", \"name\": \"João Silva\", \"email\": \"[joao@empresa.com](https://mailto:joao@empresa.com)\", \"status\": \"SIGNED\", \"senderType\": \"EMAIL\", \"authenticationType\": \"DEFAULT_SIGN\", \"routingOrder\": 1 }, \"signed\": { \"signedAt\": \"2026-04-28T14:35:22\", \"signedDocumentHash\": \"sha256-def456...\", \"geolocation\": { \"city\": \"São Paulo\", \"country\": \"Brasil\", \"timezone\": \"America/Sao_Paulo\", \"latitude\": -23.5505, \"longitude\": -46.6333 } } }, { \"id\": \"sig-002\", \"action\": \"SIGN\", \"recipient\": { \"id\": \"89abc123-0000-0000-0000-000000000002\", \"name\": \"Maria Oliveira\", \"email\": \"[maria@empresa.com](https://mailto:maria@empresa.com)\", \"status\": \"PENDING\", \"senderType\": \"EMAIL\", \"authenticationType\": \"SELFIE_PHOTO\", \"routingOrder\": 2 } } \\]}\n\n</code></pre>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">### DOCUMENT_COMPLETED\n{ \"eventId\": \"a1b2c3d4-0000-0000-0000-000000000003\", \"eventType\": \"DOCUMENT_COMPLETED\", \"timestamp\": \"2026-04-28T16:10:05Z\", \"envelopeId\": \"69ef6e1f9dabb2b11f412cc0\", \"tenantId\": \"empresa-0d49\", \"status\": \"COMPLETED\", \"documentName\": \"Contrato de Prestação de Serviços\", \"createdAt\": \"2026-04-28T13:00:00\", \"completedAt\": \"2026-04-28T16:10:05\", \"file\": { \"name\": \"contrato.pdf\", \"type\": \"application/pdf\", \"size\": 84190, \"originalHash\": \"sha256-abc123...\", \"finalHash\": \"sha256-ghi789...\", \"documentUrl\": \"[https://s3.amazonaws.com/presigned-url-master-60min...\"](https://s3.amazonaws.com/presigned-url-master-60min...), \"signedDocumentUrl\": \"[https://s3.amazonaws.com/presigned-url-final-60min...\"](https://s3.amazonaws.com/presigned-url-final-60min...) }, \"signatures\": \\[ { \"id\": \"sig-001\", \"action\": \"SIGN\", \"recipient\": { \"id\": \"57259dbc-4359-4557-af23-98cbd68fabf9\", \"name\": \"João Silva\", \"email\": \"[joao@empresa.com](https://mailto:joao@empresa.com)\", \"status\": \"SIGNED\", \"routingOrder\": 1 }, \"signed\": { \"signedAt\": \"2026-04-28T14:35:22\", \"signedDocumentHash\": \"sha256-def456...\" } }, { \"id\": \"sig-002\", \"action\": \"SIGN\", \"recipient\": { \"id\": \"89abc123-0000-0000-0000-000000000002\", \"name\": \"Maria Oliveira\", \"email\": \"[maria@empresa.com](https://mailto:maria@empresa.com)\", \"status\": \"SIGNED\", \"routingOrder\": 2 }, \"signed\": { \"signedAt\": \"2026-04-28T16:10:05\", \"signedDocumentHash\": \"sha256-ghi789...\" } } \\]}\n\n</code></pre>\n<hr />\n<h2 id=\"segurança\">Segurança</h2>\n<p>Cada requisição de webhook inclui dois headers:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Header</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>X-Webhook-Request-Id</code></td>\n<td>UUID único do evento. Use para idempotência — ignore eventos com o mesmo ID já processado.</td>\n</tr>\n<tr>\n<td><code>X-Webhook-Signature</code></td>\n<td>Assinatura <code>HMAC-SHA256</code> do corpo em Base64. Valide com o <code>secret</code> recebido no cadastro.</td>\n</tr>\n</tbody>\n</table>\n</div><p>A assinatura é gerada com <code>HMAC-SHA256(rawBody, secret)</code>. Use o corpo como string bruta, antes de qualquer parse de JSON.</p>\n<hr />\n<h2 id=\"política-de-reentrega-retry\">Política de Reentrega (Retry)</h2>\n<p>Se o seu endpoint não responder com <code>2xx</code>, a Assina AI reintenta automaticamente com backoff exponencial.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Tentativa</th>\n<th>Delay</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>1ª</td>\n<td>Imediata</td>\n</tr>\n<tr>\n<td>2ª</td>\n<td>2 segundos</td>\n</tr>\n<tr>\n<td>3ª</td>\n<td>4 segundos</td>\n</tr>\n</tbody>\n</table>\n</div><p>Após 3 tentativas falhas, o evento é marcado como <code>FAILED</code> e não é mais reenviado.</p>\n<h3 id=\"status-de-um-evento\">Status de um evento</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Status</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>PENDING</code></td>\n<td>Aguardando envio ou em processo de retry.</td>\n</tr>\n<tr>\n<td><code>SUCCESS</code></td>\n<td>Entregue com sucesso (<code>2xx</code>).</td>\n</tr>\n<tr>\n<td><code>FAILED</code></td>\n<td>Todas as 3 tentativas falharam.</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h2 id=\"status-do-envelope\">Status do Envelope</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>status</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>DRAFT</code></td>\n<td>Rascunho (não enviado).</td>\n</tr>\n<tr>\n<td><code>SENT_FOR_SIGNATURE</code></td>\n<td>Enviado — aguardando assinaturas.</td>\n</tr>\n<tr>\n<td><code>PARTIALLY_SIGNED</code></td>\n<td>Um ou mais destinatários assinaram, mas não todos.</td>\n</tr>\n<tr>\n<td><code>COMPLETED</code></td>\n<td>Todas as assinaturas foram coletadas.</td>\n</tr>\n<tr>\n<td><code>CANCELED</code></td>\n<td>Cancelado pelo remetente.</td>\n</tr>\n<tr>\n<td><code>DECLINED</code></td>\n<td>Um ou mais signatários recusaram.</td>\n</tr>\n<tr>\n<td><code>EXPIRED</code></td>\n<td>Prazo de assinatura expirou.</td>\n</tr>\n<tr>\n<td><code>SCHEDULED</code></td>\n<td>Agendado para envio futuro.</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h2 id=\"boas-práticas\">Boas práticas</h2>\n<p>Responda rápido, processe depois. Retorne <code>200 OK</code> imediatamente e processe o evento de forma assíncrona para evitar timeouts e retentativas desnecessárias.</p>\n<p>Use <code>eventId</code> para idempotência. Em caso de reentrega você pode receber o mesmo evento mais de uma vez. Verifique se o <code>eventId</code> já foi processado antes de agir.</p>\n<p>URLs temporárias expiram em 60 minutos. Os campos <code>documentUrl</code> e <code>signedDocumentUrl</code> são URLs pré-assinadas da AWS S3. Faça o download imediatamente após receber o evento <code>DOCUMENT_COMPLETED</code>.</p>\n<p>Valide sempre o <code>X-Webhook-Signature</code>. Nunca processe um webhook sem verificar a assinatura HMAC para garantir a autenticidade da origem.</p>\n<p>Registre <code>X-Webhook-Request-Id</code> nos seus logs. Facilita o diagnóstico de falhas junto ao suporte.</p>\n","_postman_id":"3ad8062b-7e67-4c0a-8cb0-c254e9303f89"},{"name":"Pastas","item":[{"name":"Criar Pasta","id":"3c28b6b7-ed56-48e8-93ca-b0636fb01dbd","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Authorization","value":"Bearer sk_live_K3l_yIr_**","type":"text"}],"body":{"mode":"raw","raw":"    {\n\n        \"name\": \"Nova Pasta\",\n        \"visibility\": \"SHARED\",\n        \"type\": \"USER\"\n    }","options":{"raw":{"language":"json"}}},"url":"https://api.assinaai.com/api/v1/folders/create","description":"<h2 id=\"criar-pasta\">Criar Pasta</h2>\n<p><code>POST</code> <code>{{base_url}}/v1/folders/create</code></p>\n<hr />\n<h3 id=\"request-body\">Request Body</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>name*</td>\n<td>string</td>\n<td>Nome da pasta</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h3 id=\"response-200-ok\">Response <code>200 OK</code></h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>id</td>\n<td>string</td>\n<td>ID único da pasta.</td>\n</tr>\n<tr>\n<td>name</td>\n<td>string</td>\n<td>Nome da pasta</td>\n</tr>\n<tr>\n<td>visibility</td>\n<td>enum</td>\n<td><code>SHARED, PRIVATE</code></td>\n</tr>\n<tr>\n<td>type</td>\n<td>enum</td>\n<td><code>USER,TEMPLATE, PAYROLL</code></td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"valores-de-visibility\">Valores de <code>visibility</code></h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Valor</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>PRIVATE</code></td>\n<td>Visível apenas para o criador</td>\n</tr>\n<tr>\n<td><code>SHARED</code></td>\n<td>Compartilhada com usuários específicos</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"valores-de-type\">Valores de <code>type</code></h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Valor</th>\n<th>Descrição</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>USER</code></td>\n<td>Pasta comum (padrão)</td>\n</tr>\n<tr>\n<td><code>TEMPLATE</code></td>\n<td>Pasta de templates</td>\n</tr>\n<tr>\n<td><code>PAYROLL</code></td>\n<td>Pasta de folha de pagamento</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"protocol":"https","path":["api","v1","folders","create"],"host":["api","assinaai","com"],"query":[],"variable":[]}},"response":[{"id":"f94ab264-1ab8-4ad8-9d9d-919852170b49","name":"200 OK — Criar Pasta","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"},{"key":"Authorization","value":"Bearer sk_live_K3l_yIr_**","type":"text"}],"body":{"mode":"raw","raw":"    {\n   \n        \"name\": \"Nova Pasta\",\n        \"visibility\": \"SHARED\",\n        \"type\": \"USER\"\n    }","options":{"raw":{"language":"json"}}},"url":"https://api.assinaai.com/api/v1/folders/create"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"id\": \"6983d5216505ab4c80dd9f7c\",\n    \"name\": \"Nova Pasta\",\n    \"visibility\": \"SHARED\",\n    \"type\": \"USER\"   \n}"}],"_postman_id":"3c28b6b7-ed56-48e8-93ca-b0636fb01dbd"},{"name":"Listar","id":"f521c0f8-6af6-49de-aa0f-2d7e4043d7c0","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"Content-Type","value":"application/json"},{"key":"Authorization","value":"Bearer sk_live_K3l_yIr_**","type":"text"}],"url":"https://api.assinaai.com/api/v1/folders/list","description":"<h2 id=\"listar-pastas-criadas\">Listar pastas criadas</h2>\n","urlObject":{"protocol":"https","path":["api","v1","folders","list"],"host":["api","assinaai","com"],"query":[],"variable":[]}},"response":[{"id":"ed3440f4-bcb3-4b23-9ebe-a9338291d4ec","name":"200 OK — Listar","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"},{"key":"Authorization","value":"Bearer sk_live_K3l_yIr_**","type":"text"}],"url":"https://api.assinaai.com/api/v1/folders/list"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":" [ \n    {\n        \"id\": \"69fc9a338b2f8262347d9a54\",\n        \"name\": \"Nova Pasta\",\n        \"visibility\": \"SHARED\",\n        \"type\": \"USER\"\n    }\n    \n]"}],"_postman_id":"f521c0f8-6af6-49de-aa0f-2d7e4043d7c0"}],"id":"1ba68507-629b-44c5-a565-1fe7125834d7","description":"<h2 id=\"pastas\">Pastas</h2>\n<p>Endpoints para criação de pastas para organização dos documentos.</p>\n","_postman_id":"1ba68507-629b-44c5-a565-1fe7125834d7"}]}