---
title: "Create Part"
method: POST
path: "/parts"
tags: ["Parts"]
---

# Create Part

`POST /parts`

## Request

- Base URL: `https://secure.fleetio.com/api`
- URL: `https://secure.fleetio.com/api/parts`
- Auth: API key in header `Authorization` and API key in header `Account-Token`
- TypeScript: <https://skmtc.dev/fleetio/apis/fleetio-developer-api/docs/parts/post.ts> (a function with typed inputs; its response is checked against the schema)

Creates a new Part

## Request body

- object
  - `description` string
  - `manufacturer_part_number` string: The part number from this Part's manufacturer.
  - `measurement_unit_id` integer
  - `measurement_unit_name` string: The name of the measurement unit. If the measurement unit does not exist, it will be ignored.
  - `number` string, required: The part number to be used for this Part within Fleetio. Must be unique. Does not have to be the same as the manufacturer's part number.
  - `part_category_id` integer
  - `part_category_name` string: The name of the part category. If the part category does not exist, it will be created.
  - `part_manufacturer_id` integer
  - `part_manufacturer_name` string: The name of the part manufacturer. If the part manufacturer does not exist, it will be created.
  - `unit_cost` number: The cost per unit of this Part, which will be interpreted as dollars, or dollars and cents. May be sent as a string, integer, or float. Value may be up to two decimal places.
  - `upc` string: The Universal Product Code for this Part. Must be unique.
  - `tire_config_attributes` object: :::info `tire_config_attributes` are available to accounts on [Premium](https://www.fleetio.com/pricing/plan-comparison) plans ::: Parts that have a Part Category where `tire_category` is `true` can have a TireConfg which are tire-specific Part attributes.
    - `id` integer
    - `aspect_ratio` number, float: Aspect ratio of tire.
    - `rim_diameter` number, float: Rim diameter of tire.
    - `load_index` number, float: Load index of tire.
    - `metric_type` 'EU' | 'P' | 'HL' | 'T' | 'LT' | 'C' | 'ST': Metric type of tire.
    - `width` number, float: Width of tire.
    - `construction` 'B' | 'R' | 'D': Construction type of tire.
    - `speed_rating` 'A1' | 'A2' | 'A3' | 'A4' | 'A5' | 'A6' | 'A7' | 'A8' | 'B' | 'C' | 'D' | 'E' | 'F' | 'G' | 'H' | 'J' | 'K' | 'L' | 'M' | 'N' | 'P' | 'Q' | 'R' | 'S' | 'T' | 'U' | 'V' | 'W' | 'Y': Speed rating of tire.
    - `factory_tread_depth` number, float: Tread depth of tire in /32" when new, as specified by the manufacturer.
    - `minimum_tread_depth` number, float: The legal minimum tread depth, in /32".
    - `life_expectancy` integer: The Life Expectancy or “Warranty” of a tire is the expected meter range, usually measured in miles, of a given tire as specified by the manufacturer.
  - `custom_fields` CustomFields, nullable: *Full details on working with Custom Fields [here](/docs/overview/custom-fields).
  - `documents_attributes` object[]: An array of one or more document objects to add to the record. Follow our [Attaching Documents and Images](/docs/overview/attaching-documents-and-images) guide to upload to our third party storage provider in order to obtain `file_url`.
    - `name` string: The name to give the file which will be shown in the UI.
    - `file_url` string: The URL obtained from our storage provider that points to the file.
    - `file_mime_type` string: The MIME type of the file. For example, `application/pdf`.
    - `file_name` string: The name of the file.
    - `file_size` integer: The size of the file in bytes.
  - `images_attributes` object[]: An array of one or more image objects to add to the record. Follow our [Attaching Documents and Images](/docs/overview/attaching-documents-and-images) guide to upload to our third party storage provider in order to obtain `file_url`.
    - `name` string: The name to give the image which will be shown in the UI.
    - `file_url` string: The URL obtained from our storage provider that points to the image.
    - `file_mime_type` string: The MIME type of the image. For example, `image/png`.
    - `file_name` string: The name of the image.
    - `file_size` integer: The size of the image file in bytes.

## Response `201`

OK

- PartCreated, nullable: A Part
  - `id` integer, required
  - `created_at` string, date-time: The date and time at which this record was created.
  - `updated_at` string, date-time: The date and time at which this record was most recently updated.
  - `account_id` integer, required
  - `description` string, nullable, required: A description of this Part.
  - `manufacturer_part_number` string, nullable, required: The part number from this Part's manufaturer.
  - `measurement_unit_id` integer, nullable, required
  - `number` string, required: A unique number for this Part. Does not have to be the same as the manufacturer's number.
  - `part_category_id` integer, nullable, required
  - `part_manufacturer_id` integer, nullable, required
  - `upc` string, nullable, required: The Universal Product Code for this Part.
  - `custom_fields` CustomFields, nullable, required: *Full details on working with Custom Fields [here](/docs/overview/custom-fields).
  - `unit_cost_cents` integer, nullable: The unit cost for this Part in cents.
  - `average_unit_cost_cents` integer, nullable: The average unit cost for this Part in cents.
  - `images_count` integer, required: The number of images attached to this Part.
  - `documents_count` integer, required: The number of documents attached to this Part.
  - `comments_count` integer, required: The number of `Comments` attached to this Part.
  - `archived_at` string, date-time, nullable, required: The date and time at which this Part was archived.
  - `measurement_unit` MeasurementUnit, nullable
    - `id` integer
    - `name` string, nullable
    - `description` string, nullable
    - `symbol` string, nullable
  - `has_active_inventory_sets` boolean: Indicates whether this Part has any active [Inventory Sets](/docs/api/v-3-part-location-detail-inventory-sets-index).

## Other responses

- `401`: Request could not be authenticated
- `403`: Insufficient permission to perform this operation
- `422`: Unprocessable Entity
- `500`: Something unexpected happened

## Changes

- **2025-09-06** `6daa53a03224`: 1 info
  - added the new optional request property `tire_config_attributes/id`

[Operation history](https://skmtc.dev/fleetio/apis/fleetio-developer-api/changes/parts/post.md)

---

[API](https://skmtc.dev/fleetio/apis/fleetio-developer-api.md) - [All operations](https://skmtc.dev/fleetio/apis/fleetio-developer-api/llms.txt) - [OpenAPI document](https://skmtc.dev/fleetio/apis/fleetio-developer-api/revisions/49558d744bd7?raw)
