FruxonDocs
Agent NetworkParticipants

Lists participants in the tenant

Returns participants ordered by display name, each with its inline channels and current agent bindings. Pass `agentId` to narrow the result to the participants bound to a single agent — the Agent Network UI uses this to render an agent's contact list. Always paged (an agent's roster can run to thousands): each response carries `nextPageToken` and `totalCount`, and an omitted `pageSize` takes the server default rather than returning everything. Consumers that need the whole roster page through `nextPageToken`.

GET
/v1/tenants/{tenant}/participants
AuthorizationBearer <token>

JWT Authorization header using the Bearer scheme. Enter 'Bearer' [space] and then your token.

In: header

Path Parameters

tenant*string

The tenant identifier

Query Parameters

agentId?string

If supplied, only participants bound to this agent are returned.

PageSize?integer

The maximum number of items to return per page

Formatint32
PageToken.Skip?integer
Formatint32
PageToken.Cursor?string

Opaque cursor token from an external system (e.g. RAG API). When set, M:Fruxon.Common.Collections.PageToken.AsString returns this value directly instead of encoding Fruxon.Common.Collections.PageToken.Skip.

orderBy?

Sort order (AIP-132 orderBy); defaults to display name ascending — powers the Directory table's sortable column headers.

search?string

Optional case-insensitive substring filter (search query parameter) matched against the participant display name — powers the Executions participant filter's typeahead. Omit for the unfiltered roster.

kind?array<ParticipantKind>

Optional participant-kind filter (PERSON / GROUP / AI_AGENT), repeatable (?kind=PERSON&kind=GROUP) — powers the Directory's contact-kind filter, whose "all contacts" is the two human kinds rather than literally every kind. Omit for all kinds.

environmentId?string

Optional environment filter (environmentId query parameter) — narrows the roster to contacts in one workspace environment, pushed to the (TenantId, EnvironmentId) index. Omit for all environments.

Formatuuid
environmentGroup?string

Optional rollup-group filter (environmentGroup query parameter, exact match) — narrows the roster to every contact in one chain / holding / district, i.e. across all of that group's environments. Combines with environmentId as an AND. Omit for all groups.

enrolled?boolean

Optional enrollment filter (enrolled=true / enrolled=false) — narrows the roster to the contacts an agent currently answers, or to the ones nobody has been turned on for yet (the state a directory import leaves behind). Network-agnostic, matching the enrolled flag on each row; see Fruxon.Model.Participants.ParticipantResponse.Enrolled. Omit for both.

tier?array<ParticipantTier>

Optional directory-tier filter (CURATED / AMBIENT), repeatable (?tier=CURATED&tier=AMBIENT). Omitting it keeps the tenant-wide default of CURATED only — ambient identities are auto-created (embed web visitors, memory-minted channel senders) and are deliberately not directory citizens, so they surface only when asked for by tier. That ask is what powers the Directory's Visitors view. Under agentId there is no default: the panel lists whatever is bound to the agent, and this filter simply narrows it.

Response Body

curl -X GET "https://api.fruxon.com/v1/tenants/string/participants"
{
  "items": [
    {
      "id": "00000000-0000-0000-0000-000000000000",
      "kind": "PERSON",
      "tier": "CURATED",
      "audience": "UNKNOWN",
      "displayName": "string",
      "email": "string",
      "relatedAgentId": "string",
      "description": "string",
      "expertise": [
        "string"
      ],
      "area": "string",
      "bio": "string",
      "preferredLanguage": "string",
      "environmentId": "00000000-0000-0000-0000-000000000000",
      "displayNameSource": "SYNCED",
      "bioSource": "SYNCED",
      "environmentSource": "SYNCED",
      "preferences": [
        "string"
      ],
      "accounts": [],
      "addresses": [],
      "isDebugOnly": false,
      "agentIds": [
        "string"
      ],
      "disabledAt": 0,
      "enrolled": false,
      "autoEnrolled": false,
      "health": {
        "reachable": false,
        "channels": [],
        "reason": null
      },
      "channelActivations": [],
      "avatarFileId": "string",
      "avatarSource": "UPLOADED",
      "avatarSourceConfigId": "00000000-0000-0000-0000-000000000000",
      "avatarSourceAddress": "string",
      "avatarSyncedAt": 0,
      "avatarAutoSync": {
        "synced": false,
        "provider": "string",
        "address": "string"
      },
      "createdAt": 0,
      "modifiedAt": 0
    }
  ],
  "nextPageToken": "string",
  "totalCount": 0
}
Empty
Empty
{
  "type": "string",
  "title": "string",
  "status": 0,
  "detail": "string",
  "instance": "string",
  "property1": null,
  "property2": null
}