Skip to content

Developers

Build onthe Mateflow API.

One key, one community. Read posts, feeds, spaces and members, publish on behalf of your people, and receive every event over webhooks — all from a single JSON API.

Capabilities

Everything you need to integrate

Scoped API keys

Create keys in your community's admin console and grant each one only the scopes it needs. Authenticate with an X-API-Key header — there is no session to manage.

Growth and up

JSON API

Read and write your community through one consistent envelope. Every endpoint lives under /site_open_api/v1, takes POST with a JSON body, and derives the community from your key.

Growth and up

Webhooks

Register endpoints to receive events as they happen. Deliveries carry a stable event_id so you can de-duplicate retries, and the same id reaches Slack, Discord and Zapier.

Growth and up

Integrations

Connect Slack, Discord and Zapier from the integrations hub, browse the app catalogue, and manage every connected app in one place.

Single sign-on

Centralize authentication for your team and your members instead of maintaining a second set of credentials.

Business and up

Delivery logs

Every webhook attempt is logged with its payload and response. Inspect a failed delivery, see what you sent back, and retry from the console.

Growth and up

24 endpoints, one envelope

Everything lives under https://api.mateflow.com/site_open_api/v1 and uses POST with a JSON body. Here are the ones most integrations start with — the reference has the full list.

BASE URLhttps://api.mateflow.com/site_open_api/v1
  • POST/capabilities/getno scopeCheck your key, scopes and remaining quota
  • POST/site/getsite.readRead community profile and settings
  • POST/feed/listcontent.readPage through the community feed
  • POST/post/searchcontent.readSearch posts
  • POST/post/createcontent.writePublish a post as a member
  • POST/space/listspaces.readList spaces the viewer can see
  • POST/member/lookupmembers.readResolve an email to a member
  • POST/media/get_tokenmedia.writeGet a media upload token

Quick start

Get started in three steps

Step 01

Turn on API access

API access is a plan feature the community owner enables. Without it every call returns 22203, and no key can be created — so start here, not in your code.

Step 02

Create a scoped key

Community admin → Integrations → API Keys. Pick only the scopes you need; they are fixed once the key exists. The full key is shown exactly once.

Step 03

Call /capabilities/get first

It reports your scopes, whether API access is on, and how much quota is left — and it is the one endpoint that still answers when the plan gate or the quota is blocking everything else. It costs no quota.

Usage and limits

What each plan allows

Daily quota counts every request that passes authentication and resets at 00:00 UTC. A quota of zero is a closed door, not an unset default — it returns 22204 on every call.

PlanOpen APIRequests per dayWebhook endpoints
StarterNot included
GrowthIncluded5,0005
BusinessIncluded10,00020
EnterpriseIncludedUnlimitedUnlimited

Burst limits apply on top of the daily quota and are enforced per key — see rate limits in the reference.

Your first call, three ways

The same request in each language: confirm the key works before you write anything else. Replace mfk_xxx with a real key from your admin console.

cURL
curl -X POST \
  https://api.mateflow.com/site_open_api/v1/capabilities/get \
  -H "X-API-Key: mfk_xxx" \
  -H "Content-Type: application/json" \
  -d '{}'
JavaScript
const res = await fetch(
  "https://api.mateflow.com/site_open_api/v1/capabilities/get",
  {
    method: "POST",
    headers: {
      "X-API-Key": process.env.MATEFLOW_API_KEY,
      "Content-Type": "application/json",
    },
    // Endpoints that take no parameters still want a JSON body.
    body: "{}",
  },
);
const { code, data } = await res.json();
// Branch on `code`, never on the HTTP status:
// 22203 and 22204 are 403, and only 10202 is throttling.
if (code !== 0) throw new Error(`Mateflow API error ${code}`);
console.log(data.scopes, data.quota_used, data.quota_limit);
Python
import os, requests

res = requests.post(
    "https://api.mateflow.com/site_open_api/v1/capabilities/get",
    headers={"X-API-Key": os.environ["MATEFLOW_API_KEY"]},
    json={},
)
body = res.json()
if body["code"] != 0:
    raise RuntimeError(f"Mateflow API error {body['code']}")

print(body["data"]["scopes"], body["data"]["api_access"])

OpenAPI contract

The machine-readable contract covers every path and every request and response schema, and feeds any client generator. Official SDKs are on the roadmap; until then, generate one.

Download openapi.json

Reference

The full API reference

Scopes, pagination, idempotency, error codes, rate limits, webhook de-duplication — and the handful of exceptions that only bite after you ship.

Ready to build?

Create an account, generate your API keys, and start integrating Mateflow into your workflows.

14-day free trial · No credit card required

Start free trial