---
title: "Preview or apply a caller-authorised ServiceM8 or Simpro job import."
method: POST
path: "/api/v1/jobs/import"
---

# Preview or apply a caller-authorised ServiceM8 or Simpro job import.

`POST /api/v1/jobs/import`

## Request

- Base URL: `https://fleetkeep.co.uk`
- URL: `https://fleetkeep.co.uk/api/v1/jobs/import`
- Auth: OAuth 2 (authorization code, authorization URL `https://fleetkeep.co.uk/auth/oauth2/authorize`, token URL `https://fleetkeep.co.uk/auth/oauth2/token`, scopes: `operations:write`)

Use the owner's saved connection with useSavedConnection=true, or supply a current provider accessToken for this request only. Set up saved connections at /dashboard/jobs/connections. Reads up to 5,000 jobs over at most 20 pages within 30 seconds. Apply re-reads the provider and requires the exact preview digest. Missing jobs remain unchanged; existing locally closed jobs stay closed. No provider data writes or background polling.

## Request body

- union
  - object
    - `useSavedConnection` true, required: Use only the authenticated owner's saved provider source and grant.
    - `provider` 'servicem8' | 'simpro', required
    - `action` 'preview' | 'apply', required
    - `accessToken` string
    - `origin` string: Required for Simpro with a caller-supplied token: exact HTTPS build origin on simprosuite.com or simprocloud.com. Ignored for saved connections.
    - `companyId` integer: Required for Simpro with a caller-supplied token. Ignored for saved connections.
    - `digest` string: Required when action is apply.
  - object
    - `useSavedConnection` boolean: Use only the authenticated owner's saved provider source and grant.
    - `provider` 'servicem8' | 'simpro', required
    - `action` 'preview' | 'apply', required
    - `accessToken` string, required
    - `origin` string: Required for Simpro with a caller-supplied token: exact HTTPS build origin on simprosuite.com or simprocloud.com. Ignored for saved connections.
    - `companyId` integer: Required for Simpro with a caller-supplied token. Ignored for saved connections.
    - `digest` string: Required when action is apply.

## Response `200`

Preview jobs and digest, or imported row count after confirmation. Count includes updates and idempotent retries.

## Other responses

- `400`: Invalid provider, destination, token or confirmation.
- `401`: Fleetkeep authorisation required.
- `403`: Fleet plan or scope required.
- `409`: Reconnect provider, changed preview, conflicting reference or read limit reached.
- `429`: Provider rate limit reached. No automatic retry.
- `502`: Provider unavailable or unsupported response. No partial import applied.

---

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