API Setup
Learn how to authenticate and use the Saki REST API.
The Saki REST API lets you manage spaces, schedule posts, upload media, and configure webhooks programmatically. Use it to integrate Saki into your own workflows, build custom dashboards, or connect with automation tools.
Base URL
All API requests use the following base URL:
https://app.usesaki.com/apiAuthentication
Every request must include a valid API key in the Authorization header as a Bearer token.
Generate an API key
- Sign in to your Saki account.
- Go to Settings > API.
- Click Generate Key and give it a descriptive name.
- Copy the key immediately — it is only shown once and cannot be retrieved later.
You can create multiple keys and revoke any of them at any time from the same page.
Use the key
Include the key in the Authorization header of every request:
curl https://app.usesaki.com/api/spaces \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Accept: application/json"Endpoints overview
Below is a summary of the available resources. Select any endpoint in the sidebar for full request and response details.
Spaces
Spaces are top-level containers that group accounts, posts, and settings.
| Method | Path | Description |
|---|---|---|
| GET | /spaces | List all spaces |
| POST | /spaces | Create a space |
| GET | /spaces/{space} | Get a space |
| PUT | /spaces/{space} | Update a space |
| DELETE | /spaces/{space} | Delete a space |
Posts
Create, update, and manage scheduled social media posts within a space.
| Method | Path | Description |
|---|---|---|
| GET | /spaces/{space}/posts | List posts |
| POST | /spaces/{space}/posts | Create a post |
| GET | /spaces/{space}/posts/{post} | Get a post |
| PUT | /spaces/{space}/posts/{post} | Update a post |
| DELETE | /spaces/{space}/posts/{post} | Delete a post |
| PUT | /spaces/{space}/clusters/{cluster} | Update a cluster |
Accounts
View and manage social accounts connected to a space.
| Method | Path | Description |
|---|---|---|
| GET | /spaces/{space}/accounts | List accounts |
| PATCH | /spaces/{space}/accounts/{account}/activate | Activate or deactivate |
| GET | /spaces/{space}/accounts/{account}/boards | List boards |
| DELETE | /spaces/{space}/accounts/{account} | Disconnect account |
Media
Upload and manage media files used in posts.
| Method | Path | Description |
|---|---|---|
| POST | /media | Upload media |
| DELETE | /media/{media} | Delete media |
Scheduling
Configure time slots and view the upcoming publishing queue.
| Method | Path | Description |
|---|---|---|
| GET | /spaces/{space}/slots | List slots |
| POST | /spaces/{space}/slots | Create a slot |
| DELETE | /spaces/{space}/slots/{slot} | Delete a slot |
| GET | /spaces/{space}/queue | View queue |
Webhooks
Subscribe to events and receive real-time notifications.
| Method | Path | Description |
|---|---|---|
| GET | /spaces/{space}/webhooks | List webhooks |
| POST | /spaces/{space}/webhooks | Create a webhook |
| PUT | /spaces/{space}/webhooks/{webhook} | Update a webhook |
| DELETE | /spaces/{space}/webhooks/{webhook} | Delete a webhook |
Example: Create a post
curl -X POST https://app.usesaki.com/api/spaces/1/posts \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{
"content": "Hello from the Saki API!",
"account_ids": [1, 2],
"scheduled_at": "2026-04-10T14:00:00Z"
}'Error handling
The API uses standard HTTP status codes. Error responses include a JSON body with details.
| Status | Meaning |
|---|---|
200 | Success |
201 | Resource created |
204 | Success, no content (e.g. after a delete) |
401 | Unauthorized — missing or invalid API key |
403 | Forbidden — you don't have access to this resource |
404 | Not found |
422 | Validation error — check the errors field in the response |
Example error response:
{
"message": "The content field is required.",
"errors": {
"content": ["The content field is required."]
}
}Next steps
- Getting Started — Set up your account and schedule your first post.
- MCP Setup — Connect Saki to AI assistants like Claude or Cursor.