Fleetkeep Tracking API

Read stored fleet tracking snapshots and authorised Wex route data without changing provider connections.

GitHub OpenAPI

Operations 2

GET /api/v1/operations/tracking List fleet tracking snapshots and connection states #
GET /api/v1/operations/tracking/{vehicleId}/route Fetch authorised Wex route, trip, fuel and diagnostic data #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/fleetkeep-co-uk:fleetkeep-co-uk-tracking-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

fleetkeep-co-uk-tracking-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Fleetkeep Co Uk Tracking API
  version: 0.8.0
  contact:
    name: Fleetkeep partner integration
    url: https://fleetkeep.co.uk/contact
    email: hello@fleetkeep.co.uk
  license:
    name: Proprietary
    url: https://fleetkeep.co.uk/legal/terms
  description: 'Operations tagged Tracking across 2 of this provider''s published API definitions: openapi.json, fleetkeep-co-uk-openapi.json. Each path carries the servers of the definition it was published in.'
servers:
- url: https://fleetkeep.co.uk
  description: Production
security:
- oauth2:
  - vehicles:read
tags:
- name: Tracking
  description: Read stored fleet tracking snapshots and authorised Wex route data without changing provider connections.
paths:
  /api/v1/operations/tracking:
    get:
      tags:
      - Tracking
      summary: List fleet tracking snapshots and connection states
      description: Returns stored readings only. A vehicle without a connected or current provider remains in the list with nullable tracking fields.
      operationId: listTrackingSnapshots
      security:
      - oauth2:
        - operations:read
      responses:
        '200':
          description: Tenant-scoped vehicle tracking states
          content:
            application/json:
              schema:
                type: object
                additionalProperties: false
                required:
                - vehicles
                properties:
                  vehicles:
                    type: array
                    maxItems: 1000
                    items:
                      $ref: '#/components/schemas/TrackingVehicle'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '402':
          $ref: '#/components/responses/BillingRequired'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/RateLimited'
        '500':
          $ref: '#/components/responses/ServiceMisconfigured'
    servers:
    - url: https://fleetkeep.co.uk
      description: Production
  /api/v1/operations/tracking/{vehicleId}/route:
    get:
      tags:
      - Tracking
      summary: Fetch authorised Wex route, trip, fuel and diagnostic data
      description: Calls Wex only after tenant ownership and an active Wex link are proven. A successful response proves only that this request returned provider data; it does not claim general account feed availability.
      operationId: getWexRouteHistory
      security:
      - oauth2:
        - operations:read
      parameters:
      - name: vehicleId
        in: path
        required: true
        schema:
          type: string
          format: uuid
      - name: period
        in: query
        required: false
        schema:
          type: string
          enum:
          - today
          - yesterday
          - 7d
          default: today
      responses:
        '200':
          description: Bounded provider response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TrackingRoute'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '402':
          $ref: '#/components/responses/BillingRequired'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/RateLimited'
        '502':
          $ref: '#/components/responses/ProviderFailure'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
        '500':
          $ref: '#/components/responses/ServiceMisconfigured'
    servers:
    - url: https://fleetkeep.co.uk
      description: Production
components:
  responses:
    Unauthorized:
      description: Missing or invalid Bearer access token.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    NotFound:
      description: The requested resource does not exist on the authorised user's account, is the wrong event type, or is immutable history for this operation.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    BillingRequired:
      description: The authorised Fleetkeep account does not currently have active product access.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    RateLimited:
      description: Per-token rate limit exceeded (60 requests per minute).
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    ServiceMisconfigured:
      description: The API authentication or database service is not configured.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    ServiceUnavailable:
      description: A required private storage, provider configuration or service dependency is unavailable.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    ProviderFailure:
      description: An authorised external provider could not return or accept the requested operation.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    BadRequest:
      description: The request body or query was invalid.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    Forbidden:
      description: Token does not include the required scope.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  schemas:
    Error:
      type: object
      additionalProperties: false
      required:
      - error
      properties:
        error:
          type: string
          example: registration_required
    TrackingVehicle:
      type: object
      additionalProperties: false
      required:
      - id
      - registration
      - label
      - make
      - model
      - fuelType
      - euroStatus
      - typeApproval
      - revenueWeight
      - assignedDriverName
      - connectionName
      - provider
      - connectionStatus
      - lastSyncedAt
      - lastReceivedAt
      - lastSyncError
      - latitude
      - longitude
      - odometerMiles
      - speedMph
      - maxSpeedMph
      - headingDegrees
      - voltageVolts
      - ignition
      - deviceStatus
      - landmark
      - address
      - providerDriverName
      - recordedAt
      properties:
        id:
          type: string
          format: uuid
        registration:
          type: string
          maxLength: 16
        label:
          type:
          - string
          - 'null'
          maxLength: 200
        make:
          type:
          - string
          - 'null'
          maxLength: 120
        model:
          type:
          - string
          - 'null'
          maxLength: 120
        fuelType:
          type:
          - string
          - 'null'
          maxLength: 80
        euroStatus:
          type:
          - string
          - 'null'
          maxLength: 80
        typeApproval:
          type:
          - string
          - 'null'
          maxLength: 80
        revenueWeight:
          type:
          - integer
          - 'null'
        assignedDriverName:
          type:
          - string
          - 'null'
          maxLength: 200
        connectionName:
          type:
          - string
          - 'null'
          maxLength: 200
        provider:
          type:
          - string
          - 'null'
          maxLength: 80
        connectionStatus:
          type:
          - string
          - 'null'
          maxLength: 80
        lastSyncedAt:
          type:
          - string
          - 'null'
          format: date-time
        lastReceivedAt:
          type:
          - string
          - 'null'
          format: date-time
        lastSyncError:
          type:
          - string
          - 'null'
          maxLength: 500
        latitude:
          type:
          - number
          - 'null'
          minimum: -90
          maximum: 90
        longitude:
          type:
          - number
          - 'null'
          minimum: -180
          maximum: 180
        odometerMiles:
          type:
          - number
          - 'null'
          minimum: 0
        speedMph:
          type:
          - number
          - 'null'
          minimum: 0
        maxSpeedMph:
          type:
          - number
          - 'null'
          minimum: 0
        headingDegrees:
          type:
          - number
          - 'null'
          minimum: 0
          maximum: 360
        voltageVolts:
          type:
          - number
          - 'null'
          minimum: 0
        ignition:
          type:
          - boolean
          - 'null'
        deviceStatus:
          type:
          - string
          - 'null'
          maxLength: 500
        landmark:
          type:
          - string
          - 'null'
          maxLength: 500
        address:
          type:
          - string
          - 'null'
          maxLength: 500
        providerDriverName:
          type:
          - string
          - 'null'
          maxLength: 200
        recordedAt:
          type:
          - string
          - 'null'
          format: date-time
    TrackingRoute:
      type: object
      additionalProperties: false
      required:
      - points
      - trips
      - fuelTransactions
      - diagnosticCodes
      - provider
      - period
      - truncated
      properties:
        points:
          type: array
          maxItems: 10000
          items:
            $ref: '#/components/schemas/TrackingRoutePoint'
        trips:
          type: array
          maxItems: 1000
          items:
            $ref: '#/components/schemas/TrackingTrip'
        fuelTransactions:
          oneOf:
          - type: array
            maxItems: 2000
            items:
              $ref: '#/components/schemas/TrackingFuelTransaction'
          - type: 'null'
        diagnosticCodes:
          oneOf:
          - type: array
            maxItems: 500
            items:
              type: string
              maxLength: 64
          - type: 'null'
        provider:
          type: string
          const: wex
        period:
          type: string
          enum:
          - today
          - yesterday
          - 7d
        truncated:
          type: object
          additionalProperties: false
          required:
          - points
          - trips
          - fuelTransactions
          - diagnosticCodes
          properties:
            points:
              type: boolean
            trips:
              type: boolean
            fuelTransactions:
              type: boolean
            diagnosticCodes:
              type: boolean
    TrackingTrip:
      type: object
      additionalProperties: false
      required:
      - type
      - startedAt
      - endedAt
      - distanceMiles
      - durationMinutes
      - maxSpeedMph
      - startLatitude
      - startLongitude
      - endLatitude
      - endLongitude
      properties:
        type:
          type: string
          enum:
          - trip
          - idle
          - stop
        startedAt:
          type: string
          format: date-time
        endedAt:
          type:
          - string
          - 'null'
          format: date-time
        distanceMiles:
          type:
          - number
          - 'null'
        durationMinutes:
          type:
          - number
          - 'null'
        maxSpeedMph:
          type:
          - number
          - 'null'
        startLatitude:
          type:
          - number
          - 'null'
        startLongitude:
          type:
          - number
          - 'null'
        endLatitude:
          type:
          - number
          - 'null'
        endLongitude:
          type:
          - number
          - 'null'
    TrackingRoutePoint:
      type: object
      additionalProperties: false
      required:
      - recordedAt
      - latitude
      - longitude
      - speedMph
      - headingDegrees
      - ignition
      - odometerMiles
      properties:
        recordedAt:
          type: string
          format: date-time
        latitude:
          type: number
          minimum: -90
          maximum: 90
        longitude:
          type: number
          minimum: -180
          maximum: 180
        speedMph:
          type:
          - number
          - 'null'
        headingDegrees:
          type:
          - number
          - 'null'
        ignition:
          type:
          - boolean
          - 'null'
        odometerMiles:
          type:
          - number
          - 'null'
    TrackingFuelTransaction:
      type: object
      additionalProperties: false
      required:
      - occurredAt
      - transactionId
      - volumeGallons
      - amount
      - pricePerGallon
      - product
      - siteName
      - brandName
      - stationAddress
      - stationLatitude
      - stationLongitude
      - vehicleLatitude
      - vehicleLongitude
      - odometerMiles
      - gpsDistanceMiles
      - driverName
      - cardName
      - fuelLevelBefore
      - fuelLevelAfter
      - estimatedUkMpg
      properties:
        occurredAt:
          type: string
          format: date-time
        transactionId:
          type:
          - string
          - 'null'
          maxLength: 160
        volumeGallons:
          type:
          - number
          - 'null'
        amount:
          type:
          - number
          - 'null'
        pricePerGallon:
          type:
          - number
          - 'null'
        product:
          type:
          - string
          - 'null'
          maxLength: 200
        siteName:
          type:
          - string
          - 'null'
          maxLength: 200
        brandName:
          type:
          - string
          - 'null'
          maxLength: 200
        stationAddress:
          type:
          - string
          - 'null'
          maxLength: 500
        stationLatitude:
          type:
          - number
          - 'null'
        stationLongitude:
          type:
          - number
          - 'null'
        vehicleLatitude:
          type:
          - number
          - 'null'
        vehicleLongitude:
          type:
          - number
          - 'null'
        odometerMiles:
          type:
          - number
          - 'null'
        gpsDistanceMiles:
          type:
          - number
          - 'null'
        driverName:
          type:
          - string
          - 'null'
          maxLength: 200
        cardName:
          type:
          - string
          - 'null'
          maxLength: 200
        fuelLevelBefore:
          type:
          - number
          - 'null'
        fuelLevelAfter:
          type:
          - number
          - 'null'
        estimatedUkMpg:
          type:
          - number
          - 'null'
  securitySchemes:
    oauth2:
      type: oauth2
      description: OAuth 2.1 authorisation-code flow with PKCE (S256). End-user delegates per-vehicle access to a partner client. Access tokens expire after 1 hour; refresh tokens (granted with the offline_access scope) live for 30 days.
      flows:
        authorizationCode:
          authorizationUrl: https://fleetkeep.co.uk/auth/oauth2/authorize
          tokenUrl: https://fleetkeep.co.uk/auth/oauth2/token
          refreshUrl: https://fleetkeep.co.uk/auth/oauth2/token
          scopes:
            vehicles:read: Read the authorised user's vehicles and compliance dates.
            vehicles:write: Add, update, delete and bulk-add vehicles on the authorised user's behalf.
            maintenance:read: Read the authorised user's maintenance tasks and completed history.
            maintenance:write: Create, update, complete and cancel the authorised user's maintenance tasks.
            operations:read: Read the authorised user's tracking snapshots, Wex route data and operational defect records.
            operations:write: Report and complete defects on the authorised user's behalf.
            tolls:read: Read the authorised user's toll and clean-air account records, charges and statement previews.
            tolls:write: Create toll and clean-air records and apply confirmed statement imports on the authorised user's behalf.
            documents:read: List and download the authorised user's private vehicle documents.
            documents:write: Create private vehicle document records and uploads on the authorised user's behalf.
            reminders:read: Read reminder settings and contacts.
            reminders:write: Manage reminder settings and contacts, and explicitly confirm verification sends.
            profile:read: Read the authorised user's Fleetkeep account profile.
            guidance:read: Read the authorised user's approved driver guidance and private guidance document.
            exports:read: Download the authorised user's private account and fleet spreadsheet exports.
            offline_access: Issue a refresh token so the partner can refresh access without re-prompting the user.
x-refined-from:
- openapi.json
- fleetkeep-co-uk-openapi.json
x-provenance:
  method: harvested
  publisher: Fleetkeep
  source: https://fleetkeep.co.uk/openapi.json
  note: split by refine-openapis from the provider's own published document, verified by fetch (openapi/_original/*.fetch.json);
    stamped by stamp-openapi-provenance.py (roadmap#793)