Skip to content

Invitaciones

Endpoints públicos para invitar usuarios a la organización y para listar y gestionar invitaciones pendientes de plataforma e invitados. Todos requieren cabecera X-API-KEY. Invita por flujo de plataforma (Slack, Teams, Discord, etc.) o flujo invitado (solo email). Las invitaciones de plataforma se reintentan hasta 7 días.

Método Endpoint Descripción
POST /v1/invite-user/ Invitar usuarios
GET /v1/pending-invitations/ Listar invitaciones pendientes
GET /v1/pending-invitations/{id}/ Obtener una invitación pendiente
DELETE /v1/pending-invitations/{id}/ Cancelar una invitación pendiente
GET /v1/pending-invitations/all/ Listar todas las invitaciones
GET /v1/pending-invitations/guests/ Listar invitaciones de invitados
GET /v1/pending-invitations/guests/{id}/ Obtener una invitación de invitado
DELETE /v1/pending-invitations/guests/{id}/ Cancelar una invitación de invitado

POST /v1/invite-user/

POST /v1/invite-user/

Invita usuarios por email o ID externo. Dos flujos: platform (por defecto) y guest (solo invitaciones por email).

Parámetros del Cuerpo

Name Type Required Description
users_identifiers array de strings Required Emails o IDs externos de plataforma a invitar (máx 100). Strings con @ se tratan como email; el resto como ID externo.
is_guest_account_invite boolean Optional Si true, usa flujo invitado (solo invitaciones por email). Por defecto: false.
joinable_team_uuids array de strings (UUID) Optional UUIDs de equipos a los que se unirán los usuarios invitados.
joinable_followup_uuids array de strings (UUID) Optional UUIDs de check-ins a los que se unirán los usuarios invitados.
Petición
curl -X POST "https://api.dailybot.com/v1/invite-user/" \
  -H "X-API-KEY: tu_api_key" \
  -H "Content-Type: application/json" \
  -d '{"users_identifiers": ["[email protected]"], "is_guest_account_invite": false, "joinable_team_uuids": [], "joinable_followup_uuids": []}'
Response 200 OK — Flujo platform (por defecto)
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 — Flujo guest (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/

Solo invitaciones de plataforma, paginadas. Filtro por estado (pending, resolved, failed, cancelled). Para plataforma + guest en una respuesta usa GET /v1/pending-invitations/all/.

Parámetros de Consulta

Name Type Required Description
status string Optional Filtro por estado: pending, resolved, failed, cancelled.
identifier_type string Optional Filtro por tipo: email, external_id.
identifier string Optional Buscar por identificador (parcial, sin distinguir mayúsculas).
page integer Optional Número de página. Por defecto: 1.
page_size integer Optional Elementos por página. Por defecto: 20, máx: 100.
Petición
curl "https://api.dailybot.com/v1/pending-invitations/?status=pending&page=1&page_size=20" \
  -H "X-API-KEY: tu_api_key"
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}/

Devuelve una invitación de plataforma pendiente por 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}/

Cancela una invitación de plataforma pendiente. Solo se pueden cancelar invitaciones con estado pending.

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/

Plataforma + guest en una respuesta, sin paginación. Para solo plataforma con paginación o filtro por estado usa GET /v1/pending-invitations/.

Parámetros de Consulta

Name Type Required Description
type string Optional Filtro por tipo: platform o guest.
identifier string Optional Buscar por identificador/email (parcial, sin distinguir mayúsculas).
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/

Devuelve una lista paginada de invitaciones de invitados pendientes.

Parámetros de Consulta

Name Type Required Description
email string Optional Filtro por email (parcial, sin distinguir mayúsculas).
page integer Optional Número de página. Por defecto: 1.
page_size integer Optional Elementos por página. Por defecto: 20, máx: 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}/

Devuelve una invitación de invitado por 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}/

Cancela una invitación de invitado.

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

Detección de identificador

Email: contiene @. ID externo: sin @ (ej. Slack U01ABC123DE, Discord 17–19 dígitos, MS Teams GUID).