Quickstart — chame o API do seu servidor
Reivindicar uma sandbox, armazenar a chave `esk_test_`, confirmá-la, criar um documento a partir de um modelo e enviá-lo. Os tokens de sessão de assinatura usam a mesma chave. Webhooks são registrados no aplicativo de administração.
Antes de começar
Você precisa de um terminal com `curl` e `jq`, além de uma caixa de entrada de e-mail que você controla. A chave da sandbox é `esk_test_…`. Uma chave de produção é `esk_live_…`. Envie-o como `Autorização: Portador`. O inquilino vem da chave, portanto não envie `x-tenant-id`.
Uma chave sandbox inclui `integrations:zapier` e `signing:write`. O upload, o assistente de envelope e o registro webhook usam a sessão de administrador após você entrar. Seu servidor usa a chave para as chamadas abaixo.
Quatro chamadas de servidor, depois um webhook no aplicativo de administração
- 1
Reivindicar sua caixa de areia
POST /api/auth/register with `mode: sandbox`. The response includes a full `esk_test_…` key, shown once, plus `demoCustomerId`. When seeding succeeds it also includes `sampleTemplateId`.
- 2
Confirme a chave
GET /api/v1/zapier/auth/test with the key. Expected output: HTTP 200 and `{ success: true, data: { tenantId, tenantName, zapierEnabled: true } }`.
- 3
Crie um documento e envie-o
POST /api/v1/zapier/actions/create-from-template with `sampleTemplateId`, then POST /api/v1/zapier/actions/send-for-signing with the returned `documentId`. The signer receives the link by email.
- 4
Registre um webhook no Admin
Faça login e abra Admin → Desenvolvedor → Webhooks. Salve o segredo de assinatura. As entregas usam `X-Endorsed-Signature`. As etapas de verificação estão no guia webhooks. Inspecione as tentativas em Admin → Desenvolvedor → Console.
Etapa 1 – reivindicar uma sandbox
Pré-requisitos: um endereço de e-mail e uma senha com mais de 8 caracteres. Saída esperada: HTTP 201 com `data.sandbox.apiKey` iniciando `esk_test_`.
curl -sS -X POST https://api.endorsedsign.com/api/auth/register \
-H 'Content-Type: application/json' \
-d '{
"tenantName": "Acme Dev Sandbox",
"adminEmail": "you@acme.example",
"password": "your-strong-password",
"mode": "sandbox"
}' | tee sandbox.json | jq '.data.sandbox'
# → {
# "apiKey": "esk_test_…",
# "keyPrefix": "esk_test_…",
# "keyId": "…",
# "scopes": ["signing:write", "integrations:zapier", …],
# "demoCustomerId": "sandbox-signer-acme-dev-sandbox",
# "demoCustomerName": "Sandbox Signer",
# "sampleTemplateId": "…",
# "expiresAt": "2026-…"
# }
export ENDORSED_API_KEY="$(jq -r '.data.sandbox.apiKey' sandbox.json)"
export ENDORSED_TEMPLATE_ID="$(jq -r '.data.sandbox.sampleTemplateId // empty' sandbox.json)"Armazene a chave no gerenciador de segredos do servidor. A verificação de e-mail bloqueia o console administrativo. A chave funciona para as chamadas desta página assim que é emitida.
Etapa 2 — confirme a chave
Pré-requisitos: `$ENDORSED_API_KEY` do passo 1. A chave do sandbox já possui `integrations:zapier`. Saída esperada: HTTP 200 e o nome do seu locatário.
curl -sS https://api.endorsedsign.com/api/v1/zapier/auth/test \
-H "Authorization: Bearer $ENDORSED_API_KEY" \
| jq '{ success, tenantId: .data.tenantId, tenantName: .data.tenantName, zapierEnabled: .data.zapierEnabled }'Uma chave ausente ou malformada é 401. Uma chave válida sem `integrations:zapier` é 403. Não envie `X-Data-Mode`: `esk_test_` já seleciona dados de teste.
Etapa 3 — crie um documento a partir do modelo sandbox e envie-o
Pré-requisitos: `$ENDORSED_API_KEY` e um `$ENDORSED_TEMPLATE_ID` não vazio. Se `sampleTemplateId` for nulo, crie um modelo no aplicativo de administração e cole seu ID. Saída esperada: HTTP 201 com `data.documentId` e, em seguida, uma resposta de envio com `status: "link-sent"`.
curl -sS -X POST https://api.endorsedsign.com/api/v1/zapier/actions/create-from-template \
-H "Authorization: Bearer $ENDORSED_API_KEY" \
-H 'Content-Type: application/json' \
-d "{
\"templateId\": \"$ENDORSED_TEMPLATE_ID\",
\"recipientEmail\": \"you@acme.example\",
\"recipientName\": \"Sandbox Signer\"
}" | tee created.json | jq '.data | { documentId, customerId, status }'
export ENDORSED_DOCUMENT_ID="$(jq -r '.data.documentId' created.json)"
curl -sS -X POST https://api.endorsedsign.com/api/v1/zapier/actions/send-for-signing \
-H "Authorization: Bearer $ENDORSED_API_KEY" \
-H 'Content-Type: application/json' \
-d "{
\"documentId\": \"$ENDORSED_DOCUMENT_ID\",
\"channel\": \"email\",
\"subject\": \"Please sign\"
}" | jq '.data | { documentId, status, channel, shareLinkExpiresAt }'O link de assinatura é enviado por e-mail para `recipientEmail`. A resposta JSON carrega o ID do documento, o status e a expiração do link. Abra o e-mail para finalizar a assinatura e assista `document.signed` em um webhook que você registrou no Admin.
Criar um token de sessão de assinatura
Pré-requisitos: `$ENDORSED_API_KEY` com `signing:write` (incluído na chave sandbox) e um ID de sessão de assinatura de uma sessão que você já criou. Saída esperada: HTTP 201 com um token `st_…` único.
curl -sS -X POST "https://api.endorsedsign.com/api/v1/signing-sessions/$ENDORSED_SESSION_ID/tokens" \
-H "Authorization: Bearer $ENDORSED_API_KEY" \
-H 'Content-Type: application/json' \
-d '{ "scope": "embed", "ttl_seconds": 300 }' \
| jq '{ token, expires_at, scope }'Hand `st_…` para incorporar o navegador. Mantenha `esk_…` no servidor. As instruções de resgate estão na página de incorporação do Elements.
Quando algo dá errado
Pronto para ir mais fundo?
Depois de ter um documento assinado de ponta a ponta, conecte-se às áreas de superfície abaixo para a próxima parte da integração.