Commune

Commune turns newsletters into communities: each newsletter has an archive of articles and every article carries a threaded chat, with engagement insights, subscriber analytics, growth tracking and superfan identification on top. The Commune API (63 operations, 23 webhook topics, contract version 2026-08-26) exposes newsletters, articles, threads, messages, subscribers, tags, senders, domains, metrics, sends and event delivery over a cursor-paginated REST surface at api.usecommune.com, authenticated with bearer API keys or OAuth 2.1 (PKCE, dynamic client registration, RFC 9728 protected-resource metadata), versioned by a Commune-Version date header, with a required Idempotency-Key on every write and a hosted MCP server at api.usecommune.com/mcp.

Commune publishes 18 API contracts indexed on the APIs.io network, including Articles API, Engagement API, Event delivery API, and 15 more. Tagged areas include Newsletters, Email, Community, Publishing, and Creator Economy.

The Commune catalog on APIs.io includes 1 event-driven AsyncAPI specification, 1 JSON-LD context, and 1 Spectral governance ruleset.

Commune’s developer surface includes changelog, authentication, documentation, API reference, getting-started guide, pricing, signup flow, and 31 more developer resources.

63.7/100 strong Agent 59/100 agent native Full breakdown ↓
scored 2026-10-09 · rubric v0.23.0
2 published contracts 1 MCP Servers
NewslettersEmailCommunityPublishingCreator EconomySubscribersWebhooksMCPAnalyticsContent

Kin Score

Kin Score Kin Score How this is scored →
scored 2026-10-09 · rubric v0.23.0
Regulatory Posture applies to this provider. Its tags matched the Telecommunications regime, so Regulatory Posture carries 15 points of the composite. If this regime is wrong for your business, say so on your provider repo — the applicability map is public and we will correct it.
Create-or-Update Ergonomics could not be measured. We hold no machine-readable contract for this provider to read, so there is nothing to measure a write surface against. Excluded rather than scored zero: never-measured and measured-empty are different facts. Publishing an OpenAPI is what makes this facet — and several others — scorable at all.
The six quality facets above are damped to 85 points between them, because the conditional facet above carries the other 15. That is why each facet's contribution is shown against a damped maximum: raising a quality facet moves the composite by 85% of its nominal weight, not 100%. The full arithmetic is at apis.io/rating/.
Improve this rating by publishing the missing artifacts — every area above can be raised, and the full rubric is at apis.io/rating/. Every facet and dimension name above is a link: it opens that measurement's own page — what it means, the exact checks that feed it, how the whole catalog distributes on it, and the providers at the top of it. This rating is computed from github.com/api-evangelist/usecommune: open an issue to ask a question, or submit a pull request to add artifacts. Submit an artifact on GitHub — free → Manage your own listing — the Influence plan, $499/mo →

APIs 18

Individual APIs this provider publishes, each with its own machine-readable definition.

Commune Articles API

An article is one thing a newsletter published: written in Commune and sent, or imported from the newsletter's provider. Two rules gate every article read and are described on e...

Commune Engagement API

What Commune knows about one subscriber that a newsletter's email provider cannot answer: engagement scored across the inbox and the community together, and the raw event stream...

Commune Event delivery API

Where a newsletter's events go, and how a creator changes it. Commune hands every event it publishes to a delivery service that owns fan out, retries, signing and the delivery l...

Commune Highlights API

A highlight is a passage of an article a reader marked. It anchors a comment to the exact sentence that prompted it.

Commune Messages API

A message is a reply inside a thread, up to two levels deep. Reactions hang off a message.

Commune Metrics API

The rolled up numbers for a newsletter and for one article: headline stats for a period, acquisition attribution, bucketed series for charting, and one article's email performan...

Commune Newsletters API

A newsletter is the top level object in Commune. It owns its articles, its chat, its subscribers and its team. Everything else in this API hangs off one.

Commune Platform API

The API's own machinery rather than any newsletter's data: the readiness probe, what a credential has left of its rate limit budgets, what its newsletter's plan allows, and the ...

Commune Search API

One query across newsletters, articles, people and chat. Where a reader starts who does not yet have an identifier for any of them.

Commune Senders API

The addresses a newsletter sends from, and the state of the DNS that has to be in place for them to work. The sending half of the pair; Website domains is the other. Needs `send...

Commune Sends API

A send is one dispatch of one article to a newsletter's list: when it started, when it finished, and the three numbers it finished on. Not to be confused with Senders, one headi...

Commune Subscriber tags API

A tag segments a newsletter's audience. Sending an article to a tag stamps that article with an audience, which is what makes it invisible to everyone outside it. Named for the ...

Commune Subscribers API

Who receives a newsletter. Needs `audience`, and never a public surface: a newsletter's list belongs to its creator. `GET /subscriptions` is that edge read from the other end, t...

Commune Team API

Who may act on behalf of a newsletter: its owner, plus the members the owner added as admins, editors or guests. Both sides of that edge are here. A newsletter's roster answers ...

Commune Threads API

A thread is a conversation inside a newsletter's community. Commune has no separate posts or comments stack: a creator's broadcast, a reader's question and the discussion under ...

Commune Users API

A person with a Commune account: the readers who join a community and the writers who are credited on an article. Looked up by identifier or by username, and only ever as a publ...

Commune Webhooks API

The events Commune pushes to a consumer, rather than the resources a consumer pulls. Commune publishes state changes on 23 topics, each delivered as one HTTPS POST to an endpoin...

Commune Website domains API

A creator's own domain pointed at their Commune site, so their community lives at their address rather than at ours. The same prove you own this hostname flow as Senders, pointe...

Scroll for all 18

MCP Servers 1

Model Context Protocol servers that expose these APIs to AI agents.

Commune MCP Server

Commune ships a hosted, remote MCP server at https://api.usecommune.com/mcp (Streamable HTTP). The guide describes job-shaped tools (for example 'which readers am I about to los...

MCP SERVER

Pricing Plans 1

Published pricing tiers and plan structures.

Rate Limits 1

Documented rate limits and quota policies.

Usecommune Rate Limits

5 limits

RATE LIMITS

Event Specifications 1

AsyncAPI definitions for this provider's event-driven and streaming APIs.

Semantic Vocabularies 1

JSON-LD contexts and semantic vocabularies used across these APIs.

Usecommune Context

107 classes · 243 properties

JSON-LD

Spectral Rules 1

Spectral governance rulesets for linting and validating these APIs.

Commune API Rules

18 rules · 15 errors 2 warnings 1 info

SPECTRAL

OpenAPI Overlays 1

Overlays applied on top of this provider's contracts. Each card says who wrote it: a document the provider publishes, or one API Evangelist derived or generated.

Usecommune Openapi Overlay

4 actions · update · usecommune-openapi.yml

GENERATED

JSON Schema 6

Standalone JSON Schema definitions for this provider's data models.

ApiKey

15 properties

JSON SCHEMA

ArticlePerformance

4 properties

JSON SCHEMA

Article

18 properties

JSON SCHEMA

DeliveryAttempt

13 properties

JSON SCHEMA

NewsletterStats

8 properties

JSON SCHEMA

Send

10 properties

JSON SCHEMA

Security Posture 2

Authentication, domain security, vulnerability disclosure, and trust-center signals.

Usecommune Authentication

http/oauth2 · 2 schemes

SECURITY

Usecommune Domain Security

TLSv1.3 · DMARC

SECURITY

Scopes 1

OAuth scopes governing access to this provider's APIs.

Usecommune Scopes

14 scopes · authorizationCode

14 scopes

SCOPES

Agentic Access 1

Recommended x-agentic-access execution contracts for AI agents.

Usecommune Agentic Access

63 operations · 19 acting · 1 human-in-the-loop

63 operations · 19 acting

AGENTIC

Resources

Get Started 4

Portal, sign-up, and the first successful call

Documentation 2

Reference material describing how the API behaves

Agent Surfaces 7

MCP servers, agent skills, and machine-readable catalogs

Scroll for all 7

Design & Contract 10

Pagination, idempotency, versioning, errors, and events

Scroll for all 10

Access & Security 3

Authentication, authorization, and security posture

Operate 4

Status, limits, changes, and where to get help

Commercial 4

Pricing, plans, and the legal terms of use

Company 1

The organization behind the API

Other 3

Properties that don't map to a standard resource type

Source (apis.yml)

apis.yml Raw ↑
aid: usecommune
name: Commune
description: 'Commune turns newsletters into communities: each newsletter has an archive of articles and every article carries
  a threaded chat, with engagement insights, subscriber analytics, growth tracking and superfan identification on top. The
  Commune API (63 operations, 23 webhook topics, contract version 2026-08-26) exposes newsletters, articles, threads, messages,
  subscribers, tags, senders, domains, metrics, sends and event delivery over a cursor-paginated REST surface at api.usecommune.com,
  authenticated with bearer API keys or OAuth 2.1 (PKCE, dynamic client registration, RFC 9728 protected-resource metadata),
  versioned by a Commune-Version date header, with a required Idempotency-Key on every write and a hosted MCP server at api.usecommune.com/mcp.'
url: https://raw.githubusercontent.com/api-evangelist/usecommune/refs/heads/main/apis.yml
x-type: company
x-source: harvest:new-submission
x-tier: profiled
x-tier-reason: enrichment pass 2026-10-07 (local-v5; was harvest)
specificationVersion: '0.20'
created: '2026-10-07'
modified: '2026-10-07'
tags:
- Newsletters
- Email
- Community
- Publishing
- Creator Economy
- Subscribers
- Webhooks
- MCP
- Analytics
- Content
maintainers:
- FN: Kin Lane
  email: kin@apievangelist.com
- FN: APIs.json
  email: info@apis.io
image: https://usecommune.com/favicon.ico
common:
- type: MCPServer
  url: mcp/usecommune-mcp.yml
- type: LLMsTxt
  url: llms/usecommune-api-reference-llms.txt
- type: AgenticAccess
  url: agentic-access/usecommune-agentic-access.yml
- type: RateLimits
  url: rate-limits/usecommune-rate-limits.yml
- type: Plans
  url: plans/usecommune-plans-pricing.yml
- type: Spectral
  url: rules/usecommune-rules.yml
- type: JSONLD
  url: json-ld/usecommune-context.jsonld
- type: Vocabulary
  url: vocabulary/usecommune-vocabulary.yml
- type: AgentSkill
  url: skills/_index.yml
- type: Webhooks
  url: asyncapi/usecommune-webhooks.yml
- type: DataModel
  url: data-model/usecommune-data-model.yml
- type: ChangeLog
  url: changelog/usecommune-changelog.yml
- type: Idempotency
  url: conventions/usecommune-conventions.yml
- type: Conventions
  url: conventions/usecommune-conventions.yml
- type: Lifecycle
  url: lifecycle/usecommune-lifecycle.yml
- type: ErrorCatalog
  url: errors/usecommune-problem-types.yml
- type: Conformance
  url: conformance/usecommune-conformance.yml
- type: Overlay
  url: overlays/usecommune-openapi-overlay.yaml
- type: LLMsTxt
  url: llms/usecommune-llms.txt
- type: LLMsTxt
  url: llms/usecommune-dev-llms.txt
- type: WellKnown
  url: well-known/usecommune-well-known.yml
- type: Hosts
  url: hosts/usecommune-hosts.yml
- type: Vendors
  url: vendors/usecommune-vendors.yml
- type: Authentication
  url: authentication/usecommune-authentication.yml
- type: OAuthScopes
  url: scopes/usecommune-scopes.yml
- type: Website
  url: https://usecommune.com
- type: DeveloperPortal
  url: https://usecommune.dev/
- type: Documentation
  url: https://usecommune.dev/guides
- type: APIReference
  url: https://api-reference.usecommune.dev/
- type: GettingStarted
  url: https://usecommune.dev/guides/getting-started
- type: ChangeLog
  url: https://api-reference.usecommune.dev/changes
- type: Pricing
  url: https://usecommune.com/pricing
- type: SignUp
  url: https://usecommune.com/register
- type: Login
  url: https://usecommune.com/login
- type: TermsOfService
  url: https://usecommune.com/terms
- type: PrivacyPolicy
  url: https://usecommune.com/privacy
- type: Discord
  url: https://discord.gg/P6FtchV5e
- type: DomainSecurity
  url: security/usecommune-domain-security.yml
apis:
- aid: usecommune:usecommune-articles-api
  name: Commune Articles API
  description: 'An article is one thing a newsletter published: written in Commune and

    sent, or imported from the newsletter''s provider. Two rules

    gate every article read and are described on each operation. First, an

    article stamped with an audience is visible only to the newsletter''s team

    and to subscribers holding one of its tags. Second, an article dated in

    the future is invisible until that moment passes.


    An article written in Commune can be created and edited here, its body sent

    and returned as Markdown, and moved through its life: sent to a test

    address, queued for a time, taken back off the schedule, sent to the list,

    and re-attempted for the recipients a dispatch could not reach. An

    imported article is read only.


    What one reader did with an article is here too, from their side of it.

    `GET /saved-articles` and `GET /liked-articles` are the articles an account

    put aside and the articles it liked, across every newsletter it reads, and

    they need `account: read` rather than `content`. Both obey the two rules

    above, applied against the person rather than against a newsletter, so an

    article they may no longer read leaves the page on its own.'
  humanURL: https://api-reference.usecommune.dev/
  baseURL: https://api.usecommune.com
  tags:
  - Articles
  properties:
  - type: OpenAPI
    url: openapi/usecommune-articles-api-openapi.yml
  - type: Documentation
    url: https://api-reference.usecommune.dev/
  - type: JSONSchema
    url: json-schema/usecommune-newsletter-stats-schema.json
  - type: JSONSchema
    url: json-schema/usecommune-api-key-schema.json
  - type: JSONSchema
    url: json-schema/usecommune-delivery-attempt-schema.json
  - type: JSONSchema
    url: json-schema/usecommune-article-performance-schema.json
  - type: JSONSchema
    url: json-schema/usecommune-article-schema.json
  - type: JSONSchema
    url: json-schema/usecommune-send-schema.json
- aid: usecommune:usecommune-engagement-api
  name: Commune Engagement API
  description: 'What Commune knows about one subscriber that a newsletter''s email provider

    cannot answer: engagement scored across the inbox and the community

    together, and the raw event stream those scores are summed from. Row

    shaped and high cardinality, which is what a CRM or a re-engagement

    automation reads. Needs `insights`, and part of the one read surface Commune

    may put behind a plan.'
  humanURL: https://api-reference.usecommune.dev/
  baseURL: https://api.usecommune.com
  tags:
  - Engagement
  properties:
  - type: OpenAPI
    url: openapi/usecommune-engagement-api-openapi.yml
  - type: Documentation
    url: https://api-reference.usecommune.dev/
  - type: JSONSchema
    url: json-schema/usecommune-newsletter-stats-schema.json
  - type: JSONSchema
    url: json-schema/usecommune-api-key-schema.json
  - type: JSONSchema
    url: json-schema/usecommune-delivery-attempt-schema.json
  - type: JSONSchema
    url: json-schema/usecommune-article-performance-schema.json
  - type: JSONSchema
    url: json-schema/usecommune-article-schema.json
  - type: JSONSchema
    url: json-schema/usecommune-send-schema.json
- aid: usecommune:usecommune-event-delivery-api
  name: Commune Event delivery API
  description: 'Where a newsletter''s events go, and how a creator changes it. Commune

    hands every event it publishes to a delivery service that owns fan out,

    retries, signing and the delivery log, and a destination is one place that

    service sends them: an HTTPS endpoint, or a queue, stream or object store

    for a consumer that would rather not run a web server.


    Reading the list is an operation here, and so is reading the delivery

    attempt log: what was handed to which destination, what came back, and

    asking for one to be handed over again.


    Changing the destinations themselves is not. `portal-session` mints a link

    into the delivery service''s own portal, where a creator adds an endpoint,

    disables one and rotates a signing secret. Asking for an attempt to be

    replayed is the one write here, and is the same action as the portal''s

    retry button.


    Needs `webhooks` throughout, since a destination is a private endpoint of

    the creator''s, the list of them says which systems a newsletter is wired

    into, and the attempt log says what those systems were told and when.'
  humanURL: https://api-reference.usecommune.dev/
  baseURL: https://api.usecommune.com
  tags:
  - Event delivery
  properties:
  - type: OpenAPI
    url: openapi/usecommune-event-delivery-api-openapi.yml
  - type: Documentation
    url: https://api-reference.usecommune.dev/
  - type: JSONSchema
    url: json-schema/usecommune-newsletter-stats-schema.json
  - type: JSONSchema
    url: json-schema/usecommune-api-key-schema.json
  - type: JSONSchema
    url: json-schema/usecommune-delivery-attempt-schema.json
  - type: JSONSchema
    url: json-schema/usecommune-article-performance-schema.json
  - type: JSONSchema
    url: json-schema/usecommune-article-schema.json
  - type: JSONSchema
    url: json-schema/usecommune-send-schema.json
- aid: usecommune:usecommune-highlights-api
  name: Commune Highlights API
  description: 'A highlight is a passage of an article a reader marked. It anchors a

    comment to the exact sentence that prompted it.'
  humanURL: https://api-reference.usecommune.dev/
  baseURL: https://api.usecommune.com
  tags:
  - Highlights
  properties:
  - type: OpenAPI
    url: openapi/usecommune-highlights-api-openapi.yml
  - type: Documentation
    url: https://api-reference.usecommune.dev/
  - type: JSONSchema
    url: json-schema/usecommune-newsletter-stats-schema.json
  - type: JSONSchema
    url: json-schema/usecommune-api-key-schema.json
  - type: JSONSchema
    url: json-schema/usecommune-delivery-attempt-schema.json
  - type: JSONSchema
    url: json-schema/usecommune-article-performance-schema.json
  - type: JSONSchema
    url: json-schema/usecommune-article-schema.json
  - type: JSONSchema
    url: json-schema/usecommune-send-schema.json
- aid: usecommune:usecommune-messages-api
  name: Commune Messages API
  description: 'A message is a reply inside a thread, up to two levels deep. Reactions

    hang off a message.'
  humanURL: https://api-reference.usecommune.dev/
  baseURL: https://api.usecommune.com
  tags:
  - Messages
  properties:
  - type: OpenAPI
    url: openapi/usecommune-messages-api-openapi.yml
  - type: Documentation
    url: https://api-reference.usecommune.dev/
  - type: JSONSchema
    url: json-schema/usecommune-newsletter-stats-schema.json
  - type: JSONSchema
    url: json-schema/usecommune-api-key-schema.json
  - type: JSONSchema
    url: json-schema/usecommune-delivery-attempt-schema.json
  - type: JSONSchema
    url: json-schema/usecommune-article-performance-schema.json
  - type: JSONSchema
    url: json-schema/usecommune-article-schema.json
  - type: JSONSchema
    url: json-schema/usecommune-send-schema.json
- aid: usecommune:usecommune-metrics-api
  name: Commune Metrics API
  description: 'The rolled up numbers for a newsletter and for one article: headline stats

    for a period, acquisition attribution, bucketed series for charting, and

    one article''s email performance beside its community response. What a

    dashboard reads, where Engagement is what an automation reads. Creator

    scope, and part of the one read surface Commune may put behind a plan.'
  humanURL: https://api-reference.usecommune.dev/
  baseURL: https://api.usecommune.com
  tags:
  - Metrics
  properties:
  - type: OpenAPI
    url: openapi/usecommune-metrics-api-openapi.yml
  - type: Documentation
    url: https://api-reference.usecommune.dev/
  - type: JSONSchema
    url: json-schema/usecommune-newsletter-stats-schema.json
  - type: JSONSchema
    url: json-schema/usecommune-api-key-schema.json
  - type: JSONSchema
    url: json-schema/usecommune-delivery-attempt-schema.json
  - type: JSONSchema
    url: json-schema/usecommune-article-performance-schema.json
  - type: JSONSchema
    url: json-schema/usecommune-article-schema.json
  - type: JSONSchema
    url: json-schema/usecommune-send-schema.json
- aid: usecommune:usecommune-newsletters-api
  name: Commune Newsletters API
  description: 'A newsletter is the top level object in Commune. It owns its articles, its

    chat, its subscribers and its team. Everything else in this API hangs

    off one.'
  humanURL: https://api-reference.usecommune.dev/
  baseURL: https://api.usecommune.com
  tags:
  - Newsletters
  properties:
  - type: OpenAPI
    url: openapi/usecommune-newsletters-api-openapi.yml
  - type: Documentation
    url: https://api-reference.usecommune.dev/
  - type: JSONSchema
    url: json-schema/usecommune-newsletter-stats-schema.json
  - type: JSONSchema
    url: json-schema/usecommune-api-key-schema.json
  - type: JSONSchema
    url: json-schema/usecommune-delivery-attempt-schema.json
  - type: JSONSchema
    url: json-schema/usecommune-article-performance-schema.json
  - type: JSONSchema
    url: json-schema/usecommune-article-schema.json
  - type: JSONSchema
    url: json-schema/usecommune-send-schema.json
- aid: usecommune:usecommune-platform-api
  name: Commune Platform API
  description: 'The API''s own machinery rather than any newsletter''s data: the readiness

    probe, what a credential has left of its rate limit budgets, what its

    newsletter''s plan allows, and the newsletter''s API keys. A key can be

    listed and revoked here but never created, so a stolen credential cannot

    mint itself a replacement.'
  humanURL: https://api-reference.usecommune.dev/
  baseURL: https://api.usecommune.com
  tags:
  - Platform
  properties:
  - type: OpenAPI
    url: openapi/usecommune-platform-api-openapi.yml
  - type: Documentation
    url: https://api-reference.usecommune.dev/
  - type: JSONSchema
    url: json-schema/usecommune-newsletter-stats-schema.json
  - type: JSONSchema
    url: json-schema/usecommune-api-key-schema.json
  - type: JSONSchema
    url: json-schema/usecommune-delivery-attempt-schema.json
  - type: JSONSchema
    url: json-schema/usecommune-article-performance-schema.json
  - type: JSONSchema
    url: json-schema/usecommune-article-schema.json
  - type: JSONSchema
    url: json-schema/usecommune-send-schema.json
- aid: usecommune:usecommune-search-api
  name: Commune Search API
  description: 'One query across newsletters, articles, people and chat. Where a reader

    starts who does not yet have an identifier for any of them.'
  humanURL: https://api-reference.usecommune.dev/
  baseURL: https://api.usecommune.com
  tags:
  - Search
  properties:
  - type: OpenAPI
    url: openapi/usecommune-search-api-openapi.yml
  - type: Documentation
    url: https://api-reference.usecommune.dev/
  - type: JSONSchema
    url: json-schema/usecommune-newsletter-stats-schema.json
  - type: JSONSchema
    url: json-schema/usecommune-api-key-schema.json
  - type: JSONSchema
    url: json-schema/usecommune-delivery-attempt-schema.json
  - type: JSONSchema
    url: json-schema/usecommune-article-performance-schema.json
  - type: JSONSchema
    url: json-schema/usecommune-article-schema.json
  - type: JSONSchema
    url: json-schema/usecommune-send-schema.json
- aid: usecommune:usecommune-senders-api
  name: Commune Senders API
  description: 'The addresses a newsletter sends from, and the state of the DNS that has

    to be in place for them to work. The sending half of the pair; Website

    domains is the other. Needs `sending`.'
  humanURL: https://api-reference.usecommune.dev/
  baseURL: https://api.usecommune.com
  tags:
  - Senders
  properties:
  - type: OpenAPI
    url: openapi/usecommune-senders-api-openapi.yml
  - type: Documentation
    url: https://api-reference.usecommune.dev/
  - type: JSONSchema
    url: json-schema/usecommune-newsletter-stats-schema.json
  - type: JSONSchema
    url: json-schema/usecommune-api-key-schema.json
  - type: JSONSchema
    url: json-schema/usecommune-delivery-attempt-schema.json
  - type: JSONSchema
    url: json-schema/usecommune-article-performance-schema.json
  - type: JSONSchema
    url: json-schema/usecommune-article-schema.json
  - type: JSONSchema
    url: json-schema/usecommune-send-schema.json
- aid: usecommune:usecommune-sends-api
  name: Commune Sends API
  description: 'A send is one dispatch of one article to a newsletter''s list: when it

    started, when it finished, and the three numbers it finished on. Not to

    be confused with Senders, one heading below: a sender is the address an

    article goes out from and is configuration, a send is something that

    happened.


    Starting one is an operation under Articles, because it is a moment in an

    article''s life. Reading what became of it is here, because a run is its own

    object with its own identifier and one article can have more than one.


    The same run is announced as a `send.completed` event, carrying the same

    three numbers under the same names, and these operations are how a

    consumer reads them back afterwards from the identifier that event

    carried. Needs `sending`.'
  humanURL: https://api-reference.usecommune.dev/
  baseURL: https://api.usecommune.com
  tags:
  - Sends
  properties:
  - type: OpenAPI
    url: openapi/usecommune-sends-api-openapi.yml
  - type: Documentation
    url: https://api-reference.usecommune.dev/
  - type: JSONSchema
    url: json-schema/usecommune-newsletter-stats-schema.json
  - type: JSONSchema
    url: json-schema/usecommune-api-key-schema.json
  - type: JSONSchema
    url: json-schema/usecommune-delivery-attempt-schema.json
  - type: JSONSchema
    url: json-schema/usecommune-article-performance-schema.json
  - type: JSONSchema
    url: json-schema/usecommune-article-schema.json
  - type: JSONSchema
    url: json-schema/usecommune-send-schema.json
- aid: usecommune:usecommune-subscriber-tags-api
  name: Commune Subscriber tags API
  description: 'A tag segments a newsletter''s audience. Sending an article to a tag stamps

    that article with an audience, which is what makes it invisible to everyone

    outside it. Named for the subscribers it is applied to, because a tag

    called `Tags` inside a document made of tags says nothing.


    Applying and removing a tag are writes, and they are grants and

    revocations of access to whatever articles that segment was addressed to,

    not only labels. Creating, renaming and retiring a tag are not operations

    here yet.'
  humanURL: https://api-reference.usecommune.dev/
  baseURL: https://api.usecommune.com
  tags:
  - Subscriber tags
  properties:
  - type: OpenAPI
    url: openapi/usecommune-subscriber-tags-api-openapi.yml
  - type: Documentation
    url: https://api-reference.usecommune.dev/
  - type: JSONSchema
    url: json-schema/usecommune-newsletter-stats-schema.json
  - type: JSONSchema
    url: json-schema/usecommune-api-key-schema.json
  - type: JSONSchema
    url: json-schema/usecommune-delivery-attempt-schema.json
  - type: JSONSchema
    url: json-schema/usecommune-article-performance-schema.json
  - type: JSONSchema
    url: json-schema/usecommune-article-schema.json
  - type: JSONSchema
    url: json-schema/usecommune-send-schema.json
- aid: usecommune:usecommune-subscribers-api
  name: Commune Subscribers API
  description: 'Who receives a newsletter. Needs `audience`, and never a public

    surface: a newsletter''s list belongs to its creator.


    `GET /subscriptions` is that edge read from the other end, the lists one

    account is on rather than the people on one list, and it needs

    `account: read` instead. It carries none of what a newsletter''s own record

    of a subscriber carries: no address, no lifecycle status, none of the tags

    the newsletter applied and nothing about how they were acquired.'
  humanURL: https://api-reference.usecommune.dev/
  baseURL: https://api.usecommune.com
  tags:
  - Subscribers
  properties:
  - type: OpenAPI
    url: openapi/usecommune-subscribers-api-openapi.yml
  - type: Documentation
    url: https://api-reference.usecommune.dev/
  - type: JSONSchema
    url: json-schema/usecommune-newsletter-stats-schema.json
  - type: JSONSchema
    url: json-schema/usecommune-api-key-schema.json
  - type: JSONSchema
    url: json-schema/usecommune-delivery-attempt-schema.json
  - type: JSONSchema
    url: json-schema/usecommune-article-performance-schema.json
  - type: JSONSchema
    url: json-schema/usecommune-article-schema.json
  - type: JSONSchema
    url: json-schema/usecommune-send-schema.json
- aid: usecommune:usecommune-team-api
  name: Commune Team API
  description: 'Who may act on behalf of a newsletter: its owner, plus the members the

    owner added as admins, editors or guests.


    Both sides of that edge are here. A newsletter''s roster answers "who is on

    this team" and needs `settings`. `GET /memberships` answers "which teams

    is this account on", which is the same membership read from the person

    rather than from the newsletter, and needs `account: read` instead:

    the set of teams somebody is on is a fact about them.'
  humanURL: https://api-reference.usecommune.dev/
  baseURL: https://api.usecommune.com
  tags:
  - Team
  properties:
  - type: OpenAPI
    url: openapi/usecommune-team-api-openapi.yml
  - type: Documentation
    url: https://api-reference.usecommune.dev/
  - type: JSONSchema
    url: json-schema/usecommune-newsletter-stats-schema.json
  - type: JSONSchema
    url: json-schema/usecommune-api-key-schema.json
  - type: JSONSchema
    url: json-schema/usecommune-delivery-attempt-schema.json
  - type: JSONSchema
    url: json-schema/usecommune-article-performance-schema.json
  - type: JSONSchema
    url: json-schema/usecommune-article-schema.json
  - type: JSONSchema
    url: json-schema/usecommune-send-schema.json
- aid: usecommune:usecommune-threads-api
  name: Commune Threads API
  description: 'A thread is a conversation inside a newsletter''s community. Commune has no

    separate posts or comments stack: a creator''s broadcast, a reader''s

    question and the discussion under an article are all threads in the same

    newsletter scoped chat.'
  humanURL: https://api-reference.usecommune.dev/
  baseURL: https://api.usecommune.com
  tags:
  - Threads
  properties:
  - type: OpenAPI
    url: openapi/usecommune-threads-api-openapi.yml
  - type: Documentation
    url: https://api-reference.usecommune.dev/
  - type: JSONSchema
    url: json-schema/usecommune-newsletter-stats-schema.json
  - type: JSONSchema
    url: json-schema/usecommune-api-key-schema.json
  - type: JSONSchema
    url: json-schema/usecommune-delivery-attempt-schema.json
  - type: JSONSchema
    url: json-schema/usecommune-article-performance-schema.json
  - type: JSONSchema
    url: json-schema/usecommune-article-schema.json
  - type: JSONSchema
    url: json-schema/usecommune-send-schema.json
- aid: usecommune:usecommune-users-api
  name: Commune Users API
  description: 'A person with a Commune account: the readers who join a community and the

    writers who are credited on an article. Looked up by identifier or by

    username, and only ever as a public profile: never an email address.


    The one account read from the inside is the credential''s own. `GET /me`

    is the same person as the profile above plus the address and verification

    state that one withholds, and it sits here rather than under a heading of

    its own because it is the private view of exactly what this tag already

    documents. It needs no permission at all.'
  humanURL: https://api-reference.usecommune.dev/
  baseURL: https://api.usecommune.com
  tags:
  - Users
  properties:
  - type: OpenAPI
    url: openapi/usecommune-users-api-openapi.yml
  - type: Documentation
    url: https://api-reference.usecommune.dev/
  - type: JSONSchema
    url: json-schema/usecommune-newsletter-stats-schema.json
  - type: JSONSchema
    url: json-schema/usecommune-api-key-schema.json
  - type: JSONSchema
    url: json-schema/usecommune-delivery-attempt-schema.json
  - type: JSONSchema
    url: json-schema/usecommune-article-performance-schema.json
  - type: JSONSchema
    url: json-schema/usecommune-article-schema.json
  - type: JSONSchema
    url: json-schema/usecommune-send-schema.json
- aid: usecommune:usecommune-webhooks-api
  name: Commune Webhooks API
  description: 'The events Commune pushes to a consumer, rather than the resources a

    consumer pulls. Commune publishes state changes on 23 topics, each

    delivered as one HTTPS POST to an endpoint the consumer registered.


    Every message shares one envelope, so a consumer can route on `type` and

    dedupe on `id` without knowing anything about the specific event, and the

    same values arrive as `Commune-Event-Type` and `Commune-Event-Id` headers

    so both can be read before the body is parsed.


    Delivery is at least once and unordered. A non-2xx response or a timeout

    is retried with backoff, so a consumer has to treat `id` as the dedupe key

    and tolerate replays. `occurred_at` is the ordering field, not arrival

    time.


    Two envelope fields say where a change came from rather than what

    changed. `actor` names the credential when the change was made through

    this API''s write operations, and `idempotency_key` carries the key that

    write was made under. Both are `null` for a change made anywhere else,

    which is most of them.


    **If your consumer writes, read `idempotency_key` before you act.** A

    write through this API publishes an event, and that event is delivered to

    every endpoint registered for the newsletter, including yours. A consumer

    that reacts to events by writing therefore receives the echo of its own

    write, cannot tell it from a change somebody else made, and writes again.


    You already hold what breaks the loop: you generated the key you sent on

    the write, so keep it and skip any event whose `idempotency_key` is one of

    yours. `actor` is not the field for this. It names Commune''s own id for

    your credential, and no operation here tells you what that id is.


    Registering an endpoint happens in the delivery portal, which

    `POST /newsletters/{newsletter}/portal-session` mints a link into. The

    endpoints already registered are readable at

    `GET /newsletters/{newsletter}/destinations`.


    What happened to a particular message is readable.

    `GET /newsletters/{newsletter}/delivery-attempts` lists every handover

    Commune made, filterable by the `event_id` a consumer reads off its own

    `Commune-Event-Id` header, so "did that event reach me" is answerable from

    both sides of the same identifier.'
  humanURL: https://api-reference.usecommune.dev/
  baseURL: https://api.usecommune.com
  tags:
  - Webhooks
  properties:
  - type: OpenAPI
    url: openapi/usecommune-webhooks-api-openapi.yml
  - type: Documentation
    url: https://api-reference.usecommune.dev/
  - type: JSONSchema
    url: json-schema/usecommune-newsletter-stats-schema.json
  - type: JSONSchema
    url: json-schema/usecommune-api-key-schema.json
  - type: JSONSchema
    url: json-schema/usecommune-delivery-attempt-schema.json
  - type: JSONSchema
    url: json-schema/usecommune-article-performance-schema.json
  - type: JSONSchema
    url: json-schema/usecommune-article-schema.json
  - type: JSONSchema
    url: json-schema/usecommune-send-schema.json
- aid: usecommune:usecommune-website-domains-api
  name: Commune Website domains API
  description: 'A creator''s own domain pointed at their Commune site, so their community

    lives at their address rather than at ours. The same prove you own this

    hostname flow as Senders, pointed at the site rather than at the mail.

    Needs `settings`: a website domain is how the newsletter is configured,

    not how it sends.'
  humanURL: https://api-reference.usecommune.dev/
  baseURL: https://api.usecommune.com
  tags:
  - Website domains
  properties:
  - type: OpenAPI
    url: openapi/usecommune-website-domains-api-openapi.yml
  - type: Documentation
    url: https://api-reference.usecommune.dev/
  - type: JSONSchema
    url: json-schema/usecommune-newsletter-stats-schema.json
  - type: JSONSchema
    url: json-schema/usecommune-api-key-schema.json
  - type: JSONSchema
    url: json-schema/usecommune-delivery-attempt-schema.json
  - type: JSONSchema
    url: json-schema/usecommune-article-performance-schema.json
  - type: JSONSchema
    url: json-schema/usecommune-article-schema.json
  - type: JSONSchema
    url: json-schema/usecommune-send-schema.json
x-enrichment:
  date: '2026-10-07'
  status: enriched
  artifacts_added: 41
  pass: local-v5

Work with this as data

Every provider here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for providers

9 MCP tools reach this
  • find_providersBrowse and filter every provider in the catalog.
  • get_provider_artifactsEvery artifact this provider publishes, grouped by type.
  • get_provider_operationsEvery operation across all of their OpenAPIs — one call instead of parsing every spec.
  • get_provider_toolsEvery MCP tool they ship, with the operation each wraps.
  • get_provider_evidenceHow each part of their score was established. Free — the basis for a claim should not sit behind it.
  • get_provider_ratingPRO — composite, band, trend and facet scores.
  • 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.
All 92 tools →

Call it yourself

curl for this page
This provider
curl "https://apis.io/api/v1/providers/usecommune"
All providers
curl "https://apis.io/api/v1/providers?limit=25"
Every operation they expose
curl "https://apis.io/api/v1/providers/usecommune/operations?limit=25"
How their score was established
curl "https://apis.io/api/v1/providers/usecommune/evidence"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API 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.