---
title: "Get the service-evidence timeline"
method: GET
path: "/api/v1/vehicles/{id}/service-evidence-requests/{requestId}/contacts"
tags: ["Maintenance"]
---

# Get the service-evidence timeline

`GET /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:read`)

Returns the recorded request plus append-only contact events and original customer submissions. Customer evidence remains an assessment until a human review is recorded.

## Query parameters

- `limit` integer

## Response `200`

Recorded evidence timeline.

- object
  - `request` ServiceEvidenceRequest, required
    - `id` string, uuid, required
    - `vehicleId` string, uuid, required
    - `scheduleId` string, uuid, nullable, required
    - `recipientName` string, nullable, required
    - `recipientEmail` string, email, required
    - `status` 'prepared' | 'awaiting_evidence' | 'evidence_received' | 'under_review' | 'accepted' | 'rejected' | 'closed', required
    - `deliveryStatus` 'not_sent' | 'sent' | 'delivered' | 'failed', required
    - `requestedAt` string, date-time, nullable, required
    - `dueAt` string, date-time, nullable, required
    - `lastContactedAt` string, date-time, nullable, required
    - `nextFollowUpAt` string, date-time, nullable, required
    - `followUpCount` integer, required
    - `createdAt` string, date-time, required
    - `updatedAt` string, date-time, required
  - `contacts` ServiceEvidenceContact[], required
    - `id` string, uuid, required
    - `vehicleId` string, uuid, required
    - `requestId` string, uuid, required
    - `channel` 'email' | 'phone' | 'sms' | 'portal' | 'other', required
    - `outcome` 'sent' | 'delivered' | 'failed' | 'no_response' | 'replied', required
    - `detail` string, nullable, required
    - `contactedAt` string, date-time, required
    - `createdAt` string, date-time, required
  - `submissions` ServiceEvidenceSubmission[], required
    - `id` string, uuid, required
    - `vehicleId` string, uuid, required
    - `requestId` string, uuid, required
    - `submittedByName` string, nullable, required
    - `submittedByEmail` string, email, nullable, required
    - `serviceDate` string, date, nullable, required
    - `odometerMileage` integer, nullable, required
    - `statement` string, nullable, required
    - `documentIds` string[], required
    - `reviewStatus` 'pending' | 'accepted' | 'rejected' | 'clarification_requested', required
    - `reviewReason` string, nullable, required
    - `reviewedAt` string, date-time, nullable, required
    - `submittedAt` string, date-time, required
    - `createdAt` string, date-time, required
    - `updatedAt` string, date-time, required

## Other responses

- `400`: The request body or query was invalid.
- `401`: Missing or invalid Bearer access token.
- `403`: Token does not include the required scope.
- `404`: The requested resource does not exist on the authorised user's account, is the wrong event type, or is immutable history for this operation.
- `429`: Per-token rate limit exceeded (60 requests per minute).

---

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