# List subscription products

```{raw} html
<div class="mo-api-page-show-toc" aria-hidden="true"></div>
```

List subscription products, monthly Credit prices, and product entitlements.

```text
GET https://billing.moi.matrixorigin.cn/api/v1/billing/accounts/$ACCOUNT_ID/subscription-products
```

## Before you begin

1. Prepare a valid [personal access token](../../../../../guides/billing/credentials.md#personal-access-token) for the account owner.
2. Call [List current accounts](../accounts/current.md) to obtain the target account’s ID.

## Request example

Replace `$MOI_PERSONAL_ACCESS_TOKEN` and `$ACCOUNT_ID` in the example with your personal access token and the selected account’s ID.

```bash
curl -X GET \
  "https://billing.moi.matrixorigin.cn/api/v1/billing/accounts/$ACCOUNT_ID/subscription-products" \
  -H "X-API-Key: $MOI_PERSONAL_ACCESS_TOKEN"
```

## Path parameters

::::{div} mo-api-parameter-table

| Parameter | Type | Required | Description |
| --- | --- | --- | --- |
| `accountID` | string | Yes | Target account ID from `items[].billing_account_id` in the List current accounts response. |

::::

## Successful response

Returns HTTP `200` with the available subscription products, prices, and entitlements.

:::::::{div} mo-api-tabs mo-api-response-tabs
::::::{tab-set}
:::::{tab-item} Response example

```json
{
  "items": [
    {
      "product_code": "enterprise_sso",
      "plan_code": "enterprise_identity",
      "name": "Enterprise Identity",
      "description": "SSO/SAML integration for enterprise identity management.",
      "product_price_id": "price_example",
      "price_credit_per_month": "300.000000000000",
      "currency": "CREDIT",
      "status": "active",
      "entitlement_version": 1,
      "entitlements": {
        "enterprise_sso": true,
        "support.priority": "priority"
      },
      "sort_order": 30
    }
  ],
  "total": 1
}
```

:::::
:::::{tab-item} Fields

| Field | Type | Description |
| --- | --- | --- |
| `items` | array of object | Records returned by this request. |
| `items[].product_code` | string | Subscription product code. |
| `items[].plan_code` | string | Plan code; may be omitted. |
| `items[].name` | string | Product name. |
| `items[].description` | string | Product description; may be omitted. |
| `items[].product_price_id` | string | Product price ID. |
| `items[].price_credit_per_month` | string | Monthly subscription price in Credit, as a decimal string. |
| `items[].currency` | string | Price unit, `CREDIT`. |
| `items[].status` | string | Product status. |
| `items[].entitlement_version` | integer | Entitlement version. |
| `items[].entitlements` | object | Product entitlements, with keys depending on the product. |
| `items[].entitlements.enterprise_sso` | boolean | Enterprise identity integration entitlement, when applicable. |
| `items[].entitlements["support.priority"]` | string | Support priority. The period is part of the key. |
| `items[].entitlements["model.private.deploy"]` | boolean | Private model deployment entitlement, when applicable. Periods are part of the key. |
| `items[].sort_order` | integer | Product display sort order. |
| `total` | integer | Total number of returned records. |

In field paths, `[]` denotes each array item. For example, `items[].product_code` refers to the corresponding field in each item.

:::::
::::::
:::::::

## Error response

Missing authentication returns HTTP `401`; provide a valid personal access token.

:::::::{div} mo-api-tabs mo-api-response-tabs
::::::{tab-set}
:::::{tab-item} Response example

```json
{
  "code": "unauthenticated",
  "message": "missing bearer token",
  "error": "missing bearer token"
}
```

:::::
:::::{tab-item} Fields

| Field | Type | Description |
| --- | --- | --- |
| `code` | string | Error code. |
| `message` | string | Error message. |
| `error` | string | Compatibility error message, with the same content as message. |

:::::
::::::
:::::::
