Invitations
Public API endpoints for inviting users to the organization and for listing and managing pending platform and guest invitations. All require X-API-KEY header.
Invite via platform flow (Slack, Teams, Discord, etc.) or guest flow (email-only). Platform invitations auto-retry for up to 7 days.
| Method | Endpoint | Description |
|---|---|---|
| POST | /v1/invite-user/ | Invite users |
| GET | /v1/pending-invitations/ | List pending invitations |
| GET | /v1/pending-invitations/{id}/ | Get a pending invitation |
| DELETE | /v1/pending-invitations/{id}/ | Cancel a pending invitation |
| GET | /v1/pending-invitations/all/ | List all invitations |
| GET | /v1/pending-invitations/guests/ | List guest invitations |
| GET | /v1/pending-invitations/guests/{id}/ | Get a guest invitation |
| DELETE | /v1/pending-invitations/guests/{id}/ | Cancel a guest invitation |
POST /v1/invite-user/
/v1/invite-user/ Invite users by email or external ID. Two flows: platform (default) and guest (email invitations only).
Body Parameters
| Name | Type | Required | Description |
|---|---|---|---|
users_identifiers | array of strings | Required | Emails or external platform IDs to invite (max 100). Strings with @ are treated as emails; others as external IDs. |
is_guest_account_invite | boolean | Optional | If true, use guest flow (email invitations only). Default: false. |
joinable_team_uuids | array of strings (UUID) | Optional | Team UUIDs the invited users will join. |
joinable_followup_uuids | array of strings (UUID) | Optional | Check-in UUIDs the invited users will join. |
curl -X POST "https://api.dailybot.com/v1/invite-user/" \
-H "X-API-KEY: your_api_key_here" \
-H "Content-Type: application/json" \
-d '{"users_identifiers": ["[email protected]"], "is_guest_account_invite": false, "joinable_team_uuids": [], "joinable_followup_uuids": []}'Response 200 OK — Platform flow (default)
{
"dailybot_members": {
"count": 0,
"members": []
},
"users_invited": {
"count": 1,
"members": [
"[email protected]"
]
},
"pending_invitations": {
"count": 0,
"identifiers": []
},
"wrong_users": {
"count": 0,
"users_identifiers": []
}
}Response 200 OK — Guest flow (is_guest_account_invite: true)
{
"dailybot_members": {
"count": 0,
"members": []
},
"guests_invited": {
"count": 1,
"emails": [
"[email protected]"
]
},
"already_invited": {
"count": 0,
"emails": []
},
"wrong_users": {
"count": 0,
"users_identifiers": []
}
}Response 400 Bad Request
{
"detail": "users_identifiers is required and cannot be empty",
"code": "params_validation_error"
}Response 403 Forbidden
{
"detail": "Invalid or missing API key.",
"code": "authentication_failed"
}GET /v1/pending-invitations/
/v1/pending-invitations/ Platform invitations only, paginated. Filter by status (pending, resolved, failed, cancelled). For platform + guest in one response use GET /v1/pending-invitations/all/.
Query Parameters
| Name | Type | Required | Description |
|---|---|---|---|
status | string | Optional | Filter by status: pending, resolved, failed, cancelled. |
identifier_type | string | Optional | Filter by type: email, external_id. |
identifier | string | Optional | Search by identifier (partial, case-insensitive). |
page | integer | Optional | Page number. Default: 1. |
page_size | integer | Optional | Items per page. Default: 20, max: 100. |
curl "https://api.dailybot.com/v1/pending-invitations/?status=pending&page=1&page_size=20" \
-H "X-API-KEY: your_api_key_here"Response 200 OK
{
"count": 5,
"next": "https://api.dailybot.com/v1/pending-invitations/?page=2&page_size=20",
"previous": null,
"results": [
{
"id": 1,
"identifier": "[email protected]",
"identifier_type": "email",
"identifier_type_display": "Email",
"status": "pending",
"status_display": "Pending",
"retry_count": 0,
"next_retry_at": null,
"created_at": "2026-02-25T12:00:00Z",
"joinable_teams": [],
"joinable_followups": []
}
]
}GET /v1/pending-invitations/{id}/
/v1/pending-invitations/{id}/ Returns a single pending platform invitation by ID.
Response 200 OK
{
"id": 1,
"identifier": "[email protected]",
"identifier_type": "email",
"identifier_type_display": "Email",
"status": "pending",
"status_display": "Pending",
"retry_count": 0,
"next_retry_at": null,
"last_retry_at": null,
"created_at": "2026-02-25T12:00:00Z",
"resolved_at": null,
"failure_reason": null,
"metadata": {},
"joinable_teams": [],
"joinable_followups": []
}Response 404 Not Found
{
"detail": "Pending invitation not found."
}DELETE /v1/pending-invitations/{id}/
/v1/pending-invitations/{id}/ Cancels a pending platform invitation. Only invitations with status pending can be cancelled.
Response 204 No Content
Response 400 Bad Request
{
"detail": "Only pending invitations can be cancelled."
}Response 404 Not Found
{
"detail": "Pending invitation not found."
}GET /v1/pending-invitations/all/
/v1/pending-invitations/all/ Platform + guest in one response, not paginated. For platform-only with pagination or status filter use GET /v1/pending-invitations/.
Query Parameters
| Name | Type | Required | Description |
|---|---|---|---|
type | string | Optional | Filter by type: platform or guest. |
identifier | string | Optional | Search by identifier/email (partial, case-insensitive). |
Response 200 OK
{
"platform_invitations": {
"count": 2,
"results": [
{
"id": 1,
"identifier": "[email protected]",
"identifier_type": "email",
"identifier_type_display": "Email",
"status": "pending",
"status_display": "Pending",
"retry_count": 0,
"next_retry_at": null,
"created_at": "2026-02-25T12:00:00Z",
"joinable_teams": [],
"joinable_followups": []
}
]
},
"guest_invitations": {
"count": 1,
"results": [
{
"id": 2,
"type": "guest",
"email": "[email protected]",
"emails_sent": 1,
"created_at": "2026-02-25T11:00:00Z",
"joinable_teams": [],
"joinable_followups": []
}
]
}
}GET /v1/pending-invitations/guests/
/v1/pending-invitations/guests/ Returns a paginated list of pending guest invitations.
Query Parameters
| Name | Type | Required | Description |
|---|---|---|---|
email | string | Optional | Filter by email (partial, case-insensitive). |
page | integer | Optional | Page number. Default: 1. |
page_size | integer | Optional | Items per page. Default: 20, max: 100. |
Response 200 OK
{
"count": 3,
"next": "https://api.dailybot.com/v1/pending-invitations/guests/?page=2&page_size=20",
"previous": null,
"results": [
{
"id": 1,
"type": "guest",
"email": "[email protected]",
"emails_sent": 1,
"created_at": "2026-02-25T12:00:00Z",
"joinable_teams": [],
"joinable_followups": []
}
]
}GET /v1/pending-invitations/guests/{id}/
/v1/pending-invitations/guests/{id}/ Returns a single guest invitation by ID.
Response 200 OK
{
"id": 1,
"type": "guest",
"email": "[email protected]",
"emails_sent": 1,
"created_at": "2026-02-25T12:00:00Z",
"joinable_teams": [],
"joinable_followups": []
}Response 404 Not Found
{
"detail": "Guest invitation not found."
}DELETE /v1/pending-invitations/guests/{id}/
/v1/pending-invitations/guests/{id}/ Cancels a guest invitation.
Response 204 No Content
Response 404 Not Found
{
"detail": "Guest invitation not found."
}Identifier detection
@. External ID: no @ (e.g. Slack U01ABC123DE, Discord 17–19 digit, MS Teams GUID).