List tenants
Every tenant asserted in a workspace, newest first. The census of who your agents have worked for.
A tenant is a record, not a configuration
There is nospec on a tenant, because there is nothing to configure. Everything lives in the metadata envelope: external_id is the key you asserted it under, name is the most recent name you asserted, and updated_at is when you last asserted it. Assert a new name and the record updates in place.
info costs extra, so ask for it
includeInfo=true populates three counts per tenant: subjectCount, objectiveCount, and widgetSessionCount. objectiveCount spans every surface, widget conversations and direct API objectives alike, so it is the footprint an erase would destroy. Each count is a query per tenant, which is why the field stays empty unless you ask.
Filtering
query does a substring match against each tenant’s name and external_id. It exists for type-ahead pickers, where the operator knows the customer’s own identifier rather than Cadenya’s. labels filters by metadata labels with AND semantics (env=prod,team=ai). sortOrder, limit, and cursor page the list the usual way; the SDK iterators follow the cursor for you.
Related
Get a tenant
external_id: form.List a tenant's subjects
Erase a tenant
Create a widget session
Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Path Parameters
Workspace ID.
"workspace_01HXKD2E5NQM3T9AYWCF133E3Q"
Query Parameters
Maximum number of results to return.
Pagination cursor from previous response.
Substring match against the tenant's name and external_id. Built for type-ahead filter pickers, where the operator knows the customer's own identifier rather than Cadenya's.
Filters by metadata labels. Comma-separated key=value pairs, e.g. "env=prod,team=ai". A resource matches only if every pair matches exactly (AND semantics).
Sort order for results (asc or desc by creation time).
When true, the info field on each returned tenant is populated. This
costs several count queries per tenant, so it is off by default.