# Edit post

PUT https://services.leadconnectorhq.com/social-media-posting/{locationId}/posts/{id}

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](https://help.leadconnectorhq.com/support/solutions/articles/48001240003-social-planner-image-video-content-and-api-limitations "Social Planner Help")

## Authentication

Send `Authorization: Bearer <token>` using:

- **Sub-Account token: OAuth access token or Private Integration Token.** Scopes: `socialplanner/post.write`

## Parameters

### Header Parameters

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `Version` | string | Yes | API Version |

### Path Parameters

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `locationId` | string | Yes | Location ID (also known as Sub-Account ID) for the business location. |
| `id` | string | Yes | Post ID of the post to retrieve, update, or delete.  **Get Post IDs from:** [List Posts API](/social-media-posting/{locationId}/posts/list) — use the `_id` field from each post. |

## OpenAPI Specification

```json
{
  "openapi": "3.0.0",
  "info": {
    "title": "LeadConnector API",
    "version": "v3"
  },
  "servers": [
    {
      "url": "https://services.leadconnectorhq.com"
    }
  ],
  "paths": {
    "/social-media-posting/{locationId}/posts/{id}": {
      "put": {
        "summary": "Edit post",
        "operationId": "editPost",
        "description": "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.\n\nThe content and media limitations, as well as platform rate limiters corresponding to the respective platforms, are provided in the following reference link:\n\n  Link: [Platform Limitations](https://help.leadconnectorhq.com/support/solutions/articles/48001240003-social-planner-image-video-content-and-api-limitations \"Social Planner Help\")",
        "parameters": [
          {
            "name": "Version",
            "in": "header",
            "description": "API Version",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "v3"
              ]
            }
          },
          {
            "name": "locationId",
            "required": true,
            "in": "path",
            "description": "Location ID (also known as Sub-Account ID) for the business location.",
            "schema": {
              "example": "ve9EPM428h8vShlRW1KT",
              "type": "string"
            }
          },
          {
            "name": "id",
            "required": true,
            "in": "path",
            "description": "Post ID of the post to retrieve, update, or delete.\n\n**Get Post IDs from:** [List Posts API](/social-media-posting/{locationId}/posts/list) — use the `_id` field from each post.",
            "schema": {
              "example": "65fac446d599990d1313c1dd",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreatePostDTO"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatePostSuccessfulResponseDTO"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestDTO"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedDTO"
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Entity",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnprocessableDTO"
                }
              }
            }
          }
        },
        "security": [
          {
            "Location-Access": [
              "socialplanner/post.write"
            ]
          }
        ]
      }
    }
  },
  "components": {
    "securitySchemes": {
      "bearer": {
        "scheme": "bearer",
        "bearerFormat": "JWT",
        "name": "Authorization",
        "in": "header",
        "description": "Use the Access Token generated with user type as Sub-Account (OR) Private Integration Token of Sub-Account.",
        "type": "http"
      },
      "Location-Access": {
        "scheme": "bearer",
        "bearerFormat": "JWT",
        "name": "Authorization",
        "in": "header",
        "description": "Use the Access Token generated with user type as Sub-Account (OR) Private Integration Token of Sub-Account.",
        "type": "http"
      },
      "Location-Access-Only": {
        "scheme": "bearer",
        "bearerFormat": "JWT",
        "name": "Authorization",
        "in": "header",
        "description": "Use the Access Token generated with user type as Sub-Account.",
        "type": "http"
      },
      "Agency-Access": {
        "scheme": "bearer",
        "bearerFormat": "JWT",
        "name": "Authorization",
        "in": "header",
        "description": "Use the Access Token generated with user type as Agency (OR) Private Integration Token of Agency.",
        "type": "http"
      },
      "Agency-Access-Only": {
        "scheme": "bearer",
        "bearerFormat": "JWT",
        "name": "Authorization",
        "in": "header",
        "description": "Use the Access Token generated with user type as Agency.",
        "type": "http"
      }
    },
    "schemas": {
      "CreatePostDTO": {
        "type": "object",
        "properties": {
          "accountIds": {
            "description": "Account IDs for the post. Each account ID identifies a connected social media account.\n\n**Get IDs from:** [Get Accounts API](/social-media-posting/oauth/{locationId}/accounts) — use the `id` field from each account.\n\n**One request = one post, shared across every account in this list.**\n- All accounts share the same `summary` and the same `media` array.\n- `summary` is trimmed to the **strictest** character limit among the selected platforms. Adding a Bluesky account (300 chars) therefore trims the caption to 300 for Facebook, Instagram and LinkedIn in that same request.\n- `media` is capped to each platform's own maximum at publish time (e.g. Bluesky publishes the first 4 items, Instagram the first 10).\n- **To keep full-length, platform-specific captions, send one request per platform** - one post per platform, each with only that platform's account IDs.\n\n**Validations:**\n- Required for non-draft posts\n- Must be a non-empty array\n- All account IDs must be valid connected accounts for the location",
            "example": [
              "aF3KhyL8JIuBwzK3m7Ly_iVrVJ2uoXNF0wzcBzgl5_12554616564525983496"
            ],
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "summary": {
            "type": "string",
            "description": "Post content/caption text. Character limits vary by platform.\n\n**Custom Values & Hashtags:**\n- You can include custom values/variables in the content (e.g., `{{contact.name}}`)\n- Hashtags: Use `#hashtag` format. Instagram allows max 30 hashtags.\n- Mentions: Use platform-specific mention format (see `mentions` field for structured mentions)\n\n**Validations:**\n- Instagram/Facebook Story: Caption NOT supported for direct publishing\n- Facebook, LinkedIn, GMB: Content OR media is required (at least one)\n\n**Trimming across multiple platforms:**\nOne post carries ONE caption for every account in `accountIds`, so the caption is silently trimmed to the **strictest** limit among the selected platforms — not to each platform's own limit.\n- Facebook 63,206 · LinkedIn 3,000 · Instagram / TikTok 2,200 · Google 1,500 · Pinterest 800 · Threads 500 · **Bluesky 300**\n- Example: `accountIds` covering Facebook + Instagram + Bluesky trims the caption to **300 characters on all three**.\n- Instagram/Facebook Stories without push-notification publishing force the limit to 0, dropping the caption entirely.\n- **To keep the full caption on each platform, send one request per platform** instead of one request mixing platforms.\n\n**Reference:** [Platform Limitations Guide](https://help.leadconnectorhq.com/support/solutions/articles/48001240003-social-planner-image-video-content-and-api-limitations)",
            "example": "Hello World! Check out our latest updates. #social #marketing"
          },
          "media": {
            "description": "Post Media Data. Per-platform media limits are listed in the reference link in the API description.\n\n**Across multiple platforms:** the same media array is sent to every account in `accountIds` and capped to each platform's own maximum at publish time — the array is NOT reduced to the strictest limit the way `summary` is. An 8-item array publishes 8 items to Facebook and the first 4 to Bluesky.\nSend one request per platform if a platform needs a different set of media.",
            "example": [
              {
                "url": "https://example.com/image.jpg",
                "type": "image/jpeg",
                "caption": "Sample caption"
              }
            ],
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "url": {
                  "type": "string",
                  "description": "Public URL of the media file. Must be a valid, accessible HTTPS URL.",
                  "example": "https://i0.wp.com/www.lifeofanarchitect.com/wp-content/uploads/2021/10/architectural-model-making-stairs.jpg"
                },
                "caption": {
                  "type": "string",
                  "description": "Alt text or caption for the media. Used for accessibility and SEO.",
                  "example": "Caption 1"
                },
                "originalUrl": {
                  "type": "string",
                  "description": "Original media URL before any processing (watermarking/optimization). Set automatically by the system.",
                  "example": "https://storage.googleapis.com/test/test/media/original.jpeg"
                },
                "watermarkedUrl": {
                  "type": "string",
                  "description": "URL of the media after watermarking. Set automatically when watermark is applied.",
                  "example": "https://storage.googleapis.com/test/test/media/watermarked.jpeg"
                },
                "type": {
                  "type": "string",
                  "description": "MIME type of the media file. See Platform Limitations Guide for platform-specific format support.",
                  "example": "image/jpeg",
                  "enum": [
                    "image/jpeg",
                    "image/jpg",
                    "image/png",
                    "image/gif",
                    "video/mp4",
                    "video/mov",
                    "video/webm"
                  ]
                },
                "thumbnail": {
                  "type": "string",
                  "description": "Cover image URL for a video media item.\n\n**Scope**\n- Applies to the **first video** in `media[]`. Values supplied on subsequent video items are ignored.\n- Has no effect on image-only media items.\n\n**Response behavior**\n- 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.\n\n**Limitations**\n- 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.\n\n**Format**\n- Provide a publicly accessible JPEG or PNG URL. Animated formats and video URLs are not accepted.\n- Recommended: an image matching the orientation of your video and ≤ 2 MB.",
                  "example": "https://storage.googleapis.com/test/test/media/test.jpeg"
                },
                "defaultThumb": {
                  "type": "string",
                  "description": "Default thumbnail URL, auto-generated from video if not provided.",
                  "example": "https://storage.googleapis.com/test/test/media/default-thumb.jpeg"
                },
                "id": {
                  "type": "string",
                  "description": "Unique identifier for the media item. Used for tracking and referencing.",
                  "example": "media_abc123xyz"
                },
                "optimizedUrl": {
                  "type": "string",
                  "description": "URL of the optimized/compressed media. Set automatically when media optimization is enabled.\n\n**Enable Optimization:** Set `mediaOptimization: true` in the post request.",
                  "example": "https://storage.googleapis.com/your-bucket/media/optimized-image.jpg"
                },
                "optimizedType": {
                  "type": "string",
                  "description": "MIME type of the optimized media. May differ from original if format conversion occurred.",
                  "example": "image/jpeg"
                },
                "isModified": {
                  "type": "boolean",
                  "description": "Flag indicating if the media was modified (watermarked, optimized, or processed).",
                  "example": true
                },
                "altText": {
                  "type": "string",
                  "description": "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.",
                  "example": "A sunset over the ocean with silhouetted palm trees"
                }
              },
              "required": [
                "url",
                "type"
              ],
              "title": "PostMediaSchema"
            }
          },
          "status": {
            "type": "string",
            "description": "Post status indicating the current state of the post.\n\n**Available Status Values:**\n- `draft` - Post saved as draft, not yet ready for publishing\n- `scheduled` - Post scheduled for future publishing (requires `scheduleDate`)\n- `in_review` - Post pending approval (requires `scheduleDate` and `postApprovalDetails`)\n- `published` - Post has been published\n- `in_progress` - Post is currently being processed\n- `pending` - Post is awaiting platform processing for Instagram media container creation\n- `failed` - Post publishing failed\n- `notification_sent` - Story notification sent (for manual story posting)\n- `deleted` - Post has been deleted\n\n**Validations:**\n- `scheduled` or `in_review` status requires `scheduleDate` to be set\n- Submitting for review (`in_review`) requires `postApprovalDetails.approver`; approve/reject actions reuse the stored approver\n- Draft posts skip most validations (accountIds, media requirements)",
            "example": "draft",
            "enum": [
              "draft",
              "scheduled",
              "in_review",
              "published",
              "in_progress",
              "pending",
              "failed",
              "notification_sent",
              "deleted"
            ]
          },
          "scheduleDate": {
            "type": "string",
            "description": "Schedule Date. Required when `status` is `scheduled` or `in_review`.",
            "example": "2024-01-15T10:00:00Z"
          },
          "selectedBestTime": {
            "type": "string",
            "description": "Selected Best Time slot for scheduling",
            "example": "2024-01-15T10:00:00Z"
          },
          "createdBy": {
            "type": "string",
            "description": "User ID of the creator who is creating/managing the post. Must be a valid 24-character hex ID.\n\n**Get User IDs from:** [Get User API](/users/{userId}) — use the `id` field from the user object.\n\n**Validation:** Must be a valid 24-character hex ID.",
            "example": "65f151c99bc2bf3aaf970d72"
          },
          "followUpComment": {
            "type": "string",
            "description": "Follow-up comment to be posted immediately after the main post is published.\n\n**Supported Platforms:** Facebook, Instagram, LinkedIn, Community, Threads, Bluesky, YouTube, TikTok\n\n**NOT Supported:** GBP (Google Business Profile), Pinterest\n\n- TikTok: posted once the video becomes publicly viewable (~1-3 min), not instantly\n\n- TikTok: only public videos support a follow-up comment. Set `privacyLevel` to `PUBLIC_TO_EVERYONE` — friends-only and private videos are not supported\n\n**Use Case:** Great for adding hashtags, additional context, or engagement prompts without cluttering the main post.\n\n- Like `summary`, the follow-up comment is trimmed to the **strictest** limit among the post's platforms, not to each platform's own limit — a post that includes Bluesky (300) trims the comment to 300 everywhere. Send one request per platform to keep the full comment on each.\n\n**Reference:** [Platform Limitations Guide](https://help.leadconnectorhq.com/support/solutions/articles/48001240003-social-planner-image-video-content-and-api-limitations)",
            "example": "What do you think? Let us know in the comments!"
          },
          "ogTagsDetails": {
            "description": "Og Tags Meta Data",
            "example": {
              "metaImage": "https://example.com/image.jpg",
              "metaLink": "https://www.yahoo.com/",
              "ogTitle": "Page Title",
              "ogDescription": "Page Description"
            },
            "allOf": [
              {
                "type": "object",
                "properties": {
                  "metaImage": {
                    "type": "string",
                    "description": "Preview image URL for the shared link.\n\n**Best Practices:**\n- Use high-quality images (1200x630px recommended)\n- Ensure the image is publicly accessible\n\n**Auto-fetch:** Use the Get Metatags API to fetch OG data from a URL.",
                    "example": "https://yoursite.com/images/og-image.jpg"
                  },
                  "metaLink": {
                    "type": "string",
                    "description": "URL of the webpage being shared. This is the destination when users click the link preview.",
                    "example": "https://yoursite.com/blog/amazing-article"
                  },
                  "ogTitle": {
                    "type": "string",
                    "description": "Custom title for the link preview. Overrides the page's og:title meta tag.\n\n**Tip:** Keep titles concise (50-60 characters) for best display across platforms.",
                    "example": "How to Double Your Social Media Engagement"
                  },
                  "ogDescription": {
                    "type": "string",
                    "description": "Custom description for the link preview. Overrides the page's og:description meta tag.\n\n**Tip:** Keep descriptions under 155 characters for optimal display.",
                    "example": "Learn proven strategies to boost your social media engagement and grow your audience."
                  }
                },
                "title": "OgTagsSchema"
              }
            ]
          },
          "type": {
            "type": "string",
            "description": "Type of post to create. Determines the format and platform requirements.\n\n**Available Types:**\n- `post` - Standard feed post (all platforms)\n- `story` - Temporary 24-hour story (Instagram, Facebook)\n- `reel` - Short-form video content (Instagram, Facebook, TikTok, YouTube)\n\n**Customize Per Platform:**\nYou can specify different content/types per platform using `facebookPostDetails.type`, `instagramPostDetails.type`, etc.\n\n**Validations:**\n- Reels require exactly 1 video\n- Stories: Caption not supported for Instagram/Facebook\n- Facebook Groups do not support Reels",
            "example": "post",
            "enum": [
              "post",
              "story",
              "reel"
            ]
          },
          "postApprovalDetails": {
            "description": "Post Approval Details",
            "example": {
              "approver": "iVrVJ2uoXNF0wzcBzgl5",
              "approvalStatus": "pending"
            },
            "allOf": [
              {
                "type": "object",
                "properties": {
                  "approver": {
                    "type": "string",
                    "description": "User ID of the designated approver.\n\n**Note:** The approver will receive a notification when a post is submitted for review.",
                    "example": "iVrVJ2uoXNF0wzcBzgl5"
                  },
                  "requesterNote": {
                    "type": "string",
                    "description": "Note from the post creator to the approver explaining the post or requesting specific feedback.",
                    "example": "Please review the messaging for our Q4 campaign launch. Let me know if the CTA needs adjustment."
                  },
                  "approverNote": {
                    "type": "string",
                    "description": "Note from the approver to the post creator with feedback or approval comments.",
                    "example": "Approved! Great content. Consider adding more hashtags for visibility."
                  },
                  "approvalStatus": {
                    "type": "string",
                    "description": "Current approval status of the post.\n\n**Available Values:**\n- `pending` - Awaiting approver review\n- `approved` - Approved and ready for publishing\n- `rejected` - Rejected by approver (needs revision)\n- `not_required` - No approval workflow needed",
                    "example": "pending",
                    "enum": [
                      "pending",
                      "approved",
                      "rejected",
                      "not_required"
                    ]
                  }
                },
                "title": "PostApprovalSchema"
              }
            ]
          },
          "scheduleTimeUpdated": {
            "type": "boolean",
            "description": "Flag indicating if the schedule datetime was manually updated. Used for tracking rescheduled posts.",
            "example": true
          },
          "tags": {
            "description": "Array of Tag IDs to associate with the post for organization and filtering.\n\n**Get Tag IDs from:** [Get Tags API](/social-media-posting/{locationId}/tags) — use the `_id` field from each tag.\n\n**Validation:** All IDs must be valid 24-character hex IDs.",
            "example": [
              "65f151c99bc2bf3aaf970d72",
              "65f151c99bc2bf3aaf970d73"
            ],
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "categoryId": {
            "type": "string",
            "description": "Category ID to organize the post. Categories help group related posts.\n\n**Get Category IDs from:** [Get Categories API](/social-media-posting/{locationId}/categories) — use the `_id` field.\n\n**Validation:** Must be a valid 24-character hex ID.",
            "example": "65f151c99bc2bf3aaf970d72"
          },
          "applyWatermark": {
            "type": "boolean",
            "description": "Apply watermark to media in this post.\n\n**Note:** Watermarks are applied to images only. Videos are not watermarked.",
            "example": true
          },
          "tiktokPostDetails": {
            "description": "Tiktok Post Details",
            "example": {
              "privacyLevel": "PUBLIC_TO_EVERYONE",
              "enableComment": true,
              "enableDuet": false
            },
            "allOf": [
              {
                "type": "object",
                "properties": {
                  "privacyLevel": {
                    "type": "string",
                    "description": "Privacy level controlling who can view the video.\n\n**Available Values:**\n- `PUBLIC_TO_EVERYONE` - Anyone can view (default)\n- `MUTUAL_FOLLOW_FRIENDS` - Only mutual followers can view\n- `SELF_ONLY` - Only you can view (private)\n\n**Note:** If set to `SELF_ONLY`, `videoDisclosure` must be `false`.",
                    "example": "PUBLIC_TO_EVERYONE",
                    "enum": [
                      "PUBLIC_TO_EVERYONE",
                      "MUTUAL_FOLLOW_FRIENDS",
                      "SELF_ONLY"
                    ]
                  },
                  "promoteOtherBrand": {
                    "type": "boolean",
                    "description": "Indicates if the video promotes a third-party brand or product.\n\n**Required:** Must be `true` if `videoDisclosure` is enabled and you're promoting another brand.",
                    "example": false
                  },
                  "enableComment": {
                    "type": "boolean",
                    "description": "Allow users to comment on the video. Default is determined by account settings.",
                    "example": true
                  },
                  "enableDuet": {
                    "type": "boolean",
                    "description": "Allow users to create Duet videos with your content.\n\n**Duet:** Side-by-side video featuring your content and the creator's reaction/addition.",
                    "example": true
                  },
                  "enableStitch": {
                    "type": "boolean",
                    "description": "Allow users to create Stitch videos with your content.\n\n**Stitch:** Clips up to 5 seconds of your video that creators can use in their own videos.",
                    "example": true
                  },
                  "videoDisclosure": {
                    "type": "boolean",
                    "description": "Enable branded content disclosure. Required when video is promotional content.\n\n**Validations:**\n- Cannot be `true` if `privacyLevel` is `SELF_ONLY`\n- If enabled, at least one of `promoteYourBrand` or `promoteOtherBrand` must be `true`",
                    "example": false
                  },
                  "promoteYourBrand": {
                    "type": "boolean",
                    "description": "Indicates if the video promotes your own brand or product.\n\n**Required:** Must be `true` if `videoDisclosure` is enabled and you're promoting your own brand.",
                    "example": false
                  }
                },
                "title": "TiktokPostSchema"
              }
            ]
          },
          "gmbPostDetails": {
            "description": "GMB Post Details",
            "example": {
              "gmbEventType": "STANDARD",
              "actionType": "BOOK",
              "url": "https://example.com"
            },
            "allOf": [
              {
                "type": "object",
                "properties": {
                  "gmbEventType": {
                    "type": "string",
                    "description": "Google My Business post type.\n\n**Available Types:**\n- `STANDARD` - Regular update post (What's New)\n- `EVENT` - Event announcement with dates and title\n- `OFFER` - Promotional offer with coupon and redemption details\n\n**Required fields by type:**\n- STANDARD: None additional\n- EVENT: `title`, `startDate`, `endDate`\n- OFFER: `offerTitle`, `startDate`, `endDate`, `termsConditions`, `couponCode`, `redeemOnlineUrl`",
                    "example": "STANDARD",
                    "enum": [
                      "STANDARD",
                      "EVENT",
                      "OFFER"
                    ]
                  },
                  "title": {
                    "type": "string",
                    "description": "Event title. Required when `gmbEventType` is `EVENT`.\n\n**Max length:** 58 characters",
                    "example": "Summer Sale Event 2024"
                  },
                  "offerTitle": {
                    "type": "string",
                    "description": "Offer title. Required when `gmbEventType` is `OFFER`.",
                    "example": "50% Off All Products"
                  },
                  "startDate": {
                    "description": "Start date and time for EVENT or OFFER posts.\n\n**Required:** When `gmbEventType` is `EVENT` or `OFFER`.\n\n**Structure:**\n- `startDate`: { year, month, day }\n- `startTime`: { hours, minutes, seconds }",
                    "example": {
                      "startDate": {
                        "year": 2024,
                        "month": 1,
                        "day": 15
                      },
                      "startTime": {
                        "hours": 10,
                        "minutes": 0,
                        "seconds": 0
                      }
                    },
                    "allOf": [
                      {
                        "type": "object",
                        "properties": {
                          "startDate": {
                            "description": "Start Date",
                            "example": {
                              "year": 2024,
                              "month": 1,
                              "day": 15
                            },
                            "allOf": [
                              {
                                "type": "object",
                                "properties": {
                                  "year": {
                                    "type": "number",
                                    "description": "Year component of the date",
                                    "example": 2022
                                  },
                                  "month": {
                                    "type": "number",
                                    "description": "Month component of the date (1-12)",
                                    "example": 1
                                  },
                                  "day": {
                                    "type": "number",
                                    "description": "Day component of the date (1-31)",
                                    "example": 1
                                  }
                                },
                                "required": [
                                  "year",
                                  "month",
                                  "day"
                                ],
                                "title": "DateSchema"
                              }
                            ]
                          },
                          "startTime": {
                            "description": "Start Time",
                            "example": {
                              "hours": 10,
                              "minutes": 30,
                              "seconds": 0
                            },
                            "allOf": [
                              {
                                "type": "object",
                                "properties": {
                                  "hours": {
                                    "type": "number",
                                    "description": "Hour component of the time (0-23)",
                                    "example": 23
                                  },
                                  "minutes": {
                                    "type": "number",
                                    "description": "Minute component of the time (0-59)",
                                    "example": 56
                                  },
                                  "seconds": {
                                    "type": "number",
                                    "description": "Second component of the time (0-59)",
                                    "example": 34
                                  }
                                },
                                "required": [
                                  "hours",
                                  "minutes",
                                  "seconds"
                                ],
                                "title": "TimeSchema"
                              }
                            ]
                          }
                        },
                        "title": "StartDateSchema"
                      }
                    ]
                  },
                  "endDate": {
                    "description": "End date and time for EVENT or OFFER posts.\n\n**Required:** When `gmbEventType` is `EVENT` or `OFFER`.\n**Validation:** Must be after `startDate`.\n\n**Structure:**\n- `endDate`: { year, month, day }\n- `endTime`: { hours, minutes, seconds }",
                    "example": {
                      "endDate": {
                        "year": 2024,
                        "month": 1,
                        "day": 20
                      },
                      "endTime": {
                        "hours": 18,
                        "minutes": 0,
                        "seconds": 0
                      }
                    },
                    "allOf": [
                      {
                        "type": "object",
                        "properties": {
                          "endDate": {
                            "description": "End Date",
                            "example": {
                              "year": 2024,
                              "month": 1,
                              "day": 20
                            },
                            "allOf": [
                              {
                                "type": "object",
                                "properties": {
                                  "year": {
                                    "type": "number",
                                    "description": "Year component of the date",
                                    "example": 2022
                                  },
                                  "month": {
                                    "type": "number",
                                    "description": "Month component of the date (1-12)",
                                    "example": 1
                                  },
                                  "day": {
                                    "type": "number",
                                    "description": "Day component of the date (1-31)",
                                    "example": 1
                                  }
                                },
                                "required": [
                                  "year",
                                  "month",
                                  "day"
                                ],
                                "title": "DateSchema"
                              }
                            ]
                          },
                          "endTime": {
                            "description": "End Time",
                            "example": {
                              "hours": 18,
                              "minutes": 0,
                              "seconds": 0
                            },
                            "allOf": [
                              {
                                "type": "object",
                                "properties": {
                                  "hours": {
                                    "type": "number",
                                    "description": "Hour component of the time (0-23)",
                                    "example": 23
                                  },
                                  "minutes": {
                                    "type": "number",
                                    "description": "Minute component of the time (0-59)",
                                    "example": 56
                                  },
                                  "seconds": {
                                    "type": "number",
                                    "description": "Second component of the time (0-59)",
                                    "example": 34
                                  }
                                },
                                "required": [
                                  "hours",
                                  "minutes",
                                  "seconds"
                                ],
                                "title": "TimeSchema"
                              }
                            ]
                          }
                        },
                        "title": "EndDateSchema"
                      }
                    ]
                  },
                  "termsConditions": {
                    "type": "string",
                    "description": "URL to terms and conditions page. Required for OFFER posts.",
                    "example": "https://yoursite.com/terms-and-conditions"
                  },
                  "url": {
                    "type": "string",
                    "description": "Call-to-action URL. Required when `actionType` is set (except `none` and `call`).\n\n**Required for:** STANDARD and EVENT posts with actionType other than `none` or `call`.",
                    "example": "https://yoursite.com/book-now"
                  },
                  "couponCode": {
                    "type": "string",
                    "description": "Promotional coupon code. Required for OFFER posts.",
                    "example": "SAVE50"
                  },
                  "redeemOnlineUrl": {
                    "type": "string",
                    "description": "URL where customers can redeem the offer online. Required for OFFER posts.",
                    "example": "https://yoursite.com/redeem-offer"
                  },
                  "actionType": {
                    "type": "string",
                    "description": "Call-to-action button type for the post.\n\n**Available Actions:**\n- `none` - No action button\n- `order` - Order online\n- `book` - Book appointment\n- `shop` - Shop now\n- `learn_more` - Learn more\n- `call` - Call now (no URL required)\n- `sign_up` - Sign up\n\n**Note:** All actions except `none` and `call` require a `url`.",
                    "example": "book",
                    "enum": [
                      "none",
                      "order",
                      "book",
                      "shop",
                      "learn_more",
                      "call",
                      "sign_up"
                    ]
                  }
                },
                "required": [
                  "gmbEventType"
                ],
                "title": "GMBPostSchema"
              }
            ]
          },
          "userId": {
            "type": "string",
            "description": "User ID of the user creating/managing the post. Required for OAuth channel posts (non-draft).",
            "example": "sdfdsfdsfEWEsdfsdsW32dd"
          },
          "linkedinPostDetails": {
            "description": "LinkedIn-specific post configuration.\n\n**Key Fields:**\n- `postAsPdf`: Set to `true` to post images as a PDF carousel document\n- `pdfTitle`: Title for the PDF document (max 100 characters)\n\n**Limits:**\n- Max 9 images/videos for regular posts\n- Max 300 pages for PDF carousel\n- Max PDF size: 100 MB\n\n**Reference:** [Platform Limitations Guide](https://help.leadconnectorhq.com/support/solutions/articles/48001240003-social-planner-image-video-content-and-api-limitations)",
            "example": {
              "visibility": "PUBLIC"
            },
            "allOf": [
              {
                "type": "object",
                "properties": {
                  "pdfTitle": {
                    "type": "string",
                    "description": "Title for the PDF document carousel. Displayed as the document name on LinkedIn.\n\n**Max length:** 100 characters\n\n**Tip:** Use a descriptive title that explains the document content.",
                    "example": "Q4 Marketing Strategy Presentation"
                  },
                  "postAsPdf": {
                    "type": "boolean",
                    "description": "Post images as a PDF document carousel.\n\n**Limits:**\n- Max 300 pages/images\n- Max PDF size: 100 MB",
                    "example": true
                  },
                  "poll": {
                    "description": "Publish a LinkedIn poll post.\n\n**Required fields when `poll` is supplied:**\n- `question` (max 140 characters)\n- `options`: 2 to 4 entries, each `text` ≤ 30 characters; option texts must be unique\n- `settings.duration`: one of `ONE_DAY`, `THREE_DAYS`, `SEVEN_DAYS`, `FOURTEEN_DAYS`\n\n**LinkedIn restrictions:**\n- Polls cannot be edited after publishing.\n- A poll post cannot include `media` or a meta-link preview.",
                    "example": {
                      "question": "What is your favorite color?",
                      "options": [
                        {
                          "text": "Blue"
                        },
                        {
                          "text": "Green"
                        }
                      ],
                      "settings": {
                        "duration": "SEVEN_DAYS"
                      }
                    },
                    "allOf": [
                      {
                        "type": "object",
                        "properties": {
                          "question": {
                            "type": "string",
                            "description": "Question for the poll. Max length: 140 characters.",
                            "example": "What is your favorite color?",
                            "maxLength": 140
                          },
                          "options": {
                            "description": "Poll options. Minimum 2, maximum 4. Each option text max 30 characters. Option texts must be unique.",
                            "minItems": 2,
                            "maxItems": 4,
                            "example": [
                              {
                                "text": "Blue"
                              },
                              {
                                "text": "Green"
                              }
                            ],
                            "type": "array",
                            "items": {
                              "type": "object",
                              "properties": {
                                "text": {
                                  "type": "string",
                                  "description": "Text describing the option. Max length: 30 characters.",
                                  "example": "Red",
                                  "maxLength": 30
                                }
                              },
                              "required": [
                                "text"
                              ],
                              "title": "LinkedinPollOptionDto"
                            }
                          },
                          "settings": {
                            "description": "Poll settings (duration).",
                            "example": {
                              "duration": "SEVEN_DAYS"
                            },
                            "allOf": [
                              {
                                "type": "object",
                                "properties": {
                                  "duration": {
                                    "type": "string",
                                    "description": "Duration the poll stays open for votes.",
                                    "enum": [
                                      "ONE_DAY",
                                      "THREE_DAYS",
                                      "SEVEN_DAYS",
                                      "FOURTEEN_DAYS"
                                    ],
                                    "example": "SEVEN_DAYS"
                                  }
                                },
                                "required": [
                                  "duration"
                                ],
                                "title": "LinkedinPollSettingsDto"
                              }
                            ]
                          }
                        },
                        "required": [
                          "question",
                          "options",
                          "settings"
                        ],
                        "title": "LinkedinPollDto"
                      }
                    ]
                  }
                },
                "title": "LinkedinPostSchema"
              }
            ]
          },
          "pinterestPostDetails": {
            "description": "Pinterest-specific post configuration. Required when posting to Pinterest accounts.\n\n**Required Fields:**\n- `boardIds`: Object mapping account OAuth IDs to Pinterest board IDs\n\n**Optional Fields:**\n- `title`: Pin title (max 100 characters)\n- `link`: Destination URL for the pin (max 2048 characters)\n\n**Get Board IDs:** Use the Pinterest boards API or retrieve from connected account details.\n\n**Limits:**\n- Max 1 image/video per pin\n- Caption max 800 characters\n\n**Reference:** [Platform Limitations Guide](https://help.leadconnectorhq.com/support/solutions/articles/48001240003-social-planner-image-video-content-and-api-limitations)",
            "example": {
              "boardId": "123456789",
              "title": "Pin Title"
            },
            "allOf": [
              {
                "type": "object",
                "properties": {
                  "title": {
                    "type": "string",
                    "description": "Pin title displayed on Pinterest.\n\n**Max length:** 100 characters\n\n**Best Practices:**\n- Include relevant keywords\n- Be descriptive and engaging",
                    "example": "10 Easy Home Decor Ideas for 2024"
                  },
                  "link": {
                    "type": "string",
                    "description": "Destination URL for the pin. Users clicking the pin will be directed to this URL.\n\n**Max length:** 2048 characters\n\n**Best Practices:**\n- Use direct links to relevant content\n- Track with UTM parameters for analytics",
                    "example": "https://yoursite.com/blog/home-decor-ideas"
                  },
                  "boardIds": {
                    "type": "object",
                    "deprecated": true,
                    "description": "**DEPRECATED — use `pinterestBoards` instead.** Will be removed on July 31, 2026.\n\nLegacy mapping of Pinterest account OAuth IDs to a single board ID:\n`{ accountOAuthId: \"boardId\" }`\n\nFor multi-board posting, use `pinterestBoards`.",
                    "additionalProperties": {
                      "type": "string"
                    },
                    "example": {
                      "6887d6de1d8175813d50dab8": "987654321098765432"
                    }
                  },
                  "pinterestBoards": {
                    "description": "Per-account Pinterest board selection. Each entry binds one connected Pinterest account to a list of boards on that account. Each board produces an independent child post tracked separately for success/failure. Capped at 25 boards per account.\n\nWhen supplied, this field takes precedence over the deprecated `boardIds` field.",
                    "example": [
                      {
                        "accountId": "6887d6de1d8175813d50dab8",
                        "boards": [
                          "987654321098765432",
                          "234567890123456789"
                        ]
                      },
                      {
                        "accountId": "682c7d1710a2fe3d805a3513",
                        "boards": [
                          "111222333444555666"
                        ]
                      }
                    ],
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "accountId": {
                          "type": "string",
                          "description": "Connected Pinterest account ID. Must match one of the accounts referenced in the post's `userIds`.",
                          "example": "6887d6de1d8175813d50dab8"
                        },
                        "boards": {
                          "description": "Pinterest board IDs to publish to on this account. Each board produces an independent child post tracked separately for success/failure. Capped at 25 boards per account.",
                          "example": [
                            "987654321098765432",
                            "234567890123456789"
                          ],
                          "type": "array",
                          "items": {
                            "type": "string"
                          }
                        }
                      },
                      "required": [
                        "accountId",
                        "boards"
                      ],
                      "title": "PinterestBoardSelection"
                    }
                  },
                  "shortenedLinks": {
                    "description": "Shortened links for the post (auto-generated).",
                    "example": [
                      {
                        "originalUrl": "https://example.com",
                        "shortenedUrl": "https://short.link/abc"
                      }
                    ],
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  }
                },
                "title": "PinterestPostSchema"
              }
            ]
          },
          "facebookPostDetails": {
            "description": "Facebook-specific post configuration.\n\n**Key Fields:**\n- `type`: Post type (`post`, `story`, `reel`)\n\n**Restrictions:**\n- Facebook Groups do NOT support Reels\n- Reels require exactly 1 video\n- Stories do not support captions\n\n**Reference:** [Platform Limitations Guide](https://help.leadconnectorhq.com/support/solutions/articles/48001240003-social-planner-image-video-content-and-api-limitations)",
            "example": {
              "type": "feed"
            },
            "allOf": [
              {
                "type": "object",
                "properties": {
                  "type": {
                    "type": "string",
                    "description": "Facebook post format type.\n\n**Available Types:**\n- `post` - Standard feed post (images, videos, text)\n- `story` - 24-hour temporary story\n- `reel` - Short-form vertical video\n\n**Restrictions:**\n- Reels: Require exactly 1 video, not supported on Groups\n- Stories: Captions not supported",
                    "example": "post",
                    "enum": [
                      "post",
                      "story",
                      "reel"
                    ]
                  },
                  "textFormatPresetId": {
                    "type": "string",
                    "description": "Facebook background preset ID for text-only feed posts. **Facebook `post` only** — not `story` or `reel`. Ignored when media is attached; `metaLink` is omitted on publish.\n\n**Validations** — request returns `400` if violated:\n- Must be a valid preset ID from the [Facebook text background preset reference](https://help.leadconnectorhq.com/support/solutions/articles/155000008005-facebook-text-background-posts-preset-reference). Empty strings, whitespace-only values, and `null` are rejected.\n- When set, `summary` must be 130 characters or fewer.",
                    "example": "303063890126415"
                  }
                },
                "required": [
                  "type"
                ],
                "title": "FacebookPostSchema"
              }
            ]
          },
          "instagramPostDetails": {
            "description": "Instagram-specific post configuration.\n\n**Key Fields:**\n- `type`: Post type (`post`, `story`, `reel`)\n- `collaborators`: Map of account IDs to Instagram usernames for collaboration invites (max 5 per account)\n- `showOnFeed`: Show reel on profile feed (for reels)\n\n**Collaborators Structure:**\n```json\n{ \"accountId\": [\"username1\", \"username2\"] }\n```\nWhere `accountId` is from [Get Accounts API](/social-media-posting/oauth/{locationId}/accounts) and usernames are Instagram handles without @.\n\n**Restrictions:**\n- Media is REQUIRED for all Instagram posts\n- Max 30 hashtags allowed in caption\n- Stories do not support captions\n- Collaborators: Posts/Reels only (NOT Stories)\n- Reels require exactly 1 video\n\n**Reference:** [Platform Limitations Guide](https://help.leadconnectorhq.com/support/solutions/articles/48001240003-social-planner-image-video-content-and-api-limitations)",
            "example": {
              "type": "feed",
              "share_to_feed": true
            },
            "allOf": [
              {
                "type": "object",
                "properties": {
                  "type": {
                    "type": "string",
                    "description": "Instagram post format type.\n\n**Available Types:**\n- `post` - Standard feed post (images, videos, carousels)\n- `story` - 24-hour temporary story\n- `reel` - Short-form vertical video (up to 90 seconds)\n\n**Restrictions:**\n- Media is REQUIRED for all Instagram posts\n- Reels: Require exactly 1 video\n- Stories: Captions not supported, JPEG only for images",
                    "example": "post",
                    "enum": [
                      "post",
                      "story",
                      "reel"
                    ]
                  },
                  "collaborators": {
                    "type": "object",
                    "description": "Collaboration invites mapping account IDs to Instagram usernames.\n\n**Structure:** `{ accountId: [username1, username2, username3] }`\n\n- **Key:** Account ID from `accountIds` array (the Instagram account posting)\n- **Value:** Array of Instagram usernames to invite as collaborators\n\n**Get Account IDs from:** [Get Accounts API](/social-media-posting/oauth/{locationId}/accounts) — use the `id` field from Instagram accounts.\n\n**✅ Supported for:** Posts and Reels only (NOT Stories)\n\n**Validations:**\n- Maximum 5 collaborators per account\n- No duplicate usernames allowed\n- Usernames are Instagram handles without @\n\n**Use Case:** Invite other Instagram users to collaborate. Once accepted, the post appears on both profiles.",
                    "example": {
                      "640ab864e8e47e7f8a186425_hE998piDgAGZDY1xzmFD_17841453046826624": [
                        "influencer_username",
                        "partner_brand"
                      ]
                    }
                  },
                  "publishViaPushNotification": {
                    "type": "boolean",
                    "description": "Send Instagram Story via Push  Notification instead of direct posting. Only applicable for Story type.",
                    "example": true
                  },
                  "publisherNote": {
                    "type": "string",
                    "description": "Note to the publisher for manual posting guidance. Only used when publishViaPushNotification is true.",
                    "example": "When publishing, add swipe up link to the landing page so that we can direct them to the sales page"
                  },
                  "notificationSentCount": {
                    "type": "number",
                    "description": "Number of push notifications sent for this Instagram Story. Tracks how many notifications have been sent out.",
                    "example": 1
                  },
                  "postedVia": {
                    "type": "string",
                    "description": "Source of where the post was marked as published. Values: \"web\" (web interface), \"mobile\" (mobile app), or null.",
                    "example": "web",
                    "enum": [
                      "web",
                      "mobile"
                    ]
                  },
                  "showOnFeed": {
                    "type": "boolean",
                    "description": "Show Reel on profile grid/feed.\n\n**✅ Applies to:** Reels only\n\n- `true` - Reel appears on your profile grid\n- `false` - Reel only appears in Reels tab",
                    "example": true
                  }
                },
                "required": [
                  "type"
                ],
                "title": "InstagramPostSchema"
              }
            ]
          },
          "youtubePostDetails": {
            "description": "YouTube-specific post configuration.\n\n**Key Fields:**\n- `title`: Video title (max 100 characters)\n- `type`: Video type (`video` for regular videos, `short` for YouTube Shorts)\n- `privacyLevel`: Video visibility (`private`, `public`, `unlisted`)\n\n**Limits:**\n- Max 1 video per post\n- Caption (description) max 5,000 characters\n\n**Requirements:**\n- Video is REQUIRED for YouTube posts\n- `type` field is required",
            "example": {
              "title": "Video Title",
              "privacyStatus": "public"
            },
            "allOf": [
              {
                "type": "object",
                "properties": {
                  "title": {
                    "type": "string",
                    "description": "Video title displayed on YouTube.\n\n**Max length:** 100 characters\n\n**Best Practices:**\n- Include relevant keywords\n- Be descriptive but concise\n- Avoid clickbait",
                    "example": "How to Build a Successful Marketing Strategy in 2024"
                  },
                  "privacyLevel": {
                    "type": "string",
                    "description": "Video visibility/privacy setting.\n\n**Available Values:**\n- `public` - Anyone can search and view\n- `unlisted` - Only people with the link can view\n- `private` - Only you can view",
                    "example": "public",
                    "enum": [
                      "private",
                      "public",
                      "unlisted"
                    ]
                  },
                  "type": {
                    "type": "string",
                    "description": "YouTube video format type.\n\n**Available Types:**\n- `video` - Standard YouTube video (landscape, any duration)\n- `short` - YouTube Shorts (vertical, up to 60 seconds)\n\n**Required field.**",
                    "example": "video",
                    "enum": [
                      "video",
                      "short"
                    ]
                  }
                },
                "required": [
                  "type"
                ],
                "title": "YoutubePostSchema"
              }
            ]
          },
          "communityPostDetails": {
            "description": "Community-specific post configuration for Communities.\n\n**Required Fields:**\n- `title`: Post title (max 1,000 characters)\n- `postAsUser`: the member to publish as, keyed by Community account ID\n\n**Optional Fields:**\n- `notifyAllGroupMembers`: notify all group members (`@everyone` broadcast)\n\n**Limits:**\n- Max 4 media items\n- Caption max 100,000 characters\n\n**Required when** `accountIds` contains a Community account and the post is not a draft.",
            "example": {
              "title": "Welcome to our community!",
              "notifyAllGroupMembers": false,
              "postAsUser": {
                "aF3KhyL8JIuBwzK3m7Ly_iVrVJ2uoXNF0wzcBzgl5_12554616564525983496": {
                  "id": "YBjxnYiXJKmoyV7WDjjG",
                  "name": "Jane Cooper"
                }
              }
            },
            "allOf": [
              {
                "type": "object",
                "properties": {
                  "title": {
                    "type": "string",
                    "description": "Title of the community post. Displayed as the post headline.\n\n**Max length:** 1,000 characters\n\n**Required:** Yes, for all Community posts.",
                    "example": "Welcome to Our New Community Feature!"
                  },
                  "notifyAllGroupMembers": {
                    "type": "boolean",
                    "description": "Notify every member of the group when the post is published, equivalent to an `@everyone` broadcast prepended to the post content.\n\n**Use Case:** Enable for announcements that all members should see.\n\n**Default:** `false`",
                    "example": true
                  },
                  "postAsUser": {
                    "type": "object",
                    "description": "The Community member each post is published as, keyed by Community account ID.\n\n**Structure:** `{ accountId: { id, name, avatar } }`\n\n- **Key** — the Community account ID. This is the same value you pass in `accountIds`: take it from the `id` field of a Community account in the Get Accounts API, not the `oauthId` field.\n- `id` (required) — `contactId` of the member to publish as, from the Get Community Members API.\n- `name` (optional) — display name shown as the post author.\n- `avatar` (optional) — profile image URL shown against the post.\n\n**Required:** Yes. Every Community account listed in `accountIds` must have an entry here, otherwise the request is rejected.\n\n**Member eligibility:** the member must be an active member of the group and hold a role in it. This is checked again at publish time, so a member who leaves the group or loses access between scheduling and publishing causes that post to fail. Use the Validate Community Member API to confirm a stored member is still eligible before scheduling.\n\n**Private channels:** list members per account rather than reusing one list across accounts — for a private channel only that channel's members may be posted as.",
                    "example": {
                      "aF3KhyL8JIuBwzK3m7Ly_iVrVJ2uoXNF0wzcBzgl5_12554616564525983496": {
                        "avatar": "https://storage.googleapis.com/revex-communities/avatars/jane.png",
                        "id": "YBjxnYiXJKmoyV7WDjjG",
                        "name": "Jane Cooper"
                      }
                    }
                  }
                },
                "required": [
                  "title",
                  "postAsUser"
                ],
                "title": "CommunityPostSchema"
              }
            ]
          }
        },
        "required": [
          "type"
        ],
        "title": "CreatePostDTO"
      },
      "UpdatePostSuccessfulResponseDTO": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "description": "Success or Failure",
            "example": true
          },
          "statusCode": {
            "type": "number",
            "description": "Status Code",
            "example": 200
          },
          "message": {
            "type": "string",
            "description": "Message",
            "example": "Updated Post"
          }
        },
        "required": [
          "success",
          "statusCode",
          "message"
        ],
        "title": "UpdatePostSuccessfulResponseDTO"
      },
      "BadRequestDTO": {
        "type": "object",
        "properties": {
          "statusCode": {
            "type": "number",
            "example": 400
          },
          "message": {
            "type": "string",
            "example": "Bad Request"
          }
        },
        "title": "BadRequestDTO"
      },
      "UnauthorizedDTO": {
        "type": "object",
        "properties": {
          "statusCode": {
            "type": "number",
            "example": 401
          },
          "message": {
            "type": "string",
            "example": "Invalid token: access token is invalid"
          },
          "error": {
            "type": "string",
            "example": "Unauthorized"
          }
        },
        "title": "UnauthorizedDTO"
      },
      "UnprocessableDTO": {
        "type": "object",
        "properties": {
          "statusCode": {
            "type": "number",
            "example": 422
          },
          "message": {
            "example": [
              "Unprocessable Entity"
            ],
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "error": {
            "type": "string",
            "example": "Unprocessable Entity"
          }
        },
        "title": "UnprocessableDTO"
      }
    }
  }
}
```

## Code Examples

**cURL**

```bash
curl -L -X PUT 'https://services.leadconnectorhq.com/social-media-posting/<locationId>/posts/<id>' \
  -H 'Authorization: Bearer <TOKEN>' \
  -H 'Version: v3' \
  -H 'Content-Type: application/json' \
  --data-raw '{
  "accountIds": [
    "aF3KhyL8JIuBwzK3m7Ly_iVrVJ2uoXNF0wzcBzgl5_12554616564525983496"
  ],
  "summary": "Hello World! Check out our latest updates. #social #marketing",
  "media": [
    {
      "url": "https://example.com/image.jpg",
      "type": "image/jpeg",
      "caption": "Sample caption"
    }
  ],
  "status": "draft",
  "scheduleDate": "2024-01-15T10:00:00Z",
  "selectedBestTime": "2024-01-15T10:00:00Z",
  "createdBy": "65f151c99bc2bf3aaf970d72",
  "followUpComment": "What do you think? Let us know in the comments!",
  "ogTagsDetails": {
    "metaImage": "https://example.com/image.jpg",
    "metaLink": "https://www.yahoo.com/",
    "ogTitle": "Page Title",
    "ogDescription": "Page Description"
  },
  "type": "post",
  "postApprovalDetails": {
    "approver": "iVrVJ2uoXNF0wzcBzgl5",
    "approvalStatus": "pending"
  },
  "scheduleTimeUpdated": true,
  "tags": [
    "65f151c99bc2bf3aaf970d72",
    "65f151c99bc2bf3aaf970d73"
  ],
  "categoryId": "65f151c99bc2bf3aaf970d72",
  "applyWatermark": true,
  "tiktokPostDetails": {
    "privacyLevel": "PUBLIC_TO_EVERYONE",
    "enableComment": true,
    "enableDuet": false
  },
  "gmbPostDetails": {
    "gmbEventType": "STANDARD",
    "actionType": "BOOK",
    "url": "https://example.com"
  },
  "userId": "sdfdsfdsfEWEsdfsdsW32dd",
  "linkedinPostDetails": {
    "visibility": "PUBLIC"
  },
  "pinterestPostDetails": {
    "boardId": "123456789",
    "title": "Pin Title"
  },
  "facebookPostDetails": {
    "type": "feed"
  },
  "instagramPostDetails": {
    "type": "feed",
    "share_to_feed": true
  },
  "youtubePostDetails": {
    "title": "Video Title",
    "privacyStatus": "public"
  },
  "communityPostDetails": {
    "title": "Welcome to our community!",
    "notifyAllGroupMembers": false,
    "postAsUser": {
      "aF3KhyL8JIuBwzK3m7Ly_iVrVJ2uoXNF0wzcBzgl5_12554616564525983496": {
        "id": "YBjxnYiXJKmoyV7WDjjG",
        "name": "Jane Cooper"
      }
    }
  }
}'
```

**Node.js**

```javascript
const options = {
  method: 'PUT',
  headers: {
    Authorization: 'Bearer <TOKEN>',
    Version: 'v3',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
      "accountIds": [
        "aF3KhyL8JIuBwzK3m7Ly_iVrVJ2uoXNF0wzcBzgl5_12554616564525983496"
      ],
      "summary": "Hello World! Check out our latest updates. #social #marketing",
      "media": [
        {
          "url": "https://example.com/image.jpg",
          "type": "image/jpeg",
          "caption": "Sample caption"
        }
      ],
      "status": "draft",
      "scheduleDate": "2024-01-15T10:00:00Z",
      "selectedBestTime": "2024-01-15T10:00:00Z",
      "createdBy": "65f151c99bc2bf3aaf970d72",
      "followUpComment": "What do you think? Let us know in the comments!",
      "ogTagsDetails": {
        "metaImage": "https://example.com/image.jpg",
        "metaLink": "https://www.yahoo.com/",
        "ogTitle": "Page Title",
        "ogDescription": "Page Description"
      },
      "type": "post",
      "postApprovalDetails": {
        "approver": "iVrVJ2uoXNF0wzcBzgl5",
        "approvalStatus": "pending"
      },
      "scheduleTimeUpdated": true,
      "tags": [
        "65f151c99bc2bf3aaf970d72",
        "65f151c99bc2bf3aaf970d73"
      ],
      "categoryId": "65f151c99bc2bf3aaf970d72",
      "applyWatermark": true,
      "tiktokPostDetails": {
        "privacyLevel": "PUBLIC_TO_EVERYONE",
        "enableComment": true,
        "enableDuet": false
      },
      "gmbPostDetails": {
        "gmbEventType": "STANDARD",
        "actionType": "BOOK",
        "url": "https://example.com"
      },
      "userId": "sdfdsfdsfEWEsdfsdsW32dd",
      "linkedinPostDetails": {
        "visibility": "PUBLIC"
      },
      "pinterestPostDetails": {
        "boardId": "123456789",
        "title": "Pin Title"
      },
      "facebookPostDetails": {
        "type": "feed"
      },
      "instagramPostDetails": {
        "type": "feed",
        "share_to_feed": true
      },
      "youtubePostDetails": {
        "title": "Video Title",
        "privacyStatus": "public"
      },
      "communityPostDetails": {
        "title": "Welcome to our community!",
        "notifyAllGroupMembers": false,
        "postAsUser": {
          "aF3KhyL8JIuBwzK3m7Ly_iVrVJ2uoXNF0wzcBzgl5_12554616564525983496": {
            "id": "YBjxnYiXJKmoyV7WDjjG",
            "name": "Jane Cooper"
          }
        }
      }
  })
};

try {
  const response = await fetch('https://services.leadconnectorhq.com/social-media-posting/<locationId>/posts/<id>', options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

**Python**

```python
import requests

url = "https://services.leadconnectorhq.com/social-media-posting/{locationId}/posts/{id}"

headers = {
    "Authorization": "Bearer <TOKEN>",
    "Version": "v3"
}

payload = {
    "accountIds": [
        "aF3KhyL8JIuBwzK3m7Ly_iVrVJ2uoXNF0wzcBzgl5_12554616564525983496"
    ],
    "summary": "Hello World! Check out our latest updates. #social #marketing",
    "media": [
        {
            "url": "https://example.com/image.jpg",
            "type": "image/jpeg",
            "caption": "Sample caption"
        }
    ],
    "status": "draft",
    "scheduleDate": "2024-01-15T10:00:00Z",
    "selectedBestTime": "2024-01-15T10:00:00Z",
    "createdBy": "65f151c99bc2bf3aaf970d72",
    "followUpComment": "What do you think? Let us know in the comments!",
    "ogTagsDetails": {
        "metaImage": "https://example.com/image.jpg",
        "metaLink": "https://www.yahoo.com/",
        "ogTitle": "Page Title",
        "ogDescription": "Page Description"
    },
    "type": "post",
    "postApprovalDetails": {
        "approver": "iVrVJ2uoXNF0wzcBzgl5",
        "approvalStatus": "pending"
    },
    "scheduleTimeUpdated": true,
    "tags": [
        "65f151c99bc2bf3aaf970d72",
        "65f151c99bc2bf3aaf970d73"
    ],
    "categoryId": "65f151c99bc2bf3aaf970d72",
    "applyWatermark": true,
    "tiktokPostDetails": {
        "privacyLevel": "PUBLIC_TO_EVERYONE",
        "enableComment": true,
        "enableDuet": false
    },
    "gmbPostDetails": {
        "gmbEventType": "STANDARD",
        "actionType": "BOOK",
        "url": "https://example.com"
    },
    "userId": "sdfdsfdsfEWEsdfsdsW32dd",
    "linkedinPostDetails": {
        "visibility": "PUBLIC"
    },
    "pinterestPostDetails": {
        "boardId": "123456789",
        "title": "Pin Title"
    },
    "facebookPostDetails": {
        "type": "feed"
    },
    "instagramPostDetails": {
        "type": "feed",
        "share_to_feed": true
    },
    "youtubePostDetails": {
        "title": "Video Title",
        "privacyStatus": "public"
    },
    "communityPostDetails": {
        "title": "Welcome to our community!",
        "notifyAllGroupMembers": false,
        "postAsUser": {
            "aF3KhyL8JIuBwzK3m7Ly_iVrVJ2uoXNF0wzcBzgl5_12554616564525983496": {
                "id": "YBjxnYiXJKmoyV7WDjjG",
                "name": "Jane Cooper"
            }
        }
    }
}

response = requests.put(url, json=payload, headers=headers)
print(response.json())
```

**PHP**

```php
<?php
$curl = curl_init();

curl_setopt_array($curl, [
  CURLOPT_URL => 'https://services.leadconnectorhq.com/social-media-posting/<locationId>/posts/<id>',
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_CUSTOMREQUEST => 'PUT',
  CURLOPT_HTTPHEADER => [
    'Authorization: Bearer <TOKEN>',
    'Version: v3',
    'Content-Type: application/json',
  ],
  CURLOPT_POSTFIELDS => '{
  "accountIds": [
    "aF3KhyL8JIuBwzK3m7Ly_iVrVJ2uoXNF0wzcBzgl5_12554616564525983496"
  ],
  "summary": "Hello World! Check out our latest updates. #social #marketing",
  "media": [
    {
      "url": "https://example.com/image.jpg",
      "type": "image/jpeg",
      "caption": "Sample caption"
    }
  ],
  "status": "draft",
  "scheduleDate": "2024-01-15T10:00:00Z",
  "selectedBestTime": "2024-01-15T10:00:00Z",
  "createdBy": "65f151c99bc2bf3aaf970d72",
  "followUpComment": "What do you think? Let us know in the comments!",
  "ogTagsDetails": {
    "metaImage": "https://example.com/image.jpg",
    "metaLink": "https://www.yahoo.com/",
    "ogTitle": "Page Title",
    "ogDescription": "Page Description"
  },
  "type": "post",
  "postApprovalDetails": {
    "approver": "iVrVJ2uoXNF0wzcBzgl5",
    "approvalStatus": "pending"
  },
  "scheduleTimeUpdated": true,
  "tags": [
    "65f151c99bc2bf3aaf970d72",
    "65f151c99bc2bf3aaf970d73"
  ],
  "categoryId": "65f151c99bc2bf3aaf970d72",
  "applyWatermark": true,
  "tiktokPostDetails": {
    "privacyLevel": "PUBLIC_TO_EVERYONE",
    "enableComment": true,
    "enableDuet": false
  },
  "gmbPostDetails": {
    "gmbEventType": "STANDARD",
    "actionType": "BOOK",
    "url": "https://example.com"
  },
  "userId": "sdfdsfdsfEWEsdfsdsW32dd",
  "linkedinPostDetails": {
    "visibility": "PUBLIC"
  },
  "pinterestPostDetails": {
    "boardId": "123456789",
    "title": "Pin Title"
  },
  "facebookPostDetails": {
    "type": "feed"
  },
  "instagramPostDetails": {
    "type": "feed",
    "share_to_feed": true
  },
  "youtubePostDetails": {
    "title": "Video Title",
    "privacyStatus": "public"
  },
  "communityPostDetails": {
    "title": "Welcome to our community!",
    "notifyAllGroupMembers": false,
    "postAsUser": {
      "aF3KhyL8JIuBwzK3m7Ly_iVrVJ2uoXNF0wzcBzgl5_12554616564525983496": {
        "id": "YBjxnYiXJKmoyV7WDjjG",
        "name": "Jane Cooper"
      }
    }
  }
}',
]);

$response = curl_exec($curl);
curl_close($curl);
echo $response;
```

**Java**

```java
HttpResponse<String> response = Unirest
  .put("https://services.leadconnectorhq.com/social-media-posting/<locationId>/posts/<id>")
  .header("Authorization", "Bearer <TOKEN>")
  .header("Version", "v3")
  .header("Content-Type", "application/json")
  .body("{\"accountIds\":[\"aF3KhyL8JIuBwzK3m7Ly_iVrVJ2uoXNF0wzcBzgl5_12554616564525983496\"],\"summary\":\"Hello World! Check out our latest updates. #social #marketing\",\"media\":[{\"url\":\"https://example.com/image.jpg\",\"type\":\"image/jpeg\",\"caption\":\"Sample caption\"}],\"status\":\"draft\",\"scheduleDate\":\"2024-01-15T10:00:00Z\",\"selectedBestTime\":\"2024-01-15T10:00:00Z\",\"createdBy\":\"65f151c99bc2bf3aaf970d72\",\"followUpComment\":\"What do you think? Let us know in the comments!\",\"ogTagsDetails\":{\"metaImage\":\"https://example.com/image.jpg\",\"metaLink\":\"https://www.yahoo.com/\",\"ogTitle\":\"Page Title\",\"ogDescription\":\"Page Description\"},\"type\":\"post\",\"postApprovalDetails\":{\"approver\":\"iVrVJ2uoXNF0wzcBzgl5\",\"approvalStatus\":\"pending\"},\"scheduleTimeUpdated\":true,\"tags\":[\"65f151c99bc2bf3aaf970d72\",\"65f151c99bc2bf3aaf970d73\"],\"categoryId\":\"65f151c99bc2bf3aaf970d72\",\"applyWatermark\":true,\"tiktokPostDetails\":{\"privacyLevel\":\"PUBLIC_TO_EVERYONE\",\"enableComment\":true,\"enableDuet\":false},\"gmbPostDetails\":{\"gmbEventType\":\"STANDARD\",\"actionType\":\"BOOK\",\"url\":\"https://example.com\"},\"userId\":\"sdfdsfdsfEWEsdfsdsW32dd\",\"linkedinPostDetails\":{\"visibility\":\"PUBLIC\"},\"pinterestPostDetails\":{\"boardId\":\"123456789\",\"title\":\"Pin Title\"},\"facebookPostDetails\":{\"type\":\"feed\"},\"instagramPostDetails\":{\"type\":\"feed\",\"share_to_feed\":true},\"youtubePostDetails\":{\"title\":\"Video Title\",\"privacyStatus\":\"public\"},\"communityPostDetails\":{\"title\":\"Welcome to our community!\",\"notifyAllGroupMembers\":false,\"postAsUser\":{\"aF3KhyL8JIuBwzK3m7Ly_iVrVJ2uoXNF0wzcBzgl5_12554616564525983496\":{\"id\":\"YBjxnYiXJKmoyV7WDjjG\",\"name\":\"Jane Cooper\"}}}}")
  .asString();
```

**Go**

```go
package main

import (
  "fmt"
  "net/http"
  "io"
  "strings"
)

func main() {
  url := "https://services.leadconnectorhq.com/social-media-posting/<locationId>/posts/<id>"
  payload := strings.NewReader(`{
  "accountIds": [
    "aF3KhyL8JIuBwzK3m7Ly_iVrVJ2uoXNF0wzcBzgl5_12554616564525983496"
  ],
  "summary": "Hello World! Check out our latest updates. #social #marketing",
  "media": [
    {
      "url": "https://example.com/image.jpg",
      "type": "image/jpeg",
      "caption": "Sample caption"
    }
  ],
  "status": "draft",
  "scheduleDate": "2024-01-15T10:00:00Z",
  "selectedBestTime": "2024-01-15T10:00:00Z",
  "createdBy": "65f151c99bc2bf3aaf970d72",
  "followUpComment": "What do you think? Let us know in the comments!",
  "ogTagsDetails": {
    "metaImage": "https://example.com/image.jpg",
    "metaLink": "https://www.yahoo.com/",
    "ogTitle": "Page Title",
    "ogDescription": "Page Description"
  },
  "type": "post",
  "postApprovalDetails": {
    "approver": "iVrVJ2uoXNF0wzcBzgl5",
    "approvalStatus": "pending"
  },
  "scheduleTimeUpdated": true,
  "tags": [
    "65f151c99bc2bf3aaf970d72",
    "65f151c99bc2bf3aaf970d73"
  ],
  "categoryId": "65f151c99bc2bf3aaf970d72",
  "applyWatermark": true,
  "tiktokPostDetails": {
    "privacyLevel": "PUBLIC_TO_EVERYONE",
    "enableComment": true,
    "enableDuet": false
  },
  "gmbPostDetails": {
    "gmbEventType": "STANDARD",
    "actionType": "BOOK",
    "url": "https://example.com"
  },
  "userId": "sdfdsfdsfEWEsdfsdsW32dd",
  "linkedinPostDetails": {
    "visibility": "PUBLIC"
  },
  "pinterestPostDetails": {
    "boardId": "123456789",
    "title": "Pin Title"
  },
  "facebookPostDetails": {
    "type": "feed"
  },
  "instagramPostDetails": {
    "type": "feed",
    "share_to_feed": true
  },
  "youtubePostDetails": {
    "title": "Video Title",
    "privacyStatus": "public"
  },
  "communityPostDetails": {
    "title": "Welcome to our community!",
    "notifyAllGroupMembers": false,
    "postAsUser": {
      "aF3KhyL8JIuBwzK3m7Ly_iVrVJ2uoXNF0wzcBzgl5_12554616564525983496": {
        "id": "YBjxnYiXJKmoyV7WDjjG",
        "name": "Jane Cooper"
      }
    }
  }
}`)
  req, _ := http.NewRequest("PUT", url, payload)
  req.Header.Add("Authorization", "Bearer <TOKEN>")
  req.Header.Add("Version", "v3")

  res, _ := http.DefaultClient.Do(req)
  defer res.Body.Close()
  body, _ := io.ReadAll(res.Body)
  fmt.Println(string(body))
}
```

**Ruby**

```ruby
require 'uri'
require 'net/http'

url = URI("https://services.leadconnectorhq.com/social-media-posting/<locationId>/posts/<id>")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Put.new(url)
request["Authorization"] = "Bearer <TOKEN>"
request["Version"] = "v3"
request["Content-Type"] = "application/json"
request.body = '{
  "accountIds": [
    "aF3KhyL8JIuBwzK3m7Ly_iVrVJ2uoXNF0wzcBzgl5_12554616564525983496"
  ],
  "summary": "Hello World! Check out our latest updates. #social #marketing",
  "media": [
    {
      "url": "https://example.com/image.jpg",
      "type": "image/jpeg",
      "caption": "Sample caption"
    }
  ],
  "status": "draft",
  "scheduleDate": "2024-01-15T10:00:00Z",
  "selectedBestTime": "2024-01-15T10:00:00Z",
  "createdBy": "65f151c99bc2bf3aaf970d72",
  "followUpComment": "What do you think? Let us know in the comments!",
  "ogTagsDetails": {
    "metaImage": "https://example.com/image.jpg",
    "metaLink": "https://www.yahoo.com/",
    "ogTitle": "Page Title",
    "ogDescription": "Page Description"
  },
  "type": "post",
  "postApprovalDetails": {
    "approver": "iVrVJ2uoXNF0wzcBzgl5",
    "approvalStatus": "pending"
  },
  "scheduleTimeUpdated": true,
  "tags": [
    "65f151c99bc2bf3aaf970d72",
    "65f151c99bc2bf3aaf970d73"
  ],
  "categoryId": "65f151c99bc2bf3aaf970d72",
  "applyWatermark": true,
  "tiktokPostDetails": {
    "privacyLevel": "PUBLIC_TO_EVERYONE",
    "enableComment": true,
    "enableDuet": false
  },
  "gmbPostDetails": {
    "gmbEventType": "STANDARD",
    "actionType": "BOOK",
    "url": "https://example.com"
  },
  "userId": "sdfdsfdsfEWEsdfsdsW32dd",
  "linkedinPostDetails": {
    "visibility": "PUBLIC"
  },
  "pinterestPostDetails": {
    "boardId": "123456789",
    "title": "Pin Title"
  },
  "facebookPostDetails": {
    "type": "feed"
  },
  "instagramPostDetails": {
    "type": "feed",
    "share_to_feed": true
  },
  "youtubePostDetails": {
    "title": "Video Title",
    "privacyStatus": "public"
  },
  "communityPostDetails": {
    "title": "Welcome to our community!",
    "notifyAllGroupMembers": false,
    "postAsUser": {
      "aF3KhyL8JIuBwzK3m7Ly_iVrVJ2uoXNF0wzcBzgl5_12554616564525983496": {
        "id": "YBjxnYiXJKmoyV7WDjjG",
        "name": "Jane Cooper"
      }
    }
  }
}'

response = http.request(request)
puts response.read_body
```

**PowerShell**

```powershell
$headers = @{
  "Authorization" = "Bearer <TOKEN>"
  "Version" = "v3"
}

$body = '{
  "accountIds": [
    "aF3KhyL8JIuBwzK3m7Ly_iVrVJ2uoXNF0wzcBzgl5_12554616564525983496"
  ],
  "summary": "Hello World! Check out our latest updates. #social #marketing",
  "media": [
    {
      "url": "https://example.com/image.jpg",
      "type": "image/jpeg",
      "caption": "Sample caption"
    }
  ],
  "status": "draft",
  "scheduleDate": "2024-01-15T10:00:00Z",
  "selectedBestTime": "2024-01-15T10:00:00Z",
  "createdBy": "65f151c99bc2bf3aaf970d72",
  "followUpComment": "What do you think? Let us know in the comments!",
  "ogTagsDetails": {
    "metaImage": "https://example.com/image.jpg",
    "metaLink": "https://www.yahoo.com/",
    "ogTitle": "Page Title",
    "ogDescription": "Page Description"
  },
  "type": "post",
  "postApprovalDetails": {
    "approver": "iVrVJ2uoXNF0wzcBzgl5",
    "approvalStatus": "pending"
  },
  "scheduleTimeUpdated": true,
  "tags": [
    "65f151c99bc2bf3aaf970d72",
    "65f151c99bc2bf3aaf970d73"
  ],
  "categoryId": "65f151c99bc2bf3aaf970d72",
  "applyWatermark": true,
  "tiktokPostDetails": {
    "privacyLevel": "PUBLIC_TO_EVERYONE",
    "enableComment": true,
    "enableDuet": false
  },
  "gmbPostDetails": {
    "gmbEventType": "STANDARD",
    "actionType": "BOOK",
    "url": "https://example.com"
  },
  "userId": "sdfdsfdsfEWEsdfsdsW32dd",
  "linkedinPostDetails": {
    "visibility": "PUBLIC"
  },
  "pinterestPostDetails": {
    "boardId": "123456789",
    "title": "Pin Title"
  },
  "facebookPostDetails": {
    "type": "feed"
  },
  "instagramPostDetails": {
    "type": "feed",
    "share_to_feed": true
  },
  "youtubePostDetails": {
    "title": "Video Title",
    "privacyStatus": "public"
  },
  "communityPostDetails": {
    "title": "Welcome to our community!",
    "notifyAllGroupMembers": false,
    "postAsUser": {
      "aF3KhyL8JIuBwzK3m7Ly_iVrVJ2uoXNF0wzcBzgl5_12554616564525983496": {
        "id": "YBjxnYiXJKmoyV7WDjjG",
        "name": "Jane Cooper"
      }
    }
  }
}'

$response = Invoke-RestMethod -Uri 'https://services.leadconnectorhq.com/social-media-posting/<locationId>/posts/<id>' -Method 'PUT' -Headers $headers -Body $body -ContentType 'application/json'
$response | ConvertTo-Json
```
