API Overview
Sotion's Members API lets you build custom integrations, automate workflows, and manage members programmatically. Every address starts with https://api.sotion.so/api/v1, and every request sends an API key from your site's Integrations page.
What you can do
The API supports common use cases including:
Member management: create, update, and manage members directly from your own applications or automation tools like Zapier and Make.
Workflow automation: trigger actions in other systems when member events occur, such as new signups or membership changes.
Data syncing: keep member data consistent between Sotion and your CRM, email platform, or other tools.
Custom integrations: build tailored solutions that connect Sotion with your existing tech stack.
What the API covers
A key works on the site it was created on, so no request names a site. The REST API reference lists every request with its fields and errors.
Site: the site's details.
Members: list and search, create one, create up to 500 at once, read, update and delete, and send a login link.
Access groups: list, create, read, update and delete, and add or remove members.
Webhooks: list, create, read and delete the site's webhooks.
Adding a member through the API sends them no email. When they should get one, send a login link with POST /members/{memberId}/login-links. Send {"sendEmail": false} to get the link back in the response instead, to deliver it yourself.
Requests and responses
Send request bodies as JSON with Content-Type: application/json. Every answer is JSON too, apart from a delete, which answers 204 with no body.
One item:
{"data": {…}}. Creating one answers 201, with its address in theLocationheader.A list:
{"data": […], "pagination": {"hasMore": true, "nextCursor": "…"}}. Ask for up to 100 items withlimit(50 by default), and passnextCursorasafterto get the next page.Creating many members: 207, with one result per member in
dataand the counts insummary(total,created,failed).
Every answer carries an X-Request-Id header. Include it when you contact us about a request.
Errors
An error answer has the same shape for every request:
{
"error": {
"code": "validation_error",
"message": "Request body is invalid.",
"status": 422,
"details": [{ "field": "email", "message": "Invalid email address" }]
}
}Status | Code | When |
|---|---|---|
400 |
| The body isn't valid JSON. |
401 |
| The key is missing, unknown or revoked. See Authentication. |
403 |
| Your plan doesn't include the API, the site is suspended, or a limit is reached, such as 10 webhooks. |
404 |
| No item has that ID on this site. |
404 |
| No request matches the address, for example one without |
409 |
| The email or group name is already used on this site. |
422 |
| A field is wrong; |
429 |
| Too many requests; wait the seconds in the |
500 |
| Something failed on our side; the message holds a request ID. |
Rate limits
Each key can make 300 reads (GET) and 60 changes a minute. Past that, requests answer 429 with a Retry-After header, in seconds.
Answers to requests with a valid key carry
X-RateLimit-Limit,X-RateLimit-RemainingandX-RateLimit-Reset(Unix time, in seconds). Answers refused for the key or the plan carry none.Login links have their own limit as well: 5 a minute per member and 50 a minute per site.
Webhooks
Sotion also sends webhooks: a message to your endpoint each time a member or access group changes, so you don't have to poll the API. Start with the Webhooks Overview.