Users
Read the organization directory, look up user profiles, and update user metadata. Accepts both API keys and CLI Bearer tokens.
On this page
Current authenticated identity
Returns the current authenticated user (or agent identity for API-Key requests). Supports include_email query.
Query parameters
| Name | Type | Required | Description |
|---|---|---|---|
| include_email | boolean | Optional | Include email in response. Default false. |
Errors
| Status | When |
|---|---|
| 401 | Missing/invalid/expired credential |
| 403 | Authenticated but not permitted |
| 429 | Throttled - Retry-After header set |
curl -sS -X GET 'https://api.dailybot.com/v1/me/' -H 'X-API-KEY: $DAILYBOT_API_KEY'Try it
This is a copy-only helper — the request is not sent from your browser. Paste the command into your terminal to execute it.
List organization members
Paginated list of users. Supports search, only_active, include_email.
Query parameters
| Name | Type | Required | Description |
|---|---|---|---|
| search | string | Optional | Filter by name, email, or external ID (case-insensitive). |
| only_active | boolean | Optional | If set, return only active users. |
| include_email | boolean | Optional | Include email in each user object. |
| page | integer | Optional | Page number (page-number pagination). |
| page_size | integer | Optional | Page size (default 20, max 100). |
Errors
| Status | When |
|---|---|
| 401 | Missing/invalid/expired credential |
| 403 | Authenticated but not permitted |
| 429 | Throttled - Retry-After header set |
curl -sS -X GET 'https://api.dailybot.com/v1/users/' -H 'X-API-KEY: $DAILYBOT_API_KEY'Try it
This is a copy-only helper — the request is not sent from your browser. Paste the command into your terminal to execute it.
Retrieve a user by UUID
Retrieves a single user by their UUID.
Path parameters
| Name | Type | Required | Description |
|---|---|---|---|
| uuid | string (uuid) | Required | — |
Query parameters
| Name | Type | Required | Description |
|---|---|---|---|
| include_email | boolean | Optional | — |
Errors
| Status | When |
|---|---|
| 401 | Missing/invalid/expired credential |
| 403 | Authenticated but not permitted |
| 429 | Throttled - Retry-After header set |
| 404 | Not found or not visible |
curl -sS -X GET 'https://api.dailybot.com/v1/users/{uuid}/' -H 'X-API-KEY: $DAILYBOT_API_KEY'Try it
This is a copy-only helper — the request is not sent from your browser. Paste the command into your terminal to execute it.
Update a user
Partially update a user profile.
Path parameters
| Name | Type | Required | Description |
|---|---|---|---|
| uuid | string (uuid) | Required | — |
Errors
| 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 |
curl -sS -X PATCH 'https://api.dailybot.com/v1/users/{uuid}/' -H 'X-API-KEY: $DAILYBOT_API_KEY'Try it
This is a copy-only helper — the request is not sent from your browser. Paste the command into your terminal to execute it.
Update user metadata
Merge arbitrary key/value metadata onto a user.
Path parameters
| Name | Type | Required | Description |
|---|---|---|---|
| uuid | string (uuid) | Required | — |
Errors
| 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 |
curl -sS -X PATCH 'https://api.dailybot.com/v1/users/{uuid}/update-metadata/' -H 'X-API-KEY: $DAILYBOT_API_KEY'Try it
This is a copy-only helper — the request is not sent from your browser. Paste the command into your terminal to execute it.
Get dashboard preferences
Returns last-applied filters for a surface (forms_home, workflows_home, followups_home). Missing preference → 200 with empty filters.
Path parameters
| Name | Type | Required | Description |
|---|---|---|---|
| surface | string | Required | — |
Response
{
"surface": "string (forms_home | workflows_home | followups_home)",
"schema_version": "integer",
"filters": "object",
"updated_at": "string | null (ISO-8601)"
}Errors
| Status | When |
|---|---|
| 401 | Missing/invalid/expired credential |
| 403 | Authenticated but not permitted |
| 429 | Throttled — Retry-After header set |
| 404 | not_found — unsupported surface |
curl -sS -X GET 'https://api.dailybot.com/v1/me/dashboard-preferences/forms_home/' \
-H 'X-API-KEY: $DAILYBOT_API_KEY'Try it
This is a copy-only helper — the request is not sent from your browser. Paste the command into your terminal to execute it.
- Not gated by Labels entitlement. When Labels are unavailable, stored Label filters may be omitted from responses with warning labels_feature_unavailable.
Save dashboard preferences
Upsert last-applied filters for a surface.
Path parameters
| Name | Type | Required | Description |
|---|---|---|---|
| surface | string | Required | — |
Request body
{
"schema_version": 1,
"filters": "object (canonical)",
"payload": "object (optional legacy alias; filters wins when both are sent)"
}Errors
| 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 |
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": {}}'Try it
This is a copy-only helper — the request is not sent from your browser. Paste the command into your terminal to execute it.
- Not gated by Labels entitlement. Unsupported surface → 404 not_found; malformed body → 400 invalid_preference_payload.
Clear dashboard preferences
Clear last-applied filters for a surface. Idempotent 204.
Path parameters
| Name | Type | Required | Description |
|---|---|---|---|
| surface | string | Required | — |
Errors
| Status | When |
|---|---|
| 401 | Missing/invalid/expired credential |
| 403 | Authenticated but not permitted |
| 429 | Throttled — Retry-After header set |
| 404 | not_found — unsupported surface |
curl -sS -X DELETE 'https://api.dailybot.com/v1/me/dashboard-preferences/forms_home/' \
-H 'X-API-KEY: $DAILYBOT_API_KEY'Try it
This is a copy-only helper — the request is not sent from your browser. Paste the command into your terminal to execute it.
- Not gated by Labels entitlement. Idempotent: missing preference still returns 204.
List saved views
List named saved views for the caller. Optional surface filter.
Query parameters
| Name | Type | Required | Description |
|---|---|---|---|
| surface | string | Optional | Filter by surface. |
Response
{
"results": "array<{ uuid, surface, name, schema_version, filters, created_at, updated_at }>"
}Errors
| 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 |
curl -sS -X GET 'https://api.dailybot.com/v1/me/saved-views/' \
-H 'X-API-KEY: $DAILYBOT_API_KEY'Try it
This is a copy-only helper — the request is not sent from your browser. Paste the command into your terminal to execute it.
- Not gated by Labels entitlement. When Labels are unavailable, stored Label filters may be omitted from responses with warning labels_feature_unavailable.
Create saved view
Create a named saved view for a surface.
Request body
{
"surface": "string",
"name": "string",
"schema_version": 1,
"filters": "object (canonical)",
"payload": "object (optional legacy alias; filters wins when both are sent)"
}Errors
| 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 |
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": {}}'Try it
This is a copy-only helper — the request is not sent from your browser. Paste the command into your terminal to execute it.
- Not gated by Labels entitlement. When Labels are unavailable, stored Label filters may be omitted from responses with warning labels_feature_unavailable.
Retrieve saved view
Retrieve one saved view by UUID.
Path parameters
| Name | Type | Required | Description |
|---|---|---|---|
| view_uuid | string (uuid) | Required | — |
Response
{
"uuid": "string (uuid)",
"surface": "string",
"name": "string",
"schema_version": "integer",
"filters": "object",
"created_at": "string (ISO-8601)",
"updated_at": "string (ISO-8601)"
}Errors
| 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 |
curl -sS -X GET 'https://api.dailybot.com/v1/me/saved-views/{view_uuid}/' \
-H 'X-API-KEY: $DAILYBOT_API_KEY'Try it
This is a copy-only helper — the request is not sent from your browser. Paste the command into your terminal to execute it.
- Not gated by Labels entitlement. When Labels are unavailable, stored Label filters may be omitted from responses with warning labels_feature_unavailable.
Update saved view
Update name or filters on a saved view.
Path parameters
| Name | Type | Required | Description |
|---|---|---|---|
| view_uuid | string (uuid) | Required | — |
Request body
{
"name": "string (optional)",
"filters": "object (optional, canonical)",
"payload": "object (optional legacy alias; filters wins when both are sent)"
}Errors
| 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 |
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": {}}'Try it
This is a copy-only helper — the request is not sent from your browser. Paste the command into your terminal to execute it.
- Not gated by Labels entitlement. When Labels are unavailable, stored Label filters may be omitted from responses with warning labels_feature_unavailable.
Delete saved view
Delete a saved view.
Path parameters
| Name | Type | Required | Description |
|---|---|---|---|
| view_uuid | string (uuid) | Required | — |
Errors
| 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 |
curl -sS -X DELETE 'https://api.dailybot.com/v1/me/saved-views/{view_uuid}/' \
-H 'X-API-KEY: $DAILYBOT_API_KEY'Try it
This is a copy-only helper — the request is not sent from your browser. Paste the command into your terminal to execute it.
- Not gated by Labels entitlement. When Labels are unavailable, stored Label filters may be omitted from responses with warning labels_feature_unavailable.
List featured entities
List entity UUIDs the caller marked Featured for a required entity_type (forms, automations, or checkins).
Query parameters
| Name | Type | Required | Description |
|---|---|---|---|
| entity_type | string | Required | Required. One of forms, automations, or checkins. |
Response
{
"entity_type": "string (forms | automations | checkins)",
"entity_uuids": "array<string (uuid)>"
}Errors
| 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 |
curl -sS -X GET 'https://api.dailybot.com/v1/me/featured/?entity_type=forms' \
-H 'X-API-KEY: $DAILYBOT_API_KEY'Try it
This is a copy-only helper — the request is not sent from your browser. Paste the command into your terminal to execute it.
- Featured is private per user — is_featured on list endpoints reflects only the caller.
Toggle featured
Toggle Featured for one entity (private to the caller).
Path parameters
| Name | Type | Required | Description |
|---|---|---|---|
| entity_type | string | Required | — |
| entity_uuid | string (uuid) | Required | — |
Request body
{
"featured": "boolean"
}Errors
| 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) |
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}'Try it
This is a copy-only helper — the request is not sent from your browser. Paste the command into your terminal to execute it.
- Featured is private per user — is_featured on list endpoints reflects only the caller.
Batch toggle featured
Batch feature or unfeature entities for the caller.
Request body
{
"entity_type": "string",
"items": "array<{entity_uuid, featured}>"
}Errors
| 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) |
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}]}'Try it
This is a copy-only helper — the request is not sent from your browser. Paste the command into your terminal to execute it.
- Featured is private per user — is_featured on list endpoints reflects only the caller.
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) |
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:
{"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.
curl -X GET "https://api.dailybot.com/v1/me/" \
-H "X-API-KEY: $DAILYBOT_API_KEY"
Response (200 OK):
{
"id": "usr_abc123",
"email": "[email protected]",
"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.
curl -X GET "https://api.dailybot.com/v1/organization/" \
-H "X-API-KEY: $DAILYBOT_API_KEY"
Response (200 OK):
{
"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. |
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):
{
"count": 1,
"next": null,
"previous": null,
"results": [
{
"uuid": "usr_abc123",
"email": "[email protected]",
"first_name": "Alice",
"last_name": "Smith",
"role": "member",
"is_active": true,
"timezone": "America/New_York"
}
]
}
Iterating all users
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.
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. |
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):
{
"uuid": "usr_abc123",
"email": "[email protected]",
"first_name": "Jane",
"last_name": "Doe",
"timezone": "Europe/London",
"metadata": { "department": "Engineering", "location": "London" }
}