Social Planner
Social Planner schedules and manages social media posts across the accounts connected to your SMBcrm account/location. Use it to list connected accounts, search or fetch existing posts, and create, update, or delete scheduled posts.
Base URL: https://services.smbcrm.com · Version header: v3 ·
Scopes: socialplanner/account.readonly, socialplanner/post.readonly,
socialplanner/post.write, socialplanner/category.readonly. A few endpoints below
require only a valid token — no additional scope. See Scopes.
Connected accounts
Section titled “Connected accounts”curl https://services.smbcrm.com/social-media-posting/<location_id>/accounts \ -H "Authorization: Bearer <token>" \ -H "Version: v3"{ "success": true, "statusCode": 200, "message": "Accounts fetched successfully", "results": { "accounts": [ { "id": "<social_account_id>", "platform": "facebook", "name": "Acme Roofing", "avatar": "https://cdn.example.com/avatar-1.png", "isActive": true }, { "id": "<social_account_id>", "platform": "instagram", "name": "@acmeroofing", "avatar": "https://cdn.example.com/avatar-2.png", "isActive": true } ] }}Use the id values from this response as accountIds when creating a post.
Search posts
Section titled “Search posts”skip, limit, fromDate, toDate, and includeUsers are required — and sent as strings,
not numbers or booleans. Add accounts to filter to specific connected accounts. See
Pagination.
curl -X POST https://services.smbcrm.com/social-media-posting/<location_id>/posts/list \ -H "Authorization: Bearer <token>" \ -H "Version: v3" \ -H "Content-Type: application/json" \ -d '{ "accounts": "<social_account_id>", "skip": "0", "limit": "20", "fromDate": "2026-07-01T00:00:00.000Z", "toDate": "2026-07-31T23:59:59.999Z", "includeUsers": "false" }'{ "success": true, "statusCode": 200, "message": "Posts fetched successfully", "results": { "posts": [ { "id": "<post_id>", "accountIds": ["<social_account_id>"], "type": "post", "summary": "Fall is here — 10% off roof inspections this week.", "status": "scheduled", "scheduleDate": "2026-07-15T14:00:00.000Z" } ], "count": 1 }}Retrieve a post
Section titled “Retrieve a post”This endpoint needs only a valid token — no additional scope.
curl https://services.smbcrm.com/social-media-posting/<location_id>/posts/<post_id> \ -H "Authorization: Bearer <token>" \ -H "Version: v3"{ "success": true, "statusCode": 200, "message": "Post fetched successfully", "results": { "post": { "id": "<post_id>", "accountIds": ["<social_account_id>"], "type": "post", "summary": "Fall is here — 10% off roof inspections this week.", "media": [{ "url": "https://cdn.example.com/fall-promo.jpg", "type": "image/jpeg" }], "status": "scheduled", "scheduleDate": "2026-07-15T14:00:00.000Z" } }}Create & schedule a post
Section titled “Create & schedule a post”accountIds, type, and userId (the SMBcrm user creating the post) are required. type
is the post format — post, story, or reel. Each media item needs a url and a
type, which is its MIME type (image/jpeg, image/png, video/mp4, and so on).
curl -X POST https://services.smbcrm.com/social-media-posting/<location_id>/posts \ -H "Authorization: Bearer <token>" \ -H "Version: v3" \ -H "Content-Type: application/json" \ -d '{ "accountIds": ["<social_account_id>"], "type": "post", "userId": "<user_id>", "summary": "Fall is here — 10% off roof inspections this week.", "media": [{ "url": "https://cdn.example.com/fall-promo.jpg", "type": "image/jpeg" }], "scheduleDate": "2026-07-15T14:00:00.000Z" }'{ "success": true, "statusCode": 201, "message": "Post created successfully", "results": { "post": { "id": "<post_id>", "accountIds": ["<social_account_id>"], "type": "post", "summary": "Fall is here — 10% off roof inspections this week.", "status": "scheduled", "scheduleDate": "2026-07-15T14:00:00.000Z" } }}Platform-specific detail objects — facebookPostDetails, instagramPostDetails,
youtubePostDetails, tiktokPostDetails, linkedinPostDetails, pinterestPostDetails, and
gmbPostDetails — carry per-platform options (privacy level, comments, boards, and so on)
for whichever accounts in accountIds belong to that platform.
Update & delete
Section titled “Update & delete”Both endpoints below need only a valid token — no additional scope.
Send the full post payload — accountIds, type, and userId are required, same as
creating a post.
curl -X PUT https://services.smbcrm.com/social-media-posting/<location_id>/posts/<post_id> \ -H "Authorization: Bearer <token>" \ -H "Version: v3" \ -H "Content-Type: application/json" \ -d '{ "accountIds": ["<social_account_id>"], "type": "post", "userId": "<user_id>", "summary": "Fall is here — 15% off roof inspections this week.", "scheduleDate": "2026-07-16T14:00:00.000Z" }'{ "success": true, "statusCode": 200, "message": "Post updated successfully" }curl -X DELETE https://services.smbcrm.com/social-media-posting/<location_id>/posts/<post_id> \ -H "Authorization: Bearer <token>" \ -H "Version: v3"{ "success": true, "statusCode": 200, "message": "Post deleted successfully", "results": { "postId": "<post_id>" }}Categories & tags
Section titled “Categories & tags”Categories and tags help organize posts inside Social Planner.
Add searchText, limit, and skip to search and page through the results.
curl https://services.smbcrm.com/social-media-posting/<location_id>/categories \ -H "Authorization: Bearer <token>" \ -H "Version: v3"{ "success": true, "statusCode": 200, "message": "Categories fetched successfully", "results": { "count": 2, "categories": [ { "id": "<category_id>", "name": "Promotions" }, { "id": "<category_id>", "name": "Customer Stories" } ] }}Needs only a valid token — no additional scope. Add searchText, limit, and skip to
search and page through the results.
curl https://services.smbcrm.com/social-media-posting/<location_id>/tags \ -H "Authorization: Bearer <token>" \ -H "Version: v3"{ "success": true, "statusCode": 200, "message": "Tags fetched successfully", "results": { "tags": [ { "id": "<tag_id>", "name": "seasonal" }, { "id": "<tag_id>", "name": "evergreen" } ], "count": 2 }}