Skip to content

Envio de arquivos

Diversos serviços nossos esperam receber documentos para que a análise seja realizada. O envio destes pode ser realizado de duas maneiras:

  1. Multipart - form-data

O arquivo pode ser enviado na requisição como "multipart/form-data". Essa maneira é a mais recomendada e pode ser facilmente implementada nas diversas linguagens e ferramentas.

shell
curl --request POST \
  --url 'https://example-url.nxcd.app/endpoint' \
  --header 'Authorization: ApiKey <TOKEN>' \
  --header 'Content-Type: multipart/form-data' \
  --form 'frente=@/documento-frente-exemplo.jpg' \
  --form 'verso=@/documento-verso-exemplo.jpg'
js
const form = new FormData();
form.append("frente", "./documento-frente-exemplo.jpg");
form.append("verso", "./documento-verso-exemplo.jpg");

const options = {
  method: 'POST',
  headers: {
    'Content-Type': 'multipart/form-data; boundary=---011000010111000001101001',
    Authorization: 'ApiKey <TOKEN>'
  }
};

options.body = form;

fetch('https://example-url.nxcd.app/endpoint', options)
  .then(response => response.json())
  .then(response => console.log(response))
  .catch(err => console.error(err));
js
import axios from "axios";

const form = new FormData();
form.append("frente", "./documento-frente-exemplo.jpg");
form.append("verso", "./documento-verso-exemplo.jpg");

const options = {
  method: 'POST',
  url: 'https://example-url.nxcd.app/endpoint',
  params: {
  },
  headers: {
    'Content-Type': 'multipart/form-data; boundary=---011000010111000001101001',
    Authorization: 'ApiKey <TOKEN>'
  },
  data: '[form]'
};

axios.request(options).then(function (response) {
  console.log(response.data);
}).catch(function (error) {
  console.error(error);
});
python
import requests

url = "https://example-url.nxcd.app/endpoint"

querystring = {}

payload = "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"frente\"; filename=\"documento-frente-exemplo.jpg\"\r\nContent-Type: image/jpeg\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"verso\"; filename=\"documento-verso-exemplo.jpg\"\r\nContent-Type: image/jpeg\r\n\r\n\r\n-----011000010111000001101001--\r\n"
headers = {
    "Content-Type": "multipart/form-data; boundary=---011000010111000001101001",
    "Authorization": "<TOKEN>"
}

response = requests.request("POST", url, data=payload, headers=headers, params=querystring)

print(response.text)
elixir
response = HTTPoison.post!(
  "https://example-url.nxcd.app/endpoint",
  {:multipart, [
    {:file, "/documento-frente-exemplo.jpg", {"form-data", [{:name, "frente"}, {:filename, Path.basename("/documento-frente-exemplo.jpg")}]}, []},
    {:file, "/documento-verso-exemplo.jpg", {"form-data", [{:name, "verso"}, {:filename, Path.basename("/documento-verso-exemplo.jpg")}]}, []}
  ]},
  [
    {"Authorization", "ApiKey <TOKEN>"},
    {"Content-Type", "multipart/form-data"}
  ]
)
dart
import 'package:http/http.dart' as http;

void main() async {
  final url = Uri.parse('https://example-url.nxcd.app/endpoint');

  final req = http.MultipartRequest('POST', url)
    ..files.add(await http.MultipartFile.fromPath(
      'frente', '/documento-frente-exemplo.jpg'))
    ..files.add(await http.MultipartFile.fromPath(
      'verso', '/documento-verso-exemplo.jpg'));

  req.headers['Authorization'] = 'ApiKey <TOKEN>';
  req.headers['Content-Type'] = 'multipart/form-data';

  final stream = await req.send();
  final res = await http.Response.fromStream(stream);
  final status = res.statusCode;
  if (status != 200) throw Exception('http.send error: statusCode= $status');

  print(res.body);
}
  1. Base64

O envio pode ser feito através do base64 da imagem original, enviando-o em formato JSON no body da requisição, conforme abaixo:

json
{
  "base64": {
    "arquivo1": "BASE_64_1_AQUI",
    "arquivo2": "BASE_64_2_AQUI"
  }
}

🚧 O envio por URL foi descontinuado

O envio do arquivo por URL, no campo urls, foi descontinuado e deixou de fazer parte desta documentação. As integrações que ainda dependem dele devem migrar para multipart/form-data ou para o campo base64.

Limites

Os limites abaixo valem para todas as APIs e são aplicados antes do processamento do arquivo.

LimiteValorOnde se aplica
Tamanho de cada arquivo15 MBEnvio em multipart/form-data
Tamanho de cada campo do formulário5 MBEnvio em multipart/form-data
Tamanho do corpo JSON50 MBEnvio em base64
Tamanho do corpo da requisição na borda100 MBTodas as formas de envio
  • Multipart: cada arquivo pode ter até 15 MB e cada campo do formulário até 5 MB. Um arquivo acima do limite recebe 413 Payload Too Large.
  • Base64: o conteúdo codificado viaja no corpo JSON e está sujeito ao limite de 50 MB. Lembre-se de que a codificação em base64 aumenta o tamanho do arquivo original em cerca de um terço.

WARNING

Um corpo JSON acima de 50 MB é recusado antes de a aplicação gerar o identificador da requisição: a resposta vem com código 500 e id: null. Acima de 100 MB, a requisição é barrada na borda e a resposta nem sequer é JSON. Em ambos os casos, o identificador da requisição continua disponível no header Nextid-ReqId.

Nextcode | Soluções em Verificação de Identidade