> ## Documentation Index
> Fetch the complete documentation index at: https://docs.usecroma.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Registros Públicos SUNARP

> Busca en los Registros Públicos del Perú (SUNARP) por partida, placa o ficha, y lee los asientos de una partida con cada página en PDF.

SUNARP (Superintendencia Nacional de los Registros Públicos) lleva los Registros
Públicos del Perú: inmuebles, vehículos, empresas, personas, minería, naves y
aeronaves. Cada bien o persona inscrita tiene una partida, el registro que reúne
sus asientos. Busca en el registro de una oficina por partida, placa o ficha, y
luego lee los asientos de una partida con cada página en PDF.

## Conecta tu cuenta

SUNARP solo responde a una persona con sesión iniciada: un DNI peruano, con el dígito de verificación y la fecha de emisión impresos en la tarjeta. Cada consulta corre con la conexión propia de tu organización, así que registra una antes de tu primera consulta. SUNARP permite a cada DNI cinco inicios de sesión al día; Croma mantiene cada sesión abierta tanto como SUNARP lo permite, así que cinco inicios cubren muchas consultas.

`POST /pe/sunarp/connections/v1` Registra una conexión una vez. Croma la verifica con la fuente antes de guardarla y responde con su id y un nombre enmascarado.

| Campo | Tipo | Notas |
| - | - | - |
| `document_number` | string | **Obligatorio.** The DNI of the person whose account this is: eight digits. |
| `check_digit` | string | **Obligatorio.** The verification digit printed after the DNI number on the card. |
| `issue_date` | string | **Obligatorio.** The issue date printed on the DNI card, `yyyy-mm-dd`. |
| `authorized` | boolean | **Obligatorio.** `true`: confirmas que eres el titular de la cuenta o que tienes su autorización para usarla. |

```bash theme={"dark"}
curl https://api.croma.run/pe/sunarp/connections/v1 \
  -H "Authorization: Bearer $CROMA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
        "document_number": "12345678",
        "check_digit": "1",
        "issue_date": "2020-01-01",
        "authorized": true
      }'
```

```json theme={"dark"}
{
  "data": {
    "id": "conn_2f8Kq1xVb7Lm0Pz9Rt4Wc3",
    "source": "sunarp",
    "status": "active",
    "display_name": "J*** P*** G***",
    "usage": {
      "sign_ins_today": 1,
      "daily_limit": 5,
      "resets_at": "2026-10-01T05:00:00.000Z"
    },
    "available_again_at": null,
    "created_at": "2026-09-30T20:00:00.000Z",
    "last_used_at": "2026-09-30T20:00:00.000Z"
  }
}
```

Desde entonces, cada consulta corre como una de las conexiones de tu organización. Croma elige una, mantiene su sesión abierta entre consultas y pasa a la siguiente cuando una alcanza su cupo diario (5 inicios de sesión al día, se reinicia a medianoche, America/Lima). Registra más de una para tener más capacidad al día. Para usar una en particular, envía su id como `connection_id`.

Cómo funciona el flujo, paso a paso: [Conexiones](/es/connections).

Lístalas y elimínalas:

```bash theme={"dark"}
curl https://api.croma.run/pe/sunarp/connections/v1 -H "Authorization: Bearer $CROMA_API_KEY"
curl -X DELETE https://api.croma.run/pe/sunarp/connections/v1/conn_2f8Kq1xVb7Lm0Pz9Rt4Wc3 -H "Authorization: Bearer $CROMA_API_KEY"
```

Por [MCP](/es/mcp-server), los mismos verbos son las herramientas `sunarp_connect`, `sunarp_list_connections`, `sunarp_delete_connection`, así un agente puede conectar la cuenta del usuario en la conversación.

Cuando una consulta no puede correr con ninguna conexión:

| Estado | Código | Significado |
| - | - | - |
| 409 | `connection_required` | La organización aún no tiene una conexión para esta fuente. |
| 422 | `connection_rejected` | La fuente ya no acepta las credenciales de la conexión. |
| 429 | `connections_exhausted` | Todas las conexiones usaron su cupo diario. `Retry-After` indica cuándo vuelve a haber una disponible. |
| 409 | `connection_exists` | La misma cuenta ya está conectada (al registrar). |
| 422 | `connection_limit_reached` | La organización ya tiene 5 conexiones para esta fuente (al registrar). |

<Note>
  Las credenciales se cifran en cuanto llegan a Croma, quedan ligadas a tu organización y solo puede abrirlas el servicio aislado que inicia sesión en la fuente en tu nombre. La API nunca las devuelve ni se muestran a nadie. Eliminar una conexión la destruye de forma permanente.
</Note>

## Búsqueda de partidas

`POST /pe/sunarp/registry-search/v1`

| Campo | Tipo | Notas |
| - | - | - |
| `office` | string | **Obligatorio.** La oficina registral por nombre, p. ej. `LIMA`, `AREQUIPA`, `CUSCO`. No distingue mayúsculas ni tildes. |
| `registry_area` | enum | **Obligatorio.** `real_estate`, `non_land_property`, `legal_entities`, `natural_persons`, `vehicles`, `mining`, `vessels` o `aircraft`. |
| `search_by` | enum | `partida`, `plate` para vehículos o `ficha` para los demás registros. Por defecto `partida`. |
| `number` | string | **Obligatorio.** La partida, placa o ficha. Una partida que empieza con P se escribe `P12345678`. |
| `connection_id` | string | Optional. Run as this connection (`conn_…`). Empty lets Croma pick among your organization's connections, moving to the next one when one reaches its daily allowance. |

```bash theme={"dark"}
curl https://api.croma.run/pe/sunarp/registry-search/v1 \
  -H "Authorization: Bearer $CROMA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
        "office": "LIMA",
        "registry_area": "vehicles",
        "search_by": "plate",
        "number": "ABC123"
      }'
```

## Respuesta

| Campo | Notas |
| - | - |
| `found` | `false` cuando la oficina no tiene una partida con ese número. |
| `office` | La oficina consultada, como la nombra SUNARP. |
| `registry_area`, `search_by`, `number` | Repiten la solicitud (el número en mayúsculas, sin espacios ni guiones). |
| `count` | Cantidad de partidas devueltas. |
| `theft_alert` | Aviso de vehículo robado que SUNARP adjunta al resultado, o `null`. |
| `entries[]` | Las partidas encontradas (abajo). |

Cada partida tiene `registry_zone`, `office`, `partida_number` (pásalo al endpoint de partida), `status` (`open`, `closed`, `extinguished`, o `null` en partidas vehiculares), `moved_to_partida` (el número a buscar cuando SUNARP renumeró la partida), `plate` y `vehicle_status` (solo vehículos), y `ficha_number`, `volume`, `folio`, `book` y `registry` cuando la partida viene de fichas o tomos anteriores.

```json theme={"dark"}
{
  "data": {
    "found": true,
    "office": "LIMA",
    "registry_area": "vehicles",
    "search_by": "plate",
    "number": "ABC123",
    "count": 1,
    "theft_alert": null,
    "entries": [
      {
        "registry_zone": "ZONA REGISTRAL IX - SEDE LIMA",
        "office": "LIMA",
        "partida_number": "12345678",
        "status": null,
        "moved_to_partida": null,
        "plate": "ABC123",
        "vehicle_status": "En Circulación",
        "ficha_number": null,
        "volume": null,
        "folio": null,
        "book": null,
        "registry": null
      }
    ]
  }
}
```

<Note>
  Las partidas cambian poco, así que una respuesta puede tener hasta 30 días.
  Pasado ese plazo, una nueva consulta la vuelve a leer.
</Note>

<Note>
  Esta consulta puede tardar más que una solicitud típica. Es un
  [trabajo asíncrono](/es/async-jobs). Por defecto la solicitud espera en línea y
  devuelve `{ data }`, o puedes hacer polling / usar un `callback_url`.
</Note>

## Partida registral

`POST /pe/sunarp/registry-entry/v1`

| Campo | Tipo | Notas |
| - | - | - |
| `office` | string | **Obligatorio.** La oficina registral por nombre, como en la búsqueda. |
| `registry_area` | enum | **Obligatorio.** El registro al que pertenece la partida, como en la búsqueda. |
| `partida_number` | string | **Obligatorio.** El número de partida de un resultado de búsqueda. |
| `connection_id` | string | Optional. Run as this connection (`conn_…`). Empty lets Croma pick among your organization's connections, moving to the next one when one reaches its daily allowance. |

```bash theme={"dark"}
curl https://api.croma.run/pe/sunarp/registry-entry/v1 \
  -H "Authorization: Bearer $CROMA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
        "office": "LIMA",
        "registry_area": "real_estate",
        "partida_number": "12345678"
      }'
```

## Respuesta

| Campo | Notas |
| - | - |
| `found` | `false` cuando la oficina no tiene esa partida en ese registro. |
| `registry_zone`, `status`, `plate`, `vehicle_status` | Como en la búsqueda. |
| `has_images` | `false` cuando SUNARP no muestra páginas de la partida. Las partidas vehiculares no se muestran. |
| `page_count` | Páginas devueltas. |
| `pages_truncated` | `true` cuando la partida tiene más páginas de las que devuelve una consulta. |
| `inscriptions[]` | Cada asiento, del más reciente al más antiguo: `number`, `act`, `registered_at`, `title_number`, `year`, `section` y `section_name` (rubro), y sus `pages[]`. |
| `cards[]` | Fichas anteriores de las que continúa la partida, con sus `pages[]`. |
| `folios[]` | Tomos y folios (`volume`, `folio`) de los que continúa la partida. |
| `checked_at` | Cuándo se leyó SUNARP. |

El `document_url` de cada página es nuestra copia del PDF que sirve SUNARP, idéntica byte a byte, y sigue disponible después de la consulta.

```json theme={"dark"}
{
  "data": {
    "found": true,
    "office": "LIMA",
    "registry_area": "real_estate",
    "partida_number": "12345678",
    "registry_zone": "ZONA REGISTRAL IX - SEDE LIMA",
    "status": "open",
    "plate": null,
    "vehicle_status": null,
    "has_images": true,
    "moved_to_partida": null,
    "page_count": 3,
    "pages_truncated": false,
    "inscriptions": [
      {
        "number": "7",
        "act": "COMPRA VENTA  ( PROPIEDAD )",
        "registered_at": "2024-08-23T15:30",
        "title_number": "02440831",
        "year": "2024",
        "section": null,
        "section_name": null,
        "pages": [
          { "page": 1, "document_url": "https://.../sunarp/registry-entries/.../7-1.pdf" }
        ]
      }
    ],
    "cards": [
      { "ficha_number": "0001234567", "pages": [{ "page": 1, "document_url": "https://.../cards/0001234567-1.pdf" }] }
    ],
    "folios": [
      { "volume": "001926", "folio": "000304", "document_url": "https://.../folios/001926-000304.pdf" }
    ],
    "checked_at": "2026-09-30T20:00:00.000Z"
  }
}
```

<Note>
  Las partidas cambian poco, así que una respuesta puede tener hasta 30 días.
  Pasado ese plazo, una nueva consulta la vuelve a leer.
</Note>

<Note>
  Esta consulta puede tardar más que una solicitud típica. Es un
  [trabajo asíncrono](/es/async-jobs). Por defecto la solicitud espera en línea y
  devuelve `{ data }`, o puedes hacer polling / usar un `callback_url`.
</Note>

<Card title="Referencia completa" icon="code" href="/es/api-reference/overview">
  Esquemas, todos los campos de respuesta y un playground interactivo.
</Card>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.