---
title: "Record a contact that actually occurred without sending a message"
method: POST
path: "/api/v1/vehicles/{id}/service-evidence-requests/{requestId}/contacts"
---

# Record a contact that actually occurred without sending a message

`POST /api/v1/vehicles/{id}/service-evidence-requests/{requestId}/contacts`

## Request

- Base URL: `https://fleetkeep.co.uk`
- URL: `https://fleetkeep.co.uk/api/v1/vehicles/{id}/service-evidence-requests/{requestId}/contacts`
- 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
- `requestId` string, uuid, required

## Headers

- `x-fleetkeep-confirmation` string

## Request body

- object
  - `channel` 'email' | 'phone' | 'sms' | 'portal' | 'other', required
  - `outcome` 'sent' | 'delivered' | 'failed' | 'no_response' | 'replied', required
  - `detail` string, nullable
  - `contactedAt` string, date-time, nullable: Optional actual timestamp. When omitted, Fleetkeep records the time after confirmation succeeds.
  - `nextFollowUpAt` string, date-time, nullable

## 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)
