Saki Docs

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/api

Authentication

Every request must include a valid API key in the Authorization header as a Bearer token.

Generate an API key

  1. Sign in to your Saki account.
  2. Go to Settings > API.
  3. Click Generate Key and give it a descriptive name.
  4. 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.

MethodPathDescription
GET/spacesList all spaces
POST/spacesCreate 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.

MethodPathDescription
GET/spaces/{space}/postsList posts
POST/spaces/{space}/postsCreate 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.

MethodPathDescription
GET/spaces/{space}/accountsList accounts
PATCH/spaces/{space}/accounts/{account}/activateActivate or deactivate
GET/spaces/{space}/accounts/{account}/boardsList boards
DELETE/spaces/{space}/accounts/{account}Disconnect account

Media

Upload and manage media files used in posts.

MethodPathDescription
POST/mediaUpload media
DELETE/media/{media}Delete media

Scheduling

Configure time slots and view the upcoming publishing queue.

MethodPathDescription
GET/spaces/{space}/slotsList slots
POST/spaces/{space}/slotsCreate a slot
DELETE/spaces/{space}/slots/{slot}Delete a slot
GET/spaces/{space}/queueView queue

Webhooks

Subscribe to events and receive real-time notifications.

MethodPathDescription
GET/spaces/{space}/webhooksList webhooks
POST/spaces/{space}/webhooksCreate 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.

StatusMeaning
200Success
201Resource created
204Success, no content (e.g. after a delete)
401Unauthorized — missing or invalid API key
403Forbidden — you don't have access to this resource
404Not found
422Validation 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.

On this page