# Subscriptions

`GET https://api.tentary.com/v1/reports/subscriptions`

Source: https://tentary.com/en/help/api/get-subscription-summary/
Area: Reports
MCP tool: `get_subscription_summary`. Reads only. Changes nothing in the account.

---

Subscriptions and installment plans now, the products with subscribers, and new and ended subscriptions by month. The default period is the last 12 months, UTC.

**Subscription states:**

- `active`: subscriptions that renew. A renewal in progress counts.
- `cancelling`: cancelled, with access until the end date and no renewal.
- `past_due`: a renewal payment failed. Tentary tries again on day 2, 7 and 14, and the buyer has no access in this time. A retry in progress counts here.
- `renewal_overdue`: the renewal or its retries did not run on time (see `warnings`). Not in `active`.
- `with_access`: subscriptions whose buyers can open the product now, by the access rules of Tentary. This is not the sum of the other counts.

**Revenue and endings:**

- `mrr`: monthly recurring revenue of the active subscriptions. It is the renewal price per month, after an intro price or coupon, VAT included, per currency and not converted.
- `ended_cancelled` counts by the end of access, because Tentary does not store the day of the cancel click.
- `ended_payment_failed` counts by the last failed try.

**Installment plans** are not subscriptions:

- `open_amount`: installments not paid yet.
- Failed plans: all payment tries failed. `failed_open_amount` is still unpaid and can be collected with payment reminders or debt collection. Plans whose claim the account owner closed are left out.

For revenue, call [`GET /v1/reports/revenue`](https://tentary.com/en/help/api/get-revenue-report/).

## Authorization

`Authorization: Bearer <API key>`

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

## Query parameters

- `from` (string, query): First day (UTC) for new and ended subscriptions, like 2026-01-01. Limits: pattern ^[0-9]{4}-[0-9]{2}-[0-9]{2}$.
- `to` (string, query): Last day (UTC), like 2026-12-31. Default today. 731 days at most. Limits: pattern ^[0-9]{4}-[0-9]{2}-[0-9]{2}$.
- `product_id` (integer, query): Only this product (id from list_products). Limits: min 1.

## Response

- `today` (string<date>): Like 2026-01-31.
- `product` (object, can be null): The product.
  - `id` (integer): The ID.
  - `name` (string): The name.
- `subscriptions` (object): The subscriptions.
  - `active` (integer): Subscriptions that renew.
  - `cancelling` (integer): Cancelled, with access until the end date.
  - `with_access` (integer): Subscriptions whose buyers can open the product now.
  - `past_due` (integer): A renewal payment failed; Tentary tries again.
  - `renewal_overdue` (integer): The renewal did not run on time.
  - `mrr` (array of object): Monthly recurring revenue of the active subscriptions, VAT included, per currency.
    - `currency` (string): Currency code, like EUR.
    - `amount` (string): Decimal string, like "19.90". Amount in this currency.
  - `active_by_interval` (array of object): Active subscriptions per billing interval.
    - `interval_months` (integer): Months between payments.
    - `active` (integer): Active subscriptions.
- `installment_plans` (object): Payment plans that buyers can choose.
  - `running` (integer): Plans that are paid on time.
  - `cancelling` (integer): Cancelled, with access until the end date.
  - `past_due` (integer): A payment failed; Tentary tries again.
  - `renewal_overdue` (integer): The payment did not run on time.
  - `failed` (integer): All payment tries failed.
  - `failed_in_debt_collection` (integer): Failed plans in debt collection.
  - `open_amount` (array of object): Installments not paid yet.
    - `currency` (string): Currency code, like EUR.
    - `amount` (string): Decimal string, like "19.90". Amount in this currency.
  - `failed_open_amount` (array of object): Still unpaid of the failed plans.
    - `currency` (string): Currency code, like EUR.
    - `amount` (string): Decimal string, like "19.90". Amount in this currency.
- `products` (array of object): The products.
  - `product` (object): The product.
    - `id` (integer): The ID.
    - `name` (string, can be null): The name.
  - `active` (integer): Active subscriptions.
  - `cancelling` (integer): Cancelled, with access until the end date.
  - `mrr` (array of object): One entry per currency. Amounts are not converted.
    - `currency` (string): Currency code, like EUR.
    - `amount` (string): Decimal string, like "19.90". Amount in this currency.
- `more_products` (boolean): true = more products than this list.
- `from` (string<date>): Like 2026-01-31.
- `to` (string<date>): Like 2026-01-31.
- `periods` (array of object): One entry per period.
  - `period` (string): Month, like 2026-01.
  - `new` (integer): New subscriptions.
  - `ended_cancelled` (integer): By the end of access.
  - `ended_payment_failed` (integer): By the last failed try.
- `warnings` (array of string): Things that the seller should know.
- `links` (object): Pages in the Tentary app or on tentary.com.
  - `orders` (string<uri>): Page in the Tentary app.

## Example request

```bash
curl "https://api.tentary.com/v1/reports/subscriptions?from=2026-08-01&to=2026-10-27" \
  -H "Authorization: Bearer $TENTARY_API_KEY"
```

## Example response

```json
{
  "today": "2026-10-27",
  "product": null,
  "subscriptions": {
    "active": 1,
    "cancelling": 0,
    "with_access": 1,
    "past_due": 0,
    "renewal_overdue": 0,
    "mrr": [
      {
        "currency": "EUR",
        "amount": "19.00"
      }
    ],
    "active_by_interval": [
      {
        "interval_months": 1,
        "active": 1
      }
    ]
  },
  "installment_plans": {
    "running": 0,
    "cancelling": 0,
    "past_due": 0,
    "renewal_overdue": 0,
    "failed": 0,
    "failed_in_debt_collection": 0,
    "open_amount": [],
    "failed_open_amount": []
  },
  "products": [
    {
      "product": {
        "id": 103,
        "name": "Yoga Club"
      },
      "active": 1,
      "cancelling": 0,
      "mrr": [
        {
          "currency": "EUR",
          "amount": "19.00"
        }
      ]
    }
  ],
  "more_products": false,
  "from": "2026-08-01",
  "to": "2026-10-27",
  "periods": [
    {
      "period": "2026-08",
      "new": 1,
      "ended_cancelled": 0,
      "ended_payment_failed": 0
    },
    {
      "period": "2026-09",
      "new": 0,
      "ended_cancelled": 0,
      "ended_payment_failed": 0
    },
    {
      "period": "2026-10",
      "new": 0,
      "ended_cancelled": 0,
      "ended_payment_failed": 0
    }
  ],
  "warnings": [],
  "links": {
    "orders": "https://app.tentary.com/orders"
  }
}
```
