Tasvalúo SAI

Crear un avalúo

Las formas de subir el PDF, qué se lee del documento y cómo re-subir una versión corregida.

Hay dos maneras de crear un avalúo. Elige según lo que sepas del documento:

PDF en base64Referencia a un archivo
EndpointPOST /v1/avaluos/procesarPOST /v1/avaluos
Llamadas12 (subir archivo + crear)
Folio, institución y tipoSe leen del PDFLos envías tú
Tamaño del PDFHasta ~37 MB (el base64 ocupa un tercio más)Hasta 30 MB por POST /v1/files; más con URL prefirmada
Respuesta201202

Recomendado: PDF en base64. Es una sola llamada y evita errores al capturar el folio.

Ambas responden en cuanto el avalúo existe; la lectura y la evaluación siguen en segundo plano. Después, sigue el avance.

Opción 1 · PDF en base64

POST/v1/avaluos/procesaravaluos:write

Crea un avalúo subiendo el PDF en base64

curl -X POST "$API_URL/v1/avaluos/procesar" \
  -H "x-api-key: $API_KEY" \
  -H "Content-Type: application/json" \
  -d "{
    \"document\": {
      \"type\": \"binary_file\",
      \"filename\": \"avaluo.pdf\",
      \"base64\": \"$(base64 -i avaluo.pdf | tr -d '\n')\"
    },
    \"metadata\": { \"perito_id\": \"P-998\" }
  }"
import { readFile } from 'node:fs/promises';

const pdf = await readFile('avaluo.pdf');
const res = await fetch(`${API_URL}/v1/avaluos/procesar`, {
  method: 'POST',
  headers: { 'x-api-key': API_KEY, 'Content-Type': 'application/json' },
  body: JSON.stringify({
    document: { type: 'binary_file', filename: 'avaluo.pdf', base64: pdf.toString('base64') },
    metadata: { perito_id: 'P-998' },
  }),
});
const avaluo = await res.json();
201 Created
{
  "folio": "AVL-2026-000123",
  "avaluo_id": "5b2f7c1e-3a4d-4f6b-9e21-8c7d6a5b4f3e",
  "estado": "processing",
  "institution": "BBVA",
  "property_type": "CASA_HABITACION"
}

metadata es opcional: un objeto libre para tus propios datos.

Qué se lee del PDF

DatoCampo del PDF (formato SHF)Si no se encuentra
FolioCarátulaFalla: 422 FOLIO_NO_DETECTADO.
Tipo de inmueble1.10 Tipo de InmuebleFalla: 422 TIPO_INMUEBLE_NO_DETECTADO, o 422 TIPO_INMUEBLE_NO_VALIDO si la clave no está activa en el catálogo.
Institución1.16 Clave de entidad otorganteNo falla: se usa BBVA.

Errores

HTTPcodeCausaSolución
400document.base64 must be base64 encodedEnvía el base64 en una sola línea y sin prefijo data:.
400El documento (base64) está vacío o es inválidoRevisa que leíste el archivo antes de codificarlo.
400PDF_INVALIDOEl base64 no contiene un PDF.Envía el PDF original, no una imagen ni otro formato.
400PDF_PROTEGIDOEl PDF tiene contraseña.Quita la protección y vuelve a enviarlo.
413El cuerpo supera 50 MB.Usa la opción 2 con URL prefirmada.
409FOLIO_YA_EXISTEYa existe un avalúo con ese folio.Consúltalo, o sube una versión nueva.
422FOLIO_NO_DETECTADOEl PDF no trae folio legible.Revisa la carátula del documento.
422TIPO_INMUEBLE_NO_DETECTADONo se pudo leer el campo 1.10.Revisa el campo en el PDF.
422TIPO_INMUEBLE_NO_VALIDOEl tipo leído no se admite hoy.Ver tipos de inmueble.

Opción 2 · Referencia a un archivo

Primero pones el PDF en el almacenamiento y luego creas el avalúo indicando folio, institución y tipo de inmueble.

Paso 1: sube el archivo

POST/v1/filesavaluos:write

Sube un PDF (multipart)

curl -X POST "$API_URL/v1/files" \
  -H "x-api-key: $API_KEY" \
  -F "file=@avaluo.pdf;type=application/pdf"
201 Created
{
  "file_id": "uploads/4f3c9a2e-1b7d-4c5e-8f6a-2d3b4c5e6f7a.pdf",
  "url": "https://…?X-Amz-Signature=…",
  "tamano_bytes": 482133,
  "nombre_archivo": "avaluo.pdf"
}
HTTPCausa
400Falta el campo file, el archivo no es application/pdf, o el campo tiene otro nombre.
413El archivo supera 30 MB.

Paso 2: crea el avalúo

POST/v1/avaluosavaluos:write

Crea un avalúo por referencia y dispara su procesamiento

curl -X POST "$API_URL/v1/avaluos" \
  -H "x-api-key: $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "folio": "AVL-2026-000123",
    "institution": "BBVA",
    "property_type": "CASA_HABITACION",
    "canal": "api",
    "document": {
      "type": "binary_file",
      "file_id": "uploads/4f3c9a2e-1b7d-4c5e-8f6a-2d3b4c5e6f7a.pdf"
    }
  }'
202 Accepted
{
  "id": "5b2f7c1e-3a4d-4f6b-9e21-8c7d6a5b4f3e",
  "folio": "AVL-2026-000123",
  "status": "processing",
  "created_at": "2026-06-24T18:30:00.000Z"
}
CampoValor
folioEl folio del avalúo. Es único en todo el sistema.
institutionEl codigo de una institución activa, p. ej. BBVA.
property_typeEl codigo de un tipo de inmueble activo, p. ej. CASA_HABITACION.
canalOrigen del avalúo: api (por defecto), frontend, whatsapp o ideas.
document.typebinary_file con file_id, o document_url con una URL pública del PDF en document_url.
HTTPCausaSolución
400Falta un campo, document.type no es válido o sobra un campo.Revisa el cuerpo contra la tabla anterior.
409FOLIO_YA_EXISTE: ya hay un avalúo con ese folio.Consúltalo, o sube una versión nueva.
422institution 'X' no existe en el catálogo o property_type 'X' no existe en el catálogo.Usa un codigo de GET /v1/instituciones o GET /v1/tipos-inmueble.

Subir una versión corregida

Cuando el PDF tiene errores, hallazgos que hay que corregir o el controlador lo rechazó, sube el documento corregido al mismo folio. Tiene que hacerlo la misma API Key que creó el avalúo:

POST/v1/avaluos/{folio}/documentoavaluos:write

Sube un PDF corregido (nueva versión)

curl -X POST "$API_URL/v1/avaluos/AVL-2026-000123/documento" \
  -H "x-api-key: $API_KEY" \
  -H "Content-Type: application/json" \
  -d "{\"document\":{\"type\":\"binary_file\",\"filename\":\"avaluo-v2.pdf\",\"base64\":\"$(base64 -i avaluo-v2.pdf | tr -d '\n')\"}}"
202 Accepted
{ "folio": "AVL-2026-000123", "status": "processing", "document_version": 2 }

La versión nueva vuelve a leerse y evaluarse. Qué pasa con lo anterior:

Se pierdeSe conserva
El certificado vigente (queda revocado).Las justificaciones: se aplican solas a los mismos hallazgos.
El dictamen vigente (queda cerrado).El historial de versiones del documento.
HTTPcodeCausa
400PDF_INVALIDO / PDF_PROTEGIDOEl base64 no es un PDF, o el PDF tiene contraseña.
403La API Key no es la que creó el avalúo.
404El folio no existe.
409DOCUMENTO_DUPLICADOEl PDF es igual a una versión ya subida a ese avalúo: no hay nada nuevo que evaluar.
422FOLIO_NO_COINCIDEEl folio del PDF no es el de la ruta.
422FOLIO_NO_DETECTADOEl PDF no trae folio legible.
422TIPO_INMUEBLE_NO_DETECTADO / TIPO_INMUEBLE_NO_VALIDOProblema con el campo 1.10.

Consultar las versiones

GET/v1/avaluos/{folio}/documentosavaluos:read

Historial de versiones del documento

curl "$API_URL/v1/avaluos/AVL-2026-000123/documentos" -H "x-api-key: $API_KEY"

Devuelve cada versión con su nombre, páginas, tamaño, estado y una url temporal para descargar el PDF. Pide la url cuando la vayas a abrir: caduca.

On this page