> This page is for Direct Executions.

> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://infonite.dev/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://infonite.dev/_mcp/server.

# Vehicles

**Where it lives:** in the Spain Public Administration results, at `data.driver.vehicles`. APIs with dedicated per-product results endpoints return this model directly.

Each entry is a vehicle registered to the person: identification, insurance situation, inspection status and administrative state. Use it for asset verification and to spot liabilities at a glance.

> **Note**
>
> **Read the incident flags first.** `simple_vehicle_report.flags` names what makes a vehicle a risk to buy, finance or insure — a seizure, a seal, a financing charge, a deregistration, an expired inspection — and any one of them sets `has_incidents` to `true`. The report comes when `vehicles_data` asks for it. [What each flag means](#what-each-flag-means).

### Schema (`EUOwnedVehicleSchema`)

```yaml
components:
  schemas:
    VehicleInsuranceSchema:
      type: object
      properties:
        is_active:
          type: boolean
          description: Whether the vehicle has an active insurance policy.
        company:
          type: string
          description: Name of the insurance company.
        start_date:
          type: string
          format: date
          description: Start date of the insurance policy.
        end_date:
          type: string
          format: date
          description: End date of the insurance policy.
      required:
        - is_active
      description: Vehicle insurance policy.
      title: VehicleInsuranceSchema
    VehicleIncidentFlag:
      type: string
      enum:
        - seizure
        - seal
        - financing_charge
        - temporary_deregistration
        - permanent_deregistration
        - theft_deregistration
        - transfer_deregistration
        - inspection_expired
      description: >-
        The incidents that make a vehicle a risk to buy, finance or insure: what
        its registry flags

        on it, and an inspection that has expired.
      title: VehicleIncidentFlag
    SimpleVehicleReport:
      type: object
      properties:
        report_date:
          type: string
          format: datetime
          description: Date when the information was consulted.
        has_incidents:
          type: boolean
          description: >-
            Whether the vehicle has incidents, meaning that at the time of the
            inquiry, there are one or more annotations

            that prevent administrative processing or the circulation of the
            vehicle. For your safety, request a full

            vehicle report to know the details of all the information held in
            the Registry regarding the vehicle consulted.

            Always `true` when `flags` names any — an expired inspection
            included.
        flags:
          type: array
          items:
            $ref: '#/components/schemas/VehicleIncidentFlag'
          description: >-
            The incidents that make this vehicle a risk to buy, finance or
            insure: what the registry flags

            on it — a seizure, a seal, a financing charge, a deregistration —
            and `inspection_expired` when

            its inspection (ITV) had expired at the time of the report. Each
            code appears once, in no

            particular order. Absent when the source does not say; empty when it
            says there are none.

            A vehicle can have incidents no flag names, so an empty list does
            not mean `has_incidents`

            is `false`.
      required:
        - report_date
        - has_incidents
      description: >-
        Whether the vehicle has incidents, and which ones. Present only when
        `vehicles_data` is

        requested with `simple_vehicle_report: true` in its configurations.
      title: SimpleVehicleReport
    EUOwnedVehicleSchema:
      type: object
      properties:
        product:
          type: string
          enum:
            - driver_data
        sub_family:
          type: string
          enum:
            - driver_data:eu_owned_vehicle
        fetch_date:
          type: string
          format: datetime
          description: Date this product was fetched
        country:
          type: string
          format: country
          description: Country where the vehicle is registered.
        registration_date:
          type: string
          format: date
          description: >-
            **Deprecated: read `last_registration_date` and
            `first_registration_date` instead.** A

            registration date as the source reports it, which is not always the
            same registration: the one

            in `country` when the source gives it, the vehicle's first
            registration when the source gives

            only that one. Still present, and filled as before.
          deprecated: true
        first_registration_date:
          type: string
          format: date
          description: >-
            Date the vehicle was registered for the first time, in any country:
            for an imported vehicle,

            its original registration abroad. It belongs to the vehicle, not to
            its owner — a vehicle

            bought second hand keeps it — and it is the date that tells the
            vehicle's age. Equal to

            `last_registration_date` when the vehicle was first registered in
            `country`. Absent when the

            source consulted does not give it — and then
            `last_registration_date` may well be the first

            registration too: the absence only says the source does not tell.
        last_registration_date:
          type: string
          format: date
          description: >-
            Date the vehicle was registered in `country`: the registration in
            force. Equal to

            `first_registration_date` for a vehicle first registered there,
            later for one registered

            abroad before. It belongs to the vehicle, not to its owner — a
            change of owner leaves it as it

            was. Absent when the source consulted does not give it — and then
            `first_registration_date` may

            well be the registration in `country` too: the absence only says the
            source does not tell.
        inspection_expiry_date:
          type: string
          format: date
          description: Expiry date of the vehicle inspection.
        inspection_pending:
          type: boolean
          description: >-
            If true, the vehicle has failed the previous inspection or is
            pending to be inspected.
        license_plate:
          type: string
          description: License plate number of the vehicle.
        administrative_situation:
          type: string
          description: Current administrative situation of the vehicle.
        vin:
          type: string
          description: Vehicle Identification Number.
        make:
          type: string
          description: Vehicle manufacturer.
        model:
          type: string
          description: Vehicle model name.
        trim:
          type: string
          description: Specific vehicle trim/variant.
        color:
          type: string
          description: Color of the vehicle.
        mileage:
          type: integer
          minimum: 0
        mileage_date:
          type: string
          format: date
          description: Date when the mileage was recorded.
        fuel_type:
          type: string
          description: Fuel type of the vehicle.
        emission_class:
          type: string
          description: Emission class of the vehicle.
        insurance:
          $ref: '#/components/schemas/VehicleInsuranceSchema'
        simple_vehicle_report:
          $ref: '#/components/schemas/SimpleVehicleReport'
      required:
        - product
        - sub_family
        - fetch_date
        - country
        - registration_date
      title: EUOwnedVehicleSchema
```

## Registration dates

A vehicle carries up to two registrations, each in a field of its own. Both belong to the vehicle, not to its owner: a vehicle bought second hand keeps them.

| Field                     | The registration it is                                                                                                                                 |
| :------------------------ | :----------------------------------------------------------------------------------------------------------------------------------------------------- |
| `first_registration_date` | The vehicle's first registration, in any country — for an imported vehicle, the original one abroad. It is the date that tells how old the vehicle is. |
| `last_registration_date`  | The registration in force: the day the vehicle was registered in `country`.                                                                            |

**Reading them together:**

* **Both present and the same day** — the vehicle was first registered in `country`.
* **Both present, `first_registration_date` earlier** — it was registered elsewhere before: abroad, for an imported vehicle.
* **One of them absent** — the connection that read the vehicle does not give it, and nothing more. The date that is present may well be both: a missing `last_registration_date` does not mean the vehicle was registered again in `country`, and a missing `first_registration_date` does not mean it was registered elsewhere before.

Some connections give both registrations, some only one of them; when a session reads the vehicle through more than one, the results put together what each gives. To know what a given connection returns, write to [support@infonite.tech](mailto:support@infonite.tech).

> **\`registration_date\` is deprecated**
>
> Depending on the connection it is the registration in `country` or the first one, so it cannot tell which. It is still there and filled as before: read `last_registration_date` and `first_registration_date` instead.

## Insurance

The vehicle's insurance situation:

### Schema (`VehicleInsuranceSchema`)

Vehicle insurance policy.

```yaml
components:
  schemas:
    VehicleInsuranceSchema:
      type: object
      properties:
        is_active:
          type: boolean
          description: Whether the vehicle has an active insurance policy.
        company:
          type: string
          description: Name of the insurance company.
        start_date:
          type: string
          format: date
          description: Start date of the insurance policy.
        end_date:
          type: string
          format: date
          description: End date of the insurance policy.
      required:
        - is_active
      title: VehicleInsuranceSchema
```

## Incident report

A quick yes/no on whether the vehicle has recorded incidents, and which ones. It exists only when you ask for it — `{"code": "vehicles_data", "configurations": {"simple_vehicle_report": true}}` — and then whenever a source issues one or the vehicle's inspection has expired; with no report from a source, it holds that flag alone, dated when the vehicle was read:

* **`has_incidents`** is the verdict. It is `true` whenever `flags` names an incident.
* **`flags`** lists the incidents found on the vehicle, each code once — the table below. It is absent when the source does not say, and empty when it says there are none.
* **An empty `flags` is not a clean vehicle.** A vehicle can carry incidents no flag names, so read `has_incidents` for the verdict and `flags` for the reasons you can act on.

> **Note**
>
> **The registry's own flags come from the DGT.** Seizures, seals, financing charges and deregistrations are named only when the DGT is the source of the report. Other connections may return the verdict without them, and the detailed flags may be missing unless the connection is configured for them. `inspection_expired` is the exception: it is raised whichever source returned the vehicle. To know what a given connection returns, write to [support@infonite.tech](mailto:support@infonite.tech).

### What each flag means

| Flag                       | The DGT calls it              | What it means                                                                                                                                                                                                                                                                                                                      |
| :------------------------- | :---------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `seizure`                  | *Embargo*                     | A judicial or administrative seizure: the vehicle answers for a debt.                                                                                                                                                                                                                                                              |
| `seal`                     | *Precinto*                    | An order immobilising the vehicle: it may not circulate.                                                                                                                                                                                                                                                                           |
| `financing_charge`         | *Carga de entidad financiera* | A charge in favour of a financial institution, such as a retention of title (*reserva de dominio*) on a financed vehicle.                                                                                                                                                                                                          |
| `temporary_deregistration` | *Baja temporal*               | Temporarily deregistered: the vehicle may not circulate.                                                                                                                                                                                                                                                                           |
| `permanent_deregistration` | *Baja definitiva*             | Permanently deregistered: the vehicle can never circulate again.                                                                                                                                                                                                                                                                   |
| `theft_deregistration`     | *Baja por sustracción*        | Deregistered as stolen.                                                                                                                                                                                                                                                                                                            |
| `transfer_deregistration`  | *Baja por transferencia*      | Deregistered while a change of owner is pending.                                                                                                                                                                                                                                                                                   |
| `inspection_expired`       | *ITV caducada*                | The inspection had expired on the day the report was taken: the vehicle may not circulate. It is not a registry annotation but a reading of `inspection_expiry_date` against the report's date, so it is raised whichever source returned the vehicle — on a report built for it when there was none, if the report was asked for. |

### Schema (`SimpleVehicleReport`)

Whether the vehicle has incidents, and which ones. Present only when `vehicles_data` is
requested with `simple_vehicle_report: true` in its configurations.

```yaml
components:
  schemas:
    VehicleIncidentFlag:
      type: string
      enum:
        - seizure
        - seal
        - financing_charge
        - temporary_deregistration
        - permanent_deregistration
        - theft_deregistration
        - transfer_deregistration
        - inspection_expired
      description: >-
        The incidents that make a vehicle a risk to buy, finance or insure: what
        its registry flags

        on it, and an inspection that has expired.
      title: VehicleIncidentFlag
    SimpleVehicleReport:
      type: object
      properties:
        report_date:
          type: string
          format: datetime
          description: Date when the information was consulted.
        has_incidents:
          type: boolean
          description: >-
            Whether the vehicle has incidents, meaning that at the time of the
            inquiry, there are one or more annotations

            that prevent administrative processing or the circulation of the
            vehicle. For your safety, request a full

            vehicle report to know the details of all the information held in
            the Registry regarding the vehicle consulted.

            Always `true` when `flags` names any — an expired inspection
            included.
        flags:
          type: array
          items:
            $ref: '#/components/schemas/VehicleIncidentFlag'
          description: >-
            The incidents that make this vehicle a risk to buy, finance or
            insure: what the registry flags

            on it — a seizure, a seal, a financing charge, a deregistration —
            and `inspection_expired` when

            its inspection (ITV) had expired at the time of the report. Each
            code appears once, in no

            particular order. Absent when the source does not say; empty when it
            says there are none.

            A vehicle can have incidents no flag names, so an empty list does
            not mean `has_incidents`

            is `false`.
      required:
        - report_date
        - has_incidents
      title: SimpleVehicleReport
```