AssinAPI

Erros

Toda resposta de erro explica o que aconteceu, a provável causa, como corrigir e onde ler mais:

json
{
  "error": {
    "code": "SIGNING_SESSION_EXPIRED",
    "message": "A sessão de assinatura expirou.",
    "cause": "O prazo do link ou do envelope terminou.",
    "hint": "Solicite um novo link ao remetente.",
    "docs": "https://docs.assinapi.com.br/errors#signing-link",
    "requestId": "req_7f3a…"
  }
}

Trate pelo code (estável). Envie o requestId ao suporte. Stack traces nunca são retornados.

CódigoHTTPO que aconteceu · Provável causa · Como corrigir
VALIDATION_FAILED422Os dados enviados são inválidos. Algum campo está ausente, com tipo errado ou fora do formato esperado. → Confira os campos listados em "details" e o schema do endpoint na documentação.
BAD_REQUEST400Requisição inválida. O corpo não é um JSON válido ou faltam headers de contexto. → Verifique o formato do corpo (JSON) e os headers enviados.
UNAUTHENTICATED401Autenticação necessária. O header Authorization está ausente, malformado ou o token expirou. → Envie "Authorization: Bearer <ASSINAPI_SECRET_KEY>" ou faça login no dashboard.
INVALID_CREDENTIALS401E-mail ou senha inválidos. As credenciais não conferem. → Confira as credenciais. Após várias tentativas o acesso é temporariamente bloqueado.
INVALID_API_KEY401API Key inválida, revogada ou expirada. A chave foi digitada errada, revogada, expirou ou pertence a um projeto arquivado. → Gere uma nova chave em Dashboard → API Keys e atualize a variável ASSINAPI_SECRET_KEY no seu servidor.
SESSION_EXPIRED401Sua sessão expirou. O access token expirou ou a sessão foi encerrada. → Faça login novamente.
REFRESH_TOKEN_REUSED401Refresh token reutilizado. A sessão foi revogada por segurança. Um refresh token antigo foi usado novamente — possível vazamento. → Faça login novamente. Se não foi você, troque sua senha.
FORBIDDEN403Você não tem permissão para esta ação. Seu papel na organização não inclui esta permissão, ou a rota é exclusiva do dashboard. → Peça a um OWNER ou ADMIN da organização para ajustar seu papel.
INSUFFICIENT_SCOPE403A API Key não possui o escopo necessário. A chave foi criada com escopos restritos. → Crie uma chave com o escopo indicado em "details.requiredScope".
ENVIRONMENT_MISMATCH403Credencial de outro ambiente. Uma chave de Produção foi usada no endpoint de Sandbox (ou vice-versa). → Chaves ask_test_ usam sandbox.api.assinapi.com.br; chaves ask_live_ usam api.assinapi.com.br.
NOT_FOUND404Recurso não encontrado. O ID não existe, pertence a outro projeto ou ao outro ambiente (Sandbox/Produção). → Confira o ID, o projeto e o ambiente da credencial usada.
CONFLICT409Conflito com o estado atual do recurso. O recurso foi alterado por outra requisição ou já existe. → Recarregue o recurso e tente novamente.
EMAIL_ALREADY_REGISTERED409Não foi possível concluir o cadastro. Pode já existir uma conta com estes dados. → Se você já possui conta, faça login ou recupere a senha.
SLUG_TAKEN409Identificador já utilizado. Outro recurso da organização usa o mesmo slug. → Escolha outro slug.
IDEMPOTENCY_KEY_REUSED422Idempotency-Key já usada com outro corpo de requisição. A mesma chave foi reaproveitada para uma operação diferente. → Gere uma nova Idempotency-Key (UUID) para cada operação distinta.
IDEMPOTENCY_IN_PROGRESS409Uma requisição com esta Idempotency-Key ainda está em processamento. Um retry chegou antes da requisição original terminar. → Aguarde alguns segundos e repita a mesma requisição.
RATE_LIMITED429Muitas requisições. O limite por minuto deste endpoint foi atingido. → Aguarde o tempo indicado no header Retry-After e aplique backoff exponencial.
PAYLOAD_TOO_LARGE413Arquivo maior que o permitido. O PDF excede o tamanho máximo do plano. → Envie PDFs de até 20 MB (limite configurável por plano).
UNSUPPORTED_MEDIA_TYPE415Tipo de arquivo não suportado. O arquivo não é um PDF, está corrompido ou protegido por senha. → Envie um PDF válido e sem senha (o conteúdo deve começar com %PDF-).
MALWARE_DETECTED422O arquivo foi bloqueado pela verificação de segurança. O antivírus identificou conteúdo malicioso no arquivo. → Gere o PDF novamente a partir da fonte original.
DOCUMENT_LOCKED409Esta versão do documento já foi enviada para assinatura e não pode ser alterada. Documentos enviados tornam-se imutáveis para preservar a integridade. → Crie uma nova versão do documento.
INVALID_STATE_TRANSITION409Operação não permitida no status atual do envelope. O envelope já avançou (ex.: foi enviado, concluído ou cancelado). → Consulte "details.from" e a máquina de estados na documentação.
ENVELOPE_NOT_EDITABLE409O envelope já foi enviado e não pode ser editado. Após o envio, documentos e signatários ficam congelados. → Cancele e crie um novo envelope.
ENVELOPE_INCOMPLETE422O envelope precisa de ao menos um documento e um signatário. O envio foi solicitado antes de anexar documento ou signatário. → Adicione documentos (POST /v1/envelopes/:id/documents) e signatários (POST /v1/envelopes/:id/signers).
QUALIFIED_PROVIDER_UNAVAILABLE422Assinatura qualificada ICP-Brasil exige um provedor configurado. Nenhum PSC ICP-Brasil está integrado para este ambiente. → Use signatureLevel ADVANCED ou configure um QualifiedSignatureProvider.
CPF_REQUIRED422CPF obrigatório para assinatura avançada. A assinatura avançada (padrão) confere o CPF antes do envio do código. → Informe o CPF do signatário ou use signatureLevel SIMPLE.
INVALID_CPF422CPF inválido. Os dígitos verificadores não conferem. → Confira o número. No Sandbox use os CPFs de teste da documentação.
PHONE_REQUIRED422Telefone obrigatório para OTP por SMS. O signatário usa SMS_OTP mas não tem telefone cadastrado. → Informe phone no formato E.164 (+5511999999999) ou use EMAIL_OTP.
ENVELOPE_NOT_SIGNABLE409Este documento não está disponível para assinatura. O envelope foi concluído, cancelado, recusado ou expirou. → Fale com o remetente se precisar assinar novamente.
NOT_YOUR_TURN409Aguarde os signatários anteriores. O envelope usa ordem de assinatura e ainda não é a vez deste signatário. → Você será notificado quando for sua vez.
IDENTITY_MISMATCH422Os dados de identificação não conferem. O CPF informado é diferente do cadastrado pelo remetente. → Confira o CPF informado.
OTP_COOLDOWN429Aguarde antes de solicitar um novo código. Um código foi enviado há poucos segundos. → Tente novamente após "details.retryAfterSeconds" segundos.
OTP_LIMIT_REACHED429Limite de códigos atingido. Foram solicitados muitos códigos ou houve muitas falhas de identificação na última hora. → Aguarde uma hora ou solicite um novo link ao remetente.
OTP_INVALID422Código incorreto. O código digitado não corresponde ao enviado. → Confira o código recebido. "details.attemptsRemaining" indica as tentativas restantes.
OTP_EXPIRED410O código expirou. Códigos valem por 5 minutos. → Solicite um novo código.
OTP_LOCKED429Número máximo de tentativas excedido. O código foi digitado incorretamente várias vezes e foi bloqueado. → Solicite um novo código.
OTP_NOT_REQUESTED422Nenhum código ativo. O código ainda não foi solicitado, já foi usado ou foi bloqueado. → Solicite um código primeiro.
DOCUMENT_NOT_VIEWED422Visualize o documento antes de assinar. A assinatura exige evidência de acesso ao conteúdo. → Abra o documento no portal; a visualização é registrada como evidência.
AUTHENTICATION_REQUIRED403Confirme sua identidade antes de assinar. O código OTP não foi validado ou a validação tem mais de 30 minutos. → Valide o código OTP enviado.
DOCUMENT_HASH_MISMATCH409O documento apresentado difere do documento registrado. O arquivo foi alterado ou o navegador enviou um hash desatualizado. → Recarregue a página e revise o documento antes de assinar.
ALREADY_SIGNED409Este signatário já assinou. A assinatura já foi registrada (possivelmente por um retry). → Nenhuma ação necessária.
EVIDENCE_NOT_READY409As evidências ainda estão sendo geradas. O envelope foi concluído há instantes e os artefatos estão em processamento. → Tente novamente em alguns segundos ou aguarde o webhook envelope.completed.
WEBHOOK_URL_NOT_ALLOWED422URL de webhook não permitida. A URL não usa HTTPS, não resolve no DNS ou aponta para uma rede privada. → Use uma URL https pública; para testar localmente use `assinapi listen`.
SANDBOX_ONLY403Operação disponível apenas no Sandbox. Uma credencial de Produção foi usada em um recurso de testes. → Use uma chave ask_test_.
DOCUMENT_LIMIT_REACHED402Limite mensal de documentos atingido. A franquia do plano foi consumida e os excedentes estão bloqueados. → Faça upgrade do plano ou habilite excedentes em Uso e cobrança. O Sandbox continua disponível.
PLAN_LIMIT_REACHED403Recurso além do limite do plano. O plano atual não permite criar mais itens deste tipo. → Faça upgrade do plano. Nenhum dado existente foi alterado.
PLAN_CHANGE_NOT_ALLOWED409Mudança de plano não permitida. O plano solicitado não está disponível para contratação direta ou é igual ao atual. → Para Enterprise, fale com vendas.
OVERAGE_NOT_AVAILABLE422Excedente indisponível neste plano. O plano Free não permite excedentes. → Faça upgrade para um plano pago para habilitar excedentes.
PAYMENT_PROVIDER_UNAVAILABLE503Pagamento indisponível. Nenhum provedor de pagamento está configurado neste ambiente. → Fale com o suporte para contratar um plano pago.
PROVIDER_ERROR502Falha em provedor externo. O serviço de e-mail, SMS ou ICP-Brasil não respondeu corretamente. → Tente novamente; o problema foi registrado.
INTERNAL_ERROR500Erro interno. Uma falha inesperada ocorreu na AssinAPI. → Tente novamente. Se persistir, envie o requestId ao suporte.
SERVICE_UNAVAILABLE503Serviço indisponível. Uma dependência está temporariamente fora do ar. → Tente novamente em instantes.