> ## Documentation Index
> Fetch the complete documentation index at: https://docs.flipapp.app/llms.txt
> Use this file to discover all available pages before exploring further.

# List products

> Return a paginated list of products for your organisation.

Returns products for the authenticated organisation. Results are ordered by
`created_at` descending.

Each item includes enriched display fields such as `season_name`,
`publisher_name`, `license_name`, and collection summaries when those relations
are set.

## Headers

<ParamField header="x-api-key" type="string" required>
  Organisation API key.
</ParamField>

<ParamField header="Accept-Version" type="string" default="1.0">
  API version. Use `1.0`.
</ParamField>

## Query parameters

<ParamField query="page" type="integer" default="1">
  Page number (1-based).
</ParamField>

<ParamField query="limit" type="integer" default="50">
  Page size. Maximum `100`.
</ParamField>

<ParamField query="search" type="string">
  Case-insensitive search across `title`, `isbn13`, `isbn10`, and `product_code`.
</ParamField>

<ParamField query="publishing_status_id" type="string">
  Filter by publishing status UUID (ONIX List 64).
</ParamField>

<ParamField query="lifecycle_status_id" type="string">
  Filter by lifecycle status UUID.
</ParamField>

<ParamField query="product_availability_id" type="string">
  Filter by product availability UUID (ONIX List 65).
</ParamField>

<ParamField query="format_id" type="string">
  Filter by format UUID.
</ParamField>

<ParamField query="include" type="string">
  Comma-separated embeds. Supported values: `product_territories` (shallow
  territory/market tree) and `sales_rights`. Omit for a lighter list payload.
</ParamField>

## Response

<ResponseField name="success" type="boolean" required>
  `true` when the request succeeds.
</ResponseField>

<ResponseField name="data" type="object[]" required>
  Array of enriched product objects.
</ResponseField>

<ResponseField name="meta" type="object" required>
  Pagination metadata.

  <Expandable title="properties">
    <ResponseField name="page" type="integer">
      Current page.
    </ResponseField>

    <ResponseField name="limit" type="integer">
      Page size used for this response.
    </ResponseField>

    <ResponseField name="total" type="integer">
      Total matching products.
    </ResponseField>

    <ResponseField name="total_pages" type="integer">
      Total pages available.
    </ResponseField>
  </Expandable>
</ResponseField>

<RequestExample>
  ```bash theme={null}
  curl -X GET "https://vzguoukmiwxvqdnabfma.supabase.co/functions/v1/api/products?page=1&limit=50" \
    -H "x-api-key: YOUR_API_KEY" \
    -H "Accept-Version: 1.0"
  ```
</RequestExample>

<ResponseExample>
  ```json theme={null}
  {
    "success": true,
    "data": [
      {
        "id": "123e4567-e89b-12d3-a456-426614174000",
        "title": "Example Book Title",
        "isbn13": "9781234567890",
        "publishing_status_id": "status-uuid",
        "format_id": "format-uuid",
        "license_id": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee",
        "license_name": "Example License",
        "license_badge_colour": "#7C3AED",
        "created_at": "2024-01-01T00:00:00Z",
        "updated_at": "2024-01-01T00:00:00Z"
      }
    ],
    "meta": {
      "page": 1,
      "limit": 50,
      "total": 100,
      "total_pages": 2
    }
  }
  ```
</ResponseExample>
