Documentación de la API de usuario de Loomio

/api/b2 es la API orientada a usuarios para integraciones con Loomio. Utiliza la clave de API de una cuenta de usuario y cada acción se realiza como ese usuario.

Las operaciones de grupo utilizan las membresías y los permisos de grupo del usuario de la clave de API. Ser administrador de la instancia no amplía el acceso de una clave de API a grupos o contenido; usa la API de servidor para administrar la instancia.

Usa la clave de API de la cuenta de usuario de Loomio que realizará las acciones. Una cuenta dedicada para un bot resulta útil cuando una integración no debe recibir invitaciones a encuestas ni notificaciones.

Los usuarios que han iniciado sesión pueden encontrar la clave de API y los ID de grupo en la página de acceso a la API.

Envía la clave de API en una cabecera Authorization: Bearer. Las claves de API en cadenas de consulta se rechazan porque los proxies y los registros de acceso pueden guardar las URL.

Cambio en la autenticación

Antes se aceptaba la clave de API como parámetro api_key de la URL. Las solicitudes que utilizan ?api_key=YOUR_API_KEY ya no funcionan. Usa la cabecera HTTP Authorization en su lugar:

Authorization: Bearer YOUR_API_KEY

Los ejemplos utilizan YOUR_API_KEY, el ID de grupo 123 y https://www.loomio.com/. Sustitúyelos por tu clave de API, el ID de tu grupo y la URL de tu instalación de Loomio.

Las respuestas de la API de usuario utilizan un formato compuesto: los registros principales van acompañados de registros relacionados, como temas, grupos, usuarios, encuestas y reacciones. Esto permite que un cliente complete un almacén local de registros con una sola solicitud, pero puede incluir más datos de los que necesita una integración sencilla.

Pasa compact=1 para omitir los registros relacionados voluminosos de temas, grupos, grupos principales, membresías, reacciones, etiquetas y traducciones. Los registros principales y los registros relacionados necesarios para interpretar el contenido siguen presentes.

curl -H 'Authorization: Bearer YOUR_API_KEY' 'https://www.loomio.com/api/b2/threads/123/items?compact=1'

Para tener un control directo, pasa exclude_types con los tipos de registro en singular separados por espacios. Por ejemplo, exclude_types=group reaction omite los grupos y las reacciones relacionados. Los valores habituales son topic, group, parent, membership, reaction, tag, translation, user, discussion, poll, poll_option, stance, stance_choice, outcome y topic_item. Las exclusiones se aplican a los registros relacionados, no al recurso principal solicitado al endpoint.

Las respuestas de colecciones incluyen meta.total cuando se define un tamaño exacto de la colección. El total se calcula antes de aplicar limit y offset. Los endpoints, como el de búsqueda, que devuelven intencionadamente un conjunto limitado de resultados omiten meta.total en lugar de devolver null.

Resumen de endpoints

Método Endpoint Finalidad
GET /api/b2/groups Listar los grupos del usuario de la clave de API
GET /api/b2/groups/:id_or_key_or_handle Obtener un grupo visible
GET /api/b2/reports Generar un informe de participación
GET /api/b2/search Buscar discusiones, comentarios, encuestas, votos y conclusiones visibles
POST /api/b2/discussions Crear una discusión
GET /api/b2/discussions/:id Obtener una discusión
GET /api/b2/discussions Listar las discusiones de un grupo
PATCH /api/b2/discussions/:id Editar una discusión
DELETE /api/b2/discussions/:id Eliminar una discusión conservando el registro
GET /api/b2/threads Listar los hilos visibles de discusión y de encuestas independientes
GET /api/b2/threads/:topic_id Obtener un hilo
GET /api/b2/threads/:topic_id/items Obtener los elementos ordenados de un hilo
GET /api/b2/threads/:topic_id/markdown Obtener un hilo completo en Markdown
POST /api/b2/comments Crear un comentario o una respuesta
PATCH /api/b2/comments/:id Editar un comentario
DELETE /api/b2/comments/:id Eliminar un comentario conservando el registro
POST /api/b2/polls Crear una encuesta
GET /api/b2/polls/:id Obtener una encuesta
GET /api/b2/polls Listar las encuestas de un grupo
PATCH /api/b2/polls/:id Editar una encuesta
DELETE /api/b2/polls/:id Eliminar una encuesta conservando el registro
GET /api/b2/memberships Listar las membresías de un grupo
POST /api/b2/memberships Añadir miembros y, opcionalmente, eliminar los miembros ausentes de la lista
GET /api/b2/chatbots Listar las integraciones de chat y los webhooks de un grupo
POST /api/b2/chatbots Crear una integración de chat o un webhook
PATCH /api/b2/chatbots/:id Actualizar una integración de chat o un webhook
DELETE /api/b2/chatbots/:id Eliminar una integración de chat o un webhook
POST /api/b2/chatbots/check Enviar una prueba de conexión de un webhook

Grupos

Listar grupos

Devuelve los grupos en los que el usuario de la clave de API tiene una membresía activa.

GET /api/b2/groups

curl -H 'Authorization: Bearer YOUR_API_KEY' https://www.loomio.com/api/b2/groups

La respuesta contiene todos los registros coincidentes en un array groups sin paginación. Incluye grupos principales y subgrupos, incluidos los grupos cuya suscripción no está activa actualmente. Comprueba el campo enabled cuando una integración deba operar solo en grupos habilitados.

Entre los campos importantes de los grupos se incluyen:

Campo Descripción
id ID numérico del grupo utilizado por otros endpoints de la API de usuario
key Clave corta y estable utilizada en las URL de Loomio
handle Identificador del grupo legible para las personas
name Nombre del grupo
full_name Nombre del grupo que incluye el contexto del grupo principal
parent_id ID numérico del grupo principal de un subgrupo; en los demás casos, null
enabled Indica si el grupo y la suscripción están activos
memberships_count Número de membresías activas y pendientes
accepted_memberships_count Número de membresías aceptadas
pending_memberships_count Número de invitaciones pendientes
admin_memberships_count Número de administradores del grupo
delegates_count Número de delegados
discussions_count Número de discusiones directamente en el grupo
polls_count Número de encuestas directamente en el grupo
subgroups_count Número de subgrupos

La respuesta puede incluir ajustes adicionales del grupo, registros relacionados del grupo principal y las membresías del usuario de la API. Los clientes deben ignorar los campos que no utilizan.

Obtener un grupo

Devuelve un grupo visible para el usuario de la clave de API.

GET /api/b2/groups/:id_or_key_or_handle

El identificador puede ser el ID numérico, la clave o el identificador legible del grupo.

curl -H 'Authorization: Bearer YOUR_API_KEY' https://www.loomio.com/api/b2/groups/123
curl -H 'Authorization: Bearer YOUR_API_KEY' https://www.loomio.com/api/b2/groups/example-group

La respuesta contiene el grupo en el array groups y utiliza los mismos campos que el endpoint de listado. Una solicitud de un grupo al que el usuario de la clave de API no puede acceder devuelve un error de permisos.

Webhooks

La API de usuario se basa en solicitudes: una integración llama a Loomio cuando quiere leer o modificar datos. Un webhook de grupo permite enviar los datos en la dirección contraria. Loomio envía los eventos seleccionados del grupo a tu endpoint a medida que ocurren, por lo que una integración no necesita consultar periódicamente la API REST para detectar cambios.

Los webhooks se configuran por grupo y requieren permisos de administrador del grupo. Puedes gestionarlos desde la interfaz de Loomio:

  1. Abre el grupo.
  2. Abre el menú del grupo y selecciona Integraciones de chat.
  3. Añade la integración que coincida con el formato de datos que acepta tu endpoint. Para un endpoint de uso general, usa el formato Mattermost/Markdown.
  4. Introduce un nombre y la URL de destino.
  5. Selecciona los eventos que Loomio debe enviar automáticamente.
  6. Guarda la integración y usa Conexión de prueba para enviar un mensaje de prueba.

Usa un destino HTTPS con una URL que no se pueda adivinar. Loomio exige que el destino resuelva a una dirección pública y bloquea las solicitudes a direcciones de redes locales o privadas.

Los agentes y otras integraciones también pueden gestionar webhooks mediante los endpoints de chatbots con autenticación Bearer descritos a continuación. El recurso se llama chatbots por compatibilidad con las integraciones de chat de Loomio, pero también representa webhooks salientes de uso general.

Listar webhooks

Devuelve las integraciones de chat configuradas para un grupo. El usuario de la clave de API debe ser administrador de ese grupo. La respuesta incluye las URL de destino, por lo que no debe exponerse a los miembros del grupo que no sean administradores.

GET /api/b2/chatbots?group_id=123

curl -H 'Authorization: Bearer YOUR_API_KEY' 'https://www.loomio.com/api/b2/chatbots?group_id=123'

La respuesta contiene un array chatbots con estos campos:

Campo Descripción
id ID de la integración utilizado para actualizarla y eliminarla
group_id Grupo que recibe los eventos
name Nombre administrativo de la integración
kind webhook para un webhook saliente o matrix para una integración de Matrix
webhook_kind Formato de los datos: markdown, slack, discord, microsoft o webex
server URL de destino
event_kinds Eventos enviados automáticamente
notification_only Indica si los mensajes contienen solo el encabezado de la notificación

Crear un webhook

POST /api/b2/chatbots

curl -X POST \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{
    "group_id": 123,
    "name": "Planning system",
    "kind": "webhook",
    "webhook_kind": "markdown",
    "server": "https://hooks.example.org/loomio/unguessable-token",
    "event_kinds": ["new_discussion", "new_comment", "poll_created", "outcome_created"],
    "notification_only": false
  }' \
  https://www.loomio.com/api/b2/chatbots

El usuario de la clave de API debe ser administrador del grupo indicado por group_id. Antes de guardar el destino, se comprueba que sea una URL pública.

Actualizar un webhook

PATCH /api/b2/chatbots/:id

Envía los campos que deban cambiar. No se puede transferir el webhook a otro grupo cambiando group_id.

curl -X PATCH \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"name":"Planning events","event_kinds":["new_discussion","outcome_created"]}' \
  https://www.loomio.com/api/b2/chatbots/456

Probar el destino de un webhook

Envía un mensaje de prueba compatible con Markdown a un destino antes o después de guardar la configuración.

POST /api/b2/chatbots/check

curl -X POST \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"group_id":123,"server":"https://hooks.example.org/loomio/unguessable-token"}' \
  https://www.loomio.com/api/b2/chatbots/check

Eliminar un webhook

DELETE /api/b2/chatbots/:id

curl -X DELETE -H 'Authorization: Bearer YOUR_API_KEY' https://www.loomio.com/api/b2/chatbots/456

Eliminar la configuración detiene los envíos futuros. No elimina ningún contenido del grupo de Loomio.

Tipos de eventos

Un webhook puede suscribirse a estos tipos de eventos:

Evento Cuándo se envía
new_discussion Se inicia una discusión
discussion_edited Se edita una discusión
new_comment Se crea un comentario
poll_created Se inicia una encuesta
poll_edited Se edita una encuesta
poll_closing_soon Se acerca la hora de cierre de una encuesta
poll_expired Una encuesta alcanza la hora de cierre
poll_closed_by_user Una persona cierra una encuesta manualmente
poll_reopened Se reabre una encuesta
outcome_created Se publica una conclusión
outcome_updated Se actualiza una conclusión
outcome_review_due Llega la fecha de revisión de una conclusión
stance_created Se emite un voto
stance_updated Se cambia un voto

El webhook pertenece a un grupo y recibe los eventos de ese grupo a los que está suscrito. Las personas también pueden seleccionar explícitamente la integración al compartir o enviar algunas notificaciones, incluso cuando el evento automático correspondiente no está seleccionado.

Envío HTTP

Loomio envía una petición HTTP POST asíncrona a la URL configurada con esta cabecera:

Content-Type: application/json; charset=utf-8

El tiempo de espera de la petición es de cinco segundos. Una respuesta 2xx, incluida 204 No Content, se considera satisfactoria. Los servicios que reciben webhooks deben responder con rapidez, procesar las tareas más largas de forma asíncrona y admitir envíos duplicados o fuera de orden.

Actualmente, Loomio no añade una firma del webhook, una cabecera con un secreto compartido, un ID de evento ni un ID de envío. Trata la URL de destino completa como una credencial, no la expongas públicamente e incluye en ella un token que no se pueda adivinar cuando el servicio receptor lo admita. Si necesitas un esquema de eventos estable y legible por máquinas o un envío firmado, usa el webhook como notificación de cambios y obtén los registros actuales mediante la API de usuario autenticada.

Formatos de los datos enviados

Los datos enviados por los webhooks son mensajes destinados a servicios de chat y preparados para mostrarse. No son registros completos serializados de Loomio. Los enlaces del mensaje identifican el contenido de Loomio afectado; una integración puede consultar después la API de usuario cuando necesite el estado actual en un formato estructurado.

Formato de integración Campos JSON principales
Mattermost/Markdown text, icon_url, username
Slack text
Discord content, limitado a aproximadamente 1900 caracteres
Microsoft Teams @type, @context, themeColor, text, sections
Webex markdown

Por ejemplo, el formato general de Markdown envía un cuerpo con esta estructura:

{
  "text": "Ada started a discussion: [Quarterly planning](https://example.loomio.org/d/example)",
  "icon_url": "https://example.loomio.org/path/to/group-logo.png",
  "username": "Loomio"
}

El texto exacto del mensaje depende del evento, la configuración regional del grupo, el ajuste de solo notificaciones y la versión de Loomio. Los servicios receptores deben basarse en los campos de nivel superior documentados del formato seleccionado, en lugar de analizar la redacción de las frases.

Busca discusiones, comentarios, encuestas, votos y conclusiones visibles para el usuario de la clave API. Los resultados incluyen contenido público incluso cuando el usuario no es miembro del grupo al que pertenece ese contenido; el contenido privado sigue sujeto a las reglas habituales de visibilidad de los temas.

GET /api/b2/search

Parámetros

Nombre Descripción
query Texto de búsqueda. Se admiten coincidencias exactas y aproximadas
group_id Restringe los resultados a un grupo visible
org_id Restringe los resultados a un grupo principal visible y a sus subgrupos visibles. Usa 0 para las discusiones directas
type Restringe los resultados a un tipo: Discussion, Comment, Poll, Stance u Outcome
types Lista de tipos de resultados separados por comas
tag Restringe los resultados a los temas con esta etiqueta
author_id Restringe los resultados al contenido de un autor. Sin query, devuelve la actividad reciente visible de ese autor
order Establécelo en authored_at_desc para ordenar el contenido coincidente por fecha de creación
curl -H 'Authorization: Bearer YOUR_API_KEY' 'https://www.loomio.com/api/b2/search?query=quarterly+planning&type=Discussion'

La respuesta contiene un array search_results. Cada resultado identifica el registro coincidente y el contexto visible de ese registro mediante campos como searchable_type, searchable_id, highlight, group_id, group_name, discussion_key, poll_key, author_id, author_name, authored_at y tags. Los campos que no se aplican a un resultado tienen el valor null.

Informe de participación

Devuelve los mismos datos agregados de participación que utiliza el informe de participación de Loomio.

GET /api/b2/reports

Parámetros

Nombre Descripción
section Sección del informe: base, users o countries. Usa users para la actividad por persona
group_scope custom o my. El valor antiguo all se trata como my porque las claves de la API de usuario nunca reciben acceso a toda la instancia
group_ids ID de grupos separados por comas cuando group_scope=custom. Se ignoran los ID de grupos a los que el usuario de la API no pertenece
start_month Primer mes que se incluye, en formato YYYY-MM; por defecto, hace 12 meses
end_month Último mes que se incluye, en formato YYYY-MM; por defecto, el mes actual
interval Intervalo para la sección base: day, week, month o year
member_type Establécelo en delegate con section=users para devolver solo los delegados actuales

Una persona es delegada cuando tiene una membresía activa como delegada en cualquiera de los grupos seleccionados. Sus recuentos se agregan para todos los grupos seleccionados. Se devuelven las filas de los delegados incluso cuando todos los recuentos de actividad son cero. Los recuentos abarcan hilos, comentarios, encuestas, votos, conclusiones y reacciones; no son tasas de participación en las votaciones. Las filas de usuarios también incluyen las papeletas de votaciones identificadas que se han emitido, utilizado para votar o dejado sin utilizar. Las encuestas anónimas se excluyen de todos los recuentos de votación por persona. all_votes_cast es verdadero solo cuando se ha emitido al menos una papeleta y se han utilizado todas las papeletas emitidas para votar.

La API aplica las mismas reglas de visibilidad de los grupos que el informe de la aplicación. Una clave de la API de usuario no puede revelar datos del informe de grupos a los que ese usuario no puede acceder.

Ejemplo

curl -H 'Authorization: Bearer YOUR_API_KEY' 'https://www.loomio.com/api/b2/reports?section=users&group_scope=custom&group_ids=123&member_type=delegate&start_month=2026-01&end_month=2026-09'

El array users contiene filas completas de actividad:

{
  "users": [
    {
      "id": 456,
      "name": "Ada Lovelace",
      "country": "NZ",
      "delegate": true,
      "threads": 2,
      "comments": 8,
      "polls": 1,
      "votes": 5,
      "votes_cast": 5,
      "votes_issued": 6,
      "votes_missed": 1,
      "all_votes_cast": false,
      "outcomes": 1,
      "reactions": 4
    }
  ]
}

Crear una discusión

Crea una discusión como el usuario de la clave API.

POST /api/b2/discussions

Parámetros

Nombre Descripción
group_id Grupo en el que estará el hilo
title Título del hilo, obligatorio
description Contexto del hilo, opcional
description_format md o html, opcional, por defecto md
recipient_audience group o null. Si es group, se notificará a todo el grupo sobre el nuevo hilo
recipient_user_ids Array de ID de usuarios a los que notificar o invitar al hilo
recipient_emails Array de direcciones de correo electrónico de las personas a las que invitar al hilo
recipient_message Mensaje que se incluye en la invitación por correo electrónico

Ejemplo

curl -H 'Authorization: Bearer YOUR_API_KEY' -X POST -H 'Content-Type: application/json' -d '{"group_id": 123, "title":"example thread", "recipient_emails":["person@example.com"]}' https://www.loomio.com/api/b2/discussions

Mostrar una discusión

Obtén una discusión usando el ID de la discusión, un número entero, o la clave, una cadena de texto.

GET /api/b2/discussions/:id

Ejemplo

curl -H 'Authorization: Bearer YOUR_API_KEY' https://www.loomio.com/api/b2/discussions/abc123

Listar discusiones

Lista las discusiones de un grupo visibles para el usuario de la clave API. En un grupo visible públicamente, una persona que no sea miembro puede listar las discusiones públicas del grupo; las discusiones privadas siguen restringidas a los usuarios que pueden leerlas en Loomio.

GET /api/b2/discussions

Parámetros

Nombre Descripción
group_id Número entero, obligatorio. ID del grupo cuyas discusiones se van a listar
status Cadena de texto, opcional, valor predeterminado open. Valores: open, closed, all
limit Número entero, opcional, valor predeterminado 50. Tamaño de página
offset Número entero, opcional, valor predeterminado 0. Desplazamiento para la paginación

Compatibilidad con versiones anteriores: per y from se aceptan como alias de limit y offset y seguirán funcionando.

Ejemplo

curl -H 'Authorization: Bearer YOUR_API_KEY' 'https://www.loomio.com/api/b2/discussions?group_id=123'

Listar hilos

Lista los hilos de discusión y de encuesta visibles para el usuario de la clave API, ordenados por la actividad más reciente. El ID de un hilo es el valor de topic_id.

GET /api/b2/threads

Parámetros

Nombre Descripción
limit Número entero, opcional, valor predeterminado 50. Tamaño de página
offset Número entero, opcional, valor predeterminado 0. Desplazamiento para la paginación

Ejemplo

curl -H 'Authorization: Bearer YOUR_API_KEY' 'https://www.loomio.com/api/b2/threads?limit=50&offset=0'

Leer un hilo

Lee un hilo, la secuencia ordenada de eventos del hilo o el documento Markdown con todo el contenido visible del hilo.

GET /api/b2/threads/:topic_id

GET /api/b2/threads/:topic_id/items

GET /api/b2/threads/:topic_id/markdown

Ejemplo

GET https://www.loomio.com/api/b2/threads/<topic_id>
GET https://www.loomio.com/api/b2/threads/<topic_id>/items
GET https://www.loomio.com/api/b2/threads/<topic_id>/markdown

El endpoint items devuelve la secuencia ordenada de eventos, incluidos los comentarios, las encuestas, los votos y las conclusiones visibles. El endpoint markdown devuelve todo el contenido visible del hilo en un único documento Markdown. Los motivos de los votos solo se incluyen cuando son visibles para el usuario de la clave API.

Todos los endpoints de hilos aplican los mismos permisos que la interfaz de Loomio. La clave API no concede acceso a un hilo que el usuario no pueda abrir normalmente.

Editar una discusión

Edita una discusión como el usuario de la clave API. Se aplican los mismos permisos que en Loomio: el usuario debe tener permiso para editar esa discusión.

PATCH /api/b2/discussions/:id

Parámetros

Nombre Descripción
title Título actualizado
description Contexto actualizado
description_format md o html, opcional, valor predeterminado md
recipient_audience group o null. Si es group, se notificará a todo el grupo sobre la edición
recipient_user_ids Lista de IDs de usuarios a los que notificar o invitar al hilo
recipient_emails Lista de direcciones de correo electrónico de las personas a las que invitar al hilo
recipient_message Mensaje que se incluirá en la invitación por correo electrónico

Ejemplo

curl -H 'Authorization: Bearer YOUR_API_KEY' -X PATCH -H 'Content-Type: application/json' -d '{"title":"updated thread title", "description":"updated context", "description_format":"md"}' https://www.loomio.com/api/b2/discussions/123

Eliminar una discusión de forma lógica

Elimina una discusión de forma lógica como el usuario de la clave de API. Esto descarta la discusión y conserva el registro de la discusión.

DELETE /api/b2/discussions/:id

Ejemplo

curl -H 'Authorization: Bearer YOUR_API_KEY' -X DELETE https://www.loomio.com/api/b2/discussions/123

Crear un comentario

Crea un comentario en una discusión como el usuario de la clave de API.

POST /api/b2/comments

Parámetros

Nombre Descripción
discussion_id Entero, obligatorio. ID de la discusión en la que comentar
body Cuerpo del comentario, obligatorio salvo que se proporcione un archivo adjunto
body_format md o html, opcional, valor predeterminado: md

Ejemplo

curl -H 'Authorization: Bearer YOUR_API_KEY' -X POST -H 'Content-Type: application/json' -d '{"discussion_id": 123, "body":"example comment", "body_format":"md"}' https://www.loomio.com/api/b2/comments

Editar un comentario

Edita un comentario como el usuario de la clave de API. Se aplican los mismos permisos que en Loomio: el usuario debe tener permiso para editar ese comentario.

PATCH /api/b2/comments/:id

Parámetros

Nombre Descripción
body Cuerpo actualizado del comentario
body_format md o html, opcional, valor predeterminado: md

Ejemplo

curl -H 'Authorization: Bearer YOUR_API_KEY' -X PATCH -H 'Content-Type: application/json' -d '{"body":"updated comment", "body_format":"md"}' https://www.loomio.com/api/b2/comments/123

Eliminar un comentario de forma lógica

Elimina un comentario de forma lógica como el usuario de la clave de API. Esto descarta el comentario, oculta el cuerpo del comentario y conserva el registro del comentario.

DELETE /api/b2/comments/:id

Ejemplo

curl -H 'Authorization: Bearer YOUR_API_KEY' -X DELETE https://www.loomio.com/api/b2/comments/123

Crear una encuesta

Crea una encuesta como el usuario de la clave de API.

POST /api/b2/polls

Parámetros

Nombre Descripción
group_id Entero, opcional, null por defecto. ID del grupo de la encuesta. Si se proporciona discussion_id, se ignora group_id
discussion_id Entero, opcional, null por defecto. ID del hilo de discusión al que añadir esta encuesta
title Cadena de texto, obligatoria. Título de la encuesta
poll_type Cadena de texto, obligatoria. Valores: proposal, poll, count, score, ranked_choice, meeting, dot_vote
details Cadena de texto, opcional. Texto del cuerpo de la encuesta
details_format Cadena de texto, opcional, md por defecto. Valores: md o html
options Lista de cadenas de texto. Si poll_type es proposal, los valores válidos son agree, disagree, abstain, block. Si poll_type es meeting, proporciona cadenas de texto con fechas o fechas y horas en formato ISO 8601. Para los demás tipos de encuesta, cualquier cadena de texto es válida
closing_at Cadena de texto en formato ISO 8601 o null, null por defecto. Ejemplo: 2026-09-01T12:00:00Z. Si es null, la votación está deshabilitada y la encuesta se considera en preparación
specified_voters_only Booleano, opcional, false por defecto. Si es true, solo pueden votar las personas especificadas. Si es false, se invitará a votar a todas las personas del grupo
hide_results Cadena de texto, opcional, off por defecto. Valores: off, until_vote, until_closed
shuffle_options Booleano, false por defecto. Muestra las opciones a los votantes en orden aleatorio
anonymous Booleano, opcional, false por defecto. Oculta las identidades de los votantes
recipient_audience group o null, opcional, null por defecto. Si es group, se notificará a todo el grupo
notify_on_closing_soon Cadena de texto, opcional, nobody por defecto. Valores: nobody, author, undecided_voters, voters
recipient_user_ids Lista de IDs de usuarios a quienes notificar o invitar
recipient_emails Lista de direcciones de correo electrónico de personas a quienes invitar a votar
recipient_message Mensaje que se incluirá en la invitación por correo electrónico
notify_recipients Booleano, false por defecto. Si es false, añade personas sin enviar notificaciones. Si es true, todas las personas invitadas en esta solicitud recibirán una notificación por correo electrónico

Ejemplo

curl -H 'Authorization: Bearer YOUR_API_KEY' -X POST -H 'Content-Type: application/json' -d '{"group_id": 123, "title":"example poll", "poll_type": "proposal", "options": ["agree", "disagree"], "closing_at": "2026-09-01T12:00:00Z", "recipient_emails":["person@example.com"]}' https://www.loomio.com/api/b2/polls

Mostrar una encuesta

Obtén una encuesta mediante el ID de la encuesta, un entero, o la clave, una cadena de texto.

GET /api/b2/polls/:id

Ejemplo

curl -H 'Authorization: Bearer YOUR_API_KEY' https://www.loomio.com/api/b2/polls/abc123

Listar encuestas

Lista las encuestas de un grupo visibles para el usuario de la clave API. En un grupo visible públicamente, una persona que no sea miembro puede listar las encuestas públicas; las encuestas privadas siguen restringidas a los usuarios que pueden leerlas en Loomio. La respuesta incluye la conclusión actual de cada encuesta visible, por lo que puedes usar status=closed para listar las propuestas sobre las que ya se ha tomado una decisión.

GET /api/b2/polls

Parámetros

Nombre Descripción
group_id Entero, obligatorio. ID del grupo cuyas encuestas se listarán
status Cadena de texto, opcional, active por defecto. Valores: active, closed, all
limit Entero, opcional, 50 por defecto. Tamaño de página
offset Entero, opcional, 0 por defecto. Desplazamiento para la paginación

Compatibilidad con versiones anteriores: per y from se aceptan como alias de limit y offset y seguirán funcionando.

Ejemplo

curl -H 'Authorization: Bearer YOUR_API_KEY' 'https://www.loomio.com/api/b2/polls?group_id=123'

Editar una encuesta

Edita una encuesta como el usuario de la clave API. Se aplican los mismos permisos que en Loomio: el usuario debe tener permiso para editar esa encuesta.

PATCH /api/b2/polls/:id

Parámetros

Nombre Descripción
title Título actualizado
details Detalles actualizados de la encuesta
details_format md o html, opcional, md por defecto
options Nombres actualizados de las opciones. Cambiar las opciones puede afectar a los votos existentes según el estado de la encuesta
closing_at Cadena de texto en formato ISO 8601 o null
recipient_audience group o null. Si es group, se notificará a todo el grupo
recipient_user_ids Lista de IDs de usuarios a quienes notificar o invitar
recipient_emails Lista de direcciones de correo electrónico de personas a quienes invitar a votar
recipient_message Mensaje que se incluirá en la invitación por correo electrónico

Ejemplo

curl -H 'Authorization: Bearer YOUR_API_KEY' -X PATCH -H 'Content-Type: application/json' -d '{"title":"updated poll title", "details":"updated details", "details_format":"md"}' https://www.loomio.com/api/b2/polls/123

Eliminar una encuesta de forma lógica

Elimina una encuesta de forma lógica como el usuario de la clave API. Esto descarta la encuesta y conserva el registro de la encuesta.

DELETE /api/b2/polls/:id

Ejemplo

curl -H 'Authorization: Bearer YOUR_API_KEY' -X DELETE https://www.loomio.com/api/b2/polls/123

Listar membresías

Lista las membresías visibles para el usuario de la clave de API. Los miembros del grupo pueden consultar los nombres, los ID, los títulos y los roles de los miembros. Las direcciones de correo electrónico solo se incluyen para la cuenta del propio usuario de la clave de API o cuando ese usuario es administrador del grupo.

GET /api/b2/memberships

Parámetros

Nombre Descripción
group_id Entero, obligatorio. ID del grupo cuyas membresías se listarán

Ejemplo

curl -H 'Authorization: Bearer YOUR_API_KEY' 'https://www.loomio.com/api/b2/memberships?group_id=123'

Gestionar membresías

Envía una lista de direcciones de correo electrónico. Se enviará una invitación al grupo a todas las direcciones nuevas. A diferencia de la consulta de membresías, esta operación requiere permisos de administrador del grupo.

POST /api/b2/memberships

Parámetros

Nombre Descripción
group_id Entero, obligatorio. ID del grupo cuyas membresías se gestionarán
emails Array de cadenas de texto, obligatorio. Direcciones de correo electrónico de las personas a las que invitar al grupo
remove_absent Booleano. Si es true, elimina del grupo a cualquier persona cuya dirección de correo electrónico no esté en la lista

Ejemplo

curl -H 'Authorization: Bearer YOUR_API_KEY' -X POST -H 'Content-Type: application/json' -d '{"group_id": 123, "emails":["person@example.com"]}' https://www.loomio.com/api/b2/memberships

Si pasas remove_absent=1, se eliminarán del grupo todos los miembros que no estén incluidos en la lista. Ten cuidado, podrías eliminar a todos los miembros de tu grupo.

curl -H 'Authorization: Bearer YOUR_API_KEY' -X POST -H 'Content-Type: application/json' -d '{"group_id": 123, "emails":["person@example.com"], "remove_absent": 1}' https://www.loomio.com/api/b2/memberships

Esto devuelve un objeto con {added_emails: ["person@added.com"], removed_emails: ["person@removed.com"]}.

Esta página se tradujo automáticamente. Si alguna palabra es incorrecta o poco clara, escribe a contact@loomio.org y la corregiremos.