Trimble Maps API

The Trimble Maps API (formerly ALK Technologies PC*MILER) provides interactive mapping and routing solutions optimized for commercial vehicles and transportation. Enables truck-specific routing, geocoding, map tile rendering, and turn-by-turn navigation services across North America, Europe, and global markets.

OpenAPI Specification

trimble-maps-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Trimble Maps API
  description: >-
    The Trimble Maps API (formerly ALK Technologies PC*MILER) provides interactive
    mapping and routing solutions optimized for commercial vehicles and transportation.
    Enables truck-specific routing, geocoding, map tile rendering, and turn-by-turn
    navigation services across North America, Europe, and global markets.
  version: "2.0"
  contact:
    name: Trimble Maps Developer Support
    url: https://maps.trimble.com
servers:
  - url: https://pcmiler.alk.com/apis/rest/v1.0
    description: Trimble PC*MILER API v1 (North America)
  - url: https://maps.trimble.com/api/v1
    description: Trimble Maps API v1

security:
  - ApiKeyHeader: []

tags:
  - name: Geocoding
    description: Address and coordinate conversion
  - name: Routing
    description: Route calculation and optimization
paths:
  /Service.svc/route:
    get:
      operationId: calculateRoute
      summary: Calculate a route between stops
      description: >-
        Calculates an optimized route for commercial vehicles between multiple stops.
        Returns mileage, drive time, toll costs, and turn-by-turn directions optimized
        for truck dimensions, weight, and hazmat restrictions.
      tags:
        - Routing
      parameters:
        - name: stops
          in: query
          required: true
          description: >-
            Semicolon-delimited list of stops in "City,State" or lat/lng format.
            Example: "Dallas,TX;Chicago,IL;Detroit,MI"
          schema:
            type: string
          example: "Dallas,TX;Chicago,IL"
        - name: vehicleType
          in: query
          schema:
            type: string
            enum: [Truck, LightTruck, Auto, Motorcycle]
            default: Truck
        - name: routeType
          in: query
          schema:
            type: string
            enum: [Practical, Shortest, Fastest, Tolls, Avoid53]
            default: Practical
          description: Routing optimization type
        - name: height
          in: query
          schema:
            type: number
          description: Vehicle height in feet
          example: 13.5
        - name: weight
          in: query
          schema:
            type: number
          description: Vehicle weight in pounds
          example: 80000
        - name: length
          in: query
          schema:
            type: number
          description: Vehicle length in feet
          example: 53
        - name: hazmat
          in: query
          schema:
            type: string
            enum: [None, General, Explosive, InhalationHazard, Radioactive, Flammable, Corrosive, Oxidizer, Poisonous]
            default: None
        - name: reportType
          in: query
          schema:
            type: string
            enum: [Mileage, Directions, DriveTimeTable, Detail]
            default: Mileage
        - name: outputFormat
          in: query
          schema:
            type: string
            enum: [json, xml]
            default: json
      responses:
        '200':
          description: Route calculation results
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RouteResponse'
        '400':
          description: Invalid request parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Invalid API key

  /Service.svc/mileage:
    get:
      operationId: getMileage
      summary: Get mileage between stops
      description: >-
        Returns the calculated mileage and driving time between stops using
        PC*MILER routing logic. Supports both practical (highway-preferred) and
        shortest routing for commercial vehicles.
      tags:
        - Routing
      parameters:
        - name: stops
          in: query
          required: true
          schema:
            type: string
          example: "Dallas,TX;Houston,TX"
        - name: vehicleType
          in: query
          schema:
            type: string
            enum: [Truck, LightTruck, Auto]
            default: Truck
        - name: routeType
          in: query
          schema:
            type: string
            enum: [Practical, Shortest]
            default: Practical
        - name: outputFormat
          in: query
          schema:
            type: string
            enum: [json, xml]
            default: json
      responses:
        '200':
          description: Mileage results
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MileageResponse'

  /Service.svc/geocode:
    get:
      operationId: geocodeAddress
      summary: Geocode an address
      description: >-
        Converts a street address or city/state/zip to geographic coordinates
        using Trimble's commercial vehicle map database.
      tags:
        - Geocoding
      parameters:
        - name: addr
          in: query
          required: true
          description: Address to geocode (street, city, state/province, zip, country)
          schema:
            type: string
          example: "1 Infinite Loop, Cupertino, CA 95014"
        - name: region
          in: query
          schema:
            type: string
            enum: [NA, EU, SA, AF, AS, OC]
            default: NA
          description: Geographic region
        - name: outputFormat
          in: query
          schema:
            type: string
            enum: [json, xml]
            default: json
      responses:
        '200':
          description: Geocoded location
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GeocodeResponse'

  /Service.svc/reverseGeocode:
    get:
      operationId: reverseGeocode
      summary: Reverse geocode coordinates to address
      description: Converts geographic coordinates (lat/lng) to a nearest street address.
      tags:
        - Geocoding
      parameters:
        - name: coords
          in: query
          required: true
          description: Latitude and longitude as "lat,lng"
          schema:
            type: string
          example: "37.3318,-122.0312"
        - name: region
          in: query
          schema:
            type: string
            enum: [NA, EU, SA]
            default: NA
      responses:
        '200':
          description: Reverse geocoded address
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AddressResponse'

components:
  securitySchemes:
    ApiKeyHeader:
      type: apiKey
      in: header
      name: Authorization
      description: "Format: ALK apiKey"

  schemas:
    RouteResponse:
      type: object
      properties:
        RouteReports:
          type: array
          items:
            type: object
            properties:
              ReportLines:
                type: array
                items:
                  $ref: '#/components/schemas/RouteLeg'
        TMiles:
          type: number
          description: Total route miles
        THours:
          type: number
          description: Total drive hours
        Tolls:
          type: object
          properties:
            TotalCost:
              type: number
            Currency:
              type: string
        Directions:
          type: array
          items:
            $ref: '#/components/schemas/DirectionStep'

    RouteLeg:
      type: object
      properties:
        LegMiles:
          type: number
          description: Leg distance in miles
        LegHours:
          type: number
          description: Leg drive time in hours
        StartPoint:
          $ref: '#/components/schemas/StopPoint'
        EndPoint:
          $ref: '#/components/schemas/StopPoint'

    StopPoint:
      type: object
      properties:
        Address:
          type: string
        Coords:
          $ref: '#/components/schemas/Coords'

    DirectionStep:
      type: object
      properties:
        Direction:
          type: string
        Distance:
          type: number
        DriveTime:
          type: string
        RoadName:
          type: string
        State:
          type: string
        Coords:
          $ref: '#/components/schemas/Coords'

    MileageResponse:
      type: object
      properties:
        Mileage:
          type: number
          description: Miles between stops
        Hours:
          type: number
          description: Drive time in hours
        FuelCost:
          type: number
          description: Estimated fuel cost in USD
        RouteType:
          type: string

    GeocodeResponse:
      type: object
      properties:
        Lat:
          type: number
        Lon:
          type: number
        Address:
          type: string
        City:
          type: string
        State:
          type: string
        Zip:
          type: string
        Country:
          type: string
        Quality:
          type: string
          enum: [Exact, Interpolated, City, Zip, State, Country]

    AddressResponse:
      type: object
      properties:
        Address:
          type: string
        City:
          type: string
        State:
          type: string
        Zip:
          type: string
        Country:
          type: string
        Coords:
          $ref: '#/components/schemas/Coords'

    Coords:
      type: object
      properties:
        Lat:
          type: number
          minimum: -90
          maximum: 90
        Lon:
          type: number
          minimum: -180
          maximum: 180

    ErrorResponse:
      type: object
      properties:
        Description:
          type: string
        ExceptionType:
          type: string
        StatusCode:
          type: integer