curl --request POST \
--url https://api.staging.credicarro.com.br/integration/v2/proposal/{propostaId}/document \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'Idempotency-Key: <idempotency-key>' \
--data '
{
"participante": "COMPRADOR",
"tipoDocumento": 1,
"nomeArquivo": "cnh-comprador.pdf",
"conteudoBase64": "JVBERi0xLjcKJcOkw7zDtsOfCjIgMCBvYmoK..."
}
'import requests
url = "https://api.staging.credicarro.com.br/integration/v2/proposal/{propostaId}/document"
payload = {
"participante": "COMPRADOR",
"tipoDocumento": 1,
"nomeArquivo": "cnh-comprador.pdf",
"conteudoBase64": "JVBERi0xLjcKJcOkw7zDtsOfCjIgMCBvYmoK..."
}
headers = {
"Idempotency-Key": "<idempotency-key>",
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'Idempotency-Key': '<idempotency-key>',
Authorization: 'Bearer <token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
participante: 'COMPRADOR',
tipoDocumento: 1,
nomeArquivo: 'cnh-comprador.pdf',
conteudoBase64: 'JVBERi0xLjcKJcOkw7zDtsOfCjIgMCBvYmoK...'
})
};
fetch('https://api.staging.credicarro.com.br/integration/v2/proposal/{propostaId}/document', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.staging.credicarro.com.br/integration/v2/proposal/{propostaId}/document",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'participante' => 'COMPRADOR',
'tipoDocumento' => 1,
'nomeArquivo' => 'cnh-comprador.pdf',
'conteudoBase64' => 'JVBERi0xLjcKJcOkw7zDtsOfCjIgMCBvYmoK...'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json",
"Idempotency-Key: <idempotency-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.staging.credicarro.com.br/integration/v2/proposal/{propostaId}/document"
payload := strings.NewReader("{\n \"participante\": \"COMPRADOR\",\n \"tipoDocumento\": 1,\n \"nomeArquivo\": \"cnh-comprador.pdf\",\n \"conteudoBase64\": \"JVBERi0xLjcKJcOkw7zDtsOfCjIgMCBvYmoK...\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Idempotency-Key", "<idempotency-key>")
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.staging.credicarro.com.br/integration/v2/proposal/{propostaId}/document")
.header("Idempotency-Key", "<idempotency-key>")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"participante\": \"COMPRADOR\",\n \"tipoDocumento\": 1,\n \"nomeArquivo\": \"cnh-comprador.pdf\",\n \"conteudoBase64\": \"JVBERi0xLjcKJcOkw7zDtsOfCjIgMCBvYmoK...\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.staging.credicarro.com.br/integration/v2/proposal/{propostaId}/document")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Idempotency-Key"] = '<idempotency-key>'
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"participante\": \"COMPRADOR\",\n \"tipoDocumento\": 1,\n \"nomeArquivo\": \"cnh-comprador.pdf\",\n \"conteudoBase64\": \"JVBERi0xLjcKJcOkw7zDtsOfCjIgMCBvYmoK...\"\n}"
response = http.request(request)
puts response.read_bodyNo Content{
"tipo": "Validation.Cpf.Invalid",
"titulo": "Requisição inválida",
"status": 400,
"detalhe": "O CPF informado em 'cpf' é inválido.",
"campo": "cpf",
"erros": [
{
"codigo": "Validation.InvalidFormat",
"mensagem": "O valor informado para 'valorVeiculo' não é um número válido.",
"campo": "cpf"
}
]
}{
"tipo": "Validation.Cpf.Invalid",
"titulo": "Requisição inválida",
"status": 400,
"detalhe": "O CPF informado em 'cpf' é inválido.",
"campo": "cpf",
"erros": [
{
"codigo": "Validation.InvalidFormat",
"mensagem": "O valor informado para 'valorVeiculo' não é um número válido.",
"campo": "cpf"
}
]
}{
"tipo": "Validation.Cpf.Invalid",
"titulo": "Requisição inválida",
"status": 400,
"detalhe": "O CPF informado em 'cpf' é inválido.",
"campo": "cpf",
"erros": [
{
"codigo": "Validation.InvalidFormat",
"mensagem": "O valor informado para 'valorVeiculo' não é um número válido.",
"campo": "cpf"
}
]
}{
"tipo": "Validation.Cpf.Invalid",
"titulo": "Requisição inválida",
"status": 400,
"detalhe": "O CPF informado em 'cpf' é inválido.",
"campo": "cpf",
"erros": [
{
"codigo": "Validation.InvalidFormat",
"mensagem": "O valor informado para 'valorVeiculo' não é um número válido.",
"campo": "cpf"
}
]
}{
"tipo": "Validation.Cpf.Invalid",
"titulo": "Requisição inválida",
"status": 400,
"detalhe": "O CPF informado em 'cpf' é inválido.",
"campo": "cpf",
"erros": [
{
"codigo": "Validation.InvalidFormat",
"mensagem": "O valor informado para 'valorVeiculo' não é um número válido.",
"campo": "cpf"
}
]
}{
"tipo": "Validation.Cpf.Invalid",
"titulo": "Requisição inválida",
"status": 400,
"detalhe": "O CPF informado em 'cpf' é inválido.",
"campo": "cpf",
"erros": [
{
"codigo": "Validation.InvalidFormat",
"mensagem": "O valor informado para 'valorVeiculo' não é um número válido.",
"campo": "cpf"
}
]
}Enviar documento
Envia um documento do comprador, do vendedor ou da loja em Base64 (até 10 MiB decodificado; PDF, JPG/JPEG ou PNG).
Aceito quando a etapa ativa do participante for ENVIO_DOCUMENTOS (6) com a proposta aprovada, ou
CORRECAO_DOCUMENTOS (7) para reenviar um tipo atualmente recusado (INVALIDO). O header Idempotency-Key é obrigatório.
curl --request POST \
--url https://api.staging.credicarro.com.br/integration/v2/proposal/{propostaId}/document \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'Idempotency-Key: <idempotency-key>' \
--data '
{
"participante": "COMPRADOR",
"tipoDocumento": 1,
"nomeArquivo": "cnh-comprador.pdf",
"conteudoBase64": "JVBERi0xLjcKJcOkw7zDtsOfCjIgMCBvYmoK..."
}
'import requests
url = "https://api.staging.credicarro.com.br/integration/v2/proposal/{propostaId}/document"
payload = {
"participante": "COMPRADOR",
"tipoDocumento": 1,
"nomeArquivo": "cnh-comprador.pdf",
"conteudoBase64": "JVBERi0xLjcKJcOkw7zDtsOfCjIgMCBvYmoK..."
}
headers = {
"Idempotency-Key": "<idempotency-key>",
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'Idempotency-Key': '<idempotency-key>',
Authorization: 'Bearer <token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
participante: 'COMPRADOR',
tipoDocumento: 1,
nomeArquivo: 'cnh-comprador.pdf',
conteudoBase64: 'JVBERi0xLjcKJcOkw7zDtsOfCjIgMCBvYmoK...'
})
};
fetch('https://api.staging.credicarro.com.br/integration/v2/proposal/{propostaId}/document', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.staging.credicarro.com.br/integration/v2/proposal/{propostaId}/document",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'participante' => 'COMPRADOR',
'tipoDocumento' => 1,
'nomeArquivo' => 'cnh-comprador.pdf',
'conteudoBase64' => 'JVBERi0xLjcKJcOkw7zDtsOfCjIgMCBvYmoK...'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json",
"Idempotency-Key: <idempotency-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.staging.credicarro.com.br/integration/v2/proposal/{propostaId}/document"
payload := strings.NewReader("{\n \"participante\": \"COMPRADOR\",\n \"tipoDocumento\": 1,\n \"nomeArquivo\": \"cnh-comprador.pdf\",\n \"conteudoBase64\": \"JVBERi0xLjcKJcOkw7zDtsOfCjIgMCBvYmoK...\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Idempotency-Key", "<idempotency-key>")
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.staging.credicarro.com.br/integration/v2/proposal/{propostaId}/document")
.header("Idempotency-Key", "<idempotency-key>")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"participante\": \"COMPRADOR\",\n \"tipoDocumento\": 1,\n \"nomeArquivo\": \"cnh-comprador.pdf\",\n \"conteudoBase64\": \"JVBERi0xLjcKJcOkw7zDtsOfCjIgMCBvYmoK...\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.staging.credicarro.com.br/integration/v2/proposal/{propostaId}/document")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Idempotency-Key"] = '<idempotency-key>'
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"participante\": \"COMPRADOR\",\n \"tipoDocumento\": 1,\n \"nomeArquivo\": \"cnh-comprador.pdf\",\n \"conteudoBase64\": \"JVBERi0xLjcKJcOkw7zDtsOfCjIgMCBvYmoK...\"\n}"
response = http.request(request)
puts response.read_bodyNo Content{
"tipo": "Validation.Cpf.Invalid",
"titulo": "Requisição inválida",
"status": 400,
"detalhe": "O CPF informado em 'cpf' é inválido.",
"campo": "cpf",
"erros": [
{
"codigo": "Validation.InvalidFormat",
"mensagem": "O valor informado para 'valorVeiculo' não é um número válido.",
"campo": "cpf"
}
]
}{
"tipo": "Validation.Cpf.Invalid",
"titulo": "Requisição inválida",
"status": 400,
"detalhe": "O CPF informado em 'cpf' é inválido.",
"campo": "cpf",
"erros": [
{
"codigo": "Validation.InvalidFormat",
"mensagem": "O valor informado para 'valorVeiculo' não é um número válido.",
"campo": "cpf"
}
]
}{
"tipo": "Validation.Cpf.Invalid",
"titulo": "Requisição inválida",
"status": 400,
"detalhe": "O CPF informado em 'cpf' é inválido.",
"campo": "cpf",
"erros": [
{
"codigo": "Validation.InvalidFormat",
"mensagem": "O valor informado para 'valorVeiculo' não é um número válido.",
"campo": "cpf"
}
]
}{
"tipo": "Validation.Cpf.Invalid",
"titulo": "Requisição inválida",
"status": 400,
"detalhe": "O CPF informado em 'cpf' é inválido.",
"campo": "cpf",
"erros": [
{
"codigo": "Validation.InvalidFormat",
"mensagem": "O valor informado para 'valorVeiculo' não é um número válido.",
"campo": "cpf"
}
]
}{
"tipo": "Validation.Cpf.Invalid",
"titulo": "Requisição inválida",
"status": 400,
"detalhe": "O CPF informado em 'cpf' é inválido.",
"campo": "cpf",
"erros": [
{
"codigo": "Validation.InvalidFormat",
"mensagem": "O valor informado para 'valorVeiculo' não é um número válido.",
"campo": "cpf"
}
]
}{
"tipo": "Validation.Cpf.Invalid",
"titulo": "Requisição inválida",
"status": 400,
"detalhe": "O CPF informado em 'cpf' é inválido.",
"campo": "cpf",
"erros": [
{
"codigo": "Validation.InvalidFormat",
"mensagem": "O valor informado para 'valorVeiculo' não é um número válido.",
"campo": "cpf"
}
]
}ENVIO_DOCUMENTOS (com a proposta aprovada) ou CORRECAO_DOCUMENTOS (só para tipos com status INVALIDO). Retorna 204 No Content.
Exemplo:
{
"participante": "COMPRADOR",
"tipoDocumento": 1,
"nomeArquivo": "cnh-comprador.pdf",
"conteudoBase64": "JVBERi0xLjcKJcOkw7zDtsOfCjIgMCBvYmoK..."
}
Idempotency-Key é obrigatório. Use a mesma chave nas retentativas do mesmo envio.data:).Guia de envio de documentos
Authorizations
Cabeçalho de autenticação Bearer no formato Bearer <token> onde <token> é seu TOKEN de autenticação
Headers
Chave única por envio (1 a 200 caracteres). Com a mesma chave e o mesmo conteúdo, um envio bem-sucedido nas últimas 24 horas não é processado de novo.
"doc-7f3c2a10-comprador-cnh"
Path Parameters
Identificador único da proposta (UUID) retornado na criação da proposta
"bea8d060-f93d-48eb-b6c4-45f64483cdd9"
Body
Participante dono do documento.
COMPRADOR, VENDEDOR, LOJA "COMPRADOR"
Código do tipo de documento. Tipos aceitos por participante:
- COMPRADOR: 1, 4, 5, 6, 7, 9, 57
- VENDEDOR: 1, 2, 3, 5, 6, 7, 8, 9, 11
- LOJA: 6, 8
Códigos: 1 = CNH, 2 = CPF, 3 = RG, 4 = Comprovante de renda, 5 = Comprovante de residência, 6 = Documento do veículo, 7 = CNH digital, 8 = Laudo ECV, 9 = Laudo de vistoria, 11 = Cartão CNPJ, 57 = ATPV.
1
Nome do arquivo com extensão .pdf, .jpg, .jpeg ou .png, sem caminho. A extensão precisa corresponder ao conteúdo real do arquivo.
255"cnh-comprador.pdf"
Conteúdo do arquivo em Base64 puro (sem prefixo data:), até 10 MiB depois de decodificado.
"JVBERi0xLjcKJcOkw7zDtsOfCjIgMCBvYmoK..."
Response
Documento recebido. A resposta não tem corpo.
Resposta sem corpo