# Products

`GET https://api.tentary.com/v1/products`

Source: https://tentary.com/de/help/api/list-products/
Area: Produkte und Dateien
MCP tool: `list_products`. Reads only. Changes nothing in the account.

---

The products of the account, newest first: name, type, status, price, billing, number of sales, shop link and admin link.

- `price` is the normal price. `current_price` is what buyers pay now: a running limited offer replaces the price.
- `sales` counts paid orders and orders in payment of all time, refunded and free orders included. `paid_sales` counts only orders with an amount above 0.
- Without `status`, the list has live and draft products. Archived products are deleted products.
- Prices are in the account currency.

For texts, images, files, variants and the linked course, call [`GET /v1/products/{product_id}`](https://tentary.com/de/help/api/get-product/).

## Authorization

`Authorization: Bearer <API key>`

A personal API key (tnt_...). Create it in the Tentary app on the page AI & API.

## Query parameters

- `type` (string, query): Only products of this type. Allowed values: `download`, `link`, `newsletter`, `booking`, `course`, `bundle`, `external`.
- `status` (string, query): Only products with this status. Allowed values: `live`, `draft`, `archived`.
- `query` (string, query): Part of the product name. Limits: maxLength 100.
- `cursor` (string, query): next_cursor of the previous page. Send the same filters and limit again: the cursor does not keep them. Leave out for the first page.
- `limit` (integer, query): Items per page, default 25. Limits: min 1, max 50.

## Response

- `currency` (string): Currency code, like EUR. Prices are in this currency.
- `products` (array of object): Newest first.
  - `id` (integer): The ID.
  - `name` (string): Product name.
  - `type` (string): The type. Allowed values: `download`, `link`, `newsletter`, `booking`, `course`, `bundle`, `external`.
  - `status` (string): archived = deleted. Allowed values: `live`, `draft`, `archived`.
  - `price` (string): Decimal string, like "19.90". Normal price.
  - `current_price` (string): Decimal string, like "19.90". What buyers pay now: a running limited offer replaces the price.
  - `price_is_from` (boolean): true = the product has variants and price is the lowest variant price.
  - `billing` (string): How the buyer pays: one_time, subscription or installments. Allowed values: `one_time`, `subscription`.
  - `billing_interval_months` (integer, can be null): Subscription: months between payments.
  - `hide_in_shop` (boolean): true = not shown on the shop page.
  - `sales` (integer): Paid orders and orders in payment of all time, refunded and free orders included.
  - `paid_sales` (integer): Orders with an amount above 0.
  - `url` (string<uri>): Sales page.
  - `checkout_url` (string<uri>, can be null): Checkout page. Only for live products.
  - `admin_url` (string<uri>): The product in the Tentary app.
- `next_cursor` (string, can be null): Send it as cursor for the next page, with the same filters and limit. null = this is the last page.
- `links` (object): Pages in the Tentary app or on tentary.com.
  - `products` (string<uri>): Page in the Tentary app.

## Example request

```bash
curl "https://api.tentary.com/v1/products?status=live&limit=2" \
  -H "Authorization: Bearer $TENTARY_API_KEY"
```

## Example response

```json
{
  "currency": "EUR",
  "products": [
    {
      "id": 103,
      "name": "Yoga Club",
      "type": "link",
      "status": "live",
      "price": "19.00",
      "current_price": "19.00",
      "price_is_from": false,
      "billing": "subscription",
      "billing_interval_months": 1,
      "hide_in_shop": false,
      "sales": 1,
      "paid_sales": 1,
      "url": "https://lena-yoga.mytentary.com/p/yoga-club",
      "checkout_url": "https://lena-yoga.mytentary.com/p/yoga-club/checkout",
      "admin_url": "https://app.tentary.com/products/edit/103"
    },
    {
      "id": 102,
      "name": "Morning Yoga in 30 Days",
      "type": "course",
      "status": "live",
      "price": "49.00",
      "current_price": "39.00",
      "price_is_from": false,
      "billing": "one_time",
      "billing_interval_months": null,
      "hide_in_shop": false,
      "sales": 1,
      "paid_sales": 1,
      "url": "https://lena-yoga.mytentary.com/p/morning-yoga",
      "checkout_url": "https://lena-yoga.mytentary.com/p/morning-yoga/checkout",
      "admin_url": "https://app.tentary.com/products/edit/102"
    }
  ],
  "next_cursor": "aWQ6MTAy",
  "links": {
    "products": "https://app.tentary.com/products"
  }
}
```
