Social
Find the accounts a render can post to, and follow or change the posts it made. Posting itself is the publish block on a render. Accounts are connected in the dashboard (Social), since each platform asks you to sign in. Reading needs the social:read scope, changing a post social:write — every API key has both.
GET /v1/social/accounts
/v1/social/accountsThe workspace's connected social accounts. Their ids are what publish.accountIds takes. needsReconnect means the account must be reconnected in the dashboard before it can post.
curl https://buildonce.app/v1/social/accounts \ -H "Authorization: Bearer fl_live_YOUR_API_KEY"
[
{
"id": "sac_li1",
"platform": "linkedin",
"externalId": "urn:li:person:abc",
"displayName": "Jordan Lee",
"avatarUrl": "https://...",
"scopes": ["w_member_social"],
"connectedAt": "2026-10-01T09:00:00.000Z",
"tokenExpiresAt": "2026-12-01T09:00:00.000Z",
"needsReconnect": false
}
]GET /v1/social/posts
/v1/social/postsPosts and scheduled posts, newest first, paginated.
| Param | Type | Notes |
|---|---|---|
| page / limit | number | Defaults to 1 and 25; limit at most 100. |
| renderId | string | Only the posts one render request’s publish block made. |
| status | "scheduled" | "publishing" | "published" | "failed" | "canceled" | "deleted" | |
| platform | string | linkedin, instagram, facebook, threads, x, tiktok, youtube, pinterest, discord or bluesky. |
| accountId | string | One connected account (sac_…). |
| from / to | ISO 8601 | Bound the creation date, inclusive. |
{
"items": [ {
"id": "spo_123",
"socialAccountId": "sac_li1",
"platform": "linkedin",
"status": "scheduled",
"content": "Check out our latest design!",
"mediaUrls": ["https://.../renders/9de8...b5.png"],
"scheduledAt": "2026-10-25T04:00:00.000Z",
"publishedAt": null,
"postUrl": null,
"error": null,
"renderId": "rnd_456",
"createdAt": "2026-10-22T12:00:00.000Z"
} ],
"total": 1,
"page": 1,
"limit": 25
}GET /v1/social/posts/:postId
/v1/social/posts/:postIdOne post with its outcome: status, postUrl once published, and for a failed post an error explaining what went wrong and how to fix it.
{
"id": "spo_123",
"socialAccountId": "sac_li1",
"platform": "linkedin",
"status": "scheduled",
"content": "Check out our latest design!",
"mediaUrls": ["https://.../renders/9de8...b5.png"],
"scheduledAt": "2026-10-25T04:00:00.000Z",
"publishedAt": null,
"postUrl": null,
"error": null,
"renderId": "rnd_456",
"createdAt": "2026-10-22T12:00:00.000Z"
}PATCH /v1/social/posts/:postId
/v1/social/posts/:postIdChange a post that is still scheduled. It is checked against the platform's rules again, as a new post would be. A post already sent is a 404.
| Param | Type | Notes |
|---|---|---|
| content | string | New text. |
| scheduledAt | string | A new time: ISO 8601, in the future. |
| mediaUrls | string[] | Replace the media, e.g. with the files of a rerender. |
| linkUrl / title / description / tags / platformOptions | As on publish. |
curl -X PATCH https://buildonce.app/v1/social/posts/spo_123 \
-H "Authorization: Bearer fl_live_YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "scheduledAt": "2026-10-26T09:00:00+05:00" }'DELETE /v1/social/posts/:postId
/v1/social/posts/:postIdCancel a post that is still scheduled. Answers { canceled: true }; a post already sent is a 404.
curl -X DELETE https://buildonce.app/v1/social/posts/spo_123 \ -H "Authorization: Bearer fl_live_YOUR_API_KEY"
Was this page helpful?