Skip to content

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/

POST /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.
Request
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)
json
{
  "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)
json
{
  "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
json
{
  "detail": "users_identifiers is required and cannot be empty",
  "code": "params_validation_error"
}
Response 403 Forbidden
json
{
  "detail": "Invalid or missing API key.",
  "code": "authentication_failed"
}

GET /v1/pending-invitations/

GET /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.
Request
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
json
{
  "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}/

GET /v1/pending-invitations/{id}/

Returns a single pending platform invitation by ID.

Response 200 OK
json
{
  "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
json
{
  "detail": "Pending invitation not found."
}

DELETE /v1/pending-invitations/{id}/

DELETE /v1/pending-invitations/{id}/

Cancels a pending platform invitation. Only invitations with status pending can be cancelled.

Response 204 No Content
json
Response 400 Bad Request
json
{
  "detail": "Only pending invitations can be cancelled."
}
Response 404 Not Found
json
{
  "detail": "Pending invitation not found."
}

GET /v1/pending-invitations/all/

GET /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
json
{
  "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/

GET /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
json
{
  "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}/

GET /v1/pending-invitations/guests/{id}/

Returns a single guest invitation by ID.

Response 200 OK
json
{
  "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
json
{
  "detail": "Guest invitation not found."
}

DELETE /v1/pending-invitations/guests/{id}/

DELETE /v1/pending-invitations/guests/{id}/

Cancels a guest invitation.

Response 204 No Content
json
Response 404 Not Found
json
{
  "detail": "Guest invitation not found."
}

Identifier detection

Email: contains @. External ID: no @ (e.g. Slack U01ABC123DE, Discord 17–19 digit, MS Teams GUID).