Eden Communities API
The Communities API from Eden — 6 operation(s) for communities.
The Communities API from Eden — 6 operation(s) for communities.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/eden-so:eden-so-communities-api"
curl "https://apis.io/api/v1/apis?limit=25"
Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: Eden store Communities API
version: 1.0.0
summary: Sales, customers, products, communities, email list, and webhooks for an Eden store.
description: 'Record sales from any checkout, give and remove access, list every sale and customer, make and publish products, post in your communities, manage the store''s email list, and get events by webhook.
**Sign in:** `Authorization: Bearer `, an Eden API key from Settings → API with Full access, or Custom with Store on Edit (Store on Read can only make GET calls). A key reaches one store, picked when it''s made. Store calls need Starter or above.
**Lists** take `limit` (1 to 100), `starting_after` (the last page''s `next_cursor`), `created_after`, and `created_before`, and answer `{ ok, data, has_more, next_cursor }`.
Your workspace (Discover, scheduling, boards, notes, Custom AIs) is a separate spec: https://mcp.eden.so/v1/openapi.json'
contact:
name: Eden
url: https://eden.so/help/api/api-reference/
termsOfService: https://eden.so/terms/
servers:
- url: https://api.eden.so
description: Eden store API
security:
- apiKey: []
tags:
- name: Communities
paths:
/store-app/v1/communities:
get:
operationId: getCommunities
summary: List your communities
description: The communities this account runs (owner, admin, or moderator). Communities are invite-only for now; other accounts get 403 `communities_not_enabled`.
tags:
- Communities
responses:
'200':
description: 'Done. Most answers carry `ok: true`.'
content:
application/json:
schema:
type: object
'400':
$ref: '#/components/responses/Failure'
'401':
$ref: '#/components/responses/Failure'
'402':
$ref: '#/components/responses/Failure'
'403':
$ref: '#/components/responses/Failure'
'404':
$ref: '#/components/responses/Failure'
'409':
$ref: '#/components/responses/Failure'
'422':
$ref: '#/components/responses/Failure'
'429':
$ref: '#/components/responses/Failure'
'500':
$ref: '#/components/responses/Failure'
/store-app/v1/communities/{communityId}/channels:
get:
operationId: getCommunitiesCommunityIdChannels
summary: List a community's chat channels
description: Open channels. `posting_role` hosts means only the owner, admins, and moderators can send there.
tags:
- Communities
parameters:
- name: communityId
in: path
required: true
schema:
type: string
responses:
'200':
description: 'Done. Most answers carry `ok: true`.'
content:
application/json:
schema:
type: object
'400':
$ref: '#/components/responses/Failure'
'401':
$ref: '#/components/responses/Failure'
'402':
$ref: '#/components/responses/Failure'
'403':
$ref: '#/components/responses/Failure'
'404':
$ref: '#/components/responses/Failure'
'409':
$ref: '#/components/responses/Failure'
'422':
$ref: '#/components/responses/Failure'
'429':
$ref: '#/components/responses/Failure'
'500':
$ref: '#/components/responses/Failure'
/store-app/v1/communities/{communityId}/categories:
get:
operationId: getCommunitiesCommunityIdCategories
summary: List a community's forum categories
description: Open categories, with `can_post` for this account.
tags:
- Communities
parameters:
- name: communityId
in: path
required: true
schema:
type: string
responses:
'200':
description: 'Done. Most answers carry `ok: true`.'
content:
application/json:
schema:
type: object
'400':
$ref: '#/components/responses/Failure'
'401':
$ref: '#/components/responses/Failure'
'402':
$ref: '#/components/responses/Failure'
'403':
$ref: '#/components/responses/Failure'
'404':
$ref: '#/components/responses/Failure'
'409':
$ref: '#/components/responses/Failure'
'422':
$ref: '#/components/responses/Failure'
'429':
$ref: '#/components/responses/Failure'
'500':
$ref: '#/components/responses/Failure'
/store-app/v1/communities/{communityId}/messages:
post:
operationId: postCommunitiesCommunityIdMessages
summary: Send a chat message
description: 'Sends from your own account, live, like typing it in the app. Mention someone as `` to push them, or write `` to push everyone who can see the channel. Link a channel as `` or a Forum category as ``: members see a #Name chip that opens it. Slow mode and holds apply: `held: true` means it waits for a moderator.'
tags:
- Communities
parameters:
- name: communityId
in: path
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- channel_id
- text
properties:
channel_id:
minLength: 1
maxLength: 200
description: From GET /store-app/v1/communities/{communityId}/channels.
type: string
text:
minLength: 1
maxLength: 4000
type: string
reply_to_id:
maxLength: 200
description: Answer this chat message (a threaded reply).
type: string
responses:
'200':
description: 'Done. Most answers carry `ok: true`.'
content:
application/json:
schema:
type: object
'400':
$ref: '#/components/responses/Failure'
'401':
$ref: '#/components/responses/Failure'
'402':
$ref: '#/components/responses/Failure'
'403':
$ref: '#/components/responses/Failure'
'404':
$ref: '#/components/responses/Failure'
'409':
$ref: '#/components/responses/Failure'
'422':
$ref: '#/components/responses/Failure'
'429':
$ref: '#/components/responses/Failure'
'500':
$ref: '#/components/responses/Failure'
/store-app/v1/communities/{communityId}/posts:
post:
operationId: postCommunitiesCommunityIdPosts
summary: Make a forum post
description: 'A post shows in the Forum. `notify_everyone: true` pushes every member who can see it, and emails them when the community''s post emails are on. Without it, only people the post mentions hear about it. (`announcement: true` is the old name and still works.) `video_url` puts a YouTube, Vimeo, Loom, Tella, Descript, or Wistia video at the top of the post. `comments_off: true` turns off replies on it, and `likes_off: true` turns off hearts.'
tags:
- Communities
parameters:
- name: communityId
in: path
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- title
- text
properties:
title:
minLength: 1
maxLength: 140
type: string
text:
minLength: 1
maxLength: 20000
description: The post body, in markdown.
type: string
category_id:
maxLength: 200
description: From GET /store-app/v1/communities/{communityId}/categories. Leave out for none.
type: string
notify_everyone:
description: 'true pushes every member who can see the post, and emails them when the community''s post emails are on. Leave out or false: only people it mentions hear about it.'
type: boolean
announcement:
description: Old name for notify_everyone. Still works.
type: boolean
video_url:
maxLength: 2000
description: A YouTube, Vimeo, Loom, Tella, Descript, or Wistia link, shown in a player at the top of the post. Other sites are refused.
type: string
comments_off:
description: 'true turns off comments on the post: nobody can reply to it.'
type: boolean
likes_off:
description: 'true turns off likes on the post: nobody can heart it.'
type: boolean
responses:
'200':
description: 'Done. Most answers carry `ok: true`.'
content:
application/json:
schema:
type: object
'400':
$ref: '#/components/responses/Failure'
'401':
$ref: '#/components/responses/Failure'
'402':
$ref: '#/components/responses/Failure'
'403':
$ref: '#/components/responses/Failure'
'404':
$ref: '#/components/responses/Failure'
'409':
$ref: '#/components/responses/Failure'
'422':
$ref: '#/components/responses/Failure'
'429':
$ref: '#/components/responses/Failure'
'500':
$ref: '#/components/responses/Failure'
/store-app/v1/communities/{communityId}/events:
post:
operationId: postCommunitiesCommunityIdEvents
summary: Schedule an event
description: One-off or repeating. Hosted live in Eden unless you send `link_url`. Members RSVP on the Events tab and get reminders; nobody is pushed just because it was made.
tags:
- Communities
parameters:
- name: communityId
in: path
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- title
- starts_at
- time_zone
properties:
title:
minLength: 1
maxLength: 120
type: string
starts_at:
minLength: 1
maxLength: 60
description: A wall time in time_zone ("2026-10-14T17:00") or an ISO time with an offset. Must be in the future.
type: string
time_zone:
minLength: 1
maxLength: 80
description: An IANA zone, like "America/New_York".
type: string
duration_min:
minimum: 15
maximum: 480
description: Default 60.
anyOf:
- format: integer
default: 0
type: string
- minimum: 15
maximum: 480
description: Default 60.
type: integer
description:
maxLength: 4000
type: string
repeat:
anyOf:
- const: none
type: string
- const: weekly
type: string
- const: every_2_weeks
type: string
- const: every_4_weeks
type: string
- const: monthly
type: string
repeat_until:
maxLength: 60
description: A date ("2026-12-31"); the series stops after it.
type: string
repeat_count:
minimum: 1
maximum: 200
anyOf:
- format: integer
default: 0
type: string
- minimum: 1
maximum: 200
type: integer
link_url:
maxLength: 2000
description: An https:// call link (Zoom, Meet). Leave out to host it live in Eden.
type: string
only_buyers_of:
maxItems: 50
description: Only buyers of these product ids see it. Leave out for every member.
type: array
items:
maxLength: 200
type: string
responses:
'200':
description: 'Done. Most answers carry `ok: true`.'
content:
application/json:
schema:
type: object
'400':
$ref: '#/components/responses/Failure'
'401':
$ref: '#/components/responses/Failure'
'402':
$ref: '#/components/responses/Failure'
'403':
$ref: '#/components/responses/Failure'
'404':
$ref: '#/components/responses/Failure'
'409':
$ref: '#/components/responses/Failure'
'422':
$ref: '#/components/responses/Failure'
'429':
$ref: '#/components/responses/Failure'
'500':
$ref: '#/components/responses/Failure'
components:
schemas:
Failure:
type: object
required:
- ok
- error
properties:
ok:
type: boolean
const: false
error:
type: string
description: A machine code, like `product_not_found`.
message:
type: string
responses:
Failure:
description: The call failed. `error` and `message` say why.
content:
application/json:
schema:
$ref: '#/components/schemas/Failure'
securitySchemes:
apiKey:
type: http
scheme: bearer
bearerFormat: eden_pat_…
description: An Eden API key from Settings → API, or the Zapier app's OAuth token.