# Users

> Manage users, get /me and organization, update profiles and metadata, invite members — with pagination and search.

Language: en
Canonical: https://www.dailybot.com/developers/api/users
Markdown: send header `Accept: text/markdown` on any URL to receive Markdown instead of HTML.
Last Updated: 2026-07-09

---

# Users & Organization

Manage users, get context info (`/me`), retrieve organization details, update profiles and metadata, and invite members.

## Endpoints summary

| Method | Endpoint | Description |
|--------|----------|-------------|
| GET | `/v1/me/` | Get context info (authenticated user + organization) |
| GET | `/v1/organization/` | Get organization details |
| GET | `/v1/users/` | List all users |
| GET | `/v1/users/{uuid}/` | Get a specific user |
| PATCH | `/v1/users/{uuid}/` | Update a user |
| POST | `/v1/invite-user/` | Invite a user (see [Invitations API](/developers/api/invitations)) |

---

## Personalization

Private per-user dashboard state under `/v1/me/...`. **Not** gated by Labels entitlement — any authenticated member can use preferences, saved views, and Featured.

| Method | Endpoint | Description |
|--------|----------|-------------|
| GET/PUT/DELETE | `/v1/me/dashboard-preferences/{surface}/` | Last-applied filters for `forms_home`, `workflows_home`, or `followups_home` |
| GET/POST | `/v1/me/saved-views/` | List or create named saved views |
| GET/PATCH/DELETE | `/v1/me/saved-views/{view_uuid}/` | Manage one saved view |
| GET | `/v1/me/featured/?entity_type=` | List Featured entity UUIDs (`forms`, `automations`, `checkins`) |
| PUT | `/v1/me/featured/{entity_type}/{entity_uuid}/` | Toggle Featured (`{"featured": true\|false}`) |
| POST | `/v1/me/featured/batch/` | Batch feature/unfeature |

**Empty preference:** `GET /v1/me/dashboard-preferences/{surface}/` with no saved state returns `200`:

```json
{"surface": "forms_home", "schema_version": 1, "filters": {}, "updated_at": null}
```

`DELETE` on dashboard preferences is idempotent (`204`). Writes accept canonical `filters`; legacy `payload` is still accepted (`filters` wins when both are sent).

When Labels are unavailable, preference payloads may retain Label filters at rest but responses omit them with warning `labels_feature_unavailable`.

Featured is **private per user** — `is_featured` on forms/check-ins/automations list endpoints reflects only the caller, never teammates.

---

## GET /v1/me/

Returns information about the authenticated user and their organization.

```bash
curl -X GET "https://api.dailybot.com/v1/me/" \
  -H "X-API-KEY: $DAILYBOT_API_KEY"
```

**Response (200 OK):**

```json
{
  "id": "usr_abc123",
  "email": "you@company.com",
  "first_name": "Jane",
  "last_name": "Doe",
  "role": "admin",
  "timezone": "America/New_York",
  "organization": {
    "id": "org_xyz789",
    "name": "Acme Corp",
    "plan": "pro"
  }
}
```

---

## GET /v1/organization/

Returns the organization details for the authenticated API key.

```bash
curl -X GET "https://api.dailybot.com/v1/organization/" \
  -H "X-API-KEY: $DAILYBOT_API_KEY"
```

**Response (200 OK):**

```json
{
  "id": "org_xyz789",
  "name": "Acme Corp",
  "plan": "pro",
  "member_count": 45,
  "created_at": "2023-01-15T00:00:00Z"
}
```

---

## GET /v1/users/

Returns all users in the organization. Paginated (default ordering: `full_name`).

### Query parameters

| Name | Type | Default | Description |
|------|------|---------|-------------|
| `page` | integer | 1 | Page number (1-indexed). `offset` accepted as alias. |
| `page_size` | integer | 50 | Items per page (max 200). `limit` accepted as alias. |
| `search` | string | — | Case-insensitive search on full name or email (max 256 chars). |
| `is_active` | boolean | — | Filter by active status. |
| `role` | string | — | Filter by role: `admin` or `member`. |

```bash
curl "https://api.dailybot.com/v1/users/?is_active=true&search=alice&page_size=50" \
  -H "X-API-KEY: $DAILYBOT_API_KEY"
```

**Response (200 OK):**

```json
{
  "count": 1,
  "next": null,
  "previous": null,
  "results": [
    {
      "uuid": "usr_abc123",
      "email": "alice@company.com",
      "first_name": "Alice",
      "last_name": "Smith",
      "role": "member",
      "is_active": true,
      "timezone": "America/New_York"
    }
  ]
}
```

### Iterating all users

```bash
PAGE=1
while true; do
  RESP=$(curl -s "https://api.dailybot.com/v1/users/?is_active=true&page=$PAGE&page_size=100" \
    -H "X-API-KEY: $DAILYBOT_API_KEY")
  echo "$RESP" | jq '.results[]'
  NEXT=$(echo "$RESP" | jq -r '.next')
  [ "$NEXT" = "null" ] && break
  PAGE=$((PAGE + 1))
done
```

---

## GET /v1/users/{uuid}/

Returns a specific user.

```bash
curl -X GET "https://api.dailybot.com/v1/users/usr_abc123/" \
  -H "X-API-KEY: $DAILYBOT_API_KEY"
```

---

## PATCH /v1/users/{uuid}/

Updates a user's profile or metadata. Only Org Administrators can update other users.

### Body parameters

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `first_name` | string | No | User's first name. |
| `last_name` | string | No | User's last name. |
| `timezone` | string | No | IANA timezone string (e.g. `America/New_York`). |
| `metadata` | object | No | Custom key-value metadata for the user. |

```bash
curl -X PATCH "https://api.dailybot.com/v1/users/usr_abc123/" \
  -H "X-API-KEY: $DAILYBOT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "timezone": "Europe/London",
    "metadata": { "department": "Engineering", "location": "London" }
  }'
```

**Response (200 OK):**

```json
{
  "uuid": "usr_abc123",
  "email": "jane@company.com",
  "first_name": "Jane",
  "last_name": "Doe",
  "timezone": "Europe/London",
  "metadata": { "department": "Engineering", "location": "London" }
}
```

## Endpoints in this group

Read the organization directory, look up user profiles, and update user metadata. Accepts both API keys and CLI Bearer tokens.

| Method | Endpoint | Description |
|--------|----------|-------------|
| GET | `/v1/me/` | Current authenticated identity |
| GET | `/v1/users/` | List organization members |
| GET | `/v1/users/{uuid}/` | Retrieve a user by UUID |
| PATCH | `/v1/users/{uuid}/` | Update a user |
| PATCH | `/v1/users/{uuid}/update-metadata/` | Update user metadata |
| GET | `/v1/me/dashboard-preferences/{surface}/` | Get dashboard preferences |
| PUT | `/v1/me/dashboard-preferences/{surface}/` | Save dashboard preferences |
| DELETE | `/v1/me/dashboard-preferences/{surface}/` | Clear dashboard preferences |
| GET | `/v1/me/saved-views/` | List saved views |
| POST | `/v1/me/saved-views/` | Create saved view |
| GET | `/v1/me/saved-views/{view_uuid}/` | Retrieve saved view |
| PATCH | `/v1/me/saved-views/{view_uuid}/` | Update saved view |
| DELETE | `/v1/me/saved-views/{view_uuid}/` | Delete saved view |
| GET | `/v1/me/featured/` | List featured entities |
| PUT | `/v1/me/featured/{entity_type}/{entity_uuid}/` | Toggle featured |
| POST | `/v1/me/featured/batch/` | Batch toggle featured |

### GET `/v1/me/`

**Current authenticated identity**

Returns the current authenticated user (or agent identity for API-Key requests). Supports include_email query.

- **Auth:** API key (`X-API-KEY`), CLI Bearer (read), OAuth 2.0
- **Rate limit:** `default`
- **Pagination:** No pagination

#### Query parameters

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `include_email` | boolean | No | Include email in response. Default false. |

#### Error codes

| Status | When |
|--------|------|
| `401` | Missing/invalid/expired credential |
| `403` | Authenticated but not permitted |
| `429` | Throttled - Retry-After header set |

#### Example (curl)

```bash
curl -sS -X GET 'https://api.dailybot.com/v1/me/' -H 'X-API-KEY: $DAILYBOT_API_KEY'
```

### GET `/v1/users/`

**List organization members**

Paginated list of users. Supports search, only_active, include_email.

- **Auth:** API key (`X-API-KEY`), CLI Bearer (read)
- **Rate limit:** `default`
- **Pagination:** Page-number pagination

#### Query parameters

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `search` | string | No | Filter by name, email, or external ID (case-insensitive). |
| `only_active` | boolean | No | If set, return only active users. |
| `include_email` | boolean | No | Include email in each user object. |
| `page` | integer | No | Page number (page-number pagination). |
| `page_size` | integer | No | Page size (default 20, max 100). |

#### Error codes

| Status | When |
|--------|------|
| `401` | Missing/invalid/expired credential |
| `403` | Authenticated but not permitted |
| `429` | Throttled - Retry-After header set |

#### Example (curl)

```bash
curl -sS -X GET 'https://api.dailybot.com/v1/users/' -H 'X-API-KEY: $DAILYBOT_API_KEY'
```

### GET `/v1/users/{uuid}/`

**Retrieve a user by UUID**

Retrieves a single user by their UUID.

- **Auth:** API key (`X-API-KEY`), CLI Bearer (read)
- **Rate limit:** `default`
- **Pagination:** No pagination

#### Path parameters

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `uuid` | string (uuid) | Yes | — |

#### Query parameters

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `include_email` | boolean | No | — |

#### Error codes

| Status | When |
|--------|------|
| `401` | Missing/invalid/expired credential |
| `403` | Authenticated but not permitted |
| `429` | Throttled - Retry-After header set |
| `404` | Not found or not visible |

#### Example (curl)

```bash
curl -sS -X GET 'https://api.dailybot.com/v1/users/{uuid}/' -H 'X-API-KEY: $DAILYBOT_API_KEY'
```

### PATCH `/v1/users/{uuid}/`

**Update a user**

Partially update a user profile.

- **Auth:** API key (`X-API-KEY`), CLI Bearer (write)
- **Rate limit:** `default`
- **Pagination:** No pagination

#### Path parameters

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `uuid` | string (uuid) | Yes | — |

#### Error codes

| Status | When |
|--------|------|
| `401` | Missing/invalid/expired credential |
| `403` | Authenticated but not permitted |
| `429` | Throttled - Retry-After header set |
| `400` | Validation error |
| `404` | Not found or not visible |

#### Example (curl)

```bash
curl -sS -X PATCH 'https://api.dailybot.com/v1/users/{uuid}/' -H 'X-API-KEY: $DAILYBOT_API_KEY'
```

### PATCH `/v1/users/{uuid}/update-metadata/`

**Update user metadata**

Merge arbitrary key/value metadata onto a user.

- **Auth:** API key (`X-API-KEY`), CLI Bearer (write)
- **Rate limit:** `default`
- **Pagination:** No pagination

#### Path parameters

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `uuid` | string (uuid) | Yes | — |

#### Error codes

| Status | When |
|--------|------|
| `401` | Missing/invalid/expired credential |
| `403` | Authenticated but not permitted |
| `429` | Throttled - Retry-After header set |
| `400` | Validation error |
| `404` | Not found or not visible |

#### Example (curl)

```bash
curl -sS -X PATCH 'https://api.dailybot.com/v1/users/{uuid}/update-metadata/' -H 'X-API-KEY: $DAILYBOT_API_KEY'
```

### GET `/v1/me/dashboard-preferences/{surface}/`

**Get dashboard preferences**

Returns last-applied filters for a surface (forms_home, workflows_home, followups_home). Missing preference → 200 with empty filters.

- **Auth:** API key (`X-API-KEY`), CLI Bearer (read), OAuth 2.0
- **Rate limit:** `default`
- **Pagination:** No pagination

#### Path parameters

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `surface` | string | Yes | — |

#### Response body

```json
{
  "surface": "string (forms_home | workflows_home | followups_home)",
  "schema_version": "integer",
  "filters": "object",
  "updated_at": "string | null (ISO-8601)"
}
```

#### Error codes

| Status | When |
|--------|------|
| `401` | Missing/invalid/expired credential |
| `403` | Authenticated but not permitted |
| `429` | Throttled — Retry-After header set |
| `404` | not_found — unsupported surface |

#### Example (curl)

```bash
curl -sS -X GET 'https://api.dailybot.com/v1/me/dashboard-preferences/forms_home/' \
  -H 'X-API-KEY: $DAILYBOT_API_KEY'
```

#### Notes

- Not gated by Labels entitlement. When Labels are unavailable, stored Label filters may be omitted from responses with warning labels_feature_unavailable.

### PUT `/v1/me/dashboard-preferences/{surface}/`

**Save dashboard preferences**

Upsert last-applied filters for a surface.

- **Auth:** API key (`X-API-KEY`), CLI Bearer (write), OAuth 2.0
- **Rate limit:** `default`
- **Pagination:** No pagination

#### Path parameters

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `surface` | string | Yes | — |

#### Request body

```json
{
  "schema_version": 1,
  "filters": "object (canonical)",
  "payload": "object (optional legacy alias; filters wins when both are sent)"
}
```

#### Error codes

| Status | When |
|--------|------|
| `401` | Missing/invalid/expired credential |
| `403` | Authenticated but not permitted |
| `400` | invalid_preference_payload — invalid body (schema_version / filters) |
| `429` | Throttled — Retry-After header set |
| `404` | not_found — unsupported surface |

#### Example (curl)

```bash
curl -sS -X PUT 'https://api.dailybot.com/v1/me/dashboard-preferences/forms_home/' \
  -H 'X-API-KEY: $DAILYBOT_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"schema_version": 1, "filters": {}}'
```

#### Notes

- Not gated by Labels entitlement. Unsupported surface → 404 not_found; malformed body → 400 invalid_preference_payload.

### DELETE `/v1/me/dashboard-preferences/{surface}/`

**Clear dashboard preferences**

Clear last-applied filters for a surface. Idempotent 204.

- **Auth:** API key (`X-API-KEY`), CLI Bearer (write), OAuth 2.0
- **Rate limit:** `default`
- **Pagination:** No pagination

#### Path parameters

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `surface` | string | Yes | — |

#### Error codes

| Status | When |
|--------|------|
| `401` | Missing/invalid/expired credential |
| `403` | Authenticated but not permitted |
| `429` | Throttled — Retry-After header set |
| `404` | not_found — unsupported surface |

#### Example (curl)

```bash
curl -sS -X DELETE 'https://api.dailybot.com/v1/me/dashboard-preferences/forms_home/' \
  -H 'X-API-KEY: $DAILYBOT_API_KEY'
```

#### Notes

- Not gated by Labels entitlement. Idempotent: missing preference still returns 204.

### GET `/v1/me/saved-views/`

**List saved views**

List named saved views for the caller. Optional surface filter.

- **Auth:** API key (`X-API-KEY`), CLI Bearer (read), OAuth 2.0
- **Rate limit:** `default`
- **Pagination:** No pagination

#### Query parameters

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `surface` | string | No | Filter by surface. |

#### Response body

```json
{
  "results": "array<{ uuid, surface, name, schema_version, filters, created_at, updated_at }>"
}
```

#### Error codes

| Status | When |
|--------|------|
| `401` | Missing/invalid/expired credential |
| `403` | Authenticated but not permitted |
| `400` | invalid_preference_payload — invalid query (e.g. unsupported surface) |
| `429` | Throttled — Retry-After header set |

#### Example (curl)

```bash
curl -sS -X GET 'https://api.dailybot.com/v1/me/saved-views/' \
  -H 'X-API-KEY: $DAILYBOT_API_KEY'
```

#### Notes

- Not gated by Labels entitlement. When Labels are unavailable, stored Label filters may be omitted from responses with warning labels_feature_unavailable.

### POST `/v1/me/saved-views/`

**Create saved view**

Create a named saved view for a surface.

- **Auth:** API key (`X-API-KEY`), CLI Bearer (write), OAuth 2.0
- **Rate limit:** `default`
- **Pagination:** No pagination

#### Request body

```json
{
  "surface": "string",
  "name": "string",
  "schema_version": 1,
  "filters": "object (canonical)",
  "payload": "object (optional legacy alias; filters wins when both are sent)"
}
```

#### Error codes

| Status | When |
|--------|------|
| `401` | Missing/invalid/expired credential |
| `403` | Authenticated but not permitted |
| `400` | invalid_preference_payload — invalid body (e.g. unsupported surface) |
| `429` | Throttled — Retry-After header set |
| `409` | duplicate_name — saved view name already exists on this surface |

#### Example (curl)

```bash
curl -sS -X POST 'https://api.dailybot.com/v1/me/saved-views/' \
  -H 'X-API-KEY: $DAILYBOT_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"surface": "forms_home", "name": "My view", "schema_version": 1, "filters": {}}'
```

#### Notes

- Not gated by Labels entitlement. When Labels are unavailable, stored Label filters may be omitted from responses with warning labels_feature_unavailable.

### GET `/v1/me/saved-views/{view_uuid}/`

**Retrieve saved view**

Retrieve one saved view by UUID.

- **Auth:** API key (`X-API-KEY`), CLI Bearer (read), OAuth 2.0
- **Rate limit:** `default`
- **Pagination:** No pagination

#### Path parameters

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `view_uuid` | string (uuid) | Yes | — |

#### Response body

```json
{
  "uuid": "string (uuid)",
  "surface": "string",
  "name": "string",
  "schema_version": "integer",
  "filters": "object",
  "created_at": "string (ISO-8601)",
  "updated_at": "string (ISO-8601)"
}
```

#### Error codes

| Status | When |
|--------|------|
| `401` | Missing/invalid/expired credential |
| `403` | Authenticated but not permitted |
| `429` | Throttled — Retry-After header set |
| `404` | Unsupported surface or view not found |

#### Example (curl)

```bash
curl -sS -X GET 'https://api.dailybot.com/v1/me/saved-views/{view_uuid}/' \
  -H 'X-API-KEY: $DAILYBOT_API_KEY'
```

#### Notes

- Not gated by Labels entitlement. When Labels are unavailable, stored Label filters may be omitted from responses with warning labels_feature_unavailable.

### PATCH `/v1/me/saved-views/{view_uuid}/`

**Update saved view**

Update name or filters on a saved view.

- **Auth:** API key (`X-API-KEY`), CLI Bearer (write), OAuth 2.0
- **Rate limit:** `default`
- **Pagination:** No pagination

#### Path parameters

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `view_uuid` | string (uuid) | Yes | — |

#### Request body

```json
{
  "name": "string (optional)",
  "filters": "object (optional, canonical)",
  "payload": "object (optional legacy alias; filters wins when both are sent)"
}
```

#### Error codes

| Status | When |
|--------|------|
| `401` | Missing/invalid/expired credential |
| `403` | Authenticated but not permitted |
| `429` | Throttled — Retry-After header set |
| `404` | Unsupported surface or view not found |

#### Example (curl)

```bash
curl -sS -X PATCH 'https://api.dailybot.com/v1/me/saved-views/{view_uuid}/' \
  -H 'X-API-KEY: $DAILYBOT_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"name": "Renamed view", "filters": {}}'
```

#### Notes

- Not gated by Labels entitlement. When Labels are unavailable, stored Label filters may be omitted from responses with warning labels_feature_unavailable.

### DELETE `/v1/me/saved-views/{view_uuid}/`

**Delete saved view**

Delete a saved view.

- **Auth:** API key (`X-API-KEY`), CLI Bearer (write), OAuth 2.0
- **Rate limit:** `default`
- **Pagination:** No pagination

#### Path parameters

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `view_uuid` | string (uuid) | Yes | — |

#### Error codes

| Status | When |
|--------|------|
| `401` | Missing/invalid/expired credential |
| `403` | Authenticated but not permitted |
| `429` | Throttled — Retry-After header set |
| `404` | Unsupported surface or view not found |

#### Example (curl)

```bash
curl -sS -X DELETE 'https://api.dailybot.com/v1/me/saved-views/{view_uuid}/' \
  -H 'X-API-KEY: $DAILYBOT_API_KEY'
```

#### Notes

- Not gated by Labels entitlement. When Labels are unavailable, stored Label filters may be omitted from responses with warning labels_feature_unavailable.

### GET `/v1/me/featured/`

**List featured entities**

List entity UUIDs the caller marked Featured for a required entity_type (forms, automations, or checkins).

- **Auth:** API key (`X-API-KEY`), CLI Bearer (read), OAuth 2.0
- **Rate limit:** `default`
- **Pagination:** No pagination

#### Query parameters

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `entity_type` | string | Yes | Required. One of forms, automations, or checkins. |

#### Response body

```json
{
  "entity_type": "string (forms | automations | checkins)",
  "entity_uuids": "array<string (uuid)>"
}
```

#### Error codes

| Status | When |
|--------|------|
| `401` | Missing/invalid/expired credential |
| `403` | Authenticated but not permitted |
| `400` | invalid_preference_payload — missing or invalid entity_type (shared personalization validation code) |
| `429` | Throttled — Retry-After header set |

#### Example (curl)

```bash
curl -sS -X GET 'https://api.dailybot.com/v1/me/featured/?entity_type=forms' \
  -H 'X-API-KEY: $DAILYBOT_API_KEY'
```

#### Notes

- Featured is private per user — is_featured on list endpoints reflects only the caller.

### PUT `/v1/me/featured/{entity_type}/{entity_uuid}/`

**Toggle featured**

Toggle Featured for one entity (private to the caller).

- **Auth:** API key (`X-API-KEY`), CLI Bearer (write), OAuth 2.0
- **Rate limit:** `default`
- **Pagination:** No pagination

#### Path parameters

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `entity_type` | string | Yes | — |
| `entity_uuid` | string (uuid) | Yes | — |

#### Request body

```json
{
  "featured": "boolean"
}
```

#### Error codes

| Status | When |
|--------|------|
| `401` | Missing/invalid/expired credential |
| `403` | Authenticated but not permitted |
| `400` | invalid_featured_request — unsupported entity_type or invalid body |
| `429` | Throttled — Retry-After header set |
| `404` | not_found — unknown entity_uuid (entity not visible or missing) |

#### Example (curl)

```bash
curl -sS -X PUT 'https://api.dailybot.com/v1/me/featured/forms/{entity_uuid}/' \
  -H 'X-API-KEY: $DAILYBOT_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"featured": true}'
```

#### Notes

- Featured is private per user — is_featured on list endpoints reflects only the caller.

### POST `/v1/me/featured/batch/`

**Batch toggle featured**

Batch feature or unfeature entities for the caller.

- **Auth:** API key (`X-API-KEY`), CLI Bearer (write), OAuth 2.0
- **Rate limit:** `default`
- **Pagination:** No pagination

#### Request body

```json
{
  "entity_type": "string",
  "items": "array<{entity_uuid, featured}>"
}
```

#### Error codes

| Status | When |
|--------|------|
| `401` | Missing/invalid/expired credential |
| `403` | Authenticated but not permitted |
| `400` | invalid_featured_request — unsupported entity_type or invalid body |
| `429` | Throttled — Retry-After header set |
| `404` | not_found — unknown entity_uuid (entity not visible or missing) |

#### Example (curl)

```bash
curl -sS -X POST 'https://api.dailybot.com/v1/me/featured/batch/' \
  -H 'X-API-KEY: $DAILYBOT_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"entity_type": "forms", "items": [{"entity_uuid": "{uuid}", "featured": true}]}'
```

#### Notes

- Featured is private per user — is_featured on list endpoints reflects only the caller.

---

## Developer portal navigation

**Getting Started**

- [Overview](/developers)
- [Quick start](/developers/getting-started)
- [Authentication](/developers/authentication)

**API Reference**

- [API Overview](/developers/api)
- [Users](/developers/api/users) (this page)
- [Organization](/developers/api/organization)
- [Teams](/developers/api/teams)
- [Invitations](/developers/api/invitations)
- [Check-ins](/developers/api/check-ins)
- [Forms](/developers/api/forms)
- [Labels](/developers/api/labels)
- [Report channels](/developers/api/report-channels)
- [Templates](/developers/api/templates)
- [Kudos](/developers/api/kudos)
- [Mood tracking](/developers/api/mood)
- [Important dates](/developers/api/important-dates)
- [Messaging](/developers/api/messaging)
- [Automations](/developers/api/workflows)
- [Webhooks](/developers/api/webhooks)
- [Commands platform](/developers/api/commands-platform)
- [Agents](/developers/api/agents)
- [OAuth2](/developers/api/oauth2)
- [Integrations](/developers/api/integrations)
- [CLI](/developers/api/cli)

**API guides**

- [Errors & Status Codes](/developers/errors)
- [Rate Limits](/developers/rate-limits)
- [Conventions](/developers/conventions)
- [API Changelog](/developers/api-changelog)
- [Recipes](/developers/recipes)

**Developer Features**

- [Custom commands](/developers/custom-commands)
- [Serverless commands](/developers/serverless)
- [Webhooks & events](/developers/webhooks)
- [Automation API trigger](/developers/workflow-trigger)
- [Activity API](/developers/activity-api)

**CLI**

- [Overview](/developers/cli)
- [Authentication](/developers/cli-authentication)
- [Command reference](/developers/cli-reference)
- [CI/CD recipes](/developers/cli-ci-cd)
- [Configuration](/developers/cli-configuration)
- [Troubleshooting](/developers/cli-troubleshooting)

**Agent Skill**

- [Overview](/developers/agent-skill)
- [Skills catalog](/skills)

---

## Site navigation

**Product:**
- [Home](/)
- [Product](/product)
- [Pricing](/pricing)
- [Enterprise](/enterprise)
- [Integrations](/integrations)
- [Templates](/templates)

**Resources:**
- [Blog](/blog)
- [Academy](/academy)
- [Changelog](/changelog)
- [Help Center](/help)
- [Developers](/developers)
- [Agents](/agents)

**Company:**
- [About](/about)
- [Careers](/careers)
- [Security](/security)
- [Contact Sales](/demo)

**Connect:**
- [LinkedIn](https://www.linkedin.com/company/dailybot/)
- [X/Twitter](https://twitter.com/dailybot)
- [GitHub](https://github.com/Dailybot-Inc)
- [YouTube](https://www.youtube.com/channel/UC3uM9V52vwX7e3vQpCc4qvA)

