---
title: "List Product Contracts"
method: GET
path: "/product_contracts"
tags: ["Product Contracts"]
---

# List Product Contracts

`GET /product_contracts`

## Request

- Base URL: `https://sandbox.api.lemon.markets/v1`
- URL: `https://sandbox.api.lemon.markets/v1/product_contracts`
- Auth: HTTP bearer
- TypeScript: <https://skmtc.dev/lemon/apis/lemon-markets-brokerage-api/docs/product_contracts/get.ts> (a function with typed inputs; its response is checked against the schema)

Returns the active product contracts available to you, together with the instruments eligible under each contract. Draft and retired contracts are not returned.

## Query parameters

- `cursor` string
- `limit` integer
- `type` 'brokerage' | 'retirement': The type of product a contract belongs to. <ul> <li><code>brokerage</code>: the lemon.markets brokerage product. <li><code>retirement</code>: the lemon.markets retirement account (Altersvorsorgedepot) product. </ul>

## Headers

- `LMG-Data-Privacy-Access-Principal` string, required
- `LMG-Data-Privacy-Access-Justification` string, required

## Response `200`

Successful Response

- EncodedPaginatedCollectionResponseProductContractResponse
  - `data` ProductContractResponse[], required: The elements of the response.
    - `id` string, required: The product contract identifier. Pass it as <code>contract</code> when creating a retirement product via <code>POST /accounts/{account_id}/products</code>.
    - `type` 'brokerage' | 'retirement', required: The type of product a contract belongs to. <ul> <li><code>brokerage</code>: the lemon.markets brokerage product. <li><code>retirement</code>: the lemon.markets retirement account (Altersvorsorgedepot) product. </ul>
    - `contract_name` string, required: The name of the contract.
    - `contract_type` 'standarddepot' | 'self_directed', required: The type of the contract. <ul> <li><code>standarddepot</code>: a standard depot contract. <li><code>self_directed</code>: a self-directed contract. </ul>
    - `certification_number` string, required: The certification number of the contract.
    - `provider_number` string, required: The number of the contract provider.
    - `provider_name` string, required: The name of the contract provider.
    - `provider_model` 'external' | 'lmb', required: Who provides the contract. <ul> <li><code>external</code>: an external provider. <li><code>lmb</code>: lemon.markets. </ul>
    - `status` 'active', required: The status of the contract. Only active contracts are returned.
    - `valid_from` string, date-time, required: The time from which the contract is valid.
    - `valid_until` string, date-time, nullable, required: The time until which the contract is valid, or <code>null</code> if it has no end date.
    - `fee_annual_payin_aum_pct` string, number, required: The annual fee charged on assets under management, as a percentage (<code>1.00</code> is 1%) for payin phase.
    - `fee_annual_payout_aum_pct` string, number, required: The annual fee charged on assets under management, as a percentage (<code>1.00</code> is 1%) for payout phase.
    - `fee_provider_switch_amount` string, number, required: The one time fee for switching depot providers, in EUR.
    - `fee_transaction_buy_amount` string, number, required: The fee charged per buy transaction, in EUR.
    - `fee_transaction_sell_amount` string, number, required: The fee charged per sell transaction, in EUR.
    - `instruments` ProductContractInstrumentResponse[], required: The instruments eligible under the contract.
      - `instrument` string, required: The ISIN of an instrument that is eligible under the contract.
      - `risk_class` integer, required: The risk class of the instrument within the contract, from <code>1</code> (lowest) to <code>7</code> (highest).
  - `pagination` Pagination, required: Information about accessing elements beyond the ones that were returned.
    - `next_cursor` string: When fetching long lists of elements, you can use our pagination feature to fetch batches of data. If a response contains the property `pagination.next_cursor`, you can pass its value via the query item `cursor` to generate the request for the next batch of data.

## Other responses

- `400`: Bad Request
- `401`: Unauthorized
- `422`: Unprocessable Entity
- `5XX`: Server Error

## Changes

- **2026-11-03** `1f1df208c0e4`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/lemon/apis/lemon-markets-brokerage-api/changes/product_contracts/get.md)

---

[API](https://skmtc.dev/lemon/apis/lemon-markets-brokerage-api.md) - [All operations](https://skmtc.dev/lemon/apis/lemon-markets-brokerage-api/llms.txt) - [OpenAPI document](https://skmtc.dev/lemon/apis/lemon-markets-brokerage-api/revisions/1f1df208c0e4?raw)
