---
title: "List products"
method: GET
path: "/v1/products"
tags: ["v1 - Products"]
---

# List products

`GET /v1/products`

## Request

- Base URL: `https://light.inc` (the document declares no server; this is the origin it was published from)
- URL: `https://light.inc/v1/products`
- Auth: one of:
  - API key in header `Authorization`
  - HTTP bearer

Returns a list of products

## Query parameters

- `sort` string: Sort string in the format `field:direction`. To provide multiple sort fields, separate them with commas. Available directions: `asc`, `desc`. Available fields: `name`, `createdAt`, `updatedAt`.
- `filter` string: Filter string in the format `field:operator:value`. To provide multiple filters, separate them with commas. Available operators: `eq`, `ne`, `in`, `not_in`, `gt`, `gte`, `lt`, `lte`. - For `in` and `not_in` operators, provide multiple values separated by the pipe character (`|`). Available fields: `id`, `name`, `pricingType`, `recurrence`, `state`, `invoiceReceivableId`, `updatedAt`.
- `limit` integer
- `offset` integer
- `cursor` string

## Response `default`

default response

- ExternalPaginatedResponseV1ModelExternalProductV1Model
  - `records` ExternalProductV1Model[]: List of records for the current page
    - `id` string, uuid: Unique identifier for the object
    - `companyId` string, uuid: ID of the company
    - `name` string: Name of the product
    - `pricingType` 'FIXED' | 'PACKAGE': Pricing type of the product - `FIXED` - The product has a single price per unit - `PACKAGE` - The product is sold in packages with a fixed quantity ⚠️ This enum is not exhaustive; new values may be added in the future.
    - `billingRecurrence` 'ONE_TIME' | 'MONTHLY' | 'QUARTERLY' | 'HALF_YEARLY' | 'YEARLY': Billing frequency for the product. Used in contracts - `ONE_TIME` - The product is billed once - `MONTHLY` - The product is billed every month - `QUARTERLY` - The product is billed every three months - `HALF_YEARLY` - The product is billed every six months - `YEARLY` - The product is billed every year ⚠️ This enum is not exhaustive; new values may be added in the future.
    - `pricings` ExternalProductPricingV1Model[]: List of product price per currency
      - `currency` string
      - `amount` integer: Price in cents
    - `state` 'ACTIVE' | 'ARCHIVED': Product state - `ACTIVE` - The product is active and can be used in invoices and contracts - `ARCHIVED` - The product is archived and cannot be used in new invoices or contracts ⚠️ This enum is not exhaustive; new values may be added in the future.
    - `defaultTaxId` string, uuid, nullable: ID of the default tax code for this product. Will be assigned to invoice lines when creating a line with this product
    - `defaultAvataxCode` string, nullable: Default Avalara tax code. Used when the invoice tax engine is `AVATAX`. Will be assigned to invoice lines when creating a line with this product
    - `defaultLedgerAccountId` string, uuid, nullable: ID of the default ledger account for this product. Will be assigned to invoice lines when creating a line with this product
    - `externalSource` ExternalApiExternalSourceV1Model, nullable: The external system where this product was synced from
      - `name` 'CHARGEBEE' | 'HUBSPOT' | 'SALESFORCE' | 'STRIPE': The name of the external source - `CHARGEBEE` - Data synced from Chargebee - `HUBSPOT` - Data synced from HubSpot - `SALESFORCE` - Data synced from Salesforce - `STRIPE` - Data synced from Stripe ⚠️ This enum is not exhaustive; new values may be added in the future.
      - `externalId` string: The ID of the object in the external source system
    - `createdAt` string, date-time: Timestamp when the product was created
    - `updatedAt` string, date-time: Timestamp when the product was last updated
    - `customProperties` ExternalCustomPropertyV1Model[], nullable: List of custom properties associated with the product
      - `groupId` string, uuid: ID of the custom property group
      - `groupInternalName` string: Internal name of the custom property group
      - `values` ExternalCustomPropertyValueV1Model[]: List of values. Note that this will be a single value unless the group input type supports multiple values
        - `id` string, uuid: Unique identifier for the object
        - `groupId` string, uuid: ID of the custom property group
        - `groupInternalName` string: Internal name of the custom property group
        - `companyId` string, uuid: ID of the company
        - `internalName` string: Internal name of the custom property value
        - `label` string: Label of the custom property value
        - `context` string, nullable: Context/description of the custom property value
        - `createdAt` string, date-time: Timestamp when the custom property value was created
        - `updatedAt` string, date-time: Timestamp when the custom property value was last updated
  - `hasMore` boolean: Boolean flag indicating if there are more records available
  - `total` integer, nullable: Total number of records (only for offset pagination). This field is not guaranteed to be returned and only available for offset pagination, please do not rely on it and migrate to cursor pagination.
  - `nextCursor` string, nullable: Cursor for fetching the next page (only for cursor pagination)
  - `prevCursor` string, nullable: Cursor for fetching the previous page (only for cursor pagination)

---

[API](https://skmtc.dev/light/apis/light-api.md) - [All operations](https://skmtc.dev/light/apis/light-api/llms.txt) - [OpenAPI document](https://skmtc.dev/light/apis/light-api/revisions/84f51306f648?raw)
