---
title: "Replace the recorded service schedule"
method: POST
path: "/api/v1/vehicles/{id}/service-schedules"
---

# Replace the recorded service schedule

`POST /api/v1/vehicles/{id}/service-schedules`

## Request

- Base URL: `https://fleetkeep.co.uk`
- URL: `https://fleetkeep.co.uk/api/v1/vehicles/{id}/service-schedules`
- Auth: OAuth 2 (authorization code, authorization URL `https://fleetkeep.co.uk/auth/oauth2/authorize`, token URL `https://fleetkeep.co.uk/auth/oauth2/token`, scopes: `maintenance:write`)

Use actual user-provided facts only. First call returns a confirmation challenge. Show the proposed action and use the returned token only after approval, with the same payload and idempotency key.

## Path parameters

- `id` string, uuid, required

## Headers

- `x-fleetkeep-confirmation` string

## Request body

- object
  - `sourceKind` 'provider' | 'operator', required
  - `matchStatus` 'matched' | 'needs_review' | 'unsupported', required
  - `providerName` string, nullable
  - `providerScheduleId` string, nullable
  - `market` string, nullable
  - `variant` string, nullable
  - `scheduleVersion` string, nullable
  - `modelYear` integer, nullable
  - `intervalMonths` integer, nullable
  - `intervalDays` integer, nullable
  - `intervalMiles` integer, nullable
  - `sourceUpdatedAt` string, date-time, nullable
  - `retrievedAt` string, date-time, nullable: Optional actual timestamp. When omitted, Fleetkeep records the time after confirmation succeeds.

## Response `200`

Confirmed result or exact retry readback

## Other responses

- `409`: Confirmation required or stale evidence

---

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