---
title: "APESEG SOAT Certificate History"
method: POST
path: "/pe/apeseg/soat/v1"
tags: ["Peru", "APESEG"]
---

# APESEG SOAT Certificate History

`POST /pe/apeseg/soat/v1`

## Request

- Base URL: `https://api.croma.run`
- URL: `https://api.croma.run/pe/apeseg/soat/v1`
- Auth: HTTP bearer

Look up a vehicle plate's SOAT (mandatory traffic-accident insurance) certificate history from APESEG (Asociación Peruana de Empresas de Seguros). `has_active_soat: true` means a currently valid (VIGENTE) certificate exists, returned as `active`; `certificates` lists the full history. `found: false` when the plate has no SOAT record.

Supports async delivery: set `Prefer: wait=N` for an inline result, pass `callback_url` to receive a POST when ready, or poll `GET /jobs/{id}`.

## Headers

- `Idempotency-Key` string
- `Prefer` string

## Request body

- object
  - `plate` string, required: The vehicle plate to look up (4-10 characters).
  - `callback_url` string, uri: POST the job result here when it finishes.

## Response `200`

Successful response

- ApesegSoatResponse
  - `data` ApesegSoatData, required
    - `found` boolean, required: Whether the source returned a definitive answer for the plate.
    - `plate` string, required: Echoes the searched plate (trimmed, uppercased).
    - `has_active_soat` boolean, required: True when at least one certificate is currently VIGENTE.
    - `active` object, nullable, required: The current (VIGENTE) certificate when present, else null.
      - `company` string, required: Issuing insurance company (e.g. "Interseguro").
      - `status` string, required: Coverage status: VIGENTE / VENCIDO / ANULADO.
      - `start_date` string, nullable, required: Coverage start date.
      - `end_date` string, nullable, required: Coverage end date.
      - `policy_number` string, nullable, required
      - `vehicle_use` string, nullable, required: Vehicle use (e.g. "PARTICULAR").
      - `vehicle_class` string, nullable, required: Vehicle class (e.g. "AUTOMOVIL").
      - `certificate_type` string, nullable, required: Certificate type: DIGITAL / FISICO.
      - `brand` string, nullable, required
      - `model` string, nullable, required
      - `created_date` string, nullable, required: Issue/creation date.
      - `annulled_date` string, nullable, required: Annulment date when annulled.
    - `count` number, required: Number of certificates on record.
    - `certificates` object[], required: Certificate history, newest first as the source returns it.
      - `company` string, required: Issuing insurance company (e.g. "Interseguro").
      - `status` string, required: Coverage status: VIGENTE / VENCIDO / ANULADO.
      - `start_date` string, nullable, required: Coverage start date.
      - `end_date` string, nullable, required: Coverage end date.
      - `policy_number` string, nullable, required
      - `vehicle_use` string, nullable, required: Vehicle use (e.g. "PARTICULAR").
      - `vehicle_class` string, nullable, required: Vehicle class (e.g. "AUTOMOVIL").
      - `certificate_type` string, nullable, required: Certificate type: DIGITAL / FISICO.
      - `brand` string, nullable, required
      - `model` string, nullable, required
      - `created_date` string, nullable, required: Issue/creation date.
      - `annulled_date` string, nullable, required: Annulment date when annulled.

## Other responses

- `202`: Accepted — the result is being computed asynchronously. Poll `job.status_url` (GET /jobs/{id}) or supply `callback_url` to have the result POSTed to you. Returned when `Prefer: wait` elapses before completion, or immediately when `callback_url` is set.
- `400`: Invalid request body
- `401`: Missing or invalid API key
- `429`: Rate limit exceeded
- `500`: Internal error
- `502`: Upstream source returned an error

---

[API](https://skmtc.dev/usecroma/apis/croma-marketplace-api.md) · [All operations](https://skmtc.dev/usecroma/apis/croma-marketplace-api/llms.txt) · [OpenAPI document](https://skmtc.dev/usecroma/apis/croma-marketplace-api/revisions/df016cdb29d7?raw)
