Confira o preço antes de iniciar a pesquisa. Envie POST /v1/orcamento/certidao-inteiro-teor com os dados que deseja pesquisar. O orçamento informa o valor e a disponibilidade, sem cobrar.
Registro de Imóveis
Certidão de Inteiro Teor
A certidão de inteiro teor da matrícula, com fé pública e assinatura digital do cartório.
/v1/consultas/certidao-inteiro-teor
v1
Tempo típico
não medido
Preço
R$ 54,20
por consulta
Visão geral
Solicita ao registro de imóveis a certidão de inteiro teor da matrícula e devolve o PDF oficial, assinado digitalmente pelo oficial do registro. É o documento com FÉ PÚBLICA: oponível a terceiros, aceito para instruir processo, registrar ato e fechar negócio.
O conteúdo é o mesmo da Visualização de Matrícula — titular, ônus, penhoras, cadeia de atos. O que se paga a mais é a assinatura do cartório e o valor jurídico que ela carrega. Se o seu caso é decisão interna ou triagem, a visualização entrega o mesmo texto em minutos e por uma fração do preço.
Atenção: É ASSÍNCRONA e o prazo corre em HORAS ÚTEIS do cartório (das 09h00 às 16h00, de segunda a sexta). A resposta imediata é o protocolo; o documento chega depois. Pedido de sexta à tarde sai na segunda.
Antes de começar
Cobrança, idempotência e leitura do resultado. Leia antes da primeira chamada.
Custa dinheiro se você ignorar 6
São HORAS ÚTEIS do cartório, não horas de relógio
O robô próprio confere o pedido no portal a cada 30 segundos corridos, inclusive fora do expediente, sem depender de e-mail. A fila pode acrescentar espera. O prazo de emissão do cartório continua em horas úteis. Após a entrega, medicao_entrega informa o tempo observado até o PDF válido.
O prazo publicado é de cerca de 4 horas úteis, e ele corre apenas dentro do expediente da serventia (das 09h00 às 16h00, de segunda a sexta). Um pedido feito às 15h de sexta não vence às 19h — vence na segunda de manhã.
previsao_entrega_em já vem com essa conta feita, em ISO-8601. Use esse campo para prometer prazo ao seu usuário final, nunca uma soma de horas sua.
O prazo é do cartório, e a fila dele não é nossa para administrar. Alguns entregam em minutos; outros usam o prazo inteiro.
Enquanto processa, a origem responde "nada aqui" — e isso é normal
Durante toda a fila do cartório, a rota de download da origem devolve o pedido como "Em Aberto". Isso NÃO é erro nem ausência de documento: é a certidão ainda sendo emitida.
Nós tratamos isso como "ainda processando" e continuamos verificando sozinhos, com intervalo crescente, até 24 vezes. Você não precisa fazer nada: GET /v1/consultas/{protocolo} responde 202 nesse período.
Atenção: Não reenvie o pedido por causa disso. Um segundo pedido da mesma matrícula é recusado pelo cartório, e a recusa é faturada pela origem.
Pedido incerto é acompanhado sem repetir a emissão
A intenção da compra é gravada antes do envio ao cartório. Se a resposta se perder, o sistema confere o mesmo ato e recupera o protocolo quando houver prova.
Enquanto o ato estiver incerto, ele não será repetido. Ausência de protocolo não significa ausência de cobrança; a operação poderá exigir conferência humana.
Guarde o protocolo da nossa API e acompanhe por GET. Ao reenviar a mesma compra, confira o histórico antes de reenviar.
Cada chamada gasta emolumento de cartório, e não tem desfazer
O preço não é tarifa nossa: é o emolumento que o registro de imóveis cobra, fixado por tabela estadual, mais a nossa margem. Ele sai da nossa conta pré-paga no portal no momento do pedido, e ato registral não estorna.
Basta enviar token e dados. Cada POST inicia uma nova consulta, mesmo para o mesmo imóvel. As travas internas protegem o processamento do pedido aceito. Para acompanhar, use GET no protocolo recebido.
Cuidado com retry automático de biblioteca HTTP: um timeout do SEU lado não significa que o pedido não saiu do nosso — significa que você não viu a resposta. Confira o histórico antes de reenviar; se enviou uma chave opcional, mantenha a MESMA chave.
O preço só se sabe orçando — varia por cartório
Não existe tabela nacional. O emolumento muda por estado e por serventia, então o valor publicado no card é PISO ("a partir de"), nunca o preço do seu pedido.
Use POST /v1/orcamento/certidao-inteiro-teor com os mesmos quatro campos do imóvel: ele cota na origem, não cobra e devolve preco.total com estimado: true. É o único número que bate com a fatura.
Atenção: Cartório que não cota não é vendido. Município escrito errado, serventia inexistente ou tabela indisponível fazem a consulta responder 602 (indisponível) SEM chamar a origem e SEM cobrar — em vez de protocolar um pedido que ninguém sabe quanto custa.
O bloqueio de pedido repetido é da CONTA, não da sua
O serviço de registro de imóveis recusa um segundo pedido da mesma matrícula, no mesmo cartório, enquanto o anterior estiver vigente. A recusa vem faturada pela origem e não entrega documento nenhum — por isso nós barramos antes, e a resposta é 602 sem cobrança.
Atenção: A plataforma opera com UMA conta no portal para toda a carteira. Isso significa que um pedido feito por outro cliente nosso, do mesmo imóvel, bloqueia o seu enquanto estiver vigente. A janela em uso é de 7 dias, e ela é estimativa: o portal não devolve o prazo real de vigência.
A resposta diz a data a partir da qual o pedido volta a ser aceito. Se o volume do seu produto tornar isso frequente, o caminho é uma credencial dedicada no portal — fale com o suporte antes de escalar.
Vale saber antes de integrar 4
Quatro maneiras de endereçar — e a ambiguidade é recusada, não chutada
O pedido vai a UMA serventia. Diga qual por um destes caminhos, nesta ordem de precedência: imovel_cartorio com imovel_municipio e imovel_uf (o contrato de sempre); imovel_cns, sozinho; um CNM em imovel_matricula, que já carrega o CNS da serventia; ou imovel_municipio + imovel_uf quando o município tem UMA só serventia medida. Nos três últimos, nós preenchemos os campos do cartório e o POST /v1/orcamento enxerga exatamente o mesmo endereço que a consulta vai usar.
Atenção: Quando não dá para decidir — município com várias serventias, CNS que não achamos, serventia sem número de ordem no portal —, a resposta é 602 SEM cobrança e errors[] diz o que fazer: o campo que falta, ou o motivo com os candidatos medidos quando o endereço veio completo e ainda assim não fecha. Não escolhemos por você, porque o emolumento do cartório errado não volta. Para ver as serventias de uma cidade, cada uma com o seu imovel_cartorio e a grafia exata de imovel_municipio para copiar, chame GET /v1/cartorios: é gratuito e não fala com o cartório.
O município é o da SERVENTIA, não o do imóvel, e não alargamos a busca para o vizinho: um imóvel de Fernando Prestes é registrado em Taquaritinga. Se você só tem o imóvel ou o dono, comece pela Pesquisa Prévia de Bens, que devolve o CNS e a matrícula — e com o CNS o endereçamento acaba.
O link da origem morre em 7 dias — use o nosso
A URL do PDF que o cartório devolve é assinada e expira: medido em 2026-08-11, validade de 7 dias. Guardar essa URL e abrir semanas depois entrega link morto de um documento que já custou emolumento.
Nós arquivamos os bytes na entrega. Use documento_url da resposta — ela aponta para o nosso arquivo, autentica com o mesmo Bearer e não expira. site_receipts[] continua trazendo a URL da origem para conferência.
Inteiro teor não é certidão negativa
Esta certidão reproduz o que está registrado na matrícula. Ela não afirma que o imóvel está livre de ônus nem que o titular nada deve — quem lê o conteúdo e conclui é você.
Por isso não existe nada_consta nesta resposta. status: Emitida significa que o documento saiu, não que ele é favorável.
A validade do documento não é medida por nós
A certidão tem prazo de validade declarado pelo cartório, mas ele está na camada de imagem do PDF — não sai em campo estruturado. Nós não o extraímos, e por isso esta API não entra no nosso alerta de vencimento de certidões.
Preferimos não devolver campo nenhum a devolver uma data chutada: alerta na data errada sobre um documento de fé pública é pior que alerta nenhum. Confira a validade no próprio PDF.
Contexto 1
Quando consultar novamente
Enquanto a resposta for 202, aguarde data[0].intervalo_consulta_segundos (10 segundos) e faça GET /v1/consultas/{protocolo}. A recomendação também vale quando o documento estiver em emissão e no download ainda não disponível.
O GET lê o pedido existente, sem cobrar novamente. Não repita o POST para acompanhar. O intervalo de checagem não é o prazo de emissão do cartório.
Requisição
Autentique com token no cabeçalho. Parâmetro obrigatório ausente é recusado com
422, antes de qualquer cobrança.
cpf_cnpj
string
obrigatório
Atenção: O CONSULENTE, não o dono do imóvel. É a quem a consulta fica associada na sua conta e no seu extrato — o documento sai do imóvel, não deste CPF/CNPJ. Aceita com ou sem máscara.
imovel_matricula
string
obrigatório
Número da matrícula OU o CNM (Código Nacional de Matrícula). Zeros à esquerda são aceitos.
imovel_cns
string(6)
opcional
Atenção: **Alternativa ao trio, não um campo a mais.** Envie **ou** imovel_cns **ou** imovel_cartorio + imovel_municipio + imovel_uf — nunca os dois: se apontarem para serventias diferentes a chamada é recusada sem cobrança, em vez de escolhermos por você. CNS é o código do CNJ da serventia, 6 dígitos (formato 062661), e endereça o pedido sozinho. Vem de GET /v1/cartorios, da Pesquisa Prévia de Bens ou do próprio CNM. Pelo mesmo motivo, não o combine com um CNM de outra serventia em imovel_matricula.
imovel_cartorio
integer
opcional
Atenção: O NÚMERO do registro de imóveis, inteiro: 1 para o 1º RI. Mandar "1º RI - Taquaritinga" é 607 faturado pela origem. Quatro maneiras de endereçar o pedido, nesta ordem de precedência: (1) este campo com imovel_municipio e imovel_uf, que é o contrato de sempre; (2) imovel_cns; (3) um CNM em imovel_matricula, que já carrega a serventia; (4) imovel_municipio + imovel_uf quando o município tem UMA só serventia. Para descobrir o número — e a grafia exata do município —, use GET /v1/cartorios, que é gratuito.
imovel_municipio
string
opcional
Atenção: Município DO CARTÓRIO, não do imóvel. Medido em 2026-08-11: um imóvel de Fernando Prestes está matriculado no RI de Taquaritinga. Errar aqui não protocola nada — a cotação falha e a consulta fica indisponível sem cobrar. **Necessário em dois dos quatro caminhos**: com imovel_cartorio + imovel_uf (o contrato de sempre) e com imovel_uf sozinho, quando o município tem UMA só serventia. Endereçando por imovel_cns ou por CNM, não envie — nós preenchemos com a grafia medida, que é a que a origem aceita. A grafia exata de cada serventia está em GET /v1/cartorios.
imovel_uf
string(2)
opcional
UF do cartório. Mesma regra do imovel_municipio: necessário quando o endereçamento é pelo número do RI ou por município de serventia única, dispensável quando você manda imovel_cns ou um CNM.
imovel_finalidade
integer
opcional
Declaração ao cartório: 1 = avaliação de crédito ou solvência; 2 = investigação jurídica sobre o imóvel (padrão); 3 = o solicitante é titular de direito real sobre o imóvel.
finalidade
string
opcional
Motivo da consulta, em texto livre. **Obrigatória (mínimo 10 caracteres) quando cpf_cnpj é um CPF que ainda não está no seu cadastro**: cadastrar uma pessoa física exige finalidade declarada, e a chamada sem ela é recusada com 422, sem cobrança. Para CNPJ, e para CPF já cadastrado, é opcional. Não confundir com imovel_finalidade, que é a declaração ao cartório.
Envie apenas o token e os dados. Cada POST inicia uma nova consulta, mesmo com dados iguais, com protocolo e cobrança próprios.
Use os exemplos no backend. Guarde o protocolo recebido e acompanhe por GET. Se a resposta do POST se perder, confira o histórico antes de reenviar: outro POST é outro pedido.
// Execute somente no backend (Node.js 22+). Configure o token no servidor.
// const pedido = await consultarOficialData(process.env.OFICIALDATA_TOKEN, dados);
// Guarde pedido.protocolo. Depois use acompanharOficialData(token, pedido.protocolo).
// Cada POST inicia uma nova consulta, mesmo com dados iguais.
// Resposta perdida: confira o histórico antes de reenviar; outro POST é outro pedido.
export async function consultarOficialData(token, dados = {"cpf_cnpj":"19131243000197","imovel_matricula":"21916","imovel_cartorio":1,"imovel_municipio":"Taquaritinga","imovel_uf":"SP"}) {
const corpo = await enviar(token, "https://api.oficialdata.com.br/v1/consultas/certidao-inteiro-teor", dados);
const protocolo = corpo.data?.[0]?.protocolo;
if (corpo.code !== 202 || !protocolo) throw new Error(JSON.stringify(corpo));
return { protocolo: String(protocolo), resposta: corpo };
}
export async function acompanharOficialData(token, protocolo) {
if (!/^\d+$/.test(String(protocolo))) throw new Error('Informe o protocolo recebido.');
const corpo = await enviar(token, "https://api.oficialdata.com.br" + '/v1/consultas/' + encodeURIComponent(protocolo));
// code 202: aguarde intervalo_consulta_segundos e consulte novamente por GET.
// code 200/6xx: confira o resultado. Não repita o POST para acompanhar.
return { protocolo: String(protocolo), resposta: corpo };
}
async function enviar(token, url, dados) {
if (!token) throw new Error('Informe o token de acesso.');
const post = dados !== undefined;
const resposta = await fetch(url, {
method: post ? 'POST' : 'GET',
headers: {
Authorization: 'Bearer ' + token, Accept: 'application/json',
...(post && { 'Content-Type': 'application/json' }),
},
...(post && { body: JSON.stringify(dados) }),
signal: AbortSignal.timeout(30000),
});
const corpo = await resposta.json();
// Não repita POST automaticamente após timeout: o pedido pode ter sido aceito.
if (!resposta.ok) throw new Error('HTTP ' + resposta.status + ': ' + JSON.stringify(corpo));
return corpo;
}
A consulta aceita responde HTTP 202 com protocolo.
Acompanhe até a conclusão e confira o campo code do resultado.
Resposta
Dentro de data[]:
9 campos em 2 blocos.
Campo que a origem não informou volta null —
nunca 0 nem string vazia. Trate
null como dado ausente, não como zero.
data[]
object
EM_EMISSAO enquanto o cartório processa, SUCESSO quando o PDF chega, INDISPONIVEL quando o pedido foi aceito sem protocolo (caso em que o valor volta integralmente).
Emitida no documento entregue. É o estado do DOCUMENTO, não um veredito sobre o imóvel — inteiro teor não é certidão negativa.
Quando o documento deve estar pronto, já calculado em horas ÚTEIS do expediente do cartório.
No GET concluído pelo robô próprio: pdf_validado_em (ISO 8601), segundos_desde_inicio_pedido, segundos_desde_protocolo_confirmado (pode ser null), ultima_conferencia_sem_pdf_em (quando houver) e intervalo_conferencia_segundos = 30. Mede quando encontramos o PDF válido; não afirma o instante exato de emissão. Fila, duração da leitura e intervalo acrescentam atraso.
Atenção: A ENTREGA. Aponta para o nosso arquivo, autentica com o mesmo Bearer e NÃO expira. A URL da origem morre em 7 dias.
Código do validador de assinatura do serviço de registro de imóveis, impresso na camada de texto do PDF. É por ele que um terceiro confere a autenticidade.
Frase pronta para tela: no EM_EMISSAO traz protocolo, prazo e previsão; no SUCESSO, a confirmação de fé pública.
⚠️ URL do PDF NA ORIGEM. Expira em 7 dias — conferência e auditoria, não o seu link.
identificadores
object
Protocolo no cartório. Acompanhe o protocolo da nossa API por GET; não repita o pedido para obter o documento.
Códigos de erro
O mesmo mapa que o motor usa em produção. Leia as colunas Estorna e Retenta antes de integrar: nem toda falha devolve o dinheiro.
| Classe | Códigos | Significa | Estorna | Retenta |
|---|---|---|---|---|
sucesso |
200 | A origem respondeu e entregou. | — | — |
nao_encontrado |
612 | A origem respondeu: nada consta para este alvo. | Não | Não |
indeterminado |
611 | A origem não conseguiu emitir pela internet. Não é irregularidade. | Não | Não |
erro_participante |
608 619 620 | A origem recusou os DADOS do pedido. | Não | Sim |
retry |
600 605 609 610 613 614 615 618 | Instabilidade momentânea da origem ou do transporte. | Sim | Sim |
fatal |
601 602 603 604 606 607 617 621 622 | Defeito de integração — nosso, não seu. | Sim | Não |
Estorno:
erro_participante é a única
classe que não devolve o dinheiro — nela a origem
respondeu recusando os dados do pedido. Corrija o alvo antes de repetir.
fatal é falha nossa e sempre estorna.
Permanentes: não retente 602 e 603. A fonte sai do ar na hora e a nossa equipe é avisada.
Preço
Preço único por consulta pelo canal API. Confira o orçamento em
POST /v1/orcamento/certidao-inteiro-teor
antes de disparar em lote.
R$ 54,20
por consulta
Este é o preço da sua conta pelo canal API. Acordos vigentes prevalecem.
Como interpretar o orçamento
Motivo do preço, piso mínimo e situação da cota.
Leia data[0].preco.total para saber o valor previsto da consulta.
header.price é zero porque orçar não cobra.
preco.motivo é um slug estável para sua integração;
preco.justificativa é o texto para exibir ao usuário e pode evoluir.
coberto_pela_cota- A cota cobre a consulta, sem débito de saldo. A execução consumirá as unidades previstas.
fonte_gratuita- A regra de preço aplicada considera a fonte gratuita. Confira se o piso do canal permanece cobrado.
cortesia- Aplica-se uma cortesia comercial. Ela pode continuar sujeita ao piso mínimo da API.
cobranca_avulsa- Aplica-se o preço avulso da consulta no canal API.
preco_negociado- Aplica-se uma condição negociada para a conta.
preco_ao_custo- Aplica-se a condição de preço ao custo da conta, com o piso do canal quando indicado.
somente_emolumentos- A cota cobre o serviço; permanece o emolumento do cartório.
taxa_na_cota- A cota cobre o pedido com a taxa reduzida do plano; soma-se o emolumento do cartório.
taxa_do_plano- Aplica-se a taxa de cartório do plano, com a execução por nossa conta; soma-se o emolumento. O pedido não consome cota.
taxa_integrador- Aplica-se a taxa de cartório do plano Integrador; soma-se o emolumento do cartório.
emolumentos_e_servico- O valor inclui emolumentos do cartório e a cobrança pelo serviço.
Quando preco.piso_minimo_aplicado é true, o mínimo da API
permanece cobrado. Use sempre preco.total: cortesia, custo zero da origem
ou plano Gratuito não garantem uma consulta a R$ 0.
cota.status informa disponivel, esgotada,
insuficiente (restam unidades, mas não bastam para a operação),
fonte_fora_da_cota ou plano_sem_cota.
cota.restante é a quantidade livre agora; unidades_necessarias
é o peso da operação e unidades_previstas é o consumo previsto na execução.
Uma consulta gratuita por outra regra pode ter cota disponível e prever consumo zero.
cota.eixo identifica a franquia e cota.limite o limite do ciclo.
cota.origem distingue plano de trial.
cota.reservada é sempre false: o orçamento não reserva nem
consome unidades. Preço, cota e disponibilidade serão revalidados ao executar.
Se disponivel for false, leia o motivo_codigo
e a mensagem motivo da resposta. Nesse caso, preco.total,
preco.motivo, preco.justificativa e cota vêm
null. Preço desconhecido não significa gratuidade. Disponibilidade e preço
também não dispensam saldo ou os demais requisitos da execução.
Limites e desempenho
Números medidos em produção. "Não medido" é falta de amostra — nenhum valor aqui é estimativa.
Tempo típico
não medido
p95
não medido
Teto por hora
—
Timeout máximo
540s
De onde vem o tempo: cerca de 85% dos ~s típicos é a origem varrendo os cartórios. Dimensione o seu timeout por esse número e não conte com redução.
Sobre o teto: a origem exige sessão única por conta, então os pedidos são serializados. É limite técnico, não cota comercial: acima dele a fila cresce e paralelizar do seu lado não acelera. Para volume maior, combine antes.
Versionamento
O contrato de resposta é v1,
e a versão viaja em header.api_version
em toda resposta.
- Campo novo opcional pode entrar a qualquer momento e não muda a versão. Seu parser precisa ignorar campo que não conhece.
- Remover campo, renomear campo ou mudar tipo é versão nova, publicada em paralelo, com prazo de desligamento anunciado da anterior.
- Nunca alteramos o significado de um campo existente mantendo o nome. Se o significado muda, o nome muda junto.
Vai integrar?
Diga o volume que você espera e em quais UFs. A ordem de liberação segue a demanda.