---
title: Products Guide
description: 'Search the catalog, and look up product details and available add-ons by SKU and delivery address'
sidebar:
  label: Guide
---

The Products API allows you to search the product catalog and retrieve product information including
pricing and available add-ons, tailored to a specific delivery address. This is useful for building product
search and detail pages, previewing add-on options, or validating product availability before creating an offer.

## Benefits

- **Search:** Find products by free-text term, supplier, category, and physical dimensions
- **Discovery:** Look up any product by SKU (pass it as `searchTerm`) and see its current availability and pricing
- **Add-Ons:** Retrieve grouped add-on products and included parts available for a given address
- **Address-Aware:** Results reflect availability and pricing based on the customer's delivery location

## Core Concepts

**Product**

A product identified by SKU with a title and price

**Add-On**

A named collection of related add-on products (e.g., Install, Disconnect)

**Add-On Product**

An individual add-on item with its own SKU, category, and price

**Recommended Part**

A related product which may not be included in an add-on group (e.g. Laundry Storage Pedestal)

## Looking up a single product by SKU

`GET /products/{sku}` is **deprecated**. It keeps working for now, and every successful response carries a
`Deprecation: true` header, but new integrations should use the search endpoint instead:

1. Call `GET /products?searchTerm={sku}`, and add `supplier` when you know which supplier carries the SKU.
   `GET /product-suppliers` lists the `supplier` values your token can search; any other value returns
   `400 INVALID_SUPPLIER`.
2. Send the same address query parameters (`line1`, `city`, `stateOrProvince`, `postalCode`) to include
   pricing, add-ons, recommended parts, warranties, and availability.
3. The response is a page of matches. When you want exactly one product, select the item whose `sku`
   equals the SKU you searched for. An empty `items` array means the SKU was not found.

Everything `GET /products/{sku}` returns is available on the search item — `priceCents`, `addOns`, and
`recommendedParts` — alongside `availability`, `warranties`, `dimensions`, and `availableFulfillmentMethods`,
which the deprecated endpoint never returned.

## Including fulfillment methods

`availableFulfillmentMethods` is empty unless you set `includeAvailableFulfillmentMethods=true` and send an
address.

> **Warning**
>
> Resolving fulfillment methods is the slowest part of a search, and the time grows with the number of matching
> products. On a broad search term this can exceed the request timeout and return a `500`. Our recommended
> pattern for searching the product catalog is to search with the flag off first, then re-run the search with
> the flag on for the specific SKUs you need.

## Authentication

`GET /products` (search) requires a Public REST API token that carries the `read:products` scope. Create
the token in the [developer dashboard](https://developer.sibipro.com) and grant it that scope, then send it
as `Authorization: Bearer <token>`. A request with a token that lacks the scope receives a `403` with code
`INSUFFICIENT_SCOPE`; a token issued for the GraphQL API receives a `403` with code `REST_TOKEN_REQUIRED`.

`GET /products/{sku}` accepts the same Public REST API token, applies the same `read:products` scope
check, and refuses a GraphQL token with the same `403 REST_TOKEN_REQUIRED`.

## Next Steps

1. **Review Documentation**

    Read through API reference and authentication requirements

2. **Development**

    Try searching for a product by SKU and reading its add-ons

3. **Production**

    Go live with your integration

## Endpoints

**[Products endpoints](/api-reference/products)**

Every endpoint with parameters, response schemas, and code samples.
