PartsTech Motor Labor API

Labor

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/partstech-motor-labor-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no email required.

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

OpenAPI Specification

partstech-motor-labor-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  version: 2.021.1
  title: PartsTech Motor Labor API
  description: "\n# Rate Limiting\n\nRequests can be limited by user requests, by private partner requests and by all requests with partner's credentials.\nIt has several time intervals:\n  - *Per day* restricts count of requests made in one day.\n  - *Requests per second* restricts count of requests made in one second.\n  - *Concurrent requests* restricts count of parallel requests.\n  - *Sliding 15 minutes* restricts count of requests made in last 15 minutes.\n\n**Note**: Every method has own separate sets of the limits.\n\n## Headers\nUse the HTTP headers in order to understand where the application is at for a given rate limit, on the method that was just utilized.\nThe HTTP header is returned only for one general limit or for limit that user reached.\n\n\n*Headers*\n  - the rate limit ceiling for that given endpoint:\n  ```\n  x-rate-limit-limit: 1000\n  ```\n  - the number of requests left:\n  ```\n  x-rate-limit-remaining: 570\n  ```\n  - the remaining window before the rate limit resets, in UTC [epoch seconds](https://en.wikipedia.org/wiki/Unix_time):\n  ```\n  x-rate-limit-reset: 1552003200\n  ```\n\nWhen an application exceeds the rate limit for a given standard API endpoint,\nthe API will return a HTTP 429 “Too Many Requests” response code, and the following error will be returned in the response body:\n```\n{\n  \"error\": {\n    \"code\": \"TooManyRequests\",\n    \"message\": \"Some description\"\n  }\n}\n```\n\n# Pagination\n\nWhen you call an API method to retrieve information, it can be returned to you in portions.\nCheck out more detail below on pagination in API methods, including how to use them and which methods follow the pattern.\n\nAPI methods that supports pagination will return the `Link` header. It will include available urls of `first`, `last`, `previous` and `next` pages.\n\n```\nLink: <https://api.partstech.com/purchases?page=1>; rel=\"first\"\nLink: <https://api.partstech.com/purchases?page=1>; rel=\"previous\"\nLink: <https://api.partstech.com/purchases?page=3>; rel=\"next\"\nLink: <https://api.partstech.com/purchases?page=142>; rel=\"last\"\n```\n\n# MOTOR Compliance Requirements\n\nAll MOTOR-powered endpoints (Labor, Maintenance Schedules, Fluids, and Specifications) return a `Link` header\ncontaining the URL to MOTOR's OEM Compliance Requirements documentation.\n\nThe header follows the [RFC 8288 (Web Linking)](https://tools.ietf.org/html/rfc8288) format:\n\n```\nLink: <https://www.motor.com/oem-compliance-requirements/>; rel=\"compliance\"\n```\n\n# Errors\n\nThe API uses standard HTTP status codes to indicate the success or failure of the API call. The body of the response will be JSON in the following format:\n\n```\n{\n  \"error\": {\n    \"code\": \"InternalErrorCode\",\n    \"message\": \"Some description\"\n  }\n}\n```\n\n# Error Responses\nSome default error responses used in the API.\n\nHttp Code  | Explanation | Content Type | Used error codes\n----------------|-------------|------------------|---------\n400 | Bad Request. The request was unacceptable. | `application/json` | `InvalidRequestSyntax`\n401 | Unauthorized. The request requires user or partner credentials or bearer token. Also used for invalid credentials or bearer token. | `application/json` | `InvalidToken`, `UserAuthenticationFailed`, `PartnerAuthenticationFailed`\n402 | Request Failed. The parameters were valid but the request failed. | `application/json` | Different codes, depend on method.\n403 | Forbidden. Also used for unauthorized requests such as improper credentials scopes or permissions issues. | `application/json` | `IncorrectMode`, `DisabledApiUsage`, `UserIsNotActivated`, `HaveNotPermission`, `NotAvailableMethod`\n404 | Some data in the request is not found. Or incorrect url was used. | `application/json`, `text/html`, no content | `NotFound`\n405 | Method not allowed. | `application/json`, `text/html`, no content |\n406 | Unacceptable content type. Client sent an accepts header for a content type which does not exist on the server. | No content |\n409 | Locked. One of the another operations that is in progress blocks this method call. | `application/json` | `LockedSession`\n429 | Too Many Requests | `application/json` | `TooManyRequests`\n432 | Integration Error | `application/json` |\n500 | Internal Server Error. (This is rare.) | `application/json` | `InternalError`\n501 | Not Implemented | `application/json` | `MethodNotImplemented`\n503 | The backend server is not available. (This is rare.) | No content |\n"
  x-logo:
    url: https://partstech.com/wp-content/uploads/2025/03/PartsTech_OEC-compnay_logo.svg
    altText: PartsTech logo
servers:
- url: https://api.partstech.com
  description: Production server
- url: https://api.beta.partstech.com
  description: Beta server
tags:
- name: motor-labor
  description: Labor
  x-displayName: Labor
paths:
  /taxonomy/labor:
    post:
      summary: Get Labor
      description: 'Returns Labor Groups or Labor Operations.

        - to get Labor Groups - send only `searchParams` with `vehicleParams` or `vin`.

        - to get Labor Operations - send `searchParams` with `vehicleParams` or `vin` and add `laborParams`.


        The method is not available for all users.

        '
      tags:
      - motor-labor
      operationId: getLabor
      x-operation-name: QueryTaxonomyLabor
      security:
      - bearerAuth:
        - user
      requestBody:
        content:
          application/json:
            schema:
              oneOf:
              - $ref: '#/components/schemas/LaborGroupsRequest'
              - $ref: '#/components/schemas/LaborOperationsRequest'
      responses:
        '200':
          description: OK
          headers:
            Link:
              $ref: '#/components/headers/MotorComplianceLink'
          content:
            application/json:
              schema:
                oneOf:
                - $ref: '#/components/schemas/LaborGroupsResponse'
                - $ref: '#/components/schemas/LaborOperationsResponse'
        '400':
          $ref: '#/components/responses/UnsupportedVehicle'
        '404':
          $ref: '#/components/responses/VehicleNotFound'
  /taxonomy/labor/details:
    post:
      summary: Get Labor Details By Operation ID
      description: 'Returns labor details for a specific operation ID

        '
      tags:
      - motor-labor
      operationId: getLaborDetails
      x-operation-name: QueryTaxonomyLaborDetails
      security:
      - bearerAuth:
        - user
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
              - searchParams
              - operationId
              properties:
                searchParams:
                  $ref: '#/components/schemas/SearchParams'
                operationId:
                  type: number
      responses:
        '200':
          description: OK
          headers:
            Link:
              $ref: '#/components/headers/MotorComplianceLink'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Operation'
        '400':
          $ref: '#/components/responses/UnsupportedVehicle'
        '404':
          $ref: '#/components/responses/VehicleNotFound'
components:
  schemas:
    VehicleParamsByEngineConfigId:
      title: Vehicle params with engineConfigId
      description: 'Vehicle parameters with Engine Config ID.


        EngineID and other Engine parameters will be defined by Engine Config ID.

        '
      type: object
      required:
      - yearId
      - makeId
      - modelId
      - subModelId
      - engineConfigId
      properties:
        yearId:
          type: integer
          example: 2015
        makeId:
          type: integer
          example: 65
        modelId:
          type: integer
          example: 123
        subModelId:
          type: integer
          example: 234
        engineConfigId:
          type: integer
          example: 34
    PartsTechVehicleIdSearchParams:
      description: 'A search parameters for the search by PartsTech Vehicle ID.

        It consists on Vehicle ID and Part Types or Keyword.

        '
      type: object
      minProperties: 1
      maxProperties: 2
      required:
      - vehicleId
      properties:
        vehicleId:
          type: integer
          example: 1
          description: PartsTech's ID for a vehicle.
    VehicleSearchParams:
      description: 'A search parameters for the search by vehicle parameters.

        It consists on Vehicle arameters and Part Types or Keyword.


        [Search](#tag/search) require Vehicle arameters and one of another properties - Part Types or Keyword.


        [Create Quote](#operation/createQuote) requires only Vehicle parameters. Part Types or Keyword is optional.

        '
      type: object
      minProperties: 1
      maxProperties: 2
      required:
      - vehicleParams
      properties:
        vehicleParams:
          $ref: '#/components/schemas/VehicleParams'
    LaborOperationsRequest:
      type: object
      required:
      - searchParams
      - laborParams
      properties:
        searchParams:
          oneOf:
          - $ref: '#/components/schemas/VehicleSearchParams'
          - $ref: '#/components/schemas/PartsTechVehicleIdSearchParams'
          - $ref: '#/components/schemas/VinSearchParams'
          - $ref: '#/components/schemas/PlateSearchParams'
        laborParams:
          oneOf:
          - $ref: '#/components/schemas/ExpandedTaxonomyLaborParams'
          - $ref: '#/components/schemas/TaxonomyLaborParams'
          - $ref: '#/components/schemas/PartTypeLaborParams'
          - $ref: '#/components/schemas/SearchLaborParams'
    LaborGroupsRequest:
      type: object
      required:
      - searchParams
      properties:
        searchParams:
          oneOf:
          - $ref: '#/components/schemas/VehicleSearchParams'
          - $ref: '#/components/schemas/PartsTechVehicleIdSearchParams'
          - $ref: '#/components/schemas/VinSearchParams'
          - $ref: '#/components/schemas/PlateSearchParams'
    EngineParams:
      title: Engine params
      type: object
      required:
      - engineVinId
      - engineDesignationId
      - engineVersionId
      - fuelTypeId
      - cylinderHeadTypeId
      properties:
        engineVinId:
          type: integer
          example: 134
        engineDesignationId:
          type: integer
          example: 344
        engineVersionId:
          type: integer
          example: 342
        fuelTypeId:
          type: integer
          example: 54
        cylinderHeadTypeId:
          type: integer
          example: 25243
    LaborGroupsResponse:
      type: array
      items:
        type: object
        required:
        - systemId
        - name
        properties:
          systemId:
            type: integer
          name:
            type: string
          groups:
            type: array
            items:
              type: object
              required:
              - groupId
              - name
              properties:
                groupId:
                  type: integer
                name:
                  type: string
                subGroups:
                  type: array
                  items:
                    type: object
                    required:
                    - subGroupId
                    - name
                    properties:
                      subGroupId:
                        type: integer
                      name:
                        type: string
    PlateSearchParams:
      description: 'A search parameters for the search by Plate.

        It consists on Plate and Part Types or Keyword.


        [Search](#tag/search) require Plate and one of another properties - Part Types or Keyword.


        [Create Quote](#operation/createQuote) requires only Plate. Part Types or Keyword is optional.

        '
      type: object
      minProperties: 1
      maxProperties: 2
      required:
      - plate
      properties:
        plate:
          type: object
          required:
          - state
          - plate
          properties:
            state:
              description: 'ISO 3166-2: Second part. Example for US-MA - MA.'
              type: string
              minLength: 2
              maxLength: 2
              pattern: \w{2,2}
              example: MA
            plate:
              type: string
              example: SomePlate
    SearchLaborParams:
      type: object
      required:
      - searchTerm
      properties:
        searchTerm:
          type: string
          minLength: 3
    PartTypeLaborParams:
      type: object
      required:
      - partTypeIds
      properties:
        partTypeIds:
          type: array
          minItems: 1
          maxItems: 10
          items:
            type: integer
          example:
          - 1852
    VehicleParamsByEngineIdAndEngineParams:
      title: Vehicle params with engineId and engine params
      description: 'Vehicle parameters with Engine ID and Engine parameters.

        '
      type: object
      required:
      - yearId
      - makeId
      - modelId
      - subModelId
      - engineId
      - engineParams
      properties:
        yearId:
          type: integer
          example: 2015
        makeId:
          type: integer
          example: 65
        modelId:
          type: integer
          example: 123
        subModelId:
          type: integer
          example: 234
        engineId:
          type: integer
          example: 12344
        engineParams:
          $ref: '#/components/schemas/EngineParams'
    VehicleParams:
      oneOf:
      - $ref: '#/components/schemas/VehicleParamsByEngineIdAndEngineParams'
      - $ref: '#/components/schemas/VehicleParamsByEngineConfigId'
    VinSearchParams:
      description: 'A search parameters for the search by vin.

        It consists on VIN and Part Types or Keyword.


        [Search](#tag/search) require VIN and one of another properties - Part Types or Keyword.


        [Create Quote](#operation/createQuote) requires only VIN. Part Types or Keyword is optional.

        '
      type: object
      minProperties: 1
      maxProperties: 2
      required:
      - vin
      properties:
        vin:
          type: string
          example: SomeVIN
    Operation:
      type: object
      required:
      - id
      - name
      - laborTimeInterval
      - additional
      - all
      - base
      - isMatch
      properties:
        id:
          type: integer
        taxonomyId:
          type:
          - integer
          - 'null'
        name:
          type: string
        partTerminologies:
          type: array
          items:
            type: object
            required:
            - id
            - name
            properties:
              id:
                type: integer
              name:
                type: string
        laborTimeInterval:
          type: string
        additional:
          type: object
          required:
          - laborTime
          - laborTimeDescription
          - warrantyLaborTime
          properties:
            laborTime:
              type: number
              format: float
            laborTimeDescription:
              type: string
            warrantyLaborTime:
              type: number
              format: float
        all:
          type: object
          required:
          - laborTime
          - laborTimeDescription
          - warrantyLaborTime
          properties:
            laborTime:
              type: number
              format: float
            laborTimeDescription:
              type: string
            warrantyLaborTime:
              type: number
              format: float
        base:
          type: object
          required:
          - laborTime
          - laborTimeAverage
          - laborTimeDescription
          - warrantyLaborTime
          properties:
            laborTime:
              type: number
              format: float
            laborTimeAverage:
              type: number
              format: float
            laborTimeDescription:
              type: string
            warrantyLaborTime:
              type: number
              format: float
        attributes:
          type:
          - array
          - 'null'
          items:
            type: object
            required:
            - id
            - name
            properties:
              id:
                type: integer
              name:
                type: string
              text:
                type:
                - string
                - 'null'
        position:
          type:
          - object
          - 'null'
          required:
          - name
          - pcdbPositionID
          properties:
            name:
              type: string
            pcdbPositionID:
              type: integer
        isMatch:
          type: boolean
          description: Indicates whether the operation matches the request criteria.
    TaxonomyLaborParams:
      type: object
      required:
      - taxonomyIds
      properties:
        taxonomyIds:
          type: array
          minItems: 1
          maxItems: 10
          items:
            type: integer
          example:
          - 1
          - 5
          - 7
          - 8
    LaborOperationsResponse:
      type: array
      minItems: 0
      items:
        type: object
        required:
        - id
        - name
        properties:
          id:
            type: integer
          name:
            type: string
          operations:
            type: array
            items:
              $ref: '#/components/schemas/Operation'
    SearchParams:
      type: object
      oneOf:
      - $ref: '#/components/schemas/VehicleSearchParams'
      - $ref: '#/components/schemas/VinSearchParams'
      - $ref: '#/components/schemas/PlateSearchParams'
      - $ref: '#/components/schemas/PartNumberSearchParams'
    PartNumberSearchParams:
      description: 'A search parameters for the search by PartNumber.

        It consists on only PartNumber.


        Now it has limits of 1 PartNumber in a request.

        '
      type: object
      required:
      - partNumber
      properties:
        partNumber:
          type: array
          minItems: 1
          maxItems: 1
          uniqueItems: true
          description: The manufacturer part number.
          items:
            type: string
          example:
          - 12345
    ExpandedTaxonomyLaborParams:
      type: object
      required:
      - systemId
      - groupId
      - subGroupIds
      properties:
        systemId:
          type: integer
          example: 3
        groupId:
          type: integer
          example: 5
        subGroupIds:
          type: array
          minItems: 1
          maxItems: 10
          items:
            type: integer
          example:
          - 1
          - 6
          - 7
          - 10
  headers:
    MotorComplianceLink:
      description: 'Labor, maintenance schedules, fluids, and specifications data provided by MOTOR.

        Link to MOTOR''s OEM Compliance Requirements documentation.

        '
      schema:
        type: string
        example: <https://www.motor.com/oem-compliance-requirements/>; rel="compliance"
  responses:
    VehicleNotFound:
      description: Not Found
      content:
        application/json:
          schema:
            type: object
            properties:
              error:
                type: object
                properties:
                  code:
                    type: string
                  message:
                    type: string
            example:
              error:
                code: NotFound
                message: Vehicle was not found
    UnsupportedVehicle:
      description: Bad Request
      content:
        application/json:
          schema:
            type: object
            properties:
              error:
                type: object
                properties:
                  code:
                    type: string
                  message:
                    type: string
            example:
              error:
                code: UnsupportedVehicle
                message: MOTOR does not currently support data for Canadian vehicles.
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: "Get access to data while protecting your account credentials.\nToken (a JWT token) are also a safer and more secure way to give you access.\n\nIt provides two ways of access:\n - `user` - Give an access to user methods.\n - `partner` - Give an acess to partner methods.\n\nTo use this way you need:\n1. Get an access token. See [\"Authentication and Access\"](#operation/getAcessToken).\n2. Add a header in the request\n```\nAuthorization: Bearer <accessToken>\n```\n3. Refresh tokens, when it expires, using `refreshToken`. See [\"Authentication and Access\"](#operation/refreshAccessToken). **Deprecated**.\nGenerate a new token after an expiration of previous instead of refreshing .\n"
    apiKeyAuth:
      type: apiKey
      in: header
      name: credentials
      description: "It is a deprecated way to get access to the methods, used only in the methods, that were in the previous version.\n\nIt provides two ways of an access:\n - `user` - Give access to user methods.\n - `partner` - Give acess to partner methods.\n\nTo use this way you need to add credentials in the request body, where it is allowed, in a next format:\n - for user methods:\n```\n\"credentials\": {\n    \"user\": {\n      \"id\": \"username\",\n      \"key\": \"APIKey\"\n    },\n    \"partner\": {\n      \"id\": \"username\",\n      \"key\": \"APIKey\"\n    }\n}\n```\n - for partner methods:\n```\n\"credentials\": {\n    \"partner\": {\n      \"id\": \"username\",\n      \"key\": \"APIKey\"\n    }\n}\n```\n\nFor example content of method [`Submit Cart`](#operation/submitCart) will be modified:\n```\n{\n  \"sessionId\": \"123asjkdhyr34234\"\n}\n```\n\n```\n{\n  \"sessionId\": \"123asjkdhyr34234\",\n  \"credentials\": {\n    \"user\": {\n      \"id\": \"mechanic\",\n      \"key\": \"Mechanic's API key\"\n    },\n    \"partner\": {\n      \"id\": \"partner name\",\n      \"key\": \"partner's API key\"\n    }\n  }\n}\n```\n"
x-tagGroups:
- name: Authentication
  tags:
  - auth
- name: Punchout
  tags:
  - punchout_quote
- name: Cart
  tags:
  - punchout-cart
  - session-cart
  - callback-cart
  - punchout-orders
  - custom-cart
- name: Catalog
  tags:
  - vin
  - search
  - quoting
  - parts
  - tires
  - brands
- name: Taxonomy
  tags:
  - pcdb
  - vcdb
  - jobs
- name: Profile
  tags:
  - user
  - shop
  - supplier_preferences
  - orders
- name: Partner
  tags:
  - users
  - shops
  - ex-permissions
  - partner-orders
  - auto-connect
- name: Others
  tags:
  - suppliers
  - local-inventory
- name: Motor Taxonomy
  tags:
  - motor-labor
  - motor-maintenance-schedules
  - motor-fluids
  - motor-specifications
- name: Mitchell1 Taxonomy
  tags:
  - mitchell1
  - mitchell1-labor