Documentación
superleads.mx

Social Planner

Referencia de la API · ☕ 48 min de lectura
Actualizado el 19 Jun 2026

Social Media Posting API

Documentación de la API de Social Media Posting

Servidor base: https://services.leadconnectorhq.com

Endpoints


POST /social-media-posting/{locationId}/posts/list

Obtener publicaciones Get Posts

Scopes requeridos: socialplanner/post.readonly

Parametros: - Versión (header, string) (requerido) — Versión de la API - locationId (path, string) (requerido) — Id de sede

Cuerpo de la peticion (application/json): - type — string — type must be one of the following values: recent, all, scheduled, draft, failed, in_review, published, in_progress, pending and deleted - accounts — string — List of account Ids separated by comma as a string - skip (requerido) — string — Number of records to skip for pagination - limit (requerido) — string — Maximum number of records to return - fromDate (requerido) — string — From Date - toDate (requerido) — string — To Date - includeUsers (requerido) — string — Include User Data - postType — object — Post Type must be one of the following values: - post, story, reel

Respuestas: - 201 — Respuesta exitosa - 400 — Peticion invalida - 401 — No autorizado - 422 — Entidad no procesable


POST /social-media-posting/{locationId}/posts

Crear publicacion Create posts for all supported platforms. It is possible to create customized posts per channel by using the same platform account IDs in a request and hitting the create post API multiple times with different summaries and account IDs per platform.

The content and media limitations, as well as platform rate limiters corresponding to the respective platforms, are provided in the following reference link:

Link: Platform Limitations

Scopes requeridos: socialplanner/post.write

Parametros: - Versión (header, string) (requerido) — Versión de la API - locationId (path, string) (requerido) — Id de sede

Cuerpo de la peticion (application/json): - accountIds (requerido) — array — Account IDs for the post. Each account Id identifies a connected social media account.

Get IDs from: Get Accounts API — use the id field from each account.

Validations: - Required for non-draft posts - Must be a non-empty array - All account IDs must be valid connected accounts for the location - summary — string — Post content/caption text. Character limits vary by platform.

Custom Values & Hashtags: - You can include custom values/variables in the content (e.g., {{contact.name}}) - Hashtags: Use #hashtag format. Instagram allows max 30 hashtags. - Mentions: Use platform-specific mention format (see mentions field for structured mentions)

Validations: - Instagram/Facebook Story: Caption NOT supported for direct publishing - Facebook, LinkedIn, GMB: Content OR media is required (at least one) - Content is automatically trimmed to platform limits

Reference: Platform Limitations Guide - media — array — Post Media Data The limitations of media as per the platforms is provided through the reference link in API description - url (requerido) — string — Public URL of the media file. Must be a valid, accessible HTTPS URL. - caption — string — Alt text or caption for the media. Used for accessibility and SEO. - originalUrl — string — Original media URL before any processing (watermarking/optimization). Set automatically by the system. - watermarkedUrl — string — URL of the media after watermarking. Set automatically when watermark is applied. - type (requerido) — string — MIME type of the media file. See Platform Limitations Guide for platform-specific format support. - thumbnail — string — Cover image URL for a video media item.

Scope - Applies to the first video in media[]. Values supplied on subsequent video items are ignored. - Has no effect on image-only media items.

Response behavior - After the post is published, the resolved cover image is surfaced on the post-level thumbnail field of the response and is no longer echoed back inside media[]. This represents the post's primary cover image and the cover used for the first video.

Limitations - Per-item thumbnails for multi-video posts are not supported. Each destination network exposes a single cover image per post for the leading video; this matches the behavior of the underlying social platform APIs.

Format - Provide a publicly accessible JPEG or PNG URL. Animated formats and video URLs are not accepted. - Recommended: an image matching the orientation of your video and ≤ 2 MB. - id — string — Unique identifier for the media item. Used for tracking and referencing. - optimizedUrl — string — URL of the optimized/compressed media. Set automatically when media optimization is enabled.

Enable Optimization: Set mediaOptimization: true in the post request. - optimizedType — string — MIME type of the optimized media. May differ from original if format conversion occurred. - isModified — boolean — Flag indicating if the media was modified (watermarked, optimized, or processed). - altText — string — Alt text for accessibility. Supported on Instagram, Threads, Pinterest, Bluesky, and LinkedIn image posts (ignored for video and other platforms). Auto-truncated per platform: Pinterest 500, Instagram/Threads 1000, Bluesky 2000, LinkedIn 4086 chars. - status — string — Post status indicating the current state of the post.

Available Status Values: - draft - Post saved as draft, not yet ready for publishing - scheduled - Post scheduled for future publishing (requires scheduleDate) - in_review - Post pending approval (requires scheduleDate and postApprovalDetails) - published - Post has been published - in_progress - Post is currently being processed - pending - Post is awaiting platform processing for Instagram media container creation - failed - Post publishing failed - notification_sent - Story notification sent (for manual story posting) - deleted - Post has been deleted

Validations: - scheduled or in_review status requires scheduleDate to be set - Draft posts skip most validations (accountIds, media requirements) - scheduleDate — string — Schedule Date - selectedBestTime — string — Selected Best Time slot for scheduling - createdBy — string — User Id of the creator who is creating/managing the post. Must be a valid MongoDB ObjectId.

Get User IDs from: Get User API — use the id field from the user object.

Validation: Must be a valid MongoDB ObjectId. - followUpComment — string — Follow-up comment to be posted immediately after the main post is published.

Supported Platforms: Facebook, Instagram, LinkedIn, YouTube

NOT Supported: TikTok, Google My Business (GMB), Pinterest

Use Case: Great for adding hashtags, additional context, or engagement prompts without cluttering the main post.

  • Follow-up comment is automatically trimmed to platform limits

Reference: Platform Limitations Guide - ogTagsDetails — — Og Tags Meta Data - type (requerido) — string — Type of post to create. Determines the format and platform requirements.

Available Types: - post - Standard feed post (all platforms) - story - Temporary 24-hour story (Instagram, Facebook) - reel - Short-form video content (Instagram, Facebook, TikTok, YouTube)

Customize Per Platform: You can specify different content/types per platform using facebookPostDetails.type, instagramPostDetails.type, etc.

Validations: - Reels require exactly 1 video - Stories: Caption not supported for Instagram/Facebook - Facebook Groups do not support Reels - postApprovalDetails — — Post Approval Details - scheduleTimeUpdated — boolean — Flag indicating if the schedule datetime was manually updated. Used for tracking rescheduled posts. - tags — array — Array of Tag IDs to associate with the post for organization and filtering.

Get Tag IDs from: Get Tags API — use the _id field from each tag.

Validation: All IDs must be valid MongoDB ObjectIds. - categoryId — string — Category Id to organize the post. Categories help group related posts.

Get Category IDs from: Get Categories API — use the _id field.

Validation: Must be a valid MongoDB ObjectId. - applyWatermark — boolean — Apply watermark to media in this post.

Note: Watermarks are applied to images only. Videos are not watermarked. - tiktokPostDetails — — Tiktok Post Details - gmbPostDetails — — GMB Post Details - userId (requerido) — string — User Id of the user creating/managing the post. Required for OAuth channel posts (non-draft). - linkedinPostDetails — — LinkedIn-specific post configuration.

Key Fields: - postAsPdf: Set to true to post images as a PDF carousel document - pdfTitle: Title for the PDF document (max 100 characters)

Limits: - Max 9 images/videos for regular posts - Max 300 pages for PDF carousel - Max PDF size: 100 MB

Reference: Platform Limitations Guide - pinterestPostDetails — — Pinterest-specific post configuration. Required when posting to Pinterest accounts.

Required Fields: - boardIds: Object mapping account OAuth IDs to Pinterest board IDs

Optional Fields: - title: Pin title (max 100 characters) - link: Destination URL for the pin (max 2048 characters)

Get Board IDs: Use the Pinterest boards API or retrieve from connected account details.

Limits: - Max 1 image/video per pin - Caption max 800 characters

Reference: Platform Limitations Guide - facebookPostDetails — — Facebook-specific post configuration.

Key Fields: - type: Post type (post, story, reel)

Restrictions: - Facebook Groups do NOT support Reels - Reels require exactly 1 video - Stories do not support captions

Reference: Platform Limitations Guide - instagramPostDetails — — Instagram-specific post configuration.

Key Fields: - type: Post type (post, story, reel) - collaborators: Map of account IDs to Instagram usernames for collaboration invites (max 3 per account) - showOnFeed: Show reel on profile feed (for reels)

Collaborators Structure:

{ "accountId": ["username1", "username2"] }

Where accountId is from Get Accounts API and usernames are Instagram handles without @.

Restrictions: - Media is REQUIRED for all Instagram posts - Max 30 hashtags allowed in caption - Stories do not support captions - Collaborators: Posts/Reels only (NOT Stories) - Reels require exactly 1 video

Reference: Platform Limitations Guide - youtubePostDetails — — YouTube-specific post configuration.

Key Fields: - title: Video title (max 100 characters) - type: Video type (video for regular videos, short for YouTube Shorts) - privacyLevel: Video visibility (private, public, unlisted)

Limits: - Max 1 video per post - Caption (description) max 5,000 characters

Requirements: - Video is REQUIRED for YouTube posts - type field is required

Respuestas: - 201 — Respuesta exitosa - 400 — Peticion invalida - 401 — No autorizado - 422 — Entidad no procesable


GET /social-media-posting/{locationId}/posts/{id}

Obtener publicacion Parametros: - Versión (header, string) (requerido) — Versión de la API - locationId (path, string) (requerido) — Id de sede - id (path, string) (requerido) — Id de publicacion

Respuestas: - 200 — Respuesta exitosa - 400 — Peticion invalida - 401 — No autorizado - 422 — Entidad no procesable


PUT /social-media-posting/{locationId}/posts/{id}

Edit post Create posts for all supported platforms. It is possible to create customized posts per channel by using the same platform account IDs in a request and hitting the create post API multiple times with different summaries and account IDs per platform.

The content and media limitations, as well as platform rate limiters corresponding to the respective platforms, are provided in the following reference link:

Link: Platform Limitations

Parametros: - Versión (header, string) (requerido) — Versión de la API - locationId (path, string) (requerido) — Id de sede - id (path, string) (requerido) — Id de publicacion

Cuerpo de la peticion (application/json): - accountIds (requerido) — array — Account IDs for the post. Each account Id identifies a connected social media account.

Get IDs from: Get Accounts API — use the id field from each account.

Validations: - Required for non-draft posts - Must be a non-empty array - All account IDs must be valid connected accounts for the location - summary — string — Post content/caption text. Character limits vary by platform.

Custom Values & Hashtags: - You can include custom values/variables in the content (e.g., {{contact.name}}) - Hashtags: Use #hashtag format. Instagram allows max 30 hashtags. - Mentions: Use platform-specific mention format (see mentions field for structured mentions)

Validations: - Instagram/Facebook Story: Caption NOT supported for direct publishing - Facebook, LinkedIn, GMB: Content OR media is required (at least one) - Content is automatically trimmed to platform limits

Reference: Platform Limitations Guide - media — array — Post Media Data The limitations of media as per the platforms is provided through the reference link in API description - url (requerido) — string — Public URL of the media file. Must be a valid, accessible HTTPS URL. - caption — string — Alt text or caption for the media. Used for accessibility and SEO. - originalUrl — string — Original media URL before any processing (watermarking/optimization). Set automatically by the system. - watermarkedUrl — string — URL of the media after watermarking. Set automatically when watermark is applied. - type (requerido) — string — MIME type of the media file. See Platform Limitations Guide for platform-specific format support. - thumbnail — string — Cover image URL for a video media item.

Scope - Applies to the first video in media[]. Values supplied on subsequent video items are ignored. - Has no effect on image-only media items.

Response behavior - After the post is published, the resolved cover image is surfaced on the post-level thumbnail field of the response and is no longer echoed back inside media[]. This represents the post's primary cover image and the cover used for the first video.

Limitations - Per-item thumbnails for multi-video posts are not supported. Each destination network exposes a single cover image per post for the leading video; this matches the behavior of the underlying social platform APIs.

Format - Provide a publicly accessible JPEG or PNG URL. Animated formats and video URLs are not accepted. - Recommended: an image matching the orientation of your video and ≤ 2 MB. - id — string — Unique identifier for the media item. Used for tracking and referencing. - optimizedUrl — string — URL of the optimized/compressed media. Set automatically when media optimization is enabled.

Enable Optimization: Set mediaOptimization: true in the post request. - optimizedType — string — MIME type of the optimized media. May differ from original if format conversion occurred. - isModified — boolean — Flag indicating if the media was modified (watermarked, optimized, or processed). - altText — string — Alt text for accessibility. Supported on Instagram, Threads, Pinterest, Bluesky, and LinkedIn image posts (ignored for video and other platforms). Auto-truncated per platform: Pinterest 500, Instagram/Threads 1000, Bluesky 2000, LinkedIn 4086 chars. - status — string — Post status indicating the current state of the post.

Available Status Values: - draft - Post saved as draft, not yet ready for publishing - scheduled - Post scheduled for future publishing (requires scheduleDate) - in_review - Post pending approval (requires scheduleDate and postApprovalDetails) - published - Post has been published - in_progress - Post is currently being processed - pending - Post is awaiting platform processing for Instagram media container creation - failed - Post publishing failed - notification_sent - Story notification sent (for manual story posting) - deleted - Post has been deleted

Validations: - scheduled or in_review status requires scheduleDate to be set - Draft posts skip most validations (accountIds, media requirements) - scheduleDate — string — Schedule Date - selectedBestTime — string — Selected Best Time slot for scheduling - createdBy — string — User Id of the creator who is creating/managing the post. Must be a valid MongoDB ObjectId.

Get User IDs from: Get User API — use the id field from the user object.

Validation: Must be a valid MongoDB ObjectId. - followUpComment — string — Follow-up comment to be posted immediately after the main post is published.

Supported Platforms: Facebook, Instagram, LinkedIn, YouTube

NOT Supported: TikTok, Google My Business (GMB), Pinterest

Use Case: Great for adding hashtags, additional context, or engagement prompts without cluttering the main post.

  • Follow-up comment is automatically trimmed to platform limits

Reference: Platform Limitations Guide - ogTagsDetails — — Og Tags Meta Data - type (requerido) — string — Type of post to create. Determines the format and platform requirements.

Available Types: - post - Standard feed post (all platforms) - story - Temporary 24-hour story (Instagram, Facebook) - reel - Short-form video content (Instagram, Facebook, TikTok, YouTube)

Customize Per Platform: You can specify different content/types per platform using facebookPostDetails.type, instagramPostDetails.type, etc.

Validations: - Reels require exactly 1 video - Stories: Caption not supported for Instagram/Facebook - Facebook Groups do not support Reels - postApprovalDetails — — Post Approval Details - scheduleTimeUpdated — boolean — Flag indicating if the schedule datetime was manually updated. Used for tracking rescheduled posts. - tags — array — Array of Tag IDs to associate with the post for organization and filtering.

Get Tag IDs from: Get Tags API — use the _id field from each tag.

Validation: All IDs must be valid MongoDB ObjectIds. - categoryId — string — Category Id to organize the post. Categories help group related posts.

Get Category IDs from: Get Categories API — use the _id field.

Validation: Must be a valid MongoDB ObjectId. - applyWatermark — boolean — Apply watermark to media in this post.

Note: Watermarks are applied to images only. Videos are not watermarked. - tiktokPostDetails — — Tiktok Post Details - gmbPostDetails — — GMB Post Details - userId (requerido) — string — User Id of the user creating/managing the post. Required for OAuth channel posts (non-draft). - linkedinPostDetails — — LinkedIn-specific post configuration.

Key Fields: - postAsPdf: Set to true to post images as a PDF carousel document - pdfTitle: Title for the PDF document (max 100 characters)

Limits: - Max 9 images/videos for regular posts - Max 300 pages for PDF carousel - Max PDF size: 100 MB

Reference: Platform Limitations Guide - pinterestPostDetails — — Pinterest-specific post configuration. Required when posting to Pinterest accounts.

Required Fields: - boardIds: Object mapping account OAuth IDs to Pinterest board IDs

Optional Fields: - title: Pin title (max 100 characters) - link: Destination URL for the pin (max 2048 characters)

Get Board IDs: Use the Pinterest boards API or retrieve from connected account details.

Limits: - Max 1 image/video per pin - Caption max 800 characters

Reference: Platform Limitations Guide - facebookPostDetails — — Facebook-specific post configuration.

Key Fields: - type: Post type (post, story, reel)

Restrictions: - Facebook Groups do NOT support Reels - Reels require exactly 1 video - Stories do not support captions

Reference: Platform Limitations Guide - instagramPostDetails — — Instagram-specific post configuration.

Key Fields: - type: Post type (post, story, reel) - collaborators: Map of account IDs to Instagram usernames for collaboration invites (max 3 per account) - showOnFeed: Show reel on profile feed (for reels)

Collaborators Structure:

{ "accountId": ["username1", "username2"] }

Where accountId is from Get Accounts API and usernames are Instagram handles without @.

Restrictions: - Media is REQUIRED for all Instagram posts - Max 30 hashtags allowed in caption - Stories do not support captions - Collaborators: Posts/Reels only (NOT Stories) - Reels require exactly 1 video

Reference: Platform Limitations Guide - youtubePostDetails — — YouTube-specific post configuration.

Key Fields: - title: Video title (max 100 characters) - type: Video type (video for regular videos, short for YouTube Shorts) - privacyLevel: Video visibility (private, public, unlisted)

Limits: - Max 1 video per post - Caption (description) max 5,000 characters

Requirements: - Video is REQUIRED for YouTube posts - type field is required

Respuestas: - 200 — Respuesta exitosa - 400 — Peticion invalida - 401 — No autorizado - 422 — Entidad no procesable


DELETE /social-media-posting/{locationId}/posts/{id}

Eliminar publicacion Parametros: - Versión (header, string) (requerido) — Versión de la API - locationId (path, string) (requerido) — Id de sede - id (path, string) (requerido) — Id de publicacion

Respuestas: - 200 — Respuesta exitosa - 400 — Peticion invalida - 401 — No autorizado - 422 — Entidad no procesable


POST /social-media-posting/{locationId}/posts/bulk-delete

Bulk Delete Social Planner Posts Deletes multiple posts based on the provided list of post IDs. This operation is useful for clearing up large numbers of posts efficiently.

Note:

1.The maximum number of posts that can be deleted in a single request is '50'.

2.However, It will only get deleted in CRM database but still it is recommended to be cautious of this operation.

Parametros: - Versión (header, string) (requerido) — Versión de la API

Cuerpo de la peticion (application/json): - postIds — array — Requested Results

Respuestas: - 201 — Posts deleted successfully - 400 — Cannot delete more than 50 posts at a time. - 401 — No autorizado - 404 — No posts found with the given IDs. - 422 — Entidad no procesable - 500 — An error occurred while trying to delete the posts. Please try again later.


GET /social-media-posting/{locationId}/accounts

Obtener cuentas Get list of accounts and groups

Scopes requeridos: socialplanner/account.readonly

Parametros: - Versión (header, string) (requerido) — Versión de la API - locationId (path, string) (requerido) — Id de sede

Respuestas: - 200 — Respuesta exitosa - 400 — Peticion invalida - 401 — No autorizado - 422 — Entidad no procesable


DELETE /social-media-posting/{locationId}/accounts/{id}

Eliminar cuenta Delete account and account from group

Parametros: - Versión (header, string) (requerido) — Versión de la API - locationId (path, string) (requerido) — Id de sede - id (path, string) (requerido) — Id - companyId (query, string) — Id de empresa - userId (query, string) — Id de usuario

Respuestas: - 200 — Respuesta exitosa - 400 — Peticion invalida - 401 — No autorizado - 422 — Entidad no procesable


POST /social-media-posting/{locationId}/csv

Upload CSV Upload a CSV file containing social media posts for bulk scheduling

Scopes requeridos: socialplanner/csv.write

Parametros: - Versión (header, string) (requerido) — Versión de la API - locationId (path, string) (requerido) — Id de sede

Cuerpo de la peticion (multipart/form-data): - file (requerido) — string — CSV file to upload containing social media posts

Respuestas: - 201 — Respuesta exitosa - 400 — Bad Request - File is required or CSV validation error - 401 — No autorizado - 422 — Entidad no procesable


GET /social-media-posting/{locationId}/csv

Obtener Upload Status Get the status of all CSV imports for a location

Parametros: - Versión (header, string) (requerido) — Versión de la API - locationId (path, string) (requerido) — Id de sede - skip (query, string) — Número de registros a omitir - limit (query, string) — Maximum number of records to return - includeUsers (query, string) — Include user data in response - isFromTemplate (query, string) — Filter CSVs imported from template library - userId (query, string) (requerido) — Id de usuario

Respuestas: - 200 — Respuesta exitosa - 400 — Peticion invalida - 401 — No autorizado - 422 — Entidad no procesable


POST /social-media-posting/{locationId}/set-accounts

Set Accounts Set social media accounts for a CSV import to publish posts to

Scopes requeridos: socialplanner/csv.write

Parametros: - Versión (header, string) (requerido) — Versión de la API - locationId (path, string) (requerido) — Id de sede

Cuerpo de la peticion (application/json): - accountIds (requerido) — array — Account Ids - filePath (requerido) — string — File path - rowsCount (requerido) — number — Entries Count. rowsCount must be between 1 and number of posts in CSV - fileName (requerido) — string — Name of file - approver — string — Approver User Id - userId (requerido) — string — User Id - csvFileType — string — CSV file type - determines the format of the CSV file being imported

Respuestas: - 201 — Respuesta exitosa - 400 — Peticion invalida - 401 — No autorizado - 422 — Validation error


GET /social-media-posting/{locationId}/csv/{id}

Obtener CSV Post Get details of a specific CSV import including its posts

Parametros: - Versión (header, string) (requerido) — Versión de la API - locationId (path, string) (requerido) — Id de sede - id (path, string) (requerido) — Id de CSV - skip (query, string) — Número de registros a omitir - limit (query, string) — Maximum number of records to return

Respuestas: - 200 — Respuesta exitosa - 400 — Peticion invalida - 401 — No autorizado - 422 — Entidad no procesable


PATCH /social-media-posting/{locationId}/csv/{id}

Start CSV Finalize Finalize a CSV import and schedule all posts for publishing

Parametros: - Versión (header, string) (requerido) — Versión de la API - locationId (path, string) (requerido) — Id de sede - id (path, string) (requerido) — Id de CSV

Cuerpo de la peticion (application/json): - userId (requerido) — string — User Id

Respuestas: - 200 — Respuesta exitosa - 400 — Peticion invalida - 401 — No autorizado - 422 — Entidad no procesable


DELETE /social-media-posting/{locationId}/csv/{id}

Eliminar CSV Delete a CSV import and all its associated posts

Parametros: - Versión (header, string) (requerido) — Versión de la API - locationId (path, string) (requerido) — Id de sede - id (path, string) (requerido) — Id de CSV

Respuestas: - 200 — Respuesta exitosa - 400 — Peticion invalida - 401 — No autorizado - 422 — Entidad no procesable


DELETE /social-media-posting/{locationId}/csv/{csvId}/post/{postId}

Eliminar CSV Post Delete a specific post from a CSV import

Parametros: - Versión (header, string) (requerido) — Versión de la API - locationId (path, string) (requerido) — Id de sede - postId (path, string) (requerido) — Id de CSV Post - csvId (path, string) (requerido) — Id de CSV

Respuestas: - 200 — Respuesta exitosa - 400 — Peticion invalida - 401 — No autorizado - 422 — Entidad no procesable


GET /social-media-posting/oauth/{platform}/start

Start OAuth Flow (Step 1 of 3)

OAuth Connection Flow - Step 1: Initiate OAuth

This is the first step in the 3-step OAuth flow to connect a social media account:

  1. Start OAuth (this endpoint) → User authenticates with the platform
  2. Get Accounts → Retrieve available pages/channels to connect
  3. Attach Account → Connect the selected account to your location

How to Use

Open this API in a browser window (not via cURL) with the required query parameters. The user will be redirected to the platform's OAuth login screen.

Receiving the OAuth Response

After successful authentication, the OAuth window will post a message back to your application. Listen for this message to get the accountId needed for the next step.

window.addEventListener('message', function(e) {
  if (e.data && e.data.page === 'social_media_posting') {
    const { actionType, page, platform, placement, accountId, reconnectAccounts } = e.data;
    // Use accountId for Step 2: GET /oauth/{locationId}/{platform}/accounts/{accountId}
  }
}, false);

Event Data Response

Field Type Example Description
actionType string "close" The action type
page string "social-media-posting" Source page identifier
platform string "facebook" The OAuth platform
placement string "placement" Placement context
accountId string "658a9b6833b91e0ecb8f3958" Use this for Step 2
reconnectAccounts string[] ["658a9b...", "efd2da..."] Accounts that need reconnection

Next Step

Use the accountId from the response to call:

GET /social-media-posting/oauth/{locationId}/{platform}/accounts/{accountId}

Platform Notes

  • bluesky: Currently not supported, will return an error
  • tiktok-business: Uses a separate business OAuth flow

Parametros: - Authorization (header, string) (requerido) — Token de acceso - Versión (header, string) (requerido) — Versión de la API - platform (path, string) (requerido) — Social media platform to connect. Each platform has specific account types: - google: Google Business Profile locations - facebook: Facebook Pages - instagram: Instagram Professional Accounts (Business/Creator) - linkedin: LinkedIn Pages and Profiles - tiktok: TikTok Creator Accounts - tiktok-business: TikTok Business Center Accounts - youtube: YouTube Channels - pinterest: Pinterest Business Accounts - threads: Threads Profiles - bluesky: Bluesky Accounts (currently not supported) - locationId (query, string) (requerido) — Id de sede - userId (query, string) (requerido) — Id de usuario - page (query, string) — Page - reconnect (query, string) — Reconnect

Respuestas: - 200 — Respuesta exitosa - 400 — Peticion invalida - 401 — No autorizado - 422 — Entidad no procesable


GET /social-media-posting/oauth/{locationId}/{platform}/accounts/{accountId}

Obtener Available Accounts (Step 2 of 3)

OAuth Connection Flow - Step 2: Get Available Accounts

After completing OAuth authentication (Step 1), use this endpoint to retrieve the list of available pages, channels, or locations that can be connected.

OAuth Flow Position

  1. Start OAuth → User authenticates, returns accountId
  2. Get Accounts (this endpoint) → Lists available pages/channels to connect
  3. Attach Account → Connect the selected account

What This Returns

The response varies by platform:

Platform Returns
facebook List of Facebook Pages the user manages
instagram List of Instagram Professional Accounts (linked to Facebook Pages)
google Google Business Profile locations
linkedin LinkedIn Pages and Profile
tiktok TikTok Creator account info
tiktok-business TikTok Business Center accounts
youtube YouTube Channels
pinterest Pinterest Business accounts and boards
threads Threads profiles

Next Step

From the response, select the account/page you want to connect and use its details in Step 3:

POST /social-media-posting/oauth/{locationId}/{platform}/accounts/{accountId}

Parametros: - Authorization (header, string) (requerido) — Token de acceso - Versión (header, string) (requerido) — Versión de la API - locationId (path, string) (requerido) — Id de Account Location - platform (path, string) (requerido) — Social media platform - accountId (path, string) (requerido) — The OAuth Account Id received from Step 1 (Start OAuth) via the window message event - search (query, string) — Search term to filter accounts/pages by name. Useful when the user has many pages to choose from.

Respuestas: - 200 — Returns available accounts/pages/channels that can be connected. Response structure varies by platform - see examples below. - 400 — Peticion invalida - 401 — No autorizado - 422 — Entidad no procesable


POST /social-media-posting/oauth/{locationId}/{platform}/accounts/{accountId}

Connect Account (Step 3 of 3)

OAuth Connection Flow - Step 3: Connect the Account

This is the final step in the OAuth flow. After retrieving available accounts (Step 2), use this endpoint to connect the selected account to your location.

OAuth Flow Summary

  1. Start OAuth → User authenticates with platform
  2. Get Accounts → Retrieved available pages/channels
  3. Attach Account (this endpoint) → Connect the selected account

Request Body by Platform

The request body structure varies depending on the platform:

Facebook / Instagram
{
  "type": "page",
  "originId": "244405XXXXX11687",
  "name": "My Facebook Page",
  "avatar": "https://..." // optional
}
Google Business Profile
{
  "location": {
    "name": "locations/12345",
    "title": "My Business Location",
    "storeCode": "STORE123",
    "isVerified": "ChIJsZQpj1qbXjkRQNDUG4UUx6k"
  },
  "account": {
    "name": "accounts/12345",
    "accountName": "My Business Account",
    "type": "LOCATION_GROUP",
    "verificationState": "VERIFIED",
    "vettedState": "VETTED"
  }
}
LinkedIn
{
  "type": "page",
  "originId": "urn:li:organization:12345",
  "name": "My LinkedIn Page",
  "avatar": "https://..." // optional
}
TikTok
{
  "originId": "7234567890123456789",
  "name": "My TikTok Account",
  "avatar": "https://..." // optional
}
YouTube
{
  "originId": "UCxxxxxxxxxxxxxxxx",
  "name": "My YouTube Channel",
  "avatar": "https://..." // optional
}
Pinterest
{
  "originId": "123456789",
  "name": "My Pinterest Account",
  "avatar": "https://..." // optional
}

After Connection

Once connected, the account will appear in your location's connected accounts and can be used for social media posting.

Parametros: - Authorization (header, string) (requerido) — Token de acceso - Versión (header, string) (requerido) — Versión de la API - locationId (path, string) (requerido) — The Location Id where you want to connect this social account - platform (path, string) (requerido) — Social media platform (must match the platform used in Steps 1 and 2) - accountId (path, string) (requerido) — The OAuth Account Id received from Step 1 (same as used in Step 2)

Cuerpo de la peticion (application/json): - (ver esquema en la fuente original)

Respuestas: - 201 — Successful response - Account attached. Response structure varies by platform. - 400 — Peticion invalida - 401 — No autorizado - 422 — Entidad no procesable


GET /social-media-posting/{locationId}/categories

Obtener categories by location id Retrieve all categories for a specific location with optional search and pagination

Scopes requeridos: socialplanner/category.readonly

Parametros: - Versión (header, string) (requerido) — Versión de la API - locationId (path, string) (requerido) — Id de sede - searchText (query, string) — Search text string - limit (query, string) — Limit - skip (query, string) — Skip

Respuestas: - 200 — Respuesta exitosa - 400 — Peticion invalida - 401 — No autorizado - 422 — Entidad no procesable


GET /social-media-posting/{locationId}/categories/{id}

Obtener categories by id Retrieve a specific category by its Id

Parametros: - Authorization (header, string) (requerido) — Token de acceso - Versión (header, string) (requerido) — Versión de la API - id (path, string) (requerido) — Id de Category - locationId (path, string) (requerido) — Id de sede

Respuestas: - 200 — Respuesta exitosa - 400 — Peticion invalida - 401 — No autorizado - 422 — Entidad no procesable


GET /social-media-posting/{locationId}/tags

Obtener tags by location id Retrieve all tags for a specific location with optional search and pagination

Parametros: - Versión (header, string) (requerido) — Versión de la API - locationId (path, string) (requerido) — Id de sede - searchText (query, string) — Search text string - limit (query, string) — Limit - skip (query, string) — Skip

Respuestas: - 200 — Respuesta exitosa - 400 — Peticion invalida - 401 — No autorizado - 422 — Entidad no procesable


POST /social-media-posting/{locationId}/tags/details

Obtener tags by ids Retrieve specific tags by their IDs

Parametros: - Versión (header, string) (requerido) — Versión de la API - locationId (path, string) (requerido) — Id de sede

Cuerpo de la peticion (application/json): - tagIds (requerido) — array — Array of Tag Ids

Respuestas: - 201 — Respuesta exitosa - 400 — Peticion invalida - 401 — No autorizado - 422 — Entidad no procesable


POST /social-media-posting/statistics

Obtener Social Media Statistics Retrieve analytics data for multiple social media accounts. Supports custom date ranges for both the current period and a comparison period. If no date ranges are provided, defaults to the last 7 days (excluding today) with comparison to the previous 7 days.

Scopes requeridos: socialplanner/statistics.readonly

Parametros: - Versión (header, string) (requerido) — Versión de la API - locationId (query, string) (requerido) — Id de sede

Cuerpo de la peticion (application/json): - profileIds (requerido) — array — Array of connected social media account IDs to fetch analytics for. This can be found as 'profileId' in /accounts api. - platforms — array — Array of social media platforms to filter analytics by. If not provided, all platforms will be included. NOTE: Linkedin (PAGE only) and Tiktok (BUSINESS only) are supported. - currentRange — object — Custom date range for the current analytics period. If omitted, defaults to the last 7 days (excluding today) with automatic comparison to the previous 7 days. - startDate (requerido) — string — Start date in ISO 8601 format. - endDate (requerido) — string — End date in ISO 8601 format. Must be after startDate. - prevRange — object — Comparison date range. Can only be provided when currentRange is also present. If omitted while currentRange is present, no comparison data is returned. - startDate (requerido) — string — Start date in ISO 8601 format. - endDate (requerido) — string — End date in ISO 8601 format. Must be after startDate.

Respuestas: - 200 — Successfully retrieved analytics data - 400 — Bad Request - Occurs when: more than 100 accounts are requested, invalid date formats are provided, startDate is after endDate, prevRange is provided without currentRange, or invalid platform values are specified. - 401 — Unauthorized - Invalid or missing authentication credentials - 422 — Unprocessable Entity - Invalid request body format


GET /social-media-posting/category/queues/available-categories

Obtener todos los categories with their queue status Returns categories with status: "available" (no queue), "in_queue" (active/paused queue), or "draft" (queue in draft).

Scopes requeridos: socialplanner/category.readonly

Parametros: - Versión (header, string) (requerido) — Versión de la API - locationId (query, string) (requerido) — Id de sede - skip (query, string) — Número de elementos a omitir - limit (query, string) — Maximum number of items to return - q (query, string) — Search query

Respuestas: - 200 — Available categories fetched successfully. - 400 — Peticion invalida - 401 — No autorizado - 422 — Entidad no procesable


POST /social-media-posting/category/queues

Crear a new category queue Creates a queue in draft status for a category. Published posts are auto-added. Use update endpoint to activate.

Scopes requeridos: socialplanner/category.write

Parametros: - Versión (header, string) (requerido) — Versión de la API

Cuerpo de la peticion (application/json): - locationId (requerido) — string — Location Id - categoryId (requerido) — string — Category Id - timeSlots (requerido) — array - dayOfWeek (requerido) — number — Day of the week (0-6) - time (requerido) — string — Time in HH:mm format - enableFuturePosts — boolean — Enable Future Posts. Defaults to false. - prioritizeNewContent — boolean — Prioritize New Content. Defaults to false. - userId (requerido) — string — User id

Respuestas: - 201 — Queue created successfully. - 400 — Peticion invalida - 401 — No autorizado - 422 — Entidad no procesable


POST /social-media-posting/category/queues/list

Fetch category queues for a location Retrieves a paginated list of all category queues for a given location, excluding any that have been marked as deleted.

Scopes requeridos: socialplanner/category.readonly

Parametros: - Versión (header, string) (requerido) — Versión de la API

Cuerpo de la peticion (application/json): - locationId (requerido) — string — Location Id - skip — number — Number of items to skip - limit — number — Maximum number of items to return

Respuestas: - 201 — Successfully retrieved category queues. - 400 — Peticion invalida - 401 — No autorizado - 422 — Entidad no procesable


GET /social-media-posting/category/queues/{queueId}

Fetch a category queue by Id Retrieves the details of a single category queue by its unique Id. The response includes a count of posts within the queue that have errors.

Scopes requeridos: socialplanner/category.readonly

Parametros: - Versión (header, string) (requerido) — Versión de la API - queueId (path, string) (requerido) — - locationId (query, string) (requerido) — Id de sede

Respuestas: - 200 — Successfully retrieved the category queue. - 400 — Peticion invalida - 401 — No autorizado - 422 — Entidad no procesable


PUT /social-media-posting/category/queues/{queueId}

Actualizar queue settings or status Updates queue status (active/paused/deleted), time slots, or skip dates.

Scopes requeridos: socialplanner/category.write

Parametros: - Versión (header, string) (requerido) — Versión de la API - queueId (path, string) (requerido) —

Cuerpo de la peticion (application/json): - locationId (requerido) — string — Location Id - skipLegacyWatermark — boolean — Skip legacy watermark cleanup when rescheduling posts - status — object — Status of the Queue - skipDateTime — string — Skip Date Time in ISO format - timeSlots — array - dayOfWeek (requerido) — number — Day of the week (0-6) - time (requerido) — string — Time in HH:mm format - enableFuturePosts — boolean — Enable posting future content. Automatically Queue any New Posts Created in this Category. - prioritizeNewContent — boolean — Prioritize new content over older content. When true, new items added via directToQueue will be placed at the top of the queue.

Respuestas: - 200 — Queue updated successfully. - 400 — Peticion invalida - 401 — No autorizado - 422 — Entidad no procesable


POST /social-media-posting/category/queues/{queueId}/items

Fetch items from a queue Returns paginated queue items. Pass sessionId to get draft items from an edit session instead of live items.

Scopes requeridos: socialplanner/category.readonly

Parametros: - Versión (header, string) (requerido) — Versión de la API - queueId (path, string) (requerido) —

Cuerpo de la peticion (application/json): - locationId (requerido) — string — Location Id - sessionId — string — Edit session Id - skip — number — Number of items to skip - limit — number — Maximum number of items to return - errorFilter — boolean — To return only queue items with errors - itemId — string — Item Id to center the response around. When provided, the response will position this item in the center with items above and below based on limit. The skip parameter is ignored when itemId is provided.

Respuestas: - 201 — Queue items fetched successfully. - 400 — Peticion invalida - 401 — No autorizado - 422 — Entidad no procesable


POST /social-media-posting/category/queues/{queueId}/edit/start

Start or resume an edit session Creates a draft copy of queue items for editing. Changes are staged until saved or discarded.

Scopes requeridos: socialplanner/category.write

Parametros: - Versión (header, string) (requerido) — Versión de la API - queueId (path, string) (requerido) —

Cuerpo de la peticion (application/json): - locationId (requerido) — string — Location Id

Respuestas: - 201 — Edit session started successfully. - 400 — Peticion invalida - 401 — No autorizado - 422 — Entidad no procesable


POST /social-media-posting/category/queues/{queueId}/edit/save

Save edit session changes Applies all staged changes to the live queue and closes the edit session.

Scopes requeridos: socialplanner/category.write

Parametros: - Versión (header, string) (requerido) — Versión de la API - queueId (path, string) (requerido) —

Cuerpo de la peticion (application/json): - locationId (requerido) — string — Location Id - sessionId (requerido) — string — Edit session Id - keepInDraft — boolean — If true, keeps the queue in DRAFT state after saving instead of automatically activating it. Only applicable when the queue is currently in DRAFT status.

Respuestas: - 200 — Edit session saved successfully. - 400 — Peticion invalida - 401 — No autorizado - 422 — Entidad no procesable


POST /social-media-posting/category/queues/{queueId}/edit/discard

Discard edit session changes Cancels the edit session and deletes all staged changes without affecting the live queue.

Scopes requeridos: socialplanner/category.write

Parametros: - Versión (header, string) (requerido) — Versión de la API - queueId (path, string) (requerido) —

Cuerpo de la peticion (application/json): - locationId (requerido) — string — Location Id - sessionId (requerido) — string — Edit session Id - keepInDraft — boolean — If true, keeps the queue in DRAFT state after saving instead of automatically activating it. Only applicable when the queue is currently in DRAFT status.

Respuestas: - 200 — Edit session discarded successfully. - 400 — Peticion invalida - 401 — No autorizado - 422 — Entidad no procesable


POST /social-media-posting/category/queues/{queueId}/edit/calendar

Fetch calendar view for an edit session Retrieves a calendar preview of scheduled posts based on draft items within an edit session. This shows how posts would be scheduled if changes were saved.

Scopes requeridos: socialplanner/category.readonly

Parametros: - Versión (header, string) (requerido) — Versión de la API - queueId (path, string) (requerido) —

Cuerpo de la peticion (application/json): - locationId (requerido) — string — Location Id - sessionId (requerido) — string — Edit session Id - startDate (requerido) — string — Start Date in ISO format - endDate (requerido) — string — End Date in ISO format - accountIds — array — Filter by Account IDs. If not provided or empty, returns all posts.

Respuestas: - 201 — Edit session calendar fetched successfully. - 400 — Peticion invalida - 401 — No autorizado - 422 — Entidad no procesable


POST /social-media-posting/category/queues/{queueId}/slots

Fetch slot information for queue items Returns paginated slot information (scheduledDateTime, isSkipped) for queue items. Pass sessionId to get slots for draft items, or omit for live items. Call this after mutations to refresh slot data.

Scopes requeridos: socialplanner/category.readonly

Parametros: - Versión (header, string) (requerido) — Versión de la API - queueId (path, string) (requerido) —

Cuerpo de la peticion (application/json): - locationId (requerido) — string — The location Id - sessionId — string — Session Id for edit mode. If not provided, calculates slots for live items. - skip — number — Number of items to skip - limit — number — Number of items to return

Respuestas: - 201 — Slots fetched successfully. - 400 — Peticion invalida - 401 — No autorizado - 422 — Entidad no procesable


DELETE /social-media-posting/category/queues/{queueId}/items/{itemId}

Eliminar an item from a queue Deletes an item from a specific category queue.

Scopes requeridos: socialplanner/category.write

Parametros: - Versión (header, string) (requerido) — Versión de la API - queueId (path, string) (requerido) — - itemId (path, string) (requerido) — - locationId (query, string) (requerido) — Id de sede - sessionId (query, string) — Id de Edit session

Respuestas: - 200 — The queue item has been successfully deleted. - 400 — Peticion invalida - 401 — No autorizado - 422 — Entidad no procesable


PUT /social-media-posting/category/queues/{queueId}/items/{itemId}

Actualizar an item in a queue Updates the content or variations of a specific item within a category queue.

Scopes requeridos: socialplanner/category.write

Parametros: - Versión (header, string) (requerido) — Versión de la API - queueId (path, string) (requerido) — - itemId (path, string) (requerido) —

Cuerpo de la peticion (application/json): - locationId (requerido) — string — Location Id - sessionId — string — Edit session Id - modifiedPostPayload — — Modifications to the original post - newOrder — — New order value or position keyword (cyclic-aware). Accepts: - A number: explicit order value calculated by FE as midpoint between adjacent items - "top": place at cyclic top (first to be scheduled next) - "bottom": place at cyclic bottom (last to be scheduled)

For positions between items, FE calculates: Math.floor((prevItem.order + nextItem.order) / 2) - variations — array — Variations - content — string — The text content of the variation. - mentions — array — Platform-specific mentions within the content (e.g., @username references). - ogTags — — Open Graph tags for link previews. - primaryImage — string — Primary media URL (image)

Respuestas: - 200 — The queue item has been successfully updated. - 400 — Peticion invalida - 401 — No autorizado - 422 — Entidad no procesable


POST /social-media-posting/category/queues/list/calendar

Obtener scheduled posts calendar view Returns scheduled posts from active queues within a date range. Supports filtering by categories and accounts.

Scopes requeridos: socialplanner/category.readonly

Parametros: - Versión (header, string) (requerido) — Versión de la API

Cuerpo de la peticion (application/json): - locationId (requerido) — string — Location Id - startDate (requerido) — string — Start Date in ISO format - endDate (requerido) — string — End Date in ISO format - categoryIds — array — Category Id - accountIds — array — Filter by Account IDs. If not provided or empty, returns all posts.

Respuestas: - 201 — Calendar list fetched successfully. - 400 — Peticion invalida - 401 — No autorizado - 422 — Entidad no procesable


DELETE /social-media-posting/category/queues/{postId}/active-post

Eliminar an active post and schedule the next one Deletes a post that is currently scheduled and automatically triggers the scheduling of the next available post in the queue.

Scopes requeridos: socialplanner/category.write

Parametros: - Versión (header, string) (requerido) — Versión de la API - postId (path, string) (requerido) — - locationId (query, string) (requerido) — Id de sede

Respuestas: - 200 — Successfully deleted the active post and scheduled the next one. - 400 — Peticion invalida - 401 — No autorizado - 422 — Entidad no procesable


PUT /social-media-posting/category/queues/{queueId}/items/{itemId}/reset

Reset an item in a queue Resets a specific queue item to its original state, discarding any modifications made.

Scopes requeridos: socialplanner/category.write

Parametros: - Versión (header, string) (requerido) — Versión de la API - queueId (path, string) (requerido) — - itemId (path, string) (requerido) —

Cuerpo de la peticion (application/json): - locationId (requerido) — string — Location Id - sessionId — string — Edit session Id

Respuestas: - 200 — The queue item has been successfully reset. - 400 — Peticion invalida - 401 — No autorizado - 422 — Entidad no procesable


POST /social-media-posting/category/queues/{queueId}/items/{itemId}/clone

Clone a queue item Duplicates an existing queue item at a specified order position. Requires an active edit session.

Scopes requeridos: socialplanner/category.write

Parametros: - Versión (header, string) (requerido) — Versión de la API - queueId (path, string) (requerido) — - itemId (path, string) (requerido) —

Cuerpo de la peticion (application/json): - locationId (requerido) — string — Location Id - sessionId (requerido) — string — Edit session Id - order (requerido) — number — Order for the cloned item (typically between source and next item)

Respuestas: - 201 — Queue item cloned successfully. - 400 — Peticion invalida - 401 — No autorizado - 422 — Entidad no procesable


POST /social-media-posting/category/queues/{queueId}/create/item

Crear a new item in the queue Adds a new post item to a queue. Use sessionId for edit session or directToQueue for immediate addition.

Scopes requeridos: socialplanner/category.write

Parametros: - Versión (header, string) (requerido) — Versión de la API - queueId (path, string) (requerido) —

Cuerpo de la peticion (application/json): - locationId (requerido) — string — Location Id - sessionId — string — Edit session Id - modifiedPostPayload — — New post details - order — — Order for the new item in the queue (cyclic-aware). Accepts: - A number: explicit order value calculated by FE as midpoint between adjacent items - "top": place at cyclic top (first to be scheduled next) - "bottom": place at cyclic bottom (last to be scheduled)

For positions between items, FE calculates: Math.floor((prevItem.order + nextItem.order) / 2) Defaults to end if not provided. Note: This field is ignored when directToQueue is true - the order will be automatically calculated based on the queue's prioritizeNewContent setting. - variations — array — Variations - content — string — The text content of the variation. - mentions — array — Platform-specific mentions within the content (e.g., @username references). - ogTags — — Open Graph tags for link previews. - primaryImage — string — Primary media URL (image) for the post. Falls back to modifiedPostPayload.primaryImage if not set. - directToQueue — boolean — When true, creates the queue item directly without requiring an edit session, even for active/paused queues. The order field is ignored and the item position is determined by the queue's prioritizeNewContent setting: if true, the item is added to the top of the queue; if false, it is added to the bottom.

Respuestas: - 201 — Queue item created successfully. - 400 — Peticion invalida - 401 — No autorizado - 422 — Entidad no procesable


POST /social-media-posting/comments/{platform}

Crear a comment or reply Create a top-level comment on a post (isParentThread: true, parentId = postId) or a reply to an existing comment (isParentThread: false, parentId = commentId). Per-platform content max length: Facebook 8000, Instagram 2200, Linkedin 3000, Community 8000, Tiktok 150, Bluesky 300, Youtube 10000, Threads 500.

Optional-field platform support: - attachments — supported on Facebook only. Ignored on Instagram, LinkedIn, TikTok, Bluesky, Community (Community processes the field but external URLs are not rendered due to its bucket restriction). - mentions — supported on Facebook, LinkedIn, and Community only. Ignored on Instagram, TikTok, Bluesky. - notifyAllGroupMembers — supported on Community only. When true, all group members get a push/in-app notification (equivalent to an @everyone broadcast). Independent of the mentions array and of @everyone text in content. Default false.

Parametros: - Versión (header, string) (requerido) — Versión de la API - platform (path, string) (requerido) — Supported Comments Platforms - locationId (query, string) (requerido) — Id de sede

Cuerpo de la peticion (application/json): - parentId (requerido) — string — For top-level comments (isParentThread: true): pass the post Id returned by the posts API. For replies (isParentThread: false): pass the parent comment Id returned by the list-comments API. In both cases this must be a valid 24-character Highlevel Id — not the native platform Id. - isParentThread (requerido) — boolean — Set true to create a top-level comment on a post (parentId = post Id). Set false to create a reply to an existing comment (parentId = comment Id). - content (requerido) — string — Content of the comment. Per-platform max length: Facebook 8000, Instagram 2200, Linkedin 3000, Community 8000, Tiktok 150, Bluesky 300, Youtube 10000, Threads 500. - attachments — array — Attachments for the comment (max 1 image). Supported on: Facebook only. Not supported on: Instagram, LinkedIn, TikTok, Bluesky, Community — the field is accepted by the API but the attachment will not appear on the comment. (Community processes the field server-side, but external URLs are not rendered due to its bucket restriction.) - url (requerido) — string — URL of the attachment - type (requerido) — string — Type of the attachment - mentions — array — Mentions for the comment. Supported on: Facebook, LinkedIn, Community. Ignored on: Instagram, TikTok, Bluesky — the field is accepted but mentions are not rendered on these platforms. - name (requerido) — string — Mention name - id (requerido) — string — Mention Id - offset (requerido) — number — Mention offset - length (requerido) — number — Mention length - slug — string — Mention slug for community profile link - notifyAllGroupMembers — boolean — When true, all members of the Community group receive a push/in-app notification about this comment — equivalent to an @everyone broadcast.

Supported on: Community only. Ignored on all other platforms (the field is accepted but no notification is sent).

Independent of the mentions array — you do not need to add an @everyone entry to mentions for this to take effect. Conversely, putting the literal text @everyone in content does not by itself trigger notifications; only this flag does.

Defaults to false (no broadcast notification). Use true only when the comment is genuinely intended for every member of the group — overuse may cause members to mute the group.

Respuestas: - 201 — Respuesta exitosa - 400 — Peticion invalida - 401 — No autorizado - 422 — Entidad no procesable


POST /social-media-posting/comments/{platform}/{id}/like

Like a comment Like a comment by its Highlevel comment Id (the _id returned by the list-comments endpoint — not the native platform Id).

Works for any comment level — top-level comments, replies, and replies-to-replies. Supported platforms: Facebook, LinkedIn, Community, TikTok, Bluesky. Instagram is not supported (passing instagram returns 400).

Parametros: - Versión (header, string) (requerido) — Versión de la API - platform (path, string) (requerido) — Platform that supports liking / unliking comments (Instagram is not supported) - id (path, string) (requerido) — Highlevel comment Id — the _id returned by the list-comments endpoint (POST /comments/{platform}/list). Not the native platform comment Id. Works for any comment level: top-level comments, replies, and replies-to-replies. - locationId (query, string) (requerido) — Id de sede

Respuestas: - 201 — Respuesta exitosa - 400 — State conflict (already liked) or unsupported platform (Instagram) - 401 — No autorizado - 422 — Entidad no procesable


DELETE /social-media-posting/comments/{platform}/{id}/like

Unlike a comment Remove a like from a comment by its Highlevel comment Id (the _id returned by the list-comments endpoint — not the native platform Id).

Works for any comment level — top-level comments, replies, and replies-to-replies. Supported platforms: Facebook, LinkedIn, Community, TikTok, Bluesky. Instagram is not supported (passing instagram returns 400).

Parametros: - Versión (header, string) (requerido) — Versión de la API - platform (path, string) (requerido) — Platform that supports liking / unliking comments (Instagram is not supported) - id (path, string) (requerido) — Highlevel comment Id — the _id returned by the list-comments endpoint (POST /comments/{platform}/list). Not the native platform comment Id. Works for any comment level: top-level comments, replies, and replies-to-replies. - locationId (query, string) (requerido) — Id de sede

Respuestas: - 200 — Respuesta exitosa - 400 — State conflict (not currently liked) or unsupported platform (Instagram) - 401 — No autorizado - 422 — Entidad no procesable


POST /social-media-posting/comments/{platform}/list

Listar comments for a post or thread Paginated list of comments scoped to a post (parentId = postId) or a comment thread (parentId = commentId). Use skip/limit for pagination, sortBy for ordering, originIds to filter by connected account, and search for keyword search.

Parametros: - Versión (header, string) (requerido) — Versión de la API - platform (path, string) (requerido) — Supported Comments Platforms - locationId (query, string) (requerido) — Id de sede

Cuerpo de la peticion (application/json): - fromDate — string — Start of the published-date window (ISO 8601). If provided, toDate is also required, and fromDate must be ≤ toDate. Omit both to disable date filtering. - toDate — string — End of the published-date window (ISO 8601). If provided, fromDate is also required. - originIds (requerido) — array — Origin IDs of connected accounts to filter by - sortBy — string — Sort by top comments or latest comments - search — string — Search - skip — number — Pagination offset — number of comments to skip (zero-based). Must be ≥ 0. - limit — number — Pagination page size — number of comments to return. Must be between 1 and 100. - parentId — string — Parent Id — pass the Highlevel post Id (for replies under a specific post) or the Highlevel comment Id (for replies under a specific comment). Omit to list all top-level comments for the location filtered by originIds. Must be a valid 24-character Highlevel Id, not the native platform Id.

Respuestas: - 201 — Respuesta exitosa - 400 — Peticion invalida - 401 — No autorizado - 422 — Entidad no procesable