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: x

create discussion

example

curl -X POST -H 'Content-Type: application/json' -d '{"title":"example thread", "recipient_emails":[""], "api_key": "x"}' https://www.loomio.org/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.org/api/b1/discussions/aBcD123?api_key=x

create poll

example

curl -X POST -H 'Content-Type: application/json' -d '{"title":"example poll", "poll_type": "proposal", "options": ["agree", "disagree"], "closing_at": "2022-08-26T19:00:00Z", "recipient_emails":[""], "api_key": "x"}' https://www.loomio.org/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 '2022-08-26T19:00:00Z'. If null then voting is disabled and poll is considered "Work in progress".
specified_voters_only boolean. optional. default: false. true: only invited people can vote, false: anyone in the group or thread can 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.
voter_can_add_options boolean. optional. default: false. if voters can add options to the poll.
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 true. set this to false if you want to add people to a poll without sending notifications.

show poll

Fetch a poll using the poll id (an integer) or key (a string)

example

curl https://www.loomio.org/api/b1/polls/aBcD123?api_key=x

list memberships

https://www.loomio.org/api/b1/memberships?api_key=x
curl -d 'api_key=x' https://www.loomio.org/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":["person@example.com"], "api_key": "x"}' https://www.loomio.org/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":["person@example.com"], "remove_absent": 1, "api_key": "x"}' https://www.loomio.org/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: ["person@added.com"], removed_emails: ["person@removed.com"]}.