Elige tu ciudad

Nueva York Los Ángeles
CertRent CertRent Renta con confianza

CertRent Open API

Inquilinos verificados, cuando los necesites.

Inscribe a un inquilino, pide su consentimiento y lee ingresos verificados por el banco, historial de renta, identidad y referencias de propietarios con propiedad comprobada — todo con una sola API REST. Cada respuesta incluye comprobantes de consentimiento y las reglas de evaluación de cada mercado.

Las claves de sandbox se emiten al instante y son gratis para siempre. Las claves live requieren una breve revisión.

Verifícate una vez, postula donde sea

Los inquilinos que inscribes crean un perfil que es suyo y conservan. Si ya se verificaron para otra propiedad, tu solicitud puede aprobarse en segundos — sin volver a evaluarlos ni a pagar.

Con permiso del inquilino por diseño

Nada de lo verificado se puede leer sin un consentimiento del inquilino con alcance definido y tiempo limitado. Cada consentimiento genera un comprobante que ambas partes pueden auditar.

Cumplimiento integrado en la respuesta

Pregúntale a cualquier endpoint qué reglas rigen en NYC o Los Ángeles — topes de cuotas, protección por fuente de ingresos, plazos de fair chance, obligaciones de acción adversa — y presenta tus acciones adversas a través de la API.

Inicio rápido

De cero a una decisión de evaluación

En sandbox, inscribir a un inquilino crea al instante uno sintético y totalmente verificado — así puedes construir toda la integración antes de que la toque un solo solicitante real.

1. Inscribe a un inquilino (gratis)

POST /renters
curl -X POST https://certrent.com/api/v1/renters \
  -H "Authorization: Bearer ck_test_…" \
  -H "Content-Type: application/json" \
  -d '{
    "email": "applicant@example.com",
    "name": "Dana Ruiz",
    "property": "120 W 45th St",
    "unit": "7B",
    "market": "nyc",
    "external_id": "your-crm-id-4471"
  }'
$res = Http::withToken('ck_test_…')
    ->post('https://certrent.com/api/v1/renters', [
        'email' => 'applicant@example.com',
        'name' => 'Dana Ruiz',
        'property' => '120 W 45th St',
        'unit' => '7B',
        'market' => 'nyc',
        'external_id' => 'your-crm-id-4471',
    ])->json();

$renterId = $res['id'];
const res = await fetch('https://certrent.com/api/v1/renters', {
  method: 'POST',
  headers: {
    Authorization: 'Bearer ck_test_…',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    email: 'applicant@example.com',
    name: 'Dana Ruiz',
    property: '120 W 45th St',
    unit: '7B',
    market: 'nyc',
    external_id: 'your-crm-id-4471',
  }),
});
const renter = await res.json();
import requests

renter = requests.post(
    'https://certrent.com/api/v1/renters',
    headers={'Authorization': 'Bearer ck_test_…'},
    json={
        'email': 'applicant@example.com',
        'name': 'Dana Ruiz',
        'property': '120 W 45th St',
        'unit': '7B',
        'market': 'nyc',
        'external_id': 'your-crm-id-4471',
    },
).json()

2. Pide el consentimiento del inquilino

POST /renters/{id}/access-requests
curl -X POST https://certrent.com/api/v1/renters/42/access-requests \
  -H "Authorization: Bearer ck_test_…" \
  -H "Content-Type: application/json" \
  -d '{
    "scopes": ["read:identity","read:income","read:rent_history","read:decision"],
    "purpose": "Tenant screening for 120 W 45th St, Unit 7B",
    "expires_in_days": 30
  }'
Http::withToken('ck_test_…')->post("https://certrent.com/api/v1/renters/{$renterId}/access-requests", [
    'scopes' => ['read:identity', 'read:income', 'read:rent_history', 'read:decision'],
    'purpose' => 'Tenant screening for 120 W 45th St, Unit 7B',
    'expires_in_days' => 30,
]);
await fetch(`https://certrent.com/api/v1/renters/${renter.id}/access-requests`, {
  method: 'POST',
  headers: { Authorization: 'Bearer ck_test_…', 'Content-Type': 'application/json' },
  body: JSON.stringify({
    scopes: ['read:identity', 'read:income', 'read:rent_history', 'read:decision'],
    purpose: 'Tenant screening for 120 W 45th St, Unit 7B',
    expires_in_days: 30,
  }),
});
requests.post(
    f"https://certrent.com/api/v1/renters/{renter['id']}/access-requests",
    headers={'Authorization': 'Bearer ck_test_…'},
    json={
        'scopes': ['read:identity', 'read:income', 'read:rent_history', 'read:decision'],
        'purpose': 'Tenant screening for 120 W 45th St, Unit 7B',
        'expires_in_days': 30,
    },
)

3. Lee la decisión

GET /renters/{id}/decision?rent=3200
curl "https://certrent.com/api/v1/renters/42/decision?rent=3200" \
  -H "Authorization: Bearer ck_test_…"
$decision = Http::withToken('ck_test_…')
    ->get("https://certrent.com/api/v1/renters/{$renterId}/decision", ['rent' => 3200])
    ->json();
const decision = await (await fetch(
  `https://certrent.com/api/v1/renters/${renter.id}/decision?rent=3200`,
  { headers: { Authorization: 'Bearer ck_test_…' } },
)).json();
decision = requests.get(
    f"https://certrent.com/api/v1/renters/{renter['id']}/decision",
    headers={'Authorization': 'Bearer ck_test_…'},
    params={'rent': 3200},
).json()

El objeto de decisión

Datos verificados y una relación de capacidad de pago — nunca un puntaje, nunca una aprobación o rechazo. La decisión sigue siendo tuya.

{
  "profile_id": 318,
  "completeness": 100,
  "rentready": true,
  "verified": { "identity": true, "income": true, "rent_history": true, "references": true },
  "income": { "monthly_income_verified": 9400.0, "method": "bank_connected" },
  "affordability": {
    "status": "meets_standard",
    "rent": 3200.0,
    "income_to_rent_ratio": 2.94,
    "rent_to_income_percent": 34.0,
    "max_affordable_rent": 3133.33
  },
  "rent_history": { "months_observed": 12, "on_time_payments": 12, "observed_rent": 2820.0 },
  "references": { "total": 2, "ownership_verified": 2 },
  "confidence": { "level": "high", "income_method": "bank_connected" },
  "signals": [
    { "code": "income_bank_connected", "severity": "info",
      "message": "Income was read directly from the renter's bank …" }
  ],
  "consent": { "grant_id": 77, "expires_at": "2026-08-25T14:02:11+00:00" }
}

Referencia

Endpoints

URL base https://certrent.com/api/v1 · Autenticación Bearer

Método Ruta Alcance de la clave Qué hace
GET /me Tu cliente, alcances de las claves, precios y uso actual.
GET /usage?period=YYYY-MM Uso medido de un periodo de facturación.
GET /compliance?market=nyc|la Reglas y obligaciones de evaluación que rigen en ese mercado.
POST /renters renters:write Inscribe a un inquilino e invítalo. Gratis.
GET /renters renters:read Lista los inquilinos que inscribiste. Filtra por estado, correo o external_id.
GET /renters/{id} renters:read Un vínculo con un inquilino y su estado.
POST /renters/{id}/reinvite renters:write Reenvía el correo de invitación.
DELETE /renters/{id} renters:write Elimina tu vínculo. Nunca borra la cuenta del inquilino.
POST /renters/{id}/access-requests renters:write Pide al inquilino que dé su consentimiento para alcances específicos.
GET /access-grants/{id} renters:read Estado, alcances y vencimiento del consentimiento.
GET /access-grants/{id}/receipt renters:read El comprobante de consentimiento legible por máquina.
DELETE /access-grants/{id} renters:write Libera el acceso que ya no necesitas.
GET /renters/{id}/decision renters:read El objeto de decisión de evaluación. Se mide en live.
GET /renters/{id}/profile renters:read El perfil completo consentido. Se mide en live.
GET/POST /webhooks renters:read / webhooks:write Lista o crea un endpoint.
PATCH/DELETE /webhooks/{id} webhooks:write Actualiza o elimina un endpoint.
POST /webhooks/{id}/test webhooks:write Envía un evento de prueba firmado.
GET /webhooks/{id}/deliveries renters:read Revisa qué enviamos y cómo resultó.
POST /adverse-actions renters:write Registra la constancia de una denegación o de una oferta condicionada.
GET /adverse-actions renters:read Tu historial de acciones adversas.

El acceso de lectura y el de escritura se aprueban por separado. Una clave que solo tiene renters:read puede evaluar pero nunca inscribir.

Alcances del consentimiento

El inquilino es quien los otorga, no nosotros. Todo lo que quede fuera del consentimiento simplemente no aparece en la respuesta.

read:identity
Identidad verificada (nombre, estado de verificación — nunca tu documento de identidad)
read:income
Ingresos verificados por el banco y capacidad de pago
read:rent_history
Historial de pagos de renta
read:references
Referencias de propietarios con propiedad verificada
read:decision
El resumen general de la decisión RentReady

Webhooks

Cada entrega lleva un encabezado CertRent-Signature: t={timestamp},v1={HMAC-SHA256 de "{timestamp}.{raw body}" usando el secreto de tu endpoint}. Verifícalo antes de confiar en un payload. Los fallos se reintentan con backoff hasta seis intentos.

renter.invited
Se inscribió a un inquilino y se le invitó a verificarse.
renter.registered
Un inquilino invitado creó su cuenta de CertRent.
renter.verified
Un inquilino completó una vía de verificación (o todas).
renter.income_updated
Cambiaron los ingresos conectados al banco de un inquilino.
grant.created
Un inquilino dio su consentimiento para compartir su perfil contigo.
grant.revoked
Un inquilino revocó un consentimiento otorgado previamente.
rent_report.updated
Cambió el estado de reporte de renta de un inquilino.

Dos entornos

  • ck_test_… — Sandbox. Se emite al instante, gratis para siempre. Inscribir crea un inquilino verificado sintético y el consentimiento se otorga automáticamente, así que puedes construir todo el flujo de principio a fin. Nunca es una persona real.
  • ck_live_… — Live. Se emite tras una breve revisión de tu empresa y tu caso de uso. Inquilinos reales, consentimiento real, con medición de uso.

Los datos de sandbox y de live nunca se mezclan: una clave solo ve su propio entorno.

Precios

Pagas por una sola cosa: leer un perfil verificado.

Habla con nosotros

  • ✓ Inscribir e invitar inquilinos — gratis.
  • ✓ Solicitudes de consentimiento, webhooks, consultas de cumplimiento — gratis.
  • ✓ Se cobra una vez por inquilino por mes calendario, sin importar cuántas veces lo leas.
  • ✓ Sandbox — gratis para siempre.

Preguntas frecuentes

¿Existe una API para la evaluación de inquilinos?

Sí. La CertRent Open API permite que una empresa de administración de propiedades evalúe a los solicitantes desde su propio software de arrendamiento, mediante una interfaz REST estándar con una clave secreta. Las claves de sandbox se emiten al instante y son gratis; el acceso live se otorga tras una breve revisión.

¿Cómo verifico los ingresos de un solicitante a través de una API?

CertRent lee los ingresos desde la propia conexión bancaria del inquilino y no desde documentos subidos, así que no hay recibo de sueldo que falsificar. Tu integración inscribe al solicitante, el solicitante da su consentimiento y tú recibes los ingresos mensuales verificados junto con una razón de asequibilidad frente a la renta que estás evaluando.

¿El inquilino tiene que dar su consentimiento antes de que yo pueda ver su perfil?

Sí, siempre. Nada de lo verificado se puede leer hasta que ese inquilino apruebe tu solicitud específica, eligiendo qué categorías puedes ver y por cuánto tiempo. Cada aprobación genera un comprobante de consentimiento, y el inquilino puede revocar el acceso en cualquier momento.

¿Cuánto cuesta la API de evaluación de inquilinos?

Inscribir inquilinos, invitarlos, recibir webhooks y consultar las reglas de cumplimiento son acciones gratuitas. Solo se te cobra cuando lees un perfil verificado, una vez por solicitante por mes calendario. El sandbox es gratis para siempre.

¿Se puede reutilizar un mismo perfil verificado con varios arrendadores?

Ese es el propósito de la red. Un inquilino crea un perfil verificado y lo reutiliza en cada solicitud, así que un solicitante ya verificado para otra propiedad puede aprobar tu solicitud en segundos en lugar de ser evaluado y cobrado de nuevo.

¿Listo para construir?

Regístrate, copia tu clave de sandbox y haz tu primera llamada en unos minutos.