
Connect accounts, upload media, validate a schedule, and publish across every connected platform, all through one hosted workspace and plain REST calls.
curl -sS https://getsocialclaw.com/v1/posts/apply \
-H "Authorization: Bearer $SOCIALCLAW_API_KEY" \
-H "Content-Type: application/json" \
-X POST \
--data '{
"timezone": "America/New_York",
"posts": [
{ "account": "meta:instagram:17841400000000000", "description": "Launch day.", "publish_at": "2026-07-21T09:00:00-04:00" },
{ "account": "linkedin:person:123", "description": "Here is what changed and why.", "publish_at": "2026-07-21T09:05:00-04:00" }
]
}'
const response = await fetch("https://getsocialclaw.com/v1/posts/apply", {
method: "POST",
headers: {
"Authorization": "Bearer " + process.env.SOCIALCLAW_API_KEY,
"Content-Type": "application/json"
},
body: JSON.stringify({
timezone: "America/New_York",
posts: [
{ account: "meta:instagram:17841400000000000", description: "Launch day.", publish_at: "2026-07-21T09:00:00-04:00" },
{ account: "linkedin:person:123", description: "Here is what changed and why.", publish_at: "2026-07-21T09:05:00-04:00" }
]
})
});
{
"run": { "id": "run_7k2md9pz", "mode": "scheduled" },
"posts": [
{ "id": "post_3n0qd1h", "provider": "instagram", "status": "scheduled" },
{ "id": "post_9h4wq2c", "provider": "linkedin", "status": "scheduled" }
]
}
Connection, media, validation, and inspection all live behind the same workspace API key, whichever platform a post targets.
OAuth and manual connections live inside the workspace, so scripts and agents never need to own provider credentials.
Every post declares an account, content, media, timezone, and publish time, the same shape across every connected provider.
Validation catches account, media, setting, and provider-envelope problems before anything is scheduled.
Runs, posts, attempts, and account health are all queryable after apply, so you are never just trusting a 200 response.
Validate a schedule, apply it, and check delivery status, all with the same workspace key. Upload media once and reuse the link across every scheduled post.
/v1/accounts
List connected accounts and which ones are ready to publish.
/v1/assets/upload
Upload a photo or video and get back a link to reuse.
/v1/posts/validate
Check a schedule against each provider's rules before anything goes out.
/v1/posts/apply
Publish now or queue posts for a future time.
/v1/runs/{runId}/status
Confirm a post actually went live, or catch a failure early.
Every step in the publish path is checkable before it commits, so a bad request never becomes a bad post.
Run the exact schedule through /v1/posts/validate first. A batch either passes together or fails loudly, before anything is scheduled.
curl -sS -X POST \
-H "Authorization: Bearer $SOCIALCLAW_API_KEY" \
-H "Content-Type: application/json" \
--data @schedule.json \
https://getsocialclaw.com/v1/posts/validate
{"valid":true,"posts":12}
Add idempotencyKey to a request and a repeated call returns the original run instead of creating a second one, so retries on your end are always safe.
{
"idempotencyKey": "launch_calendar_1",
"timezone": "America/New_York",
"posts": […]
}
Poll run status once a schedule applies to see exactly what published, what is pending, and what needs a retry.
curl -sS \
-H "Authorization: Bearer $SOCIALCLAW_API_KEY" \
https://getsocialclaw.com/v1/runs/run_7k2md9pz/status
{"run":{"id":"run_7k2md9pz"},"posts":[{"status":"published"}]}
Simply install the skill with this command




Same workspace, same connected accounts, on whichever surface fits what you are building.
Real quotes from Reddit, G2, Trustpilot, and Instagram.
“I can prepare the content once and let SocialClaw handle the distribution.”
“If SocialClaw sees this just know you changed my entire workflow girl.”
“Since I try market my iOS apps, definitely SocialClaw… because then Claude can post to social media for me.”
“Most schedulers still feel like old calendar tools with an AI caption button added on top. SocialClaw feels more built around the newer AI era.”
“SocialClaw if you want to schedule posts to social media.”
“SocialClaw handles the repetitive publishing work: uploading media, managing connected accounts, scheduling posts, publishing them, and retrying when something fails.”
“I used to use stuff like Buffer etc, but I use SocialClaw with my AI agent. I just tell it to schedule like 100 videos for the next month.”
“It has an OpenClaw skill, or use it via API, CLI, or even the web dashboard.”
“I have it install the SocialClaw skill, linked my social media accounts, and it actually has approval to post on my socials for me.”
Connect once, then schedule and publish everywhere from the same workspace.
Every request needs an Authorization header in the form Bearer sc_live_your_key, using the workspace API key from your dashboard. The same key covers every connected account and platform, so there is no separate key per provider.
Yes. Send the same schedule to /v1/posts/validate first. It checks the request against each connected provider's rules and reports back without publishing or queuing anything. Send the identical body to /v1/posts/apply once you are happy with it.
Include an idempotencyKey with your request to /v1/posts/apply. Sending the same key again returns the original run instead of creating a second one, so retrying a request on your end is always safe.
No. Upload a file to /v1/assets/upload and use the link it returns as your post's media. SocialClaw hosts it for you, so every connected platform always has what it needs the moment your post goes out.
No. Account types, media rules, and settings differ per provider, which is exactly what /v1/posts/validate checks before anything is scheduled, so a workflow never has to assume one universal payload shape.
Check /v1/runs/{runId}/status or /v1/posts/{postId} after your request. Both report whether the platform confirmed the post, so you are never just trusting that a request was accepted.
Every endpoint, field, and error is documented at /docs/api/reference, generated from the same OpenAPI document the API itself serves at /openapi.json.