---
title: "Obter URL pré-assinada para upload"
method: POST
path: "/v1/transactions/{transactionId}/document/presign"
tags: ["Documents"]
---

# Obter URL pré-assinada para upload

`POST /v1/transactions/{transactionId}/document/presign`

## Request

- Base URL: `https://api.signdocs.com.br`
- URL: `https://api.signdocs.com.br/v1/transactions/{transactionId}/document/presign`
- Auth: HTTP bearer

Gera uma URL pré-assinada do S3 para upload direto do documento.
Após o upload, confirme com `POST /v1/transactions/{id}/document/confirm`.

Recomendado para documentos maiores que 5 MB.

Requer scope `transactions:write`.

## Path parameters

- `transactionId` string, required

## Request body

- PresignRequest: Requisição de URL pré-assinada para upload.
  - `contentType` string, required: Tipo MIME do arquivo.
  - `filename` string, required: Nome do arquivo.

## Response `200`

URL pré-assinada gerada com sucesso.

- PresignResponse: Resposta com URL pré-assinada para upload.
  - `uploadUrl` string, uri, required: URL pré-assinada do S3 para upload via PUT.
  - `uploadToken` string, required: Token para confirmar o upload via `/document/confirm`.
  - `s3Key` string, required: Chave do objeto no S3.
  - `expiresIn` integer, required: Tempo de expiração da URL em segundos.
  - `contentType` string, required: Content-Type esperado no upload.
  - `instructions` string, required: Instruções para o integrador realizar o upload.

## Other responses

- `400`: Requisição inválida — parâmetros ausentes ou malformados.
- `401`: Autenticação ausente ou inválida.
- `403`: Permissões insuficientes para a operação solicitada. Inclui `purpose: "ACTION_AUTHENTICATION"` sem `featureFlags.trustSessionsEnabled`. A verificação é pelo `purpose`, não pela rota: vale em `/v1/transactions`, `/v1/signing-sessions` e `/v1/envelopes/{envelopeId}/sessions`, além de `/v1/trust-sessions`. O remédio é habilitar a flag para o tenant e provisionar a cota `monthlyTrustSessions`.
- `404`: Recurso não encontrado.
- `409`: Conflito de estado — a operação não pode ser realizada no estado atual do recurso.
- `500`: Erro interno do servidor.

---

[API](https://skmtc.dev/signdocs/apis/signdocs-brasil-external-api.md) · [All operations](https://skmtc.dev/signdocs/apis/signdocs-brasil-external-api/llms.txt) · [OpenAPI document](https://skmtc.dev/signdocs/apis/signdocs-brasil-external-api/revisions/2d3805aed161?raw)
