API reference
Communities
Communities and their members.
List communities
GET/communities
Lists the workspace's communities with their members and next meetup.
- Scopes
- communities:read
Parameters
query
cursorstringWhere the page starts: nextCursor from the page before, exactly as it was returned. Leave out for the first page.
limitinteger (int32)How many on a page, up to 500.
Default:
100
Answers
- 200 A page of communities. CommunityList
Fields
dataCommunity[]The items of this page.
Show the fields
communityIdstring (uuid)The community's id.
slugstringIts address after /c/.
namestringIts name.
statusstringDraft or published.
citystring or nullWhere it meets.
onlinebooleanWhether it meets online.
timeZonestringIts time zone.
membersinteger (int32)Members.
pendingMembersinteger (int32)Members waiting for approval.
upcomingMeetupsinteger (int32)Meetups to come.
nextMeetupobject or nullThe next meetup.
Show the fields
namestring or nullIts name.
startsUtcstring (date-time) or nullWhen it starts, in UTC.
urlstring (uri)Its page.
nextCursorstring or nullThe cursor for the next page; null on the last page. Pass it as cursor, with the same filters.
hasMorebooleanWhether there is another page.
- 400 invalidCursor.
- 401 invalidKey, keyExpired, keyRevoked.
- 403 missingScope.
- 429 rateLimited.
Refusals
invalidKey keyExpired keyRevoked rateLimited missingScope invalidCursor
Request
curl "https://attendbeacon.com/api/v1/communities?limit=2" \
-H "Authorization: Bearer $ATTENDBEACON_KEY"const response = await fetch("https://attendbeacon.com/api/v1/communities?limit=2", {
headers: {
Authorization: `Bearer ${process.env.ATTENDBEACON_KEY}`
}
});
if (!response.ok) throw new Error((await response.json()).detail);
const data = await response.json();using System.Net.Http.Headers;
using System.Text;
using var client = new HttpClient();
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", Environment.GetEnvironmentVariable("ATTENDBEACON_KEY"));
using var request = new HttpRequestMessage(HttpMethod.Get, "https://attendbeacon.com/api/v1/communities?limit=2");
using var response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
var json = await response.Content.ReadAsStringAsync();import os
import requests
response = requests.get(
"https://attendbeacon.com/api/v1/communities", params={"limit": 2},
headers={
"Authorization": f"Bearer {os.environ['ATTENDBEACON_KEY']}"
}
)
response.raise_for_status()
data = response.json()$headers = @{
Authorization = "Bearer $env:ATTENDBEACON_KEY"
}
$data = Invoke-RestMethod -Method Get -Uri "https://attendbeacon.com/api/v1/communities?limit=2" -Headers $headers200 Example answer
{
"data": [
{
"communityId": "b3ac6200-0000-4000-8000-000000000001",
"slug": "beacon-community-amsterdam",
"name": "Beacon Community Amsterdam",
"status": "published",
"city": "Amsterdam",
"online": true,
"timeZone": "Europe/Amsterdam",
"members": 42,
"pendingMembers": 0,
"upcomingMeetups": 3,
"nextMeetup": {
"name": "Beacon Community #25: November 2026",
"startsUtc": "2026-11-05T17:30:00.000Z"
},
"url": "https://attendbeacon.com/c/beacon-community-amsterdam"
}
],
"nextCursor": null,
"hasMore": false
}400 invalidCursor.
{
"type": "https://attendbeacon.com/developers/errors#invalidCursor",
"title": "The cursor is not valid",
"status": 400,
"detail": "Pass nextCursor exactly as a list returned it, with the same filters.",
"instance": "/api/v1/communities",
"code": "invalidCursor",
"traceId": "00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01",
"error": "Pass nextCursor exactly as a list returned it, with the same filters."
}Get a community
GET/communities/{communityId}
Gets one community.
- Scopes
- communities:read
- Answers with an ETag; send If-None-Match to save a download.
Parameters
path
communityIdstring (uuid)requiredThe community's id.
header
If-None-MatchstringThe ETag you have: when it is still current the answer is 304 with no body.
Answers
- 200 The community. CommunityDetail
Fields
communityIdstring (uuid)The community's id.
slugstringIts address after /c/.
namestringIts name.
summarystring or nullA line about it.
descriptionstring or nullAbout it, in Markdown.
citystring or nullWhere it meets.
onlinebooleanWhether it meets online.
languagesstring[]Its languages.
timeZonestringIts time zone.
joinPolicystringOpen or approval.
statusstringDraft or published.
urlstring (uri)Its page.
createdUtcstring (date-time)When it was made, in UTC.
updatedUtcstring (date-time)When it last changed, in UTC.
- 304 Not modified: If-None-Match named the representation as it is.
- 401 invalidKey, keyExpired, keyRevoked.
- 403 missingScope.
- 404 notFound.
- 429 rateLimited.
Refusals
invalidKey keyExpired keyRevoked rateLimited missingScope notFound
Request
curl "https://attendbeacon.com/api/v1/communities/b3ac6200-0000-4000-8000-000000000001" \
-H "Authorization: Bearer $ATTENDBEACON_KEY"const response = await fetch("https://attendbeacon.com/api/v1/communities/b3ac6200-0000-4000-8000-000000000001", {
headers: {
Authorization: `Bearer ${process.env.ATTENDBEACON_KEY}`
}
});
if (!response.ok) throw new Error((await response.json()).detail);
const data = await response.json();using System.Net.Http.Headers;
using System.Text;
using var client = new HttpClient();
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", Environment.GetEnvironmentVariable("ATTENDBEACON_KEY"));
using var request = new HttpRequestMessage(HttpMethod.Get, "https://attendbeacon.com/api/v1/communities/b3ac6200-0000-4000-8000-000000000001");
using var response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
var json = await response.Content.ReadAsStringAsync();import os
import requests
response = requests.get(
"https://attendbeacon.com/api/v1/communities/b3ac6200-0000-4000-8000-000000000001",
headers={
"Authorization": f"Bearer {os.environ['ATTENDBEACON_KEY']}"
}
)
response.raise_for_status()
data = response.json()$headers = @{
Authorization = "Bearer $env:ATTENDBEACON_KEY"
}
$data = Invoke-RestMethod -Method Get -Uri "https://attendbeacon.com/api/v1/communities/b3ac6200-0000-4000-8000-000000000001" -Headers $headers200 Example answer
{
"communityId": "b3ac6200-0000-4000-8000-000000000001",
"slug": "beacon-community-amsterdam",
"name": "Beacon Community Amsterdam",
"summary": "Builders and operators of Amsterdam, every first Thursday: two talks, pizza and drinks, free for everybody.",
"description": "Beacon Community Amsterdam is the user group of the people who build software and the people who run it. We meet on the **first Thursday of every month** in the Beurs van Berlage: doors and pizza at 18:30, two talks of half an hour, then drinks.\n\n- Free, always: say you are coming so we order enough pizza.\n- Want to speak? Tell us at a meetup or by email.\n- Can't make it? Talks are recorded when the speaker agrees.\n\nOrganised by volunteers, hosted by Beacon Events.",
"city": "Amsterdam",
"online": true,
"languages": [
"en",
"nl"
],
"timeZone": "Europe/Amsterdam",
"joinPolicy": "open",
"status": "published",
"url": "https://attendbeacon.com/c/beacon-community-amsterdam",
"createdUtc": "2026-03-14T21:40:47.963Z",
"updatedUtc": "2026-10-14T21:40:55.134Z"
}401 invalidKey, keyExpired, keyRevoked.
{
"type": "https://attendbeacon.com/developers/errors#invalidKey",
"title": "No working API key",
"status": 401,
"detail": "No key was sent, or it is not one this platform made. Send it as Authorization: Bearer abk_... or in X-Api-Key.",
"instance": "/api/v1/communities/{communityId}",
"code": "invalidKey",
"traceId": "00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01",
"error": "No key was sent, or it is not one this platform made. Send it as Authorization: Bearer abk_... or in X-Api-Key."
}List members
GET/communities/{communityId}/members
Lists a community's members, oldest change first. Names and addresses need people:read.
- Scopes
- communities:read
Parameters
path
communityIdstring (uuid)requiredThe community's id.
query
cursorstringWhere the page starts: nextCursor from the page before, exactly as it was returned. Leave out for the first page.
limitinteger (int32)How many on a page, up to 500.
Default:
100updatedSincestring (date-time)Only what changed at or after this moment, in UTC unless it says otherwise. Pass the newest updatedUtc your last sync saw.
statusstringOnly members with this status.
One of:
active,pending,left
Answers
- 200 A page of members. CommunityMemberList
Fields
dataCommunityMember[]The items of this page.
Show the fields
memberIdstring (uuid)The member's id.
communityIdstring (uuid)The community's id.
namestring or nullTheir name. Null without people:read.
emailstring or nullTheir address. Null without people:read.
languagestringTheir language.
statusstringActive, pending or left.
announcementsbooleanWhether they want announcements.
remindersbooleanWhether they want reminders.
joinedUtcstring (date-time)When they joined, in UTC.
approvedUtcstring (date-time) or nullWhen they were approved, in UTC.
updatedUtcstring (date-time)When they last changed, in UTC.
erasedbooleanWhether the person deleted their data from the event app; then nothing personal is returned, whatever the key may read.
personalDatastringWhether the personal fields are here: included, withheld (the key lacks people:read) or erased (the person deleted their data).
One of:
included,withheld,erased
nextCursorstring or nullThe cursor for the next page; null on the last page. Pass it as cursor, with the same filters.
hasMorebooleanWhether there is another page.
- 400 invalidCursor, invalidUpdatedSince, invalidRequest.
- 401 invalidKey, keyExpired, keyRevoked.
- 403 missingScope.
- 404 notFound.
- 429 rateLimited.
Refusals
invalidKey keyExpired keyRevoked rateLimited missingScope notFound invalidCursor invalidUpdatedSince invalidRequest
Request
curl "https://attendbeacon.com/api/v1/communities/b3ac6200-0000-4000-8000-000000000001/members?limit=2" \
-H "Authorization: Bearer $ATTENDBEACON_KEY"const response = await fetch("https://attendbeacon.com/api/v1/communities/b3ac6200-0000-4000-8000-000000000001/members?limit=2", {
headers: {
Authorization: `Bearer ${process.env.ATTENDBEACON_KEY}`
}
});
if (!response.ok) throw new Error((await response.json()).detail);
const data = await response.json();using System.Net.Http.Headers;
using System.Text;
using var client = new HttpClient();
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", Environment.GetEnvironmentVariable("ATTENDBEACON_KEY"));
using var request = new HttpRequestMessage(HttpMethod.Get, "https://attendbeacon.com/api/v1/communities/b3ac6200-0000-4000-8000-000000000001/members?limit=2");
using var response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
var json = await response.Content.ReadAsStringAsync();import os
import requests
response = requests.get(
"https://attendbeacon.com/api/v1/communities/b3ac6200-0000-4000-8000-000000000001/members", params={"limit": 2},
headers={
"Authorization": f"Bearer {os.environ['ATTENDBEACON_KEY']}"
}
)
response.raise_for_status()
data = response.json()$headers = @{
Authorization = "Bearer $env:ATTENDBEACON_KEY"
}
$data = Invoke-RestMethod -Method Get -Uri "https://attendbeacon.com/api/v1/communities/b3ac6200-0000-4000-8000-000000000001/members?limit=2" -Headers $headers200 Example answer
{
"data": [
{
"memberId": "b3ac6204-0000-4000-8000-000000000001",
"communityId": "b3ac6200-0000-4000-8000-000000000001",
"name": "Sanne de Vries",
"email": "sanne.1@community.example",
"language": "nl",
"status": "active",
"announcements": true,
"reminders": true,
"joinedUtc": "2026-04-16T00:40:47.963Z",
"approvedUtc": "2026-04-16T00:40:47.963Z",
"updatedUtc": "2026-10-14T21:40:55.284Z",
"erased": false,
"personalData": "included"
},
{
"memberId": "b3ac6204-0000-4000-8000-000000000002",
"communityId": "b3ac6200-0000-4000-8000-000000000001",
"name": "Daan Jansen",
"email": "daan.2@community.example",
"language": "en",
"status": "active",
"announcements": true,
"reminders": true,
"joinedUtc": "2026-04-17T06:40:47.963Z",
"approvedUtc": "2026-04-17T06:40:47.963Z",
"updatedUtc": "2026-10-14T21:40:55.364Z",
"erased": false,
"personalData": "included"
}
],
"nextCursor": "YzE6MDYzOTI3NjEwODU1MzY0MDAwMHxiM2FjNjIwNDAwMDA0MDAwODAwMDAwMDAwMDAwMDAwMg",
"hasMore": true
}400 invalidCursor, invalidUpdatedSince, invalidRequest.
{
"type": "https://attendbeacon.com/developers/errors#invalidCursor",
"title": "The cursor is not valid",
"status": 400,
"detail": "Pass nextCursor exactly as a list returned it, with the same filters.",
"instance": "/api/v1/communities/{communityId}/members",
"code": "invalidCursor",
"traceId": "00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01",
"error": "Pass nextCursor exactly as a list returned it, with the same filters."
}The guides and this site are in your language. The API reference's own descriptions are in English, as the API itself speaks.