NAV
JSON Key/Value

Introduction

Welcome to the Jetbuilt Customer API! As a customer, you can use this API to access your data.

Currently only some records can be created/modified using the API (e.g. Projects). Please write with care.

REST

The Jetbuilt API is a REST-style API over HTTPS that uses JSON for serialization and HTTP Token authentication.

Base URLs

While developing your application, we'd recommend you utilize the sandbox environment at:

https://sandbox.jetbuilt.com/api

When you're ready, switch to production at:

https://app.jetbuilt.com/api

Passing data

Fields are passed with the request body, and can either be:

If sending JSON, be sure to set the Content-Type header to application/json to identify the request format, otherwise it will default to form key/value pairs.

Versioning

Example request header specifying the version

curl -H 'Accept: application/vnd.jetbuilt.v1'
curl -H 'Accept: application/vnd.jetbuilt.v1'

Since the API could change over time, we recommend specifying the version you're using with each request. This will help keep your integration working should a new version be released. Otherwise it will default to the latest version. (Currently there is only Version 1.)

Set the version by specifying application/vnd.jetbuilt.v1 in the Accept header.

Replace v1 with the desired version number. e.g v1, v2, v3, etc...

Rate Limits

Jetbuilt limits the number of API requests made within a period of time.

When the limit is reached, further requests return status code 429 (Rate Limit Exceeded)

The API limit is set at 50 requests within a 10 second window.

Pagination

Sample fetching the 2nd page of clients:

curl --include "https://app.jetbuilt.com/api/clients?page=2" \
  -H "Authorization: Token token=YOURAPIKEY" \
  -H "Accept: application/vnd.jetbuilt.v1" \
  -H 'Content-Type: application/json'
curl --include "https://app.jetbuilt.com/api/clients?page=2" \
  -H "Authorization: Token token=YOURAPIKEY" \
  -H "Accept: application/vnd.jetbuilt.v1"

Response header includes 'Link':

Link: <https://app.jetbuilt.com/api/clients?page=1>; rel="first",
  <https://app.jetbuilt.com/api/clients?page=1>; rel="prev",
  <https://app.jetbuilt.com/api/clients?page=4>; rel="last",
  <https://app.jetbuilt.com/api/clients?page=3>; rel="next"

The collection (i.e 'Get all') endpoints paginate their results, with 25 returned per page.

The Jetbuilt API follows the RFC5988 convention of using the Link header to provide URLs for the next page. Use these links to retrieve the next page of data.

Note: You can use curl --include to see your response headers. This is different than the response body.

The response also includes a X-Total-Count header, which is the total number of resources in the collection.

Example Manufacturer Workflow

  1. Find the Product you manufacture
  2. Create the Product if it does not exist in the Jetbuilt Database
  3. Create a Pricing Tier
  4. Add the Price for that Product/PricingTier

Example Distributor Workflow

  1. Find the Product you distribute
  2. Create a Pricing Tier
  3. Add the Price for that Product/PricingTier
  4. Add details for the Product (Optional)

Authentication

Sample request with Authorization:

curl "https://app.jetbuilt.com/api/clients" \
  -H "Authorization: Token token=YOURAPIKEY" \
  -H "Accept: application/vnd.jetbuilt.v1" \
  -H 'Content-Type: application/json'
curl "https://app.jetbuilt.com/api/clients" \
  -H "Authorization: Token token=YOURAPIKEY" \
  -H "Accept: application/vnd.jetbuilt.v1"

Make sure to replace YOURAPIKEY with your API key.

The Jetbuilt API uses API keys to allow access.

(Once out of beta, you will find your API Key under your Company Settings.)

You should include your API key in all API requests to the server in a header that looks like the following:

Authorization: Token token=YOURAPIKEY

You will need to enable API write acccess if you wish to create/modify data.

Company

Get your company locations

curl "https://app.jetbuilt.com/api/company" \
  -H "Authorization: Token token=YOURAPIKEY" \
  -H "Accept: application/vnd.jetbuilt.v1" \
  -H 'Content-Type: application/json'
curl "https://app.jetbuilt.com/api/company" \
  -H "Authorization: Token token=YOURAPIKEY" \
  -H "Accept: application/vnd.jetbuilt.v1"

Response:

{
  "id": 1,
  "name": "Topish AV",
  "created_at": "2017-05-05T07:56:42.762-07:00",
  "updated_at": "2020-12-02T15:43:11.700-08:00",
  "locations": [
    {
      "id": 1,
      "name": "Topish US",
      "time_zone": "Pacific Time (US & Canada)",
      "product_database_id": 3,
      "created_at": "2017-05-16T15:20:38.477-07:00",
      "updated_at": "2020-07-20T15:14:49.269-07:00",
      "address": "123 Main St",
      "city": "Irvine",
      "state": "California",
      "zipcode": "92660",
      "country": "US"
    },
    {
        "id": 2,
        "name": "Topish UK",
        "time_zone": "London",
        "product_database_id": 4,
        "created_at": "2017-10-04T10:14:12.606-07:00",
        "updated_at": "2019-09-25T11:42:49.193-07:00",
        "address": "123 First Ave",
        "city": "Liverpool",
        "state": "England",
        "zipcode": "12390",
        "country": "GB"
    }
  ]
}

Status: 200 OK

This endpoint retrieves your basic company info, office locations, along with the product database used for each location.

By default a company shares a single product database across office locations.

HTTP Request

GET https://app.jetbuilt.com/api/company

URL Parameters

Parameter Description

Clients

Get all clients

curl "https://app.jetbuilt.com/api/clients" \
  -H "Authorization: Token token=YOURAPIKEY" \
  -H "Accept: application/vnd.jetbuilt.v1" \
  -H 'Content-Type: application/json'
curl "https://app.jetbuilt.com/api/clients" \
  -H "Authorization: Token token=YOURAPIKEY" \
  -H "Accept: application/vnd.jetbuilt.v1"

Response:

[
  {
    "id": 12345,
    "company_name": "Smith's AV World",
    "delinquent": false,
    "payment_schedule": null,
    "created_at": "2017-03-08T08:22:16.929-08:00",
    "updated_at": "2017-04-10T14:20:55.195-07:00",
    "primary_contact_first_name": "Bob",
    "primary_contact_last_name": "Smith",
    "primary_contact_title": "",
    "primary_contact_email": "bobsmith@example.com",
    "primary_contact_phone_number_1": "555-123-4567",
    "primary_contact_phone_number_2": "",
    "address": "123 Cool St",
    "city": "Tallahassee",
    "state": null,
    "zipcode": "32312",
    "country": "US",
    "external_ids": {
      "acumatica_id": "5"
    },
    "parent_id": 2345,
    "contacts": [
      {
        "id": 2222,
        "first_name": "Bob",
        "last_name": "Smith",
        "title": "",
        "email_address": "bobsmith@example.com",
        "phone_number_1": "555-123-4567",
        "phone_number_2": "",
        "primary": true,
        "created_at": "2019-09-09T10:19:57.534-07:00",
        "updated_at": "2019-09-09T10:19:57.534-07:00"
      },
      {
        ...
      }
    ],
    "subclients": [
      {
        "id": 4444,
        "company_name": "Smith's AV Regional Branch"
        "delinquent": false,
        "payment_schedule": null,
        "created_at": "2017-03-08T08:22:16.929-08:00",
        "updated_at": "2017-04-10T14:20:55.195-07:00",
        "primary_contact_first_name": "Jane",
        "primary_contact_last_name": "Smith",
        "primary_contact_title": "",
        "primary_contact_email": "janesmith@example.com",
        "primary_contact_phone_number_1": "555-123-4567",
        "primary_contact_phone_number_2": "",
        "address": "123 1st St",
        "city": "Tallahassee",
        "state": null,
        "zipcode": "32312",
        "country": "US",
        "external_ids": null,
      },
      {
        ...
      }
    ],
  },
  {
    ...
  }
]

Status: 200 OK

This endpoint retrieves all of your clients.

HTTP Request

GET https://app.jetbuilt.com/api/clients

URL Parameters

Parameter Description
page A specific page of results.

Get a client

curl "https://app.jetbuilt.com/api/clients/<ID>" \
  -H "Authorization: Token token=YOURAPIKEY" \
  -H "Accept: application/vnd.jetbuilt.v1" \
  -H 'Content-Type: application/json'
curl "https://app.jetbuilt.com/api/clients/<ID>" \
  -H "Authorization: Token token=YOURAPIKEY" \
  -H "Accept: application/vnd.jetbuilt.v1"

Response: Similar to Get all clients

Status: 200 OK

This endpoint retrieves a client by ID.

HTTP Request

GET https://app.jetbuilt.com/api/clients/<ID>

URL Parameters

Parameter Description
ID The ID of the client to retrieve

Create a client

curl "https://app.jetbuilt.com/api/clients" \
  -X POST \
  -H "Authorization: Token token=YOURAPIKEY" \
  -H "Accept: application/vnd.jetbuilt.v1" \
  -H 'Content-Type: application/json' \
  -d '{
        "user_id": "123",
        "company_name": "Awesome AV",
        "street_address": "123 Harbor Blvd",
        "city": "Costa Mesa",
        "state": "CA",
        "zipcode": "92626",
        "country": "US",
        "parent_id": "456"
      }'
curl "https://app.jetbuilt.com/api/clients" \
  -X POST \
  -H "Authorization: Token token=YOURAPIKEY" \
  -H "Accept: application/vnd.jetbuilt.v1" \
  -F "client[user_id]=123" \
  -F "client[company_name]=Awesome AV" \
  -F "client[street_address]=123 Harbor Blvd" \
  -F "client[city]=Costa Mesa" \
  -F "client[state]=CA" \
  -F "client[zipcode]=92626" \
  -F "client[country]=US" \
  -F "client[parent_id]=456"

Response: Similar to Get all clients

Status: 201 Created

This endpoint creates a new client.

HTTP Request

POST https://app.jetbuilt.com/api/clients

Data Parameters

Parameter Description
user_id The user who is the owner of the client required integer
company_name The company name of the client required string
street_address The street address string
city The city string
state The state string
zipcode The ZIP code string
country The country (alpha-2 code) string
website A website for the client string
phone A phone number for the client string
description A description for the client string
parent_id The parent of the client string

Update a client

curl "https://app.jetbuilt.com/api/clients/<ID>" \
  -X PATCH \
  -H "Authorization: Token token=YOURAPIKEY" \
  -H "Accept: application/vnd.jetbuilt.v1" \
  -H 'Content-Type: application/json' \
  -d '{
        "user_id": "123",
        "company_name": "Awesome AV",
        "delinquent": "false",
        "street_address": "123 Harbor Blvd",
        "city": "Costa Mesa",
        "state": "CA",
        "zipcode": "92626",
        "country": "US",
        "parent_id": "456"
      }'
curl "https://app.jetbuilt.com/api/clients/<ID>" \
  -X PATCH \
  -H "Authorization: Token token=YOURAPIKEY" \
  -H "Accept: application/vnd.jetbuilt.v1" \
  -F "<ID>[user_id]=123" \
  -F "<ID>[company_name]=Awesome AV" \
  -F "<ID>[delinquent]=false" \
  -F "<ID>[street_address]=123 Harbor Blvd" \
  -F "<ID>[city]=Costa Mesa" \
  -F "<ID>[state]=CA" \
  -F "<ID>[zipcode]=92626" \
  -F "<ID>[country]=US" \
  -F "<ID>[parent_id]=456"

Response: Similar to Get all clients

Status: 200 OK

This endpoint updates a client by ID.

HTTP Request

PUT https://app.jetbuilt.com/api/clients/<ID>

Data Parameters

Parameter Description
user_id The user who is the owner of the client integer
company_name The company name of the client string
delinquent Indicates whether the account is delinquent boolean
street_address The street address string
city The city string
state The state string
zipcode The ZIP code string
country The country (alpha-2 code) string
website A website for the client string
phone A phone number for the client string
description A description for the client string
parent_id The parent of the client string

Client Contacts

Get all contacts for a client

curl "https://app.jetbuilt.com/api/clients/<CLIENT_ID>/contacts" \
  -H "Authorization: Token token=YOURAPIKEY" \
  -H "Accept: application/vnd.jetbuilt.v1" \
  -H 'Content-Type: application/json'
curl "https://app.jetbuilt.com/api/clients/<CLIENT_ID>/contacts" \
  -H "Authorization: Token token=YOURAPIKEY" \
  -H "Accept: application/vnd.jetbuilt.v1"

Response:

[
  {
    "id": 37211,
    "first_name": "Bob",
    "last_name": "Jones",
    "title": "CEO",
    "email_address": "bobjones@example.com",
    "phone_number_1": "(555) 123-1234",
    "phone_number_2": "",
    "description": "",
    "primary": true,
    "created_at": "2019-08-28T06:22:44.324-07:00",
    "updated_at": "2020-02-11T11:28:51.174-08:00"
  },
  {
    ...
  }
]

Status: 200 OK

This endpoint retrieves all contacts for one of your clients.

HTTP Request

GET https://app.jetbuilt.com/api/clients/<CLIENT_ID>/contacts

URL Parameters

Parameter Description
CLIENT_ID The ID of the client

Get a contact for a client

curl "https://app.jetbuilt.com/api/clients/<CLIENT_ID>/contacts/<ID>" \
  -H "Authorization: Token token=YOURAPIKEY" \
  -H "Accept: application/vnd.jetbuilt.v1" \
  -H 'Content-Type: application/json'
curl "https://app.jetbuilt.com/api/clients/<CLIENT_ID>/contacts/<ID>" \
  -H "Authorization: Token token=YOURAPIKEY" \
  -H "Accept: application/vnd.jetbuilt.v1"

Response: Similar to Get all client contacts

Status: 200 OK

This endpoint retrieves a client contact by ID.

HTTP Request

GET https://app.jetbuilt.com/api/clients/<CLIENT_ID>/contacts/<ID>

URL Parameters

Parameter Description
CLIENT_ID The ID of the client
ID The ID of the contact to retrieve

Create a client contact

curl "https://app.jetbuilt.com/api/clients/<CLIENT_ID>/contacts" \
  -X POST \
  -H "Authorization: Token token=YOURAPIKEY" \
  -H "Accept: application/vnd.jetbuilt.v1" \
  -H 'Content-Type: application/json' \
  -d '{
        "first_name": "Bob",
        "last_name": "Jones",
        "title": "Owner",
        "email_address": "bobjones2@example.com",
        "phone_number_1": "(555) 123-1234",
        "primary": "true"
      }'
curl "https://app.jetbuilt.com/api/clients/<CLIENT_ID>/contacts" \
  -X POST \
  -H "Authorization: Token token=YOURAPIKEY" \
  -H "Accept: application/vnd.jetbuilt.v1" \
  -F "contact[first_name]=Bob" \
  -F "contact[last_name]=Jones" \
  -F "contact[title]=Owner" \
  -F "contact[email_address]=bobjones2@example.com" \
  -F "contact[phone_number_1]=(555) 123-1234" \
  -F "contact[primary]=true"

Response: Similar to Get all client contacts

Status: 201 Created

This endpoint creates a new contact for a client.

HTTP Request

POST https://app.jetbuilt.com/api/clients/<CLIENT_ID>/contacts

Data Parameters

Parameter Description
first_name The first name of the contact required string
last_name The last name of the contact required string
title The title of the contact string
email_address The email address of the contact string
phone_number_1 The first phone number for the contact string
phone_number_2 A second phone number for the contact string
description A description for the contact string
primary If this is the primary contact for the client (true/false) boolean

Update a client contact

curl "https://app.jetbuilt.com/api/clients/<CLIENT_ID>/contacts/<ID>" \
  -X PATCH \
  -H "Authorization: Token token=YOURAPIKEY" \
  -H "Accept: application/vnd.jetbuilt.v1" \
  -H 'Content-Type: application/json' \
  -d '{
        "first_name": "Bob",
        "last_name": "Jones",
        "title": "Owner",
        "email_address": "bobjones2@example.com",
        "phone_number_1": "(555) 123-1234",
        "primary": "true"
      }'
curl "https://app.jetbuilt.com/api/clients/<CLIENT_ID>/contacts/<ID>" \
  -X PATCH \
  -H "Authorization: Token token=YOURAPIKEY" \
  -H "Accept: application/vnd.jetbuilt.v1" \
  -F "<ID>[first_name]=Bob" \
  -F "<ID>[last_name]=Jones" \
  -F "<ID>[title]=Owner" \
  -F "<ID>[email_address]=bobjones2@example.com" \
  -F "<ID>[phone_number_1]=(555) 123-1234" \
  -F "<ID>[primary]=true"

Response: Similar to Get all client contacts

Status: 200 OK

This endpoint updates a contact for a client.

HTTP Request

PUT https://app.jetbuilt.com/api/clients/<CLIENT_ID>/contacts/<ID>

Data Parameters

Parameter Description
first_name The first name of the contact string
last_name The last name of the contact string
title The title of the contact string
email_address The email address of the contact string
phone_number_1 The first phone number for the contact string
phone_number_2 A second phone number for the contact string
description A description for the contact string
primary If this is the primary contact for the client (true/false) boolean

Market Segments

Get all market segments

curl "https://app.jetbuilt.com/api/market_segments" \
  -H "Authorization: Token token=YOURAPIKEY" \
  -H "Accept: application/vnd.jetbuilt.v1" \
  -H 'Content-Type: application/json'
curl "https://app.jetbuilt.com/api/market_segments" \
  -H "Authorization: Token token=YOURAPIKEY" \
  -H "Accept: application/vnd.jetbuilt.v1"

Response:

[
  {
    "id": 55,
    "office_id": 1744,
    "name": "Healthcare",
    "vertical_segment": "Healthcare",
    "created_at": "2023-10-08T17:29:36.201-07:00",
    "updated_at": "2023-10-08T17:29:36.201-07:00"
  },
  {
    ...
  }
]

Status: 200 OK

This endpoint retrieves all of your market segments.

HTTP Request

GET https://app.jetbuilt.com/api/market_segments

URL Parameters

Parameter Description
page A specific page of results.
office_id Filter market segments by office

Phases

Get all phases

curl "https://app.jetbuilt.com/api/phases" \
  -H "Authorization: Token token=YOURAPIKEY" \
  -H "Accept: application/vnd.jetbuilt.v1" \
  -H 'Content-Type: application/json'
curl "https://app.jetbuilt.com/api/phases" \
  -H "Authorization: Token token=YOURAPIKEY" \
  -H "Accept: application/vnd.jetbuilt.v1"

Response:

[
  {
    "id": 717,
    "name": "Prewire",
    "created_at": "2016-02-08T14:22:01.127-08:00",
    "updated_at": "2018-12-10T06:58:35.554-08:00"
  },
  {
    ...
  }
]

Status: 200 OK

This endpoint retrieves all of your phases.

HTTP Request

GET https://app.jetbuilt.com/api/phases

URL Parameters

Parameter Description
page A specific page of results.

Products

Get all products

curl "https://app.jetbuilt.com/api/product_databases/<DB_ID>/products" \
  -H "Authorization: Token token=YOURAPIKEY" \
  -H "Accept: application/vnd.jetbuilt.v1" \
  -H 'Content-Type: application/json'
curl "https://app.jetbuilt.com/api/product_databases/<DB_ID>/products" \
  -H "Authorization: Token token=YOURAPIKEY" \
  -H "Accept: application/vnd.jetbuilt.v1"

Response:

[
  {
  "id": 351,
  "model": "xyz",
  "currency_code": "USD",
  "product_id": 4590,
  "cost": "594.15",
  "price": "690.0",
  "short_description": "xyz example product",
  "msrp": "699.0",
  "mapp": null,
  "image_url": "https://static.jetbuilt.com/productimages/images/xyz.jpg",
  "phase_id": 17,
  "shipping_cost": "0.0",
  "shipping_price": "55.0",
  "discontinued": false,
  "notes": "",
  "warranty_value": "24.0",
  "warranty_unit": "mo",
  "rack_value": "24.0",
  "rack_unit": "RU",
  "power_value": "500.0",
  "power_unit": "W",
  "poe_value": "500.0",
  "poe_unit": "W",
  "heat_load_value": "300.0",
  "heat_load_unit": "BTU",
  "weight_value": "300.0",
  "weight_unit": "kg",
  "height_value": "3.0",
  "height_unit": "m",
  "width_value": "4.5",
  "width_unit": "m",
  "depth_value": "2.0",
  "depth_unit": "m",
  "commodity_code": "AB123C",
  "country_of_origin": "United States",
  "shipping_weight_value": "30.0",
  "shipping_weight_unit": "lb",
  "shipping_height_value": "24",
  "shipping_height_unit": "in",
  "shipping_width_value": "8",
  "shipping_width_unit": "in",
  "shipping_depth_value": "12",
  "shipping_depth_unit": "in",
  "manufacturer": {
    "id": 458,
    "name": "ACME"
  },
  "custom": false,
  "direct_pricing": true,
  "tax_equipment": true,
  "tax_labor": true,
  "tax_shipping": false,
  "favorite": true,
  "created_at": "2023-05-04T13:08:27.718-07:00",
  "updated_at": "2023-05-04T13:08:27.718-07:00"
},
  {
    ...
  }
]

Status: 200 OK

This endpoint retrieves all products that are in your company database

HTTP Request

GET https://app.jetbuilt.com/api/product_databases/<DB_ID>/products

GET https://app.jetbuilt.com/api/product_databases/<DB_ID>/products?manufactuer_name=Shure

The product database ID is prefixed since it's possible for products and pricing to vary across office locations. (Most companies share a single product database across all office locations.)

This DB_ID can be retrieved from the Company endpoint.

URL Parameters

Parameter Description
DB_ID The ID of the the product database (see the Company endpoint)
manufacturer_name Filter results by manufacturer name must be an exact match
model Filter results by model name must be an exact match
currency_code Filter results by currency code. e.g CAD. defaults to USD
query Filter results by matching across manufacturer and model names does not need to match exactly
e.g. Shure SM57
page A specific page of results.
min_created_at Query products created after the specified date time.
max_created_at Query products created before the specified date time.
min_updated_at Query products updated after the specified date time.
max_updated_at Query products updated before the specified date time.

If filtering with the query param, then it takes precedence, and the other filtering params are ignored. Can be used when unsure about the exact manufacturer or model name.

The manufactuer_name, model, and currency_code filters can be used together, for more refined filtering, or used separately.

When all 3 are used together, it should return a single result if found (or none if not found). Only a single product should exist in the company's database for a specific manufacturer, model, and currency combination. e.g. Shure, SM57-LC, USD

Get a product

curl "https://app.jetbuilt.com/api/product_databases/<DB_ID>/products/<ID>" \
  -H "Authorization: Token token=YOURAPIKEY" \
  -H "Accept: application/vnd.jetbuilt.v1" \
  -H 'Content-Type: application/json'
curl "https://app.jetbuilt.com/api/product_databases/<DB_ID>/products/<ID>" \
  -H "Authorization: Token token=YOURAPIKEY" \
  -H "Accept: application/vnd.jetbuilt.v1"

Response:

{
  "id": 351,
  "model": "xyz",
  "currency_code": "USD",
  "product_id": 4590,
  "cost": "594.15",
  "price": "690.0",
  "short_description": "xyz example product",
  "msrp": "699.0",
  "mapp": null,
  "image_url": "https://static.jetbuilt.com/productimages/images/xyz.jpg",
  "phase_id": 17,
  "shipping_cost": "0.0",
  "shipping_price": "55.0",
  "discontinued": false,
  "notes": "",
  "warranty_value": "24.0",
  "warranty_unit": "mo",
  "rack_value": "24.0",
  "rack_unit": "RU",
  "power_value": "500.0",
  "power_unit": "W",
  "poe_value": "500.0",
  "poe_unit": "W",
  "heat_load_value": "300.0",
  "heat_load_unit": "BTU",
  "weight_value": "300.0",
  "weight_unit": "kg",
  "height_value": "3.0",
  "height_unit": "m",
  "width_value": "4.5",
  "width_unit": "m",
  "depth_value": "2.0",
  "depth_unit": "m",
  "commodity_code": "AB123C",
  "country_of_origin": "United States",
  "shipping_weight_value": "30.0",
  "shipping_weight_unit": "lb",
  "shipping_height_value": "24",
  "shipping_height_unit": "in",
  "shipping_width_value": "8",
  "shipping_width_unit": "in",
  "shipping_depth_value": "12",
  "shipping_depth_unit": "in",
  "manufacturer": {
    "id": 458,
    "name": "ACME"
  },
  "custom": false,
  "direct_pricing": true,
  "tax_equipment": true,
  "tax_labor": true,
  "tax_shipping": false,
  "favorite": true,
  "created_at": "2023-05-04T13:08:27.718-07:00",
  "updated_at": "2023-05-04T13:08:27.718-07:00"
}

Status: 200 OK

This endpoint retrieves a product from your company database.

HTTP Request

GET https://app.jetbuilt.com/api/product_databases/<DB_ID>/products/<ID>

URL Parameters

Parameter Description
DB_ID The ID of the the product database (see the Company endpoint)
ID The ID of the product to retrieve

Create a product

If setting a product image, use cURL's (Key/Value) format

curl "https://app.jetbuilt.com/api/product_databases/<DB_ID>/products" \
  -X POST \
  -H "Authorization: Token token=YOURAPIKEY" \
  -H "Accept: application/vnd.jetbuilt.v1" \
  -H 'Content-Type: application/json' \
  -d '{
        "short_description": "JB Test product 1",
        "cost": "10.0",
        "price": "15.99"
      }'
curl "https://app.jetbuilt.com/api/product_databases/<DB_ID>/products" \
  -X POST \
  -H "Authorization: Token token=YOURAPIKEY" \
  -H "Accept: application/vnd.jetbuilt.v1" \
  -F "product[short_description]=JB Test product 1" \
  -F "product[cost]=10.0" \
  -F "product[price]=15.99" \
  -F "product[image]=@/path/to/file/test.jpg"

Response: Similar to Get a product

Status: 201 Created

This endpoint creates a new product in your company database.

Note: When creating a product in your company database, we will use the provided parameters (required parameters) to find the manufacturer's product in our database in order to connect you to any approved direct pricing and other data we have for the product. If we cannot find a product, it will be a custom product.

The product_id (products with approved direct pricing) can be found using the vendor products endpoint

HTTP Request

POST https://app.jetbuilt.com/api/product_databases/<DB_ID>/products

URL Parameters

Parameter Description
DB_ID The ID of the the product database (see the Company endpoint)

Data Parameters

Parameter Description
manufacturer_name The name of the manufacturer (required1) string
model The model name (required1) string
currency_code A 3 letter ISO code (e.g. USD, EUR, JPY) Defaults to USD string
product_id The id of a manufacturer's product (required1) integer
cost The cost of the product2 decimal
price The price of the product decimal
short_description A short product description string
image A product image
phase_id The phase id integer
shipping_cost The shipping_cost of the product decimal
shipping_price The shipping_price of the product decimal
notes A products notes string
favorite Whether or not the product is favorited boolean
tax_equipment Whether or not the products equipment is taxed boolean
tax_labor Whether or not the products labor is taxed boolean
tax_shipping Whether or not the products shipping is taxed boolean
warranty_value The warranty value in days months or yearsdecimal
warranty_unit The warranty unit enum
Possible values: d, mo, yr
rack_value The rack value decimal
rack_unit The rack unit enum
Possible values: RU
power_value The power value decimal
power_unit The power unit enum
Possible values: W
poe_value The poe value decimal
poe_unit The poe unit enum
Possible values: W
heat_load_value The heat_load value decimal
heat_load_unit The heat_load unit enum
Possible values: BTU
weight_value The weight value decimal
weight_unit The weight unit enum
Possible values: lb, oz, kg, g
height_value The height value decimal
height_unit The height unit enum
Possible values: in, ft, cm, mm
width_value The width value decimal
width_unit The width unit enum
Possible values: in, ft, cm, mm
depth_value The depth value decimal
depth_unit The depth unit enum
Possible values: in, ft, cm, mm
commodity_code The commodity code string
country_of_origin The country of origin string
shipping_weight_value The shipping weight value decimal
shipping_weight_unit The shipping weight unit enum
Possible values: lb, oz, kg, g
shipping_height_value The shipping height value decimal
shipping_height_unit The shipping height unit enum
Possible values: in, ft, cm, mm
shipping_width_value The shipping width value decimal
shipping_width_unit The shipping width unit enum
Possible values: in, ft, cm, mm
shipping_depth_value The shipping depth value decimal
shipping_depth_unit The shipping depth unit enum
Possible values: in, ft, cm, mm

Update a product

curl "https://app.jetbuilt.com/api/product_databases/<DB_ID>/products" \
  -X PATCH \
  -H "Authorization: Token token=YOURAPIKEY" \
  -H "Accept: application/vnd.jetbuilt.v1" \
  -H 'Content-Type: application/json' \
  -d '{
        "short_description": "JB Test product 2",
        "price": "12.99"
      }'
curl "https://app.jetbuilt.com/api/product_databases/<DB_ID>/products" \
  -X PATCH \
  -H "Authorization: Token token=YOURAPIKEY" \
  -H "Accept: application/vnd.jetbuilt.v1" \
  -F "product[short_description]=JB Test product 2" \
  -F "product[price]=12.99"

Response: Similar to Get a product

Status: 200 OK

This endpoint updates one of your products.

HTTP Request

PUT https://app.jetbuilt.com/api/product_databases/<DB_ID>/products

URL Parameters

Parameter Description
DB_ID The ID of the the product database (see the Company endpoint)
ID The ID of the product to update

Data Parameters

Same as Create a product.

Note: product_id, manufacturer, model, and currency cannot be changed after product creation.

Projects

Get all projects

curl "https://app.jetbuilt.com/api/projects" \
  -H "Authorization: Token token=YOURAPIKEY" \
  -H "Accept: application/vnd.jetbuilt.v1" \
  -H 'Content-Type: application/json'
curl "https://app.jetbuilt.com/api/projects" \
  -H "Authorization: Token token=YOURAPIKEY" \
  -H "Accept: application/vnd.jetbuilt.v1"

Response:

[
  {
    "id": 97739,
    "name": "test project",
    "short_description": null,
    "payment_schedule": "",
    "custom_id": "P - 182",
    "version": "1.3",
    "price_valid_until": "2018-08-15",
    "probability": "0.5",
    "created_at": "2018-07-16T08:17:33.273-07:00",
    "updated_at": "2018-10-31T14:19:14.241-07:00",
    "close_date": "2018-09-04",
    "budget": null,
    "paid_to_date": {
      "cents": 500,
      "currency_iso": "USD"
    },
    "stage": "lost",
    "contract_number": "101",
    "labor_tax": "0.1",
    "requires_engineering?": true,
    "avso": true,
    "avso_region": "Atlantic",
    "project_type": "project",
    "sales_tax": "0.1",
    "equipment_total": "22257.98",
    "labor_total": "33000.0",
    "shipping_total": "0.0",
    "tax_total": "3366.5",
    "total": "58624.48",
    "address": "",
    "city": "herbert",
    "state": "fl",
    "zipcode": "",
    "country": "US",
    "owner": {
      "id": 2914,
      "full_name": "John Smith"
    },
    "project_manager": {
      "id": 2914,
      "full_name": "John Smith"
    },
    "engineer": {
      "id": 2914,
      "full_name": "Jill Smith"
    },
    "second_engineer": {
      "id": 2914,
      "full_name": "Jill Smith"
    },
    "client": {
      "id": 63117
    },
    "primary_contact": {
      "id": 2914
    },
    "company_location": {
      "id": 3,
      "name": "Jetbuilt Testing"
    },
    "market_segment": {
      "id": 98
    },
    "currency": "USD",
    "exchange_rates": { "CAD": 1.243825 },
    "image_url": "projects/project-avatar-3.jpg",
    "active": false,
    "shared": false,
    "original_version_id": 97737,
    "equipment_program": {
      "id": 1939,
      "name": "Manufacturer discount",
      "office_id": null
    }
  }
,
  {
    ...
  }
]

Status: 200 OK

This endpoint retrieves all of your projects.

It includes any shared projects, and only lists the active version (if multiple versions exist).

HTTP Request

GET https://app.jetbuilt.com/api/projects

GET https://app.jetbuilt.com/api/projects?page=2

URL Parameters

Parameter Description
page A specific page of results.
min_created_at Query projects created after the specified date time.
max_created_at Query projects created before the specified date time.
min_updated_at Query projects updated after the specified date time.
max_updated_at Query projects updated before the specified date time.
active (true/false) returns projects in an active stage when true; otherwise returns projects in non-active stages
stage Filter projects by stage (a single stage name or a comma separated list - param is ignored when active param is present)
query Filter by project name, custom_id, city, clients company name, clients first or last name

Note: You can pass a date or a date time to the timestamp queries. For example: 2023-7-28 or 2023-7-28 15:33:33 -700 or 2023-7-28T15:33:33-700. The time defaults to 00:00:00 when not included, and the timezone defaults to UTC.

Get a project

curl "https://app.jetbuilt.com/api/projects/<ID>" \
  -H "Authorization: Token token=YOURAPIKEY" \
  -H "Accept: application/vnd.jetbuilt.v1" \
  -H 'Content-Type: application/json'
curl "https://app.jetbuilt.com/api/projects/<ID>" \
  -H "Authorization: Token token=YOURAPIKEY" \
  -H "Accept: application/vnd.jetbuilt.v1"

Response:

{
  "id": 97739,
  "name": "test project",
  "short_description": null,
  "payment_schedule": "",
  "custom_id": "P - 182",
  "version": "1.3",
  "price_valid_until": "2018-08-15",
  "probability": "1.0",
  "created_at": "2018-07-16T08:17:33.273-07:00",
  "updated_at": "2018-10-31T14:19:14.241-07:00",
  "close_date": "2018-09-04",
  "budget": null,
  "paid_to_date": {
    "cents": 500,
    "currency_iso": "USD"
  },
  "stage": "lost",
  "contract_number": "101",
  "labor_tax": "0.1",
  "requires_engineering?": true,
  "avso": true,
  "avso_region": "Atlantic",
  "project_type": "project",
  "sales_tax": "0.1",
  "total_margin": "42.0",
  "equipment_margin": "27.5",
  "equipment_total": "22257.98",
  "labor_total": "33000.0",
  "shipping_total": "0.0",
  "tax_total": "3366.5",
  "total": "58624.48",
  "address": "",
  "city": "herbert",
  "state": "fl",
  "zipcode": "",
  "country": "US",
  "owner": {
    "id": 2914,
    "full_name": "John Smith"
  },
  "project_manager": {
    "id": 2914,
    "full_name": "John Smith"
  },
  "engineer": {
    "id": 2914,
    "full_name": "Jill Smith"
  },
  "second_engineer": {
    "id": 2914,
    "full_name": "Jill Smith"
  },
  "client": {
    "id": 63117
  },
  "primary_contact": {
    "id": 2914
  },
  "company_location": {
    "id": 3,
    "name": "Jetbuilt Testing"
  },
  "currency": "USD",
  "exchange_rates": { "CAD": 1.243825 },
  "image_url": "projects/project-avatar-3.jpg",
  "active": false,
  "shared": false,
  "original_version_id": 97737,
  "equipment_program": {
    "id": 1939,
    "name": "Manufacturer discount",
    "office_id": null
  },
  "rooms": [
    {
      "id": 242060,
      "name": "Room 1",
      "quantity": 1,
      "scope": null,
      "active": true
    },
    {
      "id": 246767,
      "name": "Room 2",
      "quantity": 1,
      "scope": null,
      "active": true
    }
  ],
  "systems": [
      {
        "id": 196878,
        "name": "System A",
        "scope": null,
        "active": true
      }
  ],
  "tags": [
      {
        "id": 30013,
        "name": "Floor 1"
      }
  ],
  "phases": [],
  "labor": [
      {
        "id": 329891,
        "name": "Senior Engineer",
        "category": "engineering",
        "cost": "76.0",
        "price": "100.0",
        "total_hours": "1.5"
      },
      {
        "id": 329892,
        "name": "Pre-Wire",
        "category": "install",
        "cost": "70.0",
        "price": "165.0",
        "total_hours": "0"
      }
  ],
  "bundles": [
      {
          "id": 52779,
          "name": "TruAudio GG-8 TruAudio Bundle",
          "description": "Bundle",
          "quantity": "1.0"
      }
  ],
  "versions": [
    {
      "id": 97737,
      "name": "1.0",
      "description": null,
      "locked": false
    },
    {
      "id": 97738,
      "name": "1.2",
      "description": null,
      "locked": false
    }
  ]
}

Status: 200 OK

This endpoint retrieves a project by ID.

It contains additional project info like Rooms, Systems, Phases, Labor, and Bundles.

Margins are percentages.

HTTP Request

GET https://app.jetbuilt.com/api/projects/<ID>

URL Parameters

Parameter Description
ID The ID of the project to retrieve

Create a project

curl "https://app.jetbuilt.com/api/projects" \
  -X POST \
  -H "Authorization: Token token=YOURAPIKEY" \
  -H "Accept: application/vnd.jetbuilt.v1" \
  -H 'Content-Type: application/json' \
  -d '{
        "location_id": "4",
        "user_id": "12",
        "name": "Big Project",
        "budget": "150000",
        "paid_to_date": "5.0",
        "probability": "0.5",
        "close_date": "2021-01-03",
        "client_id": "689",
        "custom_id": "P - 123",
        "currency": "USD",
        "short_description": "Project description",
        "city": "",
        "state": "",
        "street_address": "",
        "zipcode": "",
        "country": "",
        "price_valid_until": "2021-10-13",
        "tax": "0.05"
      }'
curl "https://app.jetbuilt.com/api/projects" \
  -X POST \
  -H "Authorization: Token token=YOURAPIKEY" \
  -H "Accept: application/vnd.jetbuilt.v1" \
  -F "project[location_id]=4" \
  -F "project[user_id]=12" \
  -F "project[name]=Big Project" \
  -F "project[budget]=150000" \
  -F "project[paid_to_date]=5.0" \
  -F "project[probability]=0.5" \
  -F "project[close_date]=2021-01-03" \
  -F "project[client_id]=689" \
  -F "project[custom_id]=P - 123" \
  -F "project[currency]=USD" \
  -F "project[short_description]=Project description" \
  -F "project[city]=" \
  -F "project[state]=" \
  -F "project[street_address]=" \
  -F "project[zipcode]=" \
  -F "project[country]=" \
  -F "project[price_valid_until]=2021-10-13" \
  -F "project[tax]=0.05"

Response: Similar to Get a project

Status: 201 Created

This endpoint creates a new project.

Defaults to the opportunity stage.

HTTP Request

POST https://app.jetbuilt.com/api/projects

Data Parameters

Parameter Description
location_id The company location required integer
user_id The user who is the project owner required integer
client_id The project's client required integer
name The name of the project required string
budget The opening budget decimal
market_segment_id The project's market segment integer
paid_to_date The amount paid to date decimal
probability The estimated probability (a decimal from 0 - 1. e.g. 0.7 = 70%) decimal
close_date The close date. (e.g. 2021-02-14) string
primary_contact_id The primary contact for the client integer
custom_id Your custom project ID string
currency The currency (only if different from company and client defaults) string
short_description The description of the project string
city The city of the project string
state The state of the project string
street_address The street_address of the project string
zipcode The zipcode of the project string
country The country of the project (alpha-2 code) string
price_valid_until The date the price is valid until (e.g. 2021-02-14) string
tax The sales tax of the project decimal
contract_number The contract number of the project string

Additional Data Parameters for Enterprise Companies

Parameter Description
project_type The project type enum
All possible values: project, box_sale, design, service, rental
Possible values are dependent upon your company settings.
project_manager_id The user who is the project manager integer
engineer_id The user who is the engineer integer
second_engineer_id The user who is the engineer integer
avso Indicates if the project is an AVSO project boolean
avso_region The Projects AVSO Region string
All possible values: Atlantic, National Capital, Ontario, Pacific, Québec, Western Sending an invalid value will unset the field

Update a project

curl "https://app.jetbuilt.com/api/projects/<ID>" \
  -X PATCH \
  -H "Authorization: Token token=YOURAPIKEY" \
  -H "Accept: application/vnd.jetbuilt.v1" \
  -H 'Content-Type: application/json' \
  -d '{
        "user_id": "5",
        "name": "Big Project",
        "budget": "100000",
        "paid_to_date": "5.0",
        "probability": "0.8",
        "close_date_": "2021-03-01",
        "custom_id": "P - 123",
        "stage": "estimate",
        "short_description": "Project description",
        "city": "",
        "state": "",
        "street_address": "",
        "zipcode": "",
        "country": "",
        "price_valid_until": "2021-10-13",
        "tax": "0.05"
      }'
curl "https://app.jetbuilt.com/api/projects/<ID>" \
  -X PATCH \
  -H "Authorization: Token token=YOURAPIKEY" \
  -H "Accept: application/vnd.jetbuilt.v1" \
  -F "<ID>[user_id]=5" \
  -F "<ID>[name]=Big Project" \
  -F "<ID>[budget]=100000" \
  -F "<ID>[paid_to_date]=5.0" \
  -F "<ID>[probability]=0.8" \
  -F "<ID>[close_date_]=2021-03-01" \
  -F "<ID>[custom_id]=P - 123" \
  -F "<ID>[stage]=estimate" \
  -F "<ID>[short_description]=Project description" \
  -F "<ID>[city]=" \
  -F "<ID>[state]=" \
  -F "<ID>[street_address]=" \
  -F "<ID>[zipcode]=" \
  -F "<ID>[country]=" \
  -F "<ID>[price_valid_until]=2021-10-13" \
  -F "<ID>[tax]=0.05"

Response: Similar to Get a project

Status: 200 OK

This endpoint updates a project by ID.

HTTP Request

PUT https://app.jetbuilt.com/api/projects/<ID>

Data Parameters

Parameter Description
ID The ID of the project to update
user_id The user who is the project owner integer
name The name of the project string
budget The opening budget decimal
market_segment_id The project's market segment integer
paid_to_date The amount paid to date decimal
probability The estimated probability (a decimal from 0 - 1. e.g. 0.7 = 70%) decimal
close_date The close date. (e.g. 2021-02-14) string
primary_contact_id The primary contact for the client integer
custom_id Your custom project ID string
stage The project's stage enum
Possible values:
opportunity, estimate, revisions, proposal, contract, install, review, completed, icebox, lost, template, trash
short_description The description of the project string
city The city of the project string
state The state of the project string
street_address The street_address of the project string
zipcode The zipcode of the project string
country The country of the project (alpha-2 code) string
price_valid_until The date the price is valid until (e.g. 2021-02-14) string
tax The sales tax of the project decimal
contract_number The contract number of the project string

Additional Data Parameters for Enterprise Companies

Parameter Description
project_type The project type enum
All possible values: project, box_sale, design, service, rental
Possible values are dependent upon your company settings.
project_manager_id The user who is the project manager integer
engineer_id The user who is the engineer integer
second_engineer_id The user who is the engineer integer
avso Indicates if the project is an AVSO project boolean
avso_region The Projects AVSO Region string
All possible values: Atlantic, National Capital, Ontario, Pacific, Québec, Western Sending an invalid value will unset the field

Create a project revision

curl "https://app.jetbuilt.com/api/projects/<PROJECT_ID>/revisions" \
  -X POST \
  -H "Authorization: Token token=YOURAPIKEY" \
  -H "Accept: application/vnd.jetbuilt.v1" \
  -H 'Content-Type: application/json' \
  -d '{
        "name": "1.2",
        "description": "Changed a few things"
      }'
curl "https://app.jetbuilt.com/api/projects/<PROJECT_ID>/revisions" \
  -X POST \
  -H "Authorization: Token token=YOURAPIKEY" \
  -H "Accept: application/vnd.jetbuilt.v1" \
  -F "revision[name]=1.2" \
  -F "revision[description]=Changed a few things"

Response: Similar to Get a project

Status: 201 Created

This endpoint creates a new revision for a project.

Creating a new revision means a new project version is created.

If successful, the new project version will be returned.

Creating a new project version may take a few moments.

HTTP Request

POST https://app.jetbuilt.com/api/projects/<PROJECT_ID>/revisions

Data Parameters

Parameter Description
PROJECT_ID The ID of the project
name The version name string
description The version description string

Project Items

Get all items in your project

curl "https://app.jetbuilt.com/api/projects/<PROJECT_ID>/items" \
  -H "Authorization: Token token=YOURAPIKEY" \
  -H "Accept: application/vnd.jetbuilt.v1" \
  -H 'Content-Type: application/json'
curl "https://app.jetbuilt.com/api/projects/<PROJECT_ID>/items" \
  -H "Authorization: Token token=YOURAPIKEY" \
  -H "Accept: application/vnd.jetbuilt.v1"

Response:

{
  "line_items": [
    {
      "id": 1900102,
      "manufacturer_id": 252,
      "manufacturer_name": "Sonos",
      "model": "SUB-GB",
      "part_number": null,
      "owner_furnished": false,
      "msrp": "699.0",
      "mapp": "699.0",
      "price": "699.0",
      "cost": "433.38",
      "currency_iso": "USD",
      "short_description": "Subwoofer Gloss BlackWireless subwoofer",
      "shipping_price": "0.0",
      "subtotal_equipment_price": "6990.0",
      "total_equipment_price": "13980.0",
      "tax_equipment": true,
      "tax_shipping": false,
      "created_at": "2018-07-19T10:42:21.736-07:00",
      "updated_at": "2018-07-25T13:52:34.062-07:00",
      "notes": null,
      "external_notes": null,
      "subcontract_labor_cost": "0.0",
      "subcontract_labor_price": "0.0",
      "kind": "physical",
      "hidden": false,
      "purchasing_released": false,
      "engineering_released": false,
      "avso_ranking": "10",
      "avso_discount": "0.0",
      "avso_msrp": {
        "cents": 59900,
        "currency_iso": "CAD"
      },
      "avso_item_name": "Subwoofer",
      "discount": "0.0",
      "custom": false,
      "product_id": 1251085,
      "custom_product_id": null,
      "selected_purchasing_vendor": {
        "id": 169,
        "name": "Chief"
      },
      "purchasing_source": {
        "id": 441,
        "company_name": "Legrand AV"
      },
      "quantity": "20.0",
      "quantity_per_room": "10.0",
      "quantity_per_bundle": null,
      "bundle": null,
      "room": {
        "id": 242060,
        "name": "Room 1",
        "quantity": "2.0"
      },
      "system": {
        "id": 196878,
        "name": "System A"
      },
      "tag": {
        "id": 30013,
        "name": "Floor 1"
      },
      "phase": null,
      "option": null,
      "labor": [
        {
          "category": "install",
          "minutes": "600.0",
          "taxable": true,
          "cost": "700.0",
          "price": "1650.0",
          "labor_type": {
            "id": 329892,
            "name": "Pre-Wire"
            }
        }
      ],
      "metadata": {
        "my_integration": { "my": ["data"] }
      }
    },
    {
      ...
    }
  ],
  "factors": [
    {
      "id": 25144,
      "name": "Management",
      "description": "Hours per day of install",
      "factor_method": "hours_per_day",
      "total_price": "0.0",
      "total_cost": "0.0",
      "taxed": false,
      "hidden": false,
      "created_at": "2018-07-30T11:31:59.120-07:00",
      "updated_at": "2018-07-30T11:33:18.807-07:00"
    },
    {
      "id": 62411,
      "name": "Trip Factor",
      "description": "Trips",
      "factor_method": "trip_calc",
      "total_cost": "700.0",
      "total_price": "1225.0",
      "taxed": false,
      "hidden": false,
      "created_at": "2023-10-17T19:57:06.592-07:00",
      "updated_at": "2023-10-17T21:58:01.567-07:00",
      "trips": [
        {
          "description": "Install",
          "days": 7
        },
        {
          ...
        }
      ],
      "expenses": [
        {
          "expense_name": "Lodging",
          "calculation_method": "trip_flat_rate_per_day",
          "per_crew_member": true,
          "plus_supervisor": false,
          "cost": "100.0",
          "price": "175.0"
        },
        {
          ...
        }
      ]
    }
    {
      ...
    }
  ]
}

Status: 200 OK

This endpoint retrieves the items in your project.

Includes line items and factors.

Factors

Trip Calculator (trip_calc) factors have an itemized list of trips and expenses.

Product IDs

If the item is using one of your custom products (custom: true), then it will return a custom_product_id. Otherwise it will have a product_id from the Jetbuilt product database.

Quantities

An item's quantity is the total quantity of the item in the project.

i.e. If an item exists in a bundle or room which themselves have multiple quantities, it is the total across each.

For example:

The quantity returned for Item A is: 4 x 2 x 3 = 24

An item's quantity_per_room and quantity_per_bundle further break down how many of this item appears it's corresponding room and/or bundle.

Item Kinds

An item's kind is the type of item: physical, hourly_labor, or subcontract_labor.

physical and subcontract_labor have separate price/cost fields.

Currencies

The price of an item is always in the currency of the project.

The msrp, mapp, and cost of the item are in the currency indicated by currency_iso

In a future version of the API all money values will contain the currency directly:

"cost": { "cents": 20000, "currency_iso": "USD" }

HTTP Request

GET https://app.jetbuilt.com/api/projects/<PROJECT_ID>/items

GET https://app.jetbuilt.com/api/projects/<PROJECT_ID>/items?page=2

URL Parameters

Parameter Description
PROJECT_ID The ID of the project
page A specific page of line item results. All factors are always returned.

Create a Project Item

curl "https://app.jetbuilt.com/api/projects/<PROJECT_ID>/items/<ID>" \
  -X POST \
  -H "Authorization: Token token=YOURAPIKEY" \
  -H "Accept: application/vnd.jetbuilt.v1" \
  -H 'Content-Type: application/json' \
  -d '{
        "room_id": "1234",
        "system_id": "1234",
        "tag_id": "1234",
        "phase_id": "1234",
        "short_description": "description",
        "external_notes": "note",
        "quantity_per_room": "86"
      }'
curl "https://app.jetbuilt.com/api/projects/<PROJECT_ID>/items/<ID>" \
  -X POST \
  -H "Authorization: Token token=YOURAPIKEY" \
  -H "Accept: application/vnd.jetbuilt.v1" \
  -F "<ID>[room_id]=1234" \
  -F "<ID>[system_id]=1234" \
  -F "<ID>[tag_id]=1234" \
  -F "<ID>[phase_id]=1234" \
  -F "<ID>[short_description]=description" \
  -F "<ID>[external_notes]=note" \
  -F "<ID>[quantity_per_room]=86"

Response: Similar to Get all project items

Status: 201 Created

This endpoint creates an item for a project.

An item cannot be created when the project is locked.

HTTP Request

POST https://app.jetbuilt.com/api/projects/<PROJECT_ID>/items

URL Parameters

Parameter Description
PROJECT_ID The project ID of the item

Data Parameters

Parameter Description Default
manufacturer_name required The name of the manufacturer string
model required The model of the item string
currency_code The three letter ISO currency code, e.g. USD. string The Project currency
price The item price decimal 0.0
short_description Description of the item string
room_name Name of the room in which to place the the item string The first Room in the Project
system_name Name of the system in which to place the the item string The first System in the Project
quantity_per_room The quantity for the item decimal 1
shipping_price The shipping price decimal 0.0
shipping_cost The shipping cost decimal 0.0
notes Internal notes string
external_notes Customer visible notes for the item string
tax_equipment Apply tax to the equipment price boolean
tax_shipping Apply tax to the shipping price boolean
metadata Arbitrary JSON that you can attach to this object JSON Object

Update a project item

curl "https://app.jetbuilt.com/api/projects/<PROJECT_ID>/items/<ID>" \
  -X PATCH \
  -H "Authorization: Token token=YOURAPIKEY" \
  -H "Accept: application/vnd.jetbuilt.v1" \
  -H 'Content-Type: application/json' \
  -d '{
        "room_id": "1234",
        "system_id": "1234",
        "tag_id": "1234",
        "phase_id": "1234",
        "short_description": "description",
        "external_notes": "note",
        "quantity_per_room": "86",
        "metadata": "{:my_integration=>{:my=>["data"]}}"
      }'
curl "https://app.jetbuilt.com/api/projects/<PROJECT_ID>/items/<ID>" \
  -X PATCH \
  -H "Authorization: Token token=YOURAPIKEY" \
  -H "Accept: application/vnd.jetbuilt.v1" \
  -F "<ID>[room_id]=1234" \
  -F "<ID>[system_id]=1234" \
  -F "<ID>[tag_id]=1234" \
  -F "<ID>[phase_id]=1234" \
  -F "<ID>[short_description]=description" \
  -F "<ID>[external_notes]=note" \
  -F "<ID>[quantity_per_room]=86" \
  -F "<ID>[metadata]={:my_integration=>{:my=>["data"]}}"

Response: Similar to Get all project items

Status: 200 OK

This endpoint updates an item for a project.

An item cannot be updated when the project is locked.

An item's room, system, and tag id cannot be updated if the item belongs to a bundle.

HTTP Request

PUT https://app.jetbuilt.com/api/projects/<PROJECT_ID>/items/<ID>

URL Parameters

Parameter Description
PROJECT_ID The project ID of the item
ID The ID of the item to update

Data Parameters

Parameter Description
room_id The room of the item integer
system_id The system of the item integer
tag_id The tag of the item integer
phase_id The phase of the item integer
short_description Description of the item string
external_notes Customer visible notes for the item string
quantity_per_room The quantity for the item decimal
cost The item cost decimal
metadata Arbitrary JSON that you can attach to this object JSON Object

Project Options

Get all options/change orders in your project

curl "https://app.jetbuilt.com/api/projects/<PROJECT_ID>/options" \
  -H "Authorization: Token token=YOURAPIKEY" \
  -H "Accept: application/vnd.jetbuilt.v1" \
  -H 'Content-Type: application/json'
curl "https://app.jetbuilt.com/api/projects/<PROJECT_ID>/options" \
  -H "Authorization: Token token=YOURAPIKEY" \
  -H "Accept: application/vnd.jetbuilt.v1"

Response:

[
  {
    "id": 27409,
    "name": "option1",
    "sold": true,
    "scope": "",
    "total": "550.0",
    "upgrade_total": "870.70",
    "payment_schedule": null,
    "created_at": "2018-11-06T09:31:43.646-08:00",
    "updated_at": "2018-11-06T09:32:02.156-08:00",
    "active": true,
    "change_order": false,
    "room": null
  },
  {
    ...
  }
]

Status: 200 OK

This endpoint retrieves the options/change orders in your project.

Options become known as 'Change Orders' once the project moves to the contract stage.

HTTP Request

GET https://app.jetbuilt.com/api/projects/<PROJECT_ID>/options

URL Parameters

Parameter Description
PROJECT_ID The ID of the project
page A specific page of results.

Get an option

curl "https://app.jetbuilt.com/api/projects/<PROJECT_ID>/options/<ID>" \
  -H "Authorization: Token token=YOURAPIKEY" \
  -H "Accept: application/vnd.jetbuilt.v1" \
  -H 'Content-Type: application/json'
curl "https://app.jetbuilt.com/api/projects/<PROJECT_ID>/options/<ID>" \
  -H "Authorization: Token token=YOURAPIKEY" \
  -H "Accept: application/vnd.jetbuilt.v1"

Response:

{
  "id": 27409,
  "name": "option 1",
  "sold": true,
  "created_at": "2020-06-12T12:27:16.184-07:00",
  "updated_at": "2020-06-12T12:27:31.535-07:00",
  "total": "550.0",
  "upgrade_total": "870.70",
  "scope": "",
  "payment_schedule": null,
  "active": true,
  "change_order": false,
  "room": null,
  "line_items": [
    {
      "id": 3303,
      ...
      "replacement_lineitem_ids": [
        374
      ],
      ...

    },
    ...
  ],
  "factors": [
    {
      "id": 155763,
      "name": "Labor",
      "description": "Labor",
      "factor_method": "equipment_price",
      "taxed": true,
      "hidden": false,
      "total_cost": "5.5",
      "total_price": "24.75",
      "total_tax": "1.918125"
    },
    {
      ...
    }
  ]
}

Status: 200 OK

This endpoint retrieves an option/change order by ID.

Shows additional detail for an option.

Notably:

HTTP Request

GET https://app.jetbuilt.com/api/projects/<PROJECT_ID>/options/<ID>

URL Parameters

Parameter Description
PROJECT_ID The ID of the project
ID The ID of the option to retrieve
page A specific page of line item results

Get all rooms in your option

curl "https://app.jetbuilt.com/api/projects/<PROJECT_ID>/options/<OPTION_ID>/rooms" \
  -H "Authorization: Token token=YOURAPIKEY" \
  -H "Accept: application/vnd.jetbuilt.v1" \
  -H 'Content-Type: application/json'
curl "https://app.jetbuilt.com/api/projects/<PROJECT_ID>/options/<OPTION_ID>/rooms" \
  -H "Authorization: Token token=YOURAPIKEY" \
  -H "Accept: application/vnd.jetbuilt.v1"

Response:

[
  {
    "id": 3234,
    "name": "Main Room",
    "quantity": 1,
    "created_at": "2019-11-01T11:03:05.572-07:00",
    "updated_at": "2020-02-06T15:35:41.664-08:00"
  },
  {
    ...
  }
]

Status: 200 OK

This endpoint retrieves the rooms in your project's option.

HTTP Request

GET https://app.jetbuilt.com/api/projects/<PROJECT_ID>/options/<OPTION_ID>/rooms

URL Parameters

Parameter Description
PROJECT_ID The ID of the project
OPTION_ID The ID of the option
page A specific page of results

Get a room in your option

curl "https://app.jetbuilt.com/api/projects/<PROJECT_ID>/options/<OPTION_ID>/rooms/<ID>" \
  -H "Authorization: Token token=YOURAPIKEY" \
  -H "Accept: application/vnd.jetbuilt.v1" \
  -H 'Content-Type: application/json'
curl "https://app.jetbuilt.com/api/projects/<PROJECT_ID>/options/<OPTION_ID>/rooms/<ID>" \
  -H "Authorization: Token token=YOURAPIKEY" \
  -H "Accept: application/vnd.jetbuilt.v1"

Response: Similar to Get a room in your project

Status: 200 OK

This endpoint retrieves a project room by ID.

Shows additional detail for an individual project room in an option.

HTTP Request

GET https://app.jetbuilt.com/api/projects/<PROJECT_ID>/options/<OPTION_ID>/rooms/<ID>

URL Parameters

Parameter Description
PROJECT_ID The ID of the project
OPTION_ID The ID of the option
ID The ID of the client to retrieve
page A specific page of line item results

Get purchasing info for items in your option

curl "https://app.jetbuilt.com/api/projects/<PROJECT_ID>/options/<OPTION_ID>/purchasing" \
  -H "Authorization: Token token=YOURAPIKEY" \
  -H "Accept: application/vnd.jetbuilt.v1" \
  -H 'Content-Type: application/json'
curl "https://app.jetbuilt.com/api/projects/<PROJECT_ID>/options/<OPTION_ID>/purchasing" \
  -H "Authorization: Token token=YOURAPIKEY" \
  -H "Accept: application/vnd.jetbuilt.v1"

Response: Similar to Project Purchasing

Status: 200 OK

This endpoint retrieves purchasing info for items in your project's option.

Line items are consolidated together for purchasing, with a purchase source listed when set.

Grouped line items will be listed together in the ids field.

HTTP Request

GET https://app.jetbuilt.com/api/projects/<PROJECT_ID>/options/<OPTION_ID>/purchasing

GET https://app.jetbuilt.com/api/projects/<PROJECT_ID>/options/<OPTION_ID>/purchasing?page=2

URL Parameters

Parameter Description
PROJECT_ID The ID of the project
OPTION_ID The ID of the option
page A specific page of line item results

Project Rooms

Get all rooms in your project

curl "https://app.jetbuilt.com/api/projects/<PROJECT_ID>/rooms" \
  -H "Authorization: Token token=YOURAPIKEY" \
  -H "Accept: application/vnd.jetbuilt.v1" \
  -H 'Content-Type: application/json'
curl "https://app.jetbuilt.com/api/projects/<PROJECT_ID>/rooms" \
  -H "Authorization: Token token=YOURAPIKEY" \
  -H "Accept: application/vnd.jetbuilt.v1"

Response:

[
  {
    "id": 3234,
    "name": "Main Room",
    "quantity": 1,
    "created_at": "2019-11-01T11:03:05.572-07:00",
    "updated_at": "2020-02-06T15:35:41.664-08:00"
  },
  {
    ...
  }
]

Status: 200 OK

This endpoint retrieves the rooms in your project.

HTTP Request

GET https://app.jetbuilt.com/api/projects/<PROJECT_ID>/rooms

URL Parameters

Parameter Description
PROJECT_ID The ID of the project
page A specific page of results

Get a room in your project

curl "https://app.jetbuilt.com/api/projects/<PROJECT_ID>/rooms/<ID>" \
  -H "Authorization: Token token=YOURAPIKEY" \
  -H "Accept: application/vnd.jetbuilt.v1" \
  -H 'Content-Type: application/json'
curl "https://app.jetbuilt.com/api/projects/<PROJECT_ID>/rooms/<ID>" \
  -H "Authorization: Token token=YOURAPIKEY" \
  -H "Accept: application/vnd.jetbuilt.v1"

Response:

{
  "id": 3234,
  "name": "Main Room",
  "quantity": 1,
  "created_at": "2018-02-23T11:57:50.853-08:00",
  "updated_at": "2020-08-20T16:11:56.520-07:00",
  "total_cost": "70370.4089260971998418969570213514",
  "total_price": "151136.2848120055371328870953042518",
  "total_tax": "10909.088533333333333333328",
  "equipment_total_cost": "58263.9089260971998418971570213514",
  "equipment_total_price": "126098.6489260971998418971570213514",
  "labor_total_cost": "11851.4999999999999999998",
  "labor_total_price": "21058.9999999999999999996",
  "other_total_cost": "255.0",
  "other_total_price": "3978.6358859083372909903382829004",
  "line_items": [
      {
        ...
      }
    ],
    "factors": [
      {
        "id": 342,
        "name": "Shipping",
        "description": "Percentage",
        "factor_method": "equipment_price",
        "taxed": false,
        "hidden": false,
        "total_cost": "0.0",
        "total_price": "3623.6358859083372909903382829004"
      },
      {
        ...
      }
    ]
  }

Status: 200 OK

This endpoint retrieves a project room by ID.

Shows additional detail for an individual project room.

Notably, it:

Totals are not currently rounded. Generally, factors are meant for an entire project, so displaying them for an individual room causes fractional amounts.

HTTP Request

GET https://app.jetbuilt.com/api/projects/<PROJECT_ID>/rooms/<ID>

URL Parameters

Parameter Description
PROJECT_ID The ID of the project
ID The ID of the client to retrieve
page A specific page of line item results

Project Systems

Get all systems in your project

curl "https://app.jetbuilt.com/api/projects/<PROJECT_ID>/systems" \
  -H "Authorization: Token token=YOURAPIKEY" \
  -H "Accept: application/vnd.jetbuilt.v1" \
  -H 'Content-Type: application/json'
curl "https://app.jetbuilt.com/api/projects/<PROJECT_ID>/systems" \
  -H "Authorization: Token token=YOURAPIKEY" \
  -H "Accept: application/vnd.jetbuilt.v1"

Response:

[
  {
    "id": 3234,
    "name": "Audio system",
    "created_at": "2019-11-01T11:03:05.572-07:00",
    "updated_at": "2020-02-06T15:35:41.664-08:00"
  },
  {
    ...
  }
]

Status: 200 OK

This endpoint retrieves the systems in your project.

HTTP Request

GET https://app.jetbuilt.com/api/projects/<PROJECT_ID>/systems

URL Parameters

Parameter Description
PROJECT_ID The ID of the project
page A specific page of results

Project Tags

Get all tags in your project

curl "https://app.jetbuilt.com/api/projects/<PROJECT_ID>/tags" \
  -H "Authorization: Token token=YOURAPIKEY" \
  -H "Accept: application/vnd.jetbuilt.v1" \
  -H 'Content-Type: application/json'
curl "https://app.jetbuilt.com/api/projects/<PROJECT_ID>/tags" \
  -H "Authorization: Token token=YOURAPIKEY" \
  -H "Accept: application/vnd.jetbuilt.v1"

Response:

[
  {
    "id": 3234,
    "name": "Tag",
    "created_at": "2019-11-01T11:03:05.572-07:00",
    "updated_at": "2020-02-06T15:35:41.664-08:00"
  },
  {
    ...
  }
]

Status: 200 OK

This endpoint retrieves the tags in your project.

HTTP Request

GET https://app.jetbuilt.com/api/projects/<PROJECT_ID>/tags

URL Parameters

Parameter Description
PROJECT_ID The ID of the project
page A specific page of results

Project Discussions

Get all discussions in your project

curl "https://app.jetbuilt.com/api/projects/<PROJECT_ID>/discussions" \
  -H "Authorization: Token token=YOURAPIKEY" \
  -H "Accept: application/vnd.jetbuilt.v1" \
  -H 'Content-Type: application/json'
curl "https://app.jetbuilt.com/api/projects/<PROJECT_ID>/discussions" \
  -H "Authorization: Token token=YOURAPIKEY" \
  -H "Accept: application/vnd.jetbuilt.v1"

Response:

[
  {
    "id": 27409,
    "title": "discussion name",
    "comments": [
      {
        "id": 11545,
        "created_at": "2023-07-31T06:46:04.951-07:00",
        "updated_at": "2023-07-31T06:46:05.260-07:00",
        "user": {
          "id": 486,
          "full_name": "John S"
        },
        "comment": "A comment"
      },
      ...
    ]
  },
  {
    ...
  }
]

Status: 200 OK

This endpoint retrieves the discussions in your project.

HTTP Request

GET https://app.jetbuilt.com/api/projects/<PROJECT_ID>/discussions

URL Parameters

Parameter Description
PROJECT_ID The ID of the project
page A specific page of results.

Project Proposals

Get proposals in your project

curl "https://app.jetbuilt.com/api/projects/<PROJECT_ID>/proposals" \
  -H "Authorization: Token token=YOURAPIKEY" \
  -H "Accept: application/vnd.jetbuilt.v1" \
  -H 'Content-Type: application/json'
curl "https://app.jetbuilt.com/api/projects/<PROJECT_ID>/proposals" \
  -H "Authorization: Token token=YOURAPIKEY" \
  -H "Accept: application/vnd.jetbuilt.v1"

Response:

[
  {
    "id": 304402,
    "name": "Proposal 8/9/19",
    "sent_at": null,
    "purchased_at": null,
    "created_at": "2019-08-08T16:59:50.008-07:00",
    "updated_at": "2022-09-08T14:03:12.359-07:00",
    "private_link": "https://app.jetbuilt.com/projects/111214/proposals/304402",
    "public_link": null,
    "expiry_public_link": null
  },
  ...
]

Status: 200 OK

This endpoint retrieves the proposals in your project.

The public_link field is present when the proposal has been made public.

The expiry_public_link field is present when expiry_public_link parameter is set to true.

HTTP Request

GET https://app.jetbuilt.com/api/projects/<PROJECT_ID>/proposals

GET https://app.jetbuilt.com/api/projects/<PROJECT_ID>/proposals?page=2

URL Parameters

Parameter Description
PROJECT_ID The ID of the project
page A specific page of results
expiry_public_link if set to true a public link is generated that expires after 5 minutes

Project Purchasing

Get purchasing info for items in your project

curl "https://app.jetbuilt.com/api/projects/<PROJECT_ID>/purchasing" \
  -H "Authorization: Token token=YOURAPIKEY" \
  -H "Accept: application/vnd.jetbuilt.v1" \
  -H 'Content-Type: application/json'
curl "https://app.jetbuilt.com/api/projects/<PROJECT_ID>/purchasing" \
  -H "Authorization: Token token=YOURAPIKEY" \
  -H "Accept: application/vnd.jetbuilt.v1"

Response:

{
  "line_items": [
    {
      "ids": [
        123,
        145,
        167
      ],
      "full_name": "ACME 123",
      "short_description": "super audio enhancer",
      "order_status": "not_ordered",
      "order_notes": null,
      "cost": "100.0",
      "total_order_cost": "300.0",
      "project_quantity": "3.0",
      "order_quantity": "3",
      "source": {
        "id": 34,
        "name": "Audio Supplier"
      },
      "sold_change_order": false
    },
    {
      ...
    }
  ]
}

Status: 200 OK

This endpoint retrieves purchasing info for items in your project.

Line items are consolidated together for purchasing, with a purchase source listed when set.

Grouped line items will be listed together in the ids field.

sold_change_order indicates if any of the grouped line items are from a sold change order.

HTTP Request

GET https://app.jetbuilt.com/api/projects/<PROJECT_ID>/purchasing

GET https://app.jetbuilt.com/api/projects/<PROJECT_ID>/purchasing?page=2

URL Parameters

Parameter Description
PROJECT_ID The ID of the project
page A specific page of line item results

Project Service Packages

Get all service packages in your project

curl "https://app.jetbuilt.com/api/projects/<PROJECT_ID>/service_packages" \
  -H "Authorization: Token token=YOURAPIKEY" \
  -H "Accept: application/vnd.jetbuilt.v1" \
  -H 'Content-Type: application/json'
curl "https://app.jetbuilt.com/api/projects/<PROJECT_ID>/service_packages" \
  -H "Authorization: Token token=YOURAPIKEY" \
  -H "Accept: application/vnd.jetbuilt.v1"

Response:

{
  "service_packages": [
    {
      "id": 3395,
      "name": "Annual Maintenance",
      "purchase_type": "included",
      "pricing_method": "flat_price",
      "program_term": "annually",
      "price": "200.0",
      "cost": "100.0",
      "sold": true,
      "taxed": false,
      "taxable_amount_percent": "100.0"
    },
    {
      ...
    }
  ]
}

Status: 200 OK

This endpoint retrieves the service_packages in your project.

URL Parameters

Parameter Description
PROJECT_ID The ID of the project
page A specific page of service package results.

Get a service package

curl "https://app.jetbuilt.com/api/projects/<PROJECT_ID>/service_packages/<ID>" \
  -H "Authorization: Token token=YOURAPIKEY" \
  -H "Accept: application/vnd.jetbuilt.v1" \
  -H 'Content-Type: application/json'
curl "https://app.jetbuilt.com/api/projects/<PROJECT_ID>/service_packages/<ID>" \
  -H "Authorization: Token token=YOURAPIKEY" \
  -H "Accept: application/vnd.jetbuilt.v1"

Response:

{
  "id": 3395,
  "name": "Annual Maintenance",
  "purchase_type": "included",
  "pricing_method": "flat_price",
  "program_term": "annually",
  "price": "200.0",
  "cost": "100.0",
  "sold": true,
  "taxed": false,
  "taxable_amount_percent": "100.0"
}

Status: 200 OK

This endpoint retrieves a service package by ID.

HTTP Request

GET https://app.jetbuilt.com/api/projects/<PROJECT_ID>/service_packages/<ID>

URL Parameters

Parameter Description
PROJECT_ID The project ID of the service package
ID The ID of the service package to update

Update a Project Service Package

curl "https://app.jetbuilt.com/api/projects/<PROJECT_ID>/service_packages/<ID>" \
  -X PUT \
  -H "Authorization: Token token=YOURAPIKEY" \
  -H "Accept: application/vnd.jetbuilt.v1" \
  -H 'Content-Type: application/json' \
  -d '{
        "price": "10",
        "cost": "5"
      }'
curl "https://app.jetbuilt.com/api/projects/<PROJECT_ID>/service_packages/<ID>" \
  -X PUT \
  -H "Authorization: Token token=YOURAPIKEY" \
  -H "Accept: application/vnd.jetbuilt.v1" \
  -F "<ID>[price]=10" \
  -F "<ID>[cost]=5"

Response: Similar to Get all project items

Status: 200 OK

This endpoint updates a service package for a project.

A service package cannot be updated when the project is locked.

HTTP Request

PUT https://app.jetbuilt.com/api/projects/<PROJECT_ID>/service_packages/<ID>

URL Parameters

Parameter Description
PROJECT_ID The project ID of the service package
ID The ID of the service package to update

Data Parameters

Parameter Description
price The price of the service package decimal
cost The system of the item decimal

Purchasing Sources

Get all purchasing sources

curl "https://app.jetbuilt.com/api/purchasing/sources" \
  -H "Authorization: Token token=YOURAPIKEY" \
  -H "Accept: application/vnd.jetbuilt.v1" \
  -H 'Content-Type: application/json'
curl "https://app.jetbuilt.com/api/purchasing/sources" \
  -H "Authorization: Token token=YOURAPIKEY" \
  -H "Accept: application/vnd.jetbuilt.v1"

Response:

[
  {
    "id": 1,
    "company_name": "Awesome Audio",
    "first_name": "John",
    "last_name": "Smith",
    "email": "johnaudio@example.com",
    "phone": "5551234567",
    "default_ship": "project_site",
    "created_at": "2016-02-08T15:40:38.491-08:00",
    "updated_at": "2019-01-07T09:35:48.005-08:00",
    "dealer_number": "XYZ"
  },
  {
    ...
  }
]

Status: 200 OK

This endpoint retrieves all of purchasing sources for your company.

HTTP Request

GET https://app.jetbuilt.com/api/purchasing/sources

URL Parameters

Parameter Description
page A specific page of results.

Get a purchasing source

curl "https://app.jetbuilt.com/api/purchasing/sources/<ID>" \
  -H "Authorization: Token token=YOURAPIKEY" \
  -H "Accept: application/vnd.jetbuilt.v1" \
  -H 'Content-Type: application/json'
curl "https://app.jetbuilt.com/api/purchasing/sources/<ID>" \
  -H "Authorization: Token token=YOURAPIKEY" \
  -H "Accept: application/vnd.jetbuilt.v1"

Response: Similar to Get all purchasing sources

Status: 200 OK

This endpoint retrieves a purchasing source by ID.

HTTP Request

GET https://app.jetbuilt.com/api/purchasing/sources/<ID>

URL Parameters

Parameter Description
ID The ID of the purchasing source to retrieve

Purchase Orders

Get all Purchase Orders

curl "https://app.jetbuilt.com/api/purchase_orders" \
  -H "Authorization: Token token=YOURAPIKEY" \
  -H "Accept: application/vnd.jetbuilt.v1" \
  -H 'Content-Type: application/json'
curl "https://app.jetbuilt.com/api/purchase_orders" \
  -H "Authorization: Token token=YOURAPIKEY" \
  -H "Accept: application/vnd.jetbuilt.v1"

Response:

[
  {
    "id": 123,
    "user_id": 456,
    "project_id": 95636,
    "purchasing_source_id": 1146,
    "custom_id": "JB226",
    "notes": "",
    "status": "ordered",
    "shipping_option": "Ground Shipping",
    "created_at": "2019-04-23T12:54:59.719-07:00",
    "updated_at": "2019-09-11T18:35:27.894-07:00",
    "ship_to": "Jetbuilt Testing",
    "ship_address": {
      "street": "120 Newport Center Drive",
      "city": "Newport Beach",
      "region": "California",
      "postal_code": "92660",
      "country": "US"
    }
  },
  {
    ...
  }
]

Status: 200 OK

This endpoint retrieves all of your purchase orders.

HTTP Request

GET https://app.jetbuilt.com/api/purchase_orders

URL Parameters

Parameter Description
page A specific page of results.
project_id an optional project id to filter by
min_created_at Query purchase orders created after the specified date time.
max_created_at Query purchase orders created before the specified date time.
min_updated_at Query purchase orders updated after the specified date time.
max_updated_at Query purchase orders updated before the specified date time.

Get a purchase order

curl "https://app.jetbuilt.com/api/purchase_orders/<ID>" \
  -H "Authorization: Token token=YOURAPIKEY" \
  -H "Accept: application/vnd.jetbuilt.v1" \
  -H 'Content-Type: application/json'
curl "https://app.jetbuilt.com/api/purchase_orders/<ID>" \
  -H "Authorization: Token token=YOURAPIKEY" \
  -H "Accept: application/vnd.jetbuilt.v1"
  {
    "id": 123,
    "user_id": 456,
    "project_id": 95636,
    "purchasing_source_id": 1146,
    "custom_id": "JB226",
    "notes": "",
    "status": "ordered",
    "shipping_option": "Ground Shipping",
    "created_at": "2019-04-23T12:54:59.719-07:00",
    "updated_at": "2019-09-11T18:35:27.894-07:00",
    "ship_to": "Jetbuilt Testing",
    "ship_address": {
      "street": "120 Newport Center Drive",
      "city": "Newport Beach",
      "region": "California",
      "postal_code": "92660",
      "country": "US"
    },
    "line_items": [
      {
        "ids": [
          123,
          145,
          167
        ],
        "full_name": "ACME 123",
        "short_description": "super audio enhancer",
        "order_status": "not_ordered",
        "order_notes": null,
        "cost": "100.0",
        "total_order_cost": "300.0",
        "project_quantity": "3.0",
        "order_quantity": "3",
        "source": {
          "id": 34,
          "name": "Audio Supplier"
        }
      },
      {
        ...
      }
    ]
  }

Status: 200 OK

This endpoint retrieves a purchase order by ID.

HTTP Request

GET https://app.jetbuilt.com/api/purchase_orders/<ID>

URL Parameters

Parameter Description
ID The ID of the purchase order to retrieve

Tasks

Get All Tasks

curl "https://app.jetbuilt.com/api/tasks" \
  -H "Authorization: Token token=YOURAPIKEY" \
  -H "Accept: application/vnd.jetbuilt.v1" \
  -H 'Content-Type: application/json'
curl "https://app.jetbuilt.com/api/tasks" \
  -H "Authorization: Token token=YOURAPIKEY" \
  -H "Accept: application/vnd.jetbuilt.v1"

Response:

[
  {
    "id": 318,
    "name": "Install the thing",
    "client_id": null,
    "project_id": 97676,
    "created_by_id": 47,
    "completed_by_id": 48,
    "completed_at": "2023-10-19T22:42:08.348-07:00",
    "minutes": "60.0",
    "lineitem_id": null,
    "phase_id": 31,
    "labor_type_id": null,
    "created_at": "2023-10-18T23:39:13.544-07:00",
    "updated_at": "2023-10-19T02:35:09.534-07:00",
    "assigned_to_id": 48,
    "due_on": "2023-10-30",
    "start_date": "10/30/2023",
    "start_time": "8:30 AM",
    "time_zone": "Eastern Time (US & Canada)",
    "all_day": false
  },
  {
    ...
  }
]

Status: 200 OK

This endpoint retrieves all tasks.

HTTP Request

GET https://app.jetbuilt.com/api/tasks

GET https://app.jetbuilt.com/api/tasks?project_id=1234&type=install&page=2

URL Parameters

Parameter Description
project_id Filter results by the project id
type Filter results by install or sales tasks
page A specific page of results.

Get a task

curl "https://app.jetbuilt.com/api/task/<ID>" \
  -H "Authorization: Token token=YOURAPIKEY" \
  -H "Accept: application/vnd.jetbuilt.v1" \
  -H 'Content-Type: application/json'
curl "https://app.jetbuilt.com/api/task/<ID>" \
  -H "Authorization: Token token=YOURAPIKEY" \
  -H "Accept: application/vnd.jetbuilt.v1"

Response:

{
  "id": 318,
  "name": "Install the thing",
  "client_id": null,
  "project_id": 97676,
  "created_by_id": 47,
  "completed_by_id": 48,
  "completed_at": "2023-10-19T22:42:08.348-07:00",
  "minutes": "60.0",
  "lineitem_id": null,
  "phase_id": 31,
  "labor_type_id": null,
  "created_at": "2023-10-18T23:39:13.544-07:00",
  "updated_at": "2023-10-19T02:35:09.534-07:00",
  "assigned_to_id": 48,
  "due_on": "2023-10-30",
  "start_date": "10/30/2023",
  "start_time": "8:30 AM",
  "time_zone": "Eastern Time (US & Canada)",
  "all_day": false,
  "steps": [
    {
      "description": "Step 1",
      "minutes": "10.0",
      "photo_required": true
    },
    {
      ...
    }
  ],
  "notes": [
    {
      "user_id": 486,
      "comment": "\n  Just completed the step \"Step 1\" to the task \"Step 1\". Enjoy this photo of the work:\n[Screenshot 2023-10-19 at 7.36.34 PM.png]"
    },
    {
      ...
    }
  ]
}

Status: 200 OK

This endpoint retrieves a task by ID.

It contains additional task info like all steps and notes/comments

HTTP Request

GET https://app.jetbuilt.com/api/tasks/<ID>

URL Parameters

Parameter Description
ID The ID of the task to retrieve

Time Sessions

Get all time sessions

curl "https://app.jetbuilt.com/api/time_sessions" \
  -H "Authorization: Token token=YOURAPIKEY" \
  -H "Accept: application/vnd.jetbuilt.v1" \
  -H 'Content-Type: application/json'
curl "https://app.jetbuilt.com/api/time_sessions" \
  -H "Authorization: Token token=YOURAPIKEY" \
  -H "Accept: application/vnd.jetbuilt.v1"

Response:

[
  {
    "id": 18,
    "start_at": "2020-10-14T10:45:00.000-07:00",
    "end_at": "2020-10-14T16:53:00.000-07:00",
    "time_zone": "Pacific Time (US & Canada)",
    "duration": 22080,
    "work_duration": 18480,
    "break_duration": 3600,
    "num_breaks": 1,
    "description": "Installed the new speakers",
    "created_at": "2020-10-14T16:45:31.078-07:00",
    "updated_at": "2020-12-08T10:13:02.084-08:00",
    "running": false,
    "user": {
        "id": 123,
        "full_name": "Joe Bob"
    },
    "project": {
        "id": 435,
        "full_name": "P - 255 Conference Room"
    },
    "category": null,
    "time_entries": [
      {
          "id": 53,
          "start_at": "2020-10-14T10:45:00.000-07:00",
          "end_at": "2020-10-14T12:51:00.000-07:00",
          "time_zone": "Pacific Time (US & Canada)",
          "duration": 7560,
          "created_at": "2020-10-14T16:45:31.140-07:00",
          "updated_at": "2020-12-08T10:13:01.978-08:00",
          "type": "work",
          "running": false,
          "labor_type": {
              "id": 43234,
              "name": "Installation"
          }
      },
      {
          "id": 54,
          "start_at": "2020-10-14T12:51:00.000-07:00",
          "end_at": "2020-10-14T13:51:00.000-07:00",
          "time_zone": "Pacific Time (US & Canada)",
          "duration": 3600,
          "created_at": "2020-10-14T16:51:45.236-07:00",
          "updated_at": "2020-12-08T10:13:02.029-08:00",
          "type": "break",
          "running": false,
          "labor_type": {
              "id": 43234,
              "name": "Installation"
          }
      },
      {
          "id": 55,
          "start_at": "2020-10-14T13:51:00.000-07:00",
          "end_at": "2020-10-14T16:53:00.000-07:00",
          "time_zone": "Pacific Time (US & Canada)",
          "duration": 10920,
          "created_at": "2020-10-14T16:51:47.948-07:00",
          "updated_at": "2020-12-08T10:13:02.046-08:00",
          "type": "work",
          "running": false,
          "labor_type": {
              "id": 43234,
              "name": "Installation "
          }
      }
    ]
  },
  {
    ...
  }
]

Status: 200 OK

This endpoint retrieves all of your time sessions.

Durations are in total seconds.

Running is whether the clock is currenty running or not.

HTTP Request

GET https://app.jetbuilt.com/api/time_sessions

URL Parameters

Parameter Description
page A specific page of results.

Get a time session

curl "https://app.jetbuilt.com/api/time_sessions/<ID>" \
  -H "Authorization: Token token=YOURAPIKEY" \
  -H "Accept: application/vnd.jetbuilt.v1" \
  -H 'Content-Type: application/json'
curl "https://app.jetbuilt.com/api/time_sessions/<ID>" \
  -H "Authorization: Token token=YOURAPIKEY" \
  -H "Accept: application/vnd.jetbuilt.v1"

Response: Similar to Get all time sessions

Status: 200 OK

This endpoint retrieves a time session by ID.

Durations are in total seconds.

Running is whether the clock is currenty running or not.

HTTP Request

GET https://app.jetbuilt.com/api/time_sessions/<ID>

URL Parameters

Parameter Description
ID The ID of the time session to retrieve

Stock Items

Get all stock items

curl "https://app.jetbuilt.com/api/stock/items" \
  -H "Authorization: Token token=YOURAPIKEY" \
  -H "Accept: application/vnd.jetbuilt.v1" \
  -H 'Content-Type: application/json'
curl "https://app.jetbuilt.com/api/stock/items" \
  -H "Authorization: Token token=YOURAPIKEY" \
  -H "Accept: application/vnd.jetbuilt.v1"

Response:

[
  {
    "id": 12978,
    "stock_location_id": 382,
    "quantity": 5,
    "serial_num": null,
    "status": "received",
    "created_at": "2021-08-30T22:10:13.965-07:00",
    "updated_at": "2021-08-31T16:27:14.917-07:00",
    "company_product_id": 1599279,
    "name": "Tannoy DI 5 DC BLACK"
  },
  {
    ...
  }
]

Status: 200 OK

This endpoint retrieves all of your stock items.

HTTP Request

GET https://app.jetbuilt.com/api/stock/items

URL Parameters

Parameter Description
page A specific page of results.

Get a stock item

curl "https://app.jetbuilt.com/api/stock/items/<ID>" \
  -H "Authorization: Token token=YOURAPIKEY" \
  -H "Accept: application/vnd.jetbuilt.v1" \
  -H 'Content-Type: application/json'
curl "https://app.jetbuilt.com/api/stock/items/<ID>" \
  -H "Authorization: Token token=YOURAPIKEY" \
  -H "Accept: application/vnd.jetbuilt.v1"

Response: Similar to Get all stock items

Status: 200 OK

This endpoint retrieves a stock item by ID.

HTTP Request

GET https://app.jetbuilt.com/api/stock/items/<ID>

URL Parameters

Parameter Description
ID The ID of the stock item to retrieve

Create a stock item

curl "https://app.jetbuilt.com/api/stock/items" \
  -X POST \
  -H "Authorization: Token token=YOURAPIKEY" \
  -H "Accept: application/vnd.jetbuilt.v1" \
  -H 'Content-Type: application/json' \
  -d '{
        "company_product_id": "1599279",
        "stock_location_id": "382",
        "quantity": "5"
      }'
curl "https://app.jetbuilt.com/api/stock/items" \
  -X POST \
  -H "Authorization: Token token=YOURAPIKEY" \
  -H "Accept: application/vnd.jetbuilt.v1" \
  -F "item[company_product_id]=1599279" \
  -F "item[stock_location_id]=382" \
  -F "item[quantity]=5"

Response: Similar to Get all stock items

Status: 201 Created

This endpoint creates a new stock item.

HTTP Request

POST https://app.jetbuilt.com/api/stock/items

Data Parameters

Parameter Description
company_product_id The company product to create the item for required integer
stock_location_id The stock location to create the item in required integer
quantity The quantity in stock required integer
serial_num The serial number string

The company_product_id can be found using the Products endpoint.

If a company product doesn't yet exist, create one first, and then create the stock item.

The stock_location_id can be found using the Stock Locations endpoint.

A serial_num is optional, and only applies to items with a quanity of 1. When a serial number is passed in, the quantity param will be ignored and set to 1. Otherwise it's considered a bulk item and the quantity can be freely set.

Update a stock item

curl "https://app.jetbuilt.com/api/stock/items/<ID>" \
  -X PATCH \
  -H "Authorization: Token token=YOURAPIKEY" \
  -H "Accept: application/vnd.jetbuilt.v1" \
  -H 'Content-Type: application/json' \
  -d '{
        "quantity": "10"
      }'
curl "https://app.jetbuilt.com/api/stock/items/<ID>" \
  -X PATCH \
  -H "Authorization: Token token=YOURAPIKEY" \
  -H "Accept: application/vnd.jetbuilt.v1" \
  -F "<ID>[quantity]=10"

Response: Similar to Get all stock items

Status: 200 OK

This endpoint updates a stock item by ID.

HTTP Request

PUT https://app.jetbuilt.com/api/stock/items/<ID>

Data Parameters

Parameter Description
quantity The quantity in stock required integer

For now only the quantity of the item can be updated.

The quantity must be greater than 0. If there are no items left in stock, then delete the item.

Delete a stock item

curl "https://app.jetbuilt.com/api/stock/items/<ID>" \
  -X DELETE \
  -H "Authorization: Token token=YOURAPIKEY" \
  -H "Accept: application/vnd.jetbuilt.v1" \
  -H 'Content-Type: application/json'
curl "https://app.jetbuilt.com/api/stock/items/<ID>" \
  -X DELETE \
  -H "Authorization: Token token=YOURAPIKEY" \
  -H "Accept: application/vnd.jetbuilt.v1"

Response:

{
    "message": "The item has been deleted"
}

Status: 200 OK

This endpoint deletes a stock item by ID.

HTTP Request

DELETE https://app.jetbuilt.com/api/stock/items/<ID>

Stock Locations

Get all stock locations

curl "https://app.jetbuilt.com/api/stock/locations" \
  -H "Authorization: Token token=YOURAPIKEY" \
  -H "Accept: application/vnd.jetbuilt.v1" \
  -H 'Content-Type: application/json'
curl "https://app.jetbuilt.com/api/stock/locations" \
  -H "Authorization: Token token=YOURAPIKEY" \
  -H "Accept: application/vnd.jetbuilt.v1"

Response:

[
  {
    "id": 5,
    "name": "Warehouse",
    "position": "Rack 2",
    "description": "The rack in the back",
    "office_id": 3,
    "project_id": null,
    "kind": "company",
    "created_at": "2021-08-31T13:01:17.641-07:00",
    "updated_at": "2021-08-31T13:01:17.641-07:00"
  },
  {
    ...
  }
]

Status: 200 OK

This endpoint retrieves all of your stock locations.

HTTP Request

GET https://app.jetbuilt.com/api/stock/locations

URL Parameters

Parameter Description
page A specific page of results.

Get a stock location

curl "https://app.jetbuilt.com/api/stock/locations/<ID>" \
  -H "Authorization: Token token=YOURAPIKEY" \
  -H "Accept: application/vnd.jetbuilt.v1" \
  -H 'Content-Type: application/json'
curl "https://app.jetbuilt.com/api/stock/locations/<ID>" \
  -H "Authorization: Token token=YOURAPIKEY" \
  -H "Accept: application/vnd.jetbuilt.v1"

Response: Similar to Get all stock locations

Status: 200 OK

This endpoint retrieves a stock location by ID.

HTTP Request

GET https://app.jetbuilt.com/api/stock/locations/<ID>

URL Parameters

Parameter Description
ID The ID of the stock location to retrieve

Create a stock location

curl "https://app.jetbuilt.com/api/stock/locations" \
  -X POST \
  -H "Authorization: Token token=YOURAPIKEY" \
  -H "Accept: application/vnd.jetbuilt.v1" \
  -H 'Content-Type: application/json' \
  -d '{
        "kind": "company",
        "office_id": "3",
        "name": "East Warehouse",
        "position": "Shelf 20",
        "description": ""
      }'
curl "https://app.jetbuilt.com/api/stock/locations" \
  -X POST \
  -H "Authorization: Token token=YOURAPIKEY" \
  -H "Accept: application/vnd.jetbuilt.v1" \
  -F "location[kind]=company" \
  -F "location[office_id]=3" \
  -F "location[name]=East Warehouse" \
  -F "location[position]=Shelf 20" \
  -F "location[description]="

Response: Similar to Get all stock locations

Status: 201 Created

This endpoint creates a new stock location.

HTTP Request

POST https://app.jetbuilt.com/api/stock/locations

Data Parameters

Parameter Description
kind The kind of location, either company or project required string
office_id The company office location only required if location is 'company' kind; integer
project_id The project this stock location is at only required if location is a 'project' kind; integer
name The name of the location. e.g. Warehouse required string
position Detail of the location. e.g. Rack 1 only required if is a 'project' kind; string
description Optional description e.g. The new rack string

The stock location's kind must be either company or project.

If the kind is a company stock location, then it's a normal company location. An office_id and position are required.

The office_id can be found using the Company endpoint, under the company's locations. (We now refer company locations as offices within the app.)

If it's a project stock location, then a project_id must also be supplied. (The project takes the place of the position, so position is not required.) The project_id can be found using the Projects endpoint.

Update a stock location

curl "https://app.jetbuilt.com/api/stock/locations/<ID>" \
  -X PATCH \
  -H "Authorization: Token token=YOURAPIKEY" \
  -H "Accept: application/vnd.jetbuilt.v1" \
  -H 'Content-Type: application/json' \
  -d '{
        "name": "Warehouse",
        "position": "Shelf 20A",
        "description": ""
      }'
curl "https://app.jetbuilt.com/api/stock/locations/<ID>" \
  -X PATCH \
  -H "Authorization: Token token=YOURAPIKEY" \
  -H "Accept: application/vnd.jetbuilt.v1" \
  -F "<ID>[name]=Warehouse" \
  -F "<ID>[position]=Shelf 20A" \
  -F "<ID>[description]="

Response: Similar to Get all stock locations

Status: 200 OK

This endpoint updates a stock location by ID.

HTTP Request

PUT https://app.jetbuilt.com/api/stock/locations/<ID>

Data Parameters

Parameter Description
name The name of the location. e.g. Warehouse required string
position Detail of the location. e.g. Rack 1 required string
description Optional description e.g. The new rack

Delete a stock location

curl "https://app.jetbuilt.com/api/stock/locations/<ID>" \
  -X DELETE \
  -H "Authorization: Token token=YOURAPIKEY" \
  -H "Accept: application/vnd.jetbuilt.v1" \
  -H 'Content-Type: application/json'
curl "https://app.jetbuilt.com/api/stock/locations/<ID>" \
  -X DELETE \
  -H "Authorization: Token token=YOURAPIKEY" \
  -H "Accept: application/vnd.jetbuilt.v1"

Response:

{
    "message": "The location has been deleted"
}

Status: 200 OK

This endpoint deletes a stock location by ID.

HTTP Request

DELETE https://app.jetbuilt.com/api/stock/locations/<ID>

Stock Products

Get all stock products

curl "https://app.jetbuilt.com/api/stock/products" \
  -H "Authorization: Token token=YOURAPIKEY" \
  -H "Accept: application/vnd.jetbuilt.v1" \
  -H 'Content-Type: application/json'
curl "https://app.jetbuilt.com/api/stock/products" \
  -H "Authorization: Token token=YOURAPIKEY" \
  -H "Accept: application/vnd.jetbuilt.v1"

Response:

[
  {
    "name": "Tannoy DI 5 DC BLACK",
    "company_product_id": 22328,
    "quantity_available": 5
  },
  {
    ...
  }
]

Status: 200 OK

This endpoint retrieves all of your stock products.

HTTP Request

GET https://app.jetbuilt.com/api/stock/products

URL Parameters

Parameter Description
page A specific page of results.

Get a stock product

curl "https://app.jetbuilt.com/api/stock/products/<ID>" \
  -H "Authorization: Token token=YOURAPIKEY" \
  -H "Accept: application/vnd.jetbuilt.v1" \
  -H 'Content-Type: application/json'
curl "https://app.jetbuilt.com/api/stock/products/<ID>" \
  -H "Authorization: Token token=YOURAPIKEY" \
  -H "Accept: application/vnd.jetbuilt.v1"

Response:

{
  "name": "Tannoy DI 5 DC BLACK",
  "company_product_id": 22328,
  "quantity_available": 8,
  "offices": [
    {
      "id": 1977,
      "quantity_avaliable": 3
    },
    {
      "id": 3,
      "quantity_avaliable": 5
    }
  ]
}

Status: 200 OK

This endpoint retrieves a stock product by ID.

The quantity_avaliable is the sum of all the individual stock items for that product.

The available quantities are also broken out by office location.

HTTP Request

GET https://app.jetbuilt.com/api/stock/products/<COMPANY_PRODUCT_ID>

URL Parameters

Parameter Description
COMPANY_PRODUCT_ID The ID of the company product to retrieve stock levels for

The company_product_id can be found using the Stock Products endpoint, or the Company Products endpoint.

The quantity_avaliable is the sum of all the individual stock items for that product.

Get a stock product items

curl "https://app.jetbuilt.com/api/stock/products/<COMPANY_PRODUCT_ID>/items" \
  -H "Authorization: Token token=YOURAPIKEY" \
  -H "Accept: application/vnd.jetbuilt.v1" \
  -H 'Content-Type: application/json'
curl "https://app.jetbuilt.com/api/stock/products/<COMPANY_PRODUCT_ID>/items" \
  -H "Authorization: Token token=YOURAPIKEY" \
  -H "Accept: application/vnd.jetbuilt.v1"

Response: Similar to Get all stock items

Status: 200 OK

This endpoint retrieves all stock items for a given stock product.

HTTP Request

GET https://app.jetbuilt.com/api/stock/products/<COMPANY_PRODUCT_ID>/items

URL Parameters

Parameter Description
COMPANY_PRODUCT_ID The ID of the stock product to retrieve

The company_product_id can be found using the Stock Products endpoint, or the Company Products endpoint.

Users

Get all active users

curl "https://app.jetbuilt.com/api/users" \
  -H "Authorization: Token token=YOURAPIKEY" \
  -H "Accept: application/vnd.jetbuilt.v1" \
  -H 'Content-Type: application/json'
curl "https://app.jetbuilt.com/api/users" \
  -H "Authorization: Token token=YOURAPIKEY" \
  -H "Accept: application/vnd.jetbuilt.v1"

Response:

[
  {
    "id": 123,
    "full_name": "Josh Smith",
    "email": "joshsmith@example.com",
    "created_at": "2020-06-30T15:32:08.813-07:00",
    "updated_at": "2020-07-27T19:17:41.928-07:00"
  },
  {
    ...
  }
]

Status: 200 OK

This endpoint retrieves all active users for you company.

HTTP Request

GET https://app.jetbuilt.com/api/users

URL Parameters

Parameter Description

Get a user

curl "https://app.jetbuilt.com/api/users/<ID>" \
  -H "Authorization: Token token=YOURAPIKEY" \
  -H "Accept: application/vnd.jetbuilt.v1" \
  -H 'Content-Type: application/json'
curl "https://app.jetbuilt.com/api/users/<ID>" \
  -H "Authorization: Token token=YOURAPIKEY" \
  -H "Accept: application/vnd.jetbuilt.v1"

Response: Similar to Get all users

Status: 200 OK

This endpoint retrieves an active user by ID.

HTTP Request

GET https://app.jetbuilt.com/api/users/<ID>

URL Parameters

Parameter Description
ID The ID of the user to retrieve

Vendors

Get all vendors

curl "https://app.jetbuilt.com/api/product_databases/<DB_ID>/vendors" \
  -H "Authorization: Token token=YOURAPIKEY" \
  -H "Accept: application/vnd.jetbuilt.v1" \
  -H 'Content-Type: application/json'
curl "https://app.jetbuilt.com/api/product_databases/<DB_ID>/vendors" \
  -H "Authorization: Token token=YOURAPIKEY" \
  -H "Accept: application/vnd.jetbuilt.v1"

Response:

[
  {
    "id": 123,
    "name": "ACME",
    "rank": "low",
    "preferred": false,
    "purchasing_source": "AV R Us",
    "price_list_date": "Jan 2022",
    "discount_percentage": "0",
    "dealer_pricing_status": "approved",
    "manufacturer": true,
    "distributor": false
  },
  {
    "id":456,
    "name": "Distributor",
    ...
    "distributor": true,
    "distributed_manufacturers": [
      {
        "id": 123,
        "name": "ACME"
      }
    ]
  }
]

Status: 200 OK

This endpoint retrieves all of your connected vendors.

A list of manufacturers (Manufacturers that you have pricing connections with through the distributor) is present in the response when the vendor is a distributor.

HTTP Request

GET https://app.jetbuilt.com/api/product_databases/<DB_ID>/vendors

The product database ID is prefixed since it's possible for products and pricing to vary across office locations. (Most companies share a single product database across all office locations.)

This DB_ID can be retrieved from the Company endpoint.

URL Parameters

Parameter Description
DB_ID The ID of the the product database (see the Company endpoint)
page A specific page of results.

Get a vendor

curl "https://app.jetbuilt.com/api/product_databases/<DB_ID>/vendors/<ID>" \
  -H "Authorization: Token token=YOURAPIKEY" \
  -H "Accept: application/vnd.jetbuilt.v1" \
  -H 'Content-Type: application/json'
curl "https://app.jetbuilt.com/api/product_databases/<DB_ID>/vendors/<ID>" \
  -H "Authorization: Token token=YOURAPIKEY" \
  -H "Accept: application/vnd.jetbuilt.v1"

Response: Similar to Get all vendors

Status: 200 OK

This endpoint retrieves a vendor by ID.

HTTP Request

GET https://app.jetbuilt.com/api/product_databases/<DB_ID>/vendors/<ID>

Note: The dealer pricing integration status must be approved in order to retrieve additional information for the vendor.

URL Parameters

Parameter Description
DB_ID The ID of the the product database (see the Company endpoint)
ID The ID of the vendor to retrieve

Vendor Products

Get all products for a vendor

curl "https://app.jetbuilt.com/api/product_databases/<DB_ID>/vendors/<VENDOR_ID>/products" \
  -H "Authorization: Token token=YOURAPIKEY" \
  -H "Accept: application/vnd.jetbuilt.v1" \
  -H 'Content-Type: application/json'
curl "https://app.jetbuilt.com/api/product_databases/<DB_ID>/vendors/<VENDOR_ID>/products" \
  -H "Authorization: Token token=YOURAPIKEY" \
  -H "Accept: application/vnd.jetbuilt.v1"

Response:

[
  {
    "id": 392342,
    "model": "ACME-123",
    "part_number": null,
    "short_description": "A great speaker",
    "long_description": "A really great speaker",
    "msrp": "175.0",
    "mapp": "0.0",
    "discontinued": false,
    "created_at": "2015-03-30T14:58:46.398-07:00",
    "updated_at": "2022-04-27T16:01:44.767-07:00",
    "dealer_price": {
      "cost": "120.0",
      "sheet_date": "2017-05-17",
      "updated_at": "2017-05-17T08:02:43.485-07:00"
    },
    "manufacturer": "ACME",
    "currency": "USD",
    "purchasing_source": {
      "id": 441,
      "dealer_number": "abc"
    },
    "favorite": false
  },
  {
    ...
  }
]

Status: 200 OK

This endpoint retrieves all products with your connected pricing for a vendor.

HTTP Request

GET https://app.jetbuilt.com/api/product_databases/<DB_ID>/vendors/<VENDOR_ID>/products

The product database ID is prefixed since it's possible for products and pricing to vary across office locations. (Most companies share a single product database across all office locations.)

This DB_ID can be retrieved from the Company endpoint.

Note: The dealer pricing integration status must be approved in order to retrieve product information for the vendor.

Note for vendors that are both a manufacturer and a distributor:
Manufactured products will be returned by default.
Specifying distributed_products=true will return their distributed products.
Filtering by a manufacturer_id will also return their distributed products.

URL Parameters

Parameter Description
DB_ID The ID of the the product database (see the Company endpoint)
VENDOR_ID The ID of the vendor (An approved Manufacturer or Distributor)
page A specific page of results.
manufacturer_id Filter distributed products by manufacturer
distributed_products Whether or not to return the distributed_products. Defaults to false. boolean (true/false)

Get a product for a vendor

curl "https://app.jetbuilt.com/api/product_databases/<DB_ID>/vendors/<VENDOR_ID>/products/<ID>" \
  -H "Authorization: Token token=YOURAPIKEY" \
  -H "Accept: application/vnd.jetbuilt.v1" \
  -H 'Content-Type: application/json'
curl "https://app.jetbuilt.com/api/product_databases/<DB_ID>/vendors/<VENDOR_ID>/products/<ID>" \
  -H "Authorization: Token token=YOURAPIKEY" \
  -H "Accept: application/vnd.jetbuilt.v1"

Response: Similar to Get all products for a vendor

Status: 200 OK

This endpoint retrieves a product for a vendor by ID.

HTTP Request

GET https://app.jetbuilt.com/api/product_databases/<DB_ID>/vendors/<VENDOR_ID>/products/<ID>

URL Parameters

Parameter Description
DB_ID The ID of the the product database (see the Company endpoint)
VENDOR_ID The ID of the vendor (An approved Manufacturer or Distributor)
ID The ID of the product to retrieve

Errors

The Jetbuilt API uses the following error codes:

Error Code Meaning
400 Bad Request -- Your request is invalid.
401 Unauthorized -- Your API key is wrong.
403 Forbidden -- You don't have access to the resource.
404 Not Found -- The specified item could not be found.
406 Not Acceptable -- You requested an unsupported format.
422 Unprocessable Entity -- Unable to save because some required data was missing.
429 Too Many Requests -- You're making too many requests. Please slow down.
500 Internal Server Error -- We had a problem with our server. Try again later.
503 Service Unavailable -- We're temporarily offline for maintenance. Please try again later.

Rate Limiting

You can perform up to 50 requests per 10 second period from the same IP address when accessing the API. If you exceed this limit, you'll get a 429 Too Many Requests response for subsequent requests.