---
title: "Update Vehicle"
method: PUT
path: "/api/vehicles/{vehicle_id}"
tags: ["Vehicles (Protected)"]
---

# Update Vehicle

`PUT /api/vehicles/{vehicle_id}`

Update existing vehicle.

Business rules:
- Cannot modify if belongs to different company
- Quadro uniqueness validation if changing
- Partial updates supported
- fechado/datafecho are protected — only /fechar can change them (irreversible)
- When Estado transitions to 5 (Suspenso) and unpublish_ads=true, the vehicle
  is removed from all websites and Integrazu portals after the state change.

## Path parameters

- `vehicle_id` integer, required

## Query parameters

- `unpublish_ads` boolean — When Estado transitions to 5 (Suspenso), also remove the vehicle from all websites and Integrazu portals.

## Headers

- `x-api-token` string, nullable

## Request body

- VehicleUpdate — Update vehicle request (all fields optional).
  - `Matricula` string, nullable
  - `MatriculaSecundaria` string, nullable
  - `code_matricula` string, nullable
  - `code_matricula_secundaria` string, nullable
  - `Quadro` string, nullable
  - `Marca` integer, nullable
  - `Modelo` integer, nullable
  - `Versao` string, nullable
  - `Km` integer, nullable
  - `Motor` string, nullable
  - `Cilindrada` string, nullable
  - `Potencia` string, nullable
  - `Combust` integer, nullable
  - `Caixa` integer, nullable
  - `Cor` integer, nullable
  - `Lugares` integer, nullable
  - `Portas` integer, nullable
  - `Peso` string, nullable
  - `Segmento` integer, nullable
  - `Subsegmento` integer, nullable
  - `Estado` integer, nullable
  - `Preço` number, nullable
  - `ValorSelo` number, nullable
  - `RegimeIva` integer, nullable
  - `Dataentr` string, date-time, nullable
  - `Datamat` string, date-time, nullable
  - `Data_Imp` string, date-time, nullable
  - `data_mat_nacional` string, date-time, nullable
  - `ValInsp` string, date-time, nullable
  - `Fornece` integer, nullable
  - `Ponto_de_venda` integer, nullable
  - `current_park_location_id` integer, nullable
  - `Consignado` boolean, nullable
  - `Emprestado` boolean, nullable
  - `Seguro` boolean, nullable
  - `Importado` boolean, nullable
  - `stockpartilhado` boolean, nullable
  - `hidden` boolean, nullable
  - `fechado` boolean, nullable
  - `datafecho` string, date-time, nullable
  - `Fotos` string, nullable
  - `bucketurl` string, nullable
  - `Observacoes` string, nullable
  - `IDeasydata` integer, nullable
  - `Estadoeasydata` integer, nullable
  - `reference` integer, nullable
  - `version_id` integer, nullable
  - `gearbox_type_id` integer, nullable
  - `gearbox_shift_id` integer, nullable
  - `section_id` integer, nullable
  - `second_key_status` 'sim' | 'não' | 'requisitado', nullable

## Response `200`

Successful Response

- VehicleResponse — Complete vehicle response - matches Viatura table columns. All fields return IDs (hydrated) - use combo endpoints to get labels.
  - `ID` integer, required
  - `Matricula` string, nullable
  - `MatriculaSecundaria` string, nullable
  - `code_matricula` string, nullable
  - `code_matricula_secundaria` string, nullable
  - `Quadro` string, nullable
  - `Marca` integer, nullable
  - `Modelo` integer, nullable
  - `Versao` string, nullable
  - `Tipo` union
    - integer
    - string
  - `Km` integer, nullable
  - `Motor` string, nullable
  - `Cilindrada` string, nullable
  - `Potencia` string, nullable
  - `Combust` integer, nullable
  - `Caixa` integer, nullable
  - `Cor` integer, nullable
  - `Lugares` integer, nullable
  - `Portas` integer, nullable
  - `Peso` string, nullable
  - `Segmento` integer, nullable
  - `Subsegmento` integer, nullable
  - `Estado` integer, nullable
  - `Preço` number, nullable
  - `ValorSelo` number, nullable
  - `PreçoPintura` number, nullable
  - `RegimeIva` integer, nullable
  - `Dataentr` string, date-time, nullable
  - `Datamat` string, date-time, nullable
  - `Data_Imp` string, date-time, nullable
  - `data_mat_nacional` string, date-time, nullable
  - `ValInsp` string, date-time, nullable
  - `datafecho` string, date-time, nullable
  - `Fornece` integer, nullable
  - `Ponto_de_Venda` integer, nullable
  - `IDempresa` integer, required
  - `current_park_location_id` integer, nullable
  - `fechado` boolean, nullable
  - `consignado` boolean, nullable
  - `Emprestado` boolean, nullable
  - `Seguro` boolean, nullable
  - `Importado` boolean, nullable
  - `stockpartilhado` boolean, nullable
  - `hidden` boolean, nullable
  - `Fotos` string, nullable
  - `bucketurl` string, nullable
  - `Observacoes` string, nullable
  - `IDeasydata` integer, nullable
  - `Estadoeasydata` integer, nullable
  - `reference` integer, nullable
  - `version_id` integer, nullable
  - `gearbox_type_id` integer, nullable
  - `gearbox_shift_id` integer, nullable
  - `section_id` integer, nullable
  - `second_key_status` 'sim' | 'não' | 'requisitado', nullable

## Other responses

- `422` — Validation Error

---

[API](https://skmtc.dev/multigest/apis/multigest-protected-api.md) · [All operations](https://skmtc.dev/multigest/apis/multigest-protected-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/multigest/multigest-protected-api/revisions/4b44eb76b3ee/schema)
