Public REST API v1

Schedule posts from your own code.

Create drafts, scheduled posts, X threads and delayed comments, upload media and read your calendar with plain HTTP and JSON.

Base URL https://schedulemash.com/api/public/v1
Authentication header Authorization: <YOUR_API_KEY>
Quickstart

Your first scheduled post in three calls.

1

Get your API key

Sign in and open Settings. Copy the API key and send it in the Authorization header. The API is part of the Team plan.

2

Fetch your channel ids

Call GET /integrations. Each channel has an id, an identifier such as x or linkedin, and a name.

3

Schedule with POST /posts

Send a type, a date and one entry per channel in posts. Add more items to value for a thread or a comment.

Playground

Copy a working request.

Pick an example and a language. Replace the placeholders (<YOUR_API_KEY>, channel ids) with your own values.

Response
Endpoints reference

Every Public API v1 endpoint.

All paths are relative to https://schedulemash.com/api/public/v1 and need the Authorization header.

GET/is-connected

Check that your API key works. Returns { "connected": true }.

GET/me

Returns the organization the key belongs to: { "organization": { "id", "name" }, "user": null }. user is only filled for OAuth app tokens.

GET/integrations

Lists connected channels with id, name, identifier, picture, disabled, profile and customer. Optional query group filters by customer group.

GET/find-slot/:id

Returns the next free date and time for the channel with this id: { "date": "2026-10-27T09:00:00.000Z" }.

GET/posts

Lists posts in a date range. Query: startDate and endDate (ISO 8601, required), customer (optional group id). Returns { "posts": [...] }.

POST/posts

Creates a draft, a scheduled post or an immediate post, for one or more channels at once. Returns one { "postId", "integration" } entry per channel.

FieldTypeDescription
type"draft" | "schedule" | "now"Required. draft saves without publishing, schedule publishes at date, now publishes immediately.
dateISO 8601 stringRequired. Publish time in UTC, for example 2026-10-27T09:00:00.000Z. One date applies to every channel in the request.
shortLinkbooleanRequired. Set true to shorten links in the text.
tagsarrayRequired. Use [] for no tags.
posts[].integration.idstringRequired. The channel id from GET /integrations.
posts[].value[].contentstringRequired. The post text. The first item is the post, later items are thread replies or comments.
posts[].value[].imagearrayRequired, may be []. Items shaped { "id", "path" } from POST /upload or POST /upload-from-url.
posts[].value[].delaynumber (minutes)Optional. Minutes to wait before this item is published. Use 2 on a comment for a first comment two minutes after the post.
posts[].settings.__typestringOptional. The provider, such as x or linkedin. It is set from the channel automatically. Other keys here are provider settings, for example who_can_reply_post on X.
DELETE/posts/:id

Deletes the post with this id together with its group (the whole thread). Use the postId returned when you created it.

POST/upload

Uploads a file as multipart/form-data with the file in the file field. Returns the media id and path. A missing file returns 400 with { "msg": "No file provided" }.

POST/upload-from-url

Fetches a public file into your media library. Body: { "url": "https://..." }. Returns the media id and path. Invalid input returns 400 with { "msg": "..." }.

GET/media

Lists the media library, newest first. Query: page (default 1) and search. Returns { "pages", "results": [{ "id", "name", "originalName", "path", "createdAt" }] }.

FAQ

Developer questions.

What is the base URL of the ScheduleMash API?

https://schedulemash.com/api/public/v1. Every endpoint on this page is relative to that base URL.

How do I authenticate?

Copy your API key from https://schedulemash.com/settings and send it in the Authorization header on every request, for example Authorization: YOUR_API_KEY.

How do I save a post as a draft instead of publishing it?

Send type as draft in the body of POST /posts. The post is saved on your calendar and nothing is published. Use schedule to publish at the given date, or now to publish immediately.

How do I add a first comment that posts a few minutes later?

Add a second item to posts[].value. Items after the first are published as comments or thread replies, and the delay field on an item is the number of minutes to wait before it is published.

How do I attach an image or video?

Upload the file with POST /upload or POST /upload-from-url. Both return an id and a path. Pass them as an item of posts[].value[].image when you create the post.

Which plan includes API access?

The public API and MCP server are part of the Team plan, which is $29 a month in USD.