Loomio API
Hi! We've created this API for people who are writing integrations for Loomio. At this stage it's still new and development is request driven - meaning that if you want to see a new feature, please join the product development group and explain what you would like to do.
Your API key is:
create discussion
example
curl -X POST -H 'Content-Type: application/json' -d '{"group_id": , "title":"example thread", "recipient_emails":[""], "api_key": ""}' https://www.loomio.com/api/b1/discussions
params
title | title of the thread (required) |
description | context for the thread (optional) |
description_format | string. either 'md' or 'html' (optional, default: md) |
recipient_audience | string 'group' or null. if 'group' whole group will be notified about the new thread (optional) |
recipient_user_ids | array of user ids to notify or invite to the thread (optional) |
recipient_emails | array of email addresses of people to invite to the thread (optional) |
recipient_message | string. message to include in the email invitation (optional) |
show discussion
Fetch a discussion using the discussion id (an integer) or key (a string) using the following request format
example
curl https://www.loomio.com/api/b1/discussions/aBcD123?api_key=examplekey
create poll
example
curl -X POST -H 'Content-Type: application/json' -d '{"title":"example poll", "poll_type": "proposal", "options": ["agree", "disagree"], "closing_at": "2024-09-21T18:00:00Z", "recipient_emails":[""], "api_key": "examplekey"}' https://www.loomio.com/api/b1/polls
params
title | string. required. title of the poll |
poll_type | string. required. values: 'proposal', 'poll', 'count', 'score', 'ranked_choice', 'meeting', 'dot_vote' |
details | string. optional. the body text of the poll |
details_format | string. optional. default: md. values: 'md' or 'html'. |
options | array of strings. If poll_type is proposal then valid values are 'agree', 'disagree', 'abstain', 'block'. If poll_type is meeting then a provide iso8601 date or datetime strings '2021-02-01' or '2022-02-15T23:32:39Z'. For all other poll_types, any string is valid. |
closing_at | iso8601 string or null. default: null. Specify when the poll closes with an iso8601 string such as '2024-09-21T18:00:00Z'. If null then voting is disabled and poll is considered "Work in progress". |
specified_voters_only | boolean. optional. default: false. true: only specified people can vote, false: everyone in the group will be invited to vote |
hide_results | string. optional. default: 'off'. values: 'off', 'until_vote', 'until_closed'. allow voters to see the results before the poll has closed |
shuffle_options | boolean. default false. display options to voters in random order. |
anonymous | boolean. optional. default: false. true: hide identities of voters. |
discussion_id | integer. optional. default: null. id of discussion thread to add this poll to. |
recipient_audience | string 'group' or null. optional. default: null. if 'group' whole group will be notified about the new thread. |
notify_on_closing_soon | string. optional. default: 'nobody'. values: 'nobody', 'author', 'undecided_voters' or 'voters'. specify the who to send a reminder notification to, 24 hours before the poll closes. |
recipient_user_ids | array of user ids to notify or invite |
recipient_emails | array of email addresses of people to invite to vote |
recipient_message | message to include in the email invitation |
notify_recipients | boolean. default false. false: add people to a poll without sending notifications. true: everyone invited (in this request) will get a notification email. |
show poll
Fetch a poll using the poll id (an integer) or key (a string)
example
curl https://www.loomio.com/api/b1/polls/aBcD123?api_key=examplekey
list memberships
https://www.loomio.com/api/b1/memberships?api_key=examplekeycurl -d 'api_key=examplekey' https://www.loomio.com/api/b1/memberships
manage memberships
send a list of emails. it will invite all the new email addresses to the group.
curl -X POST -H 'Content-Type: application/json' -d '{"emails":["[email protected]"], "api_key": "examplekey"}' https://www.loomio.com/api/b1/memberships
if you pass remove_absent=1 then any members of the group who were not included in the list will be removed from the group. be careful, you could remove everyone in your group!
curl -X POST -H 'Content-Type: application/json' -d '{"emails":["[email protected]"], "remove_absent": 1, "api_key": "examplekey"}' https://www.loomio.com/api/b1/memberships
params
emails | array of strings. required. email addresses of people to invite into the group |
remove_absent | boolean. If true, remove anyone from the group who's email is not present in the list |
this returns an object with {added_emails: ["[email protected]"], removed_emails: ["[email protected]"]}.