Before you start
- An API key with
accounts:read,posts:readandposts:write- see Create and use an API key. - A tool that can send HTTPS requests, such as curl, Postman or your own code.
Steps
- Step 1
Find your workspace
Call
/api/v1/me. It lists your workspaces and which one is used by default. To use another, send its id in theSkylane-Workspace-Idheader.Who am Ishell curl https://skylane-api.moneymasterhq.com/api/v1/me \ -H "Authorization: Bearer YOUR_API_KEY" - Step 2
Get your account ids
List connected accounts and copy the
idof each one you want to post to.List accountsshell curl https://skylane-api.moneymasterhq.com/api/v1/accounts \ -H "Authorization: Bearer YOUR_API_KEY" - Step 3
Create and schedule in one call
Send the caption, the account ids and a
schedule. Add anIdempotency-Keyso a retry after a network error never makes a second post. Leave outscheduleto save a draft.Create a postshell curl -X POST https://skylane-api.moneymasterhq.com/api/v1/posts \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Content-Type: application/json" \ -H "Idempotency-Key: blog-launch-1" \ -d '{"caption": "Our new guide is live.", "accountIds": ["YOUR_ACCOUNT_ID"], "schedule": {"mode": "schedule", "scheduledAt": "2026-11-20T09:30:00Z"}}' - Step 4
Fix anything pre-flight finds
If a platform would reject the post, you get
422witherror.issues: each issue names the account, the problem and how to fix it. Nothing is saved, so fix it and send the request again with a new idempotency key. - Step 5
Follow the result
Call
/resultsto see each account's state:scheduled,publishedwith itsurl, orfailedwitherror.messageanderror.fixHint. Or subscribe to webhooks to be told - see Receive Developer webhooks.Post resultsshell curl https://skylane-api.moneymasterhq.com/api/v1/posts/YOUR_POST_ID/results \ -H "Authorization: Bearer YOUR_API_KEY" - Step 6
Add media
Upload a file with
POST /api/v1/media(multipart, fieldfile) or import one withPOST /api/v1/media/from-url, then put the returnedidinmediaIds. Files get the same type, size and storage checks as in the app.Import from a linkshell curl -X POST https://skylane-api.moneymasterhq.com/api/v1/media/from-url \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{"url": "https://example.com/photo.jpg", "altText": "What the photo shows"}'
Good to know
- Other routes:
GET /api/v1/posts(newest first,statusandaccount_idfilters),GETandPATCHandDELETE /api/v1/posts/{id},POST /api/v1/posts/{id}/schedule,POST /api/v1/posts/{id}/cancel,GET /api/v1/accounts/{id}/queueandGET /api/v1/media. - Lists come back as
data,hasMoreandnextCursor. Passcursor=with thenextCursorvalue for the next page. - Each key has its own limit (30, 60, 120 or 300 requests a minute).
X-RateLimit-Remainingshows what is left; a429carriesRetry-After. - The full machine-readable reference is at https://skylane-api.moneymasterhq.com/api/v1/openapi.json (opens in a new tab).
Common problems
403 "does not have the posts:write permission"
Create a key with that permission. A key's permissions cannot be changed after it is made.
403 "You need the contributor role"
The key belongs to someone who is only a Viewer in that workspace. Ask an admin to change their role.
422 "Idempotency-Key was already used for a different request"
Use a new key for each different post. Reuse a key only to retry the same request.
402 Payment required
The workspace owner's plan does not include the API, or a plan limit (such as Free's 15 posts a month) is reached.
Still stuck? Contact support
Tell us which step you reached and what you see on screen. A screenshot helps.