---
title: "List Tenant Services"
method: GET
path: "/v1/tenant/services"
tags: ["customer"]
---

# List Tenant Services

`GET /v1/tenant/services`

## Request

- Base URL: `https://api.4chems.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.4chems.com/v1/tenant/services`
- Auth: HTTP bearer

Return the caller's tenant's active service subscriptions. Call this before
offering to add a service, to check what is already subscribed.

Like every tenant-scoped operation (ADR 0016 decision 6), accepts an
optional `tenant_id`; omitted, the tenant comes from the token's
`organization` claim when the subject relates to exactly one tenant, else
`422 tenant.ambiguous`. Requires at least `viewer` — gated on the
DB-derived level, not merely the token's `organization` claim, so a
member whose assignment was revoked cannot read a stale tenant's
subscriptions even with a token that still carries the claim.

## Query parameters

- `tenant_id` string, nullable

## Response `200`

Successful Response

- object[]

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/4chems/apis/platform-api.md) · [All operations](https://skmtc.dev/4chems/apis/platform-api/llms.txt) · [OpenAPI document](https://skmtc.dev/4chems/apis/platform-api/revisions/65e4f7b4dba0?raw)
