# Iblai API Agent Access

> Manage role-based access to an ibl.ai agent via the platform API — list role policies, search users/groups, and grant/revoke editor, chat, or analytics_viewer roles for users, groups, and emails. Use when controlling who can edit, chat with, or view analytics for an agent.

- Skill: `iblai/iblai-api-agent-access` (Agent Skill)
- Install (CLI): `npx skillmds@latest add iblai/iblai-api-agent-access`
- Raw SKILL.md: https://api.skillmd.com/api/skills/iblai/iblai-api-agent-access/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Data & Analytics
- Author: iblai (https://skillmd.com/u/iblai)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/iblai/iblai-api-agent-access

---


# iblai-api-agent-access

Manage role-based access control that decides who can **edit**, **chat with**, or
**view analytics for** an agent. Searches resolve users and groups; every grant
and revoke flows through the single `mentor-access/` write endpoint. Use when
controlling who can edit, chat with, or view analytics for an agent.

## Auth & conventions

- **Base URL:** `https://api.iblai.app`
- **Header:** `Authorization: Api-Token $IBLAI_API_KEY` on every request.
- **Path vars:** `{org}` = `$IBLAI_ORG`, `{username}` = `$IBLAI_USERNAME`,
  `{mentor}` = the agent's unique id (e.g. `d17dc729-60fd-4363-81a0-f67d9318b03e`).
- **Access writes** go through one endpoint —
  **POST** `https://api.iblai.app/dm/api/core/rbac/mentor-access/` — keyed by the
  numeric `mentor_id`, adding/removing users, groups, and emails per `role`.
- Not connected yet? Run **`/iblai-api-login`** first to populate `IBLAI_ORG`,
  `IBLAI_USERNAME`, and `IBLAI_API_KEY`.

## Reads

- **GET** `…/users/{username}/mentors/{mentor}/settings/` — resolve the numeric `mentor_id`.
- **GET** `https://api.iblai.app/dm/api/core/rbac/mentor-access/?mentor_id={id}&platform_key={org}` — list current role policies.
- **POST** `https://api.iblai.app/dm/api/core/rbac/permissions/check/` — can the user search users/groups?
  ```json
  {
    "platform_key": "string (required)",
    "resources": ["/users/", "/groups/"]
  }
  ```
- **GET** `https://api.iblai.app/dm/api/core/platform/users/?platform_key={org}&platform_org={org}&query={q}&page=1&page_size=20&return_policies=false` — user autocomplete.
- **GET** `https://api.iblai.app/dm/api/core/rbac/groups/?platform_key={org}&name={q}&page=1&page_size=20&include_users=true` — group autocomplete.

## Writes

- **POST** `https://api.iblai.app/dm/api/core/rbac/mentor-access/` — grant / revoke access (all access changes go through this one endpoint):
  ```json
  {
    "platform_key": "string (required)",
    "mentor_id": "number (required)",
    "role": "editor | chat | analytics_viewer (required)",
    "users_to_add": "number[]",
    "users_to_remove": "number[]",
    "groups_to_add": "number[]",
    "groups_to_remove": "number[]",
    "emails_to_add": "string[]",
    "usernames_to_add": "string[]"
  }
  ```

## Example

Grant a user (id `4218`) the **chat** role and revoke a group (id `91`) on the agent:

```bash
curl -X POST \
  "https://api.iblai.app/dm/api/core/rbac/mentor-access/" \
  -H "Authorization: Api-Token $IBLAI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "platform_key": "'"$IBLAI_ORG"'",
    "mentor_id": 1057,
    "role": "chat",
    "users_to_add": [4218],
    "groups_to_remove": [91]
  }'
```

## Notes

- The write endpoint takes the **numeric `mentor_id`**, not the `{mentor}` UUID —
  resolve it from the `settings/` read first.
- One role per POST: send `role` as `editor`, `chat`, or `analytics_viewer` and
  the add/remove arrays apply to that role only.
- Use `permissions/check/` before searching — if the user lacks
  access to `/users/` or `/groups/`, skip the corresponding autocomplete.
- `emails_to_add` and `usernames_to_add` invite by identifier without a prior id
  lookup; users and groups are added/removed by numeric id from the search reads.

