> ## Documentation Index
> Fetch the complete documentation index at: https://docs.mosaic.so/llms.txt
> Use this file to discover all available pages before exploring further.

# Update Social Post

> Update supported fields on a social post.

Updates the supported lifecycle, moderation, and platform-specific metadata fields on a social post.

Use the `post_id` returned by `POST /social/post`.

This endpoint cannot change post text, attached media, or destination platforms after the post has been created. Create a new post when those need to change.

For posts with multiple destinations, schedule and approval updates are applied to every destination when `social_connection_id` is omitted. Moderation and platform-specific metadata fields require `social_connection_id` when the target destination cannot be inferred.

## Platform Support

| Platform    | Text / media edits | Reschedule           | Approval              | `disable_comments` | `platform_options`           |
| ----------- | ------------------ | -------------------- | --------------------- | ------------------ | ---------------------------- |
| `x`         | No                 | Scheduled posts only | Pending approval only | No                 | No                           |
| `linkedin`  | No                 | Scheduled posts only | Pending approval only | Yes                | `linkedin.disable_comments`  |
| `instagram` | No                 | Scheduled posts only | Pending approval only | Yes                | `instagram.disable_comments` |
| `facebook`  | No                 | Scheduled posts only | Pending approval only | No                 | No                           |
| `tiktok`    | No                 | Scheduled posts only | Pending approval only | No                 | No                           |
| `youtube`   | No                 | Scheduled posts only | Pending approval only | No                 | `youtube`                    |

`platform_options` supports comment moderation for Instagram and LinkedIn, plus metadata updates for YouTube. Other platform-specific update objects are not supported for existing posts.

## Reschedule Request

```bash theme={null}
curl -X PATCH "https://api.mosaic.so/social/post/[post_id]" \
  -H "Authorization: Bearer mk_your_api_key" \
  -H "Content-Type: application/json" \
  -d '{
    "schedule_date": "2026-03-10T18:30:00Z"
  }'
```

## Approval Request

```bash theme={null}
curl -X PATCH "https://api.mosaic.so/social/post/[post_id]" \
  -H "Authorization: Bearer mk_your_api_key" \
  -H "Content-Type: application/json" \
  -d '{
    "approved": true
  }'
```

`approved` is only for posts that were created with an approval requirement and are still waiting for approval.

## Comment Settings Request

```bash theme={null}
curl -X PATCH "https://api.mosaic.so/social/post/[post_id]" \
  -H "Authorization: Bearer mk_your_api_key" \
  -H "Content-Type: application/json" \
  -d '{
    "social_connection_id": "7f9388af-26e8-4e68-a52b-6b9a0ef3a017",
    "platform_options": {
      "linkedin": {
        "disable_comments": true
      }
    }
  }'
```

`disable_comments` can be updated for Instagram and LinkedIn destinations. The top-level `disable_comments` field is also accepted for backward compatibility.

## YouTube Metadata Request

```bash theme={null}
curl -X PATCH "https://api.mosaic.so/social/post/[post_id]" \
  -H "Authorization: Bearer mk_your_api_key" \
  -H "Content-Type: application/json" \
  -d '{
    "social_connection_id": "540273be-42e4-41ac-86ad-6d72ebf7d7af",
    "platform_options": {
      "youtube": {
        "visibility": "public",
        "title": "Mosaic launch recap",
        "description": "A quick recap from launch week.",
        "category_id": 24
      }
    }
  }'
```

## Body Parameters

| Field                                         | Type          | Required | Description                                                                                                                 |
| --------------------------------------------- | ------------- | -------- | --------------------------------------------------------------------------------------------------------------------------- |
| `schedule_date`                               | string        | No       | New scheduled publish timestamp as an ISO string. Only valid before a queued scheduled post publishes.                      |
| `approved`                                    | boolean       | No       | Set to `true` to approve a post that is waiting for approval.                                                               |
| `disable_comments`                            | boolean       | No       | Disable or re-enable comments for Instagram or LinkedIn destinations. Prefer the platform-scoped form for new integrations. |
| `platform_options`                            | object        | No       | Platform-specific update options for supported existing-post updates.                                                       |
| `platform_options.instagram.disable_comments` | boolean       | No       | Disable or re-enable comments for an Instagram destination.                                                                 |
| `platform_options.linkedin.disable_comments`  | boolean       | No       | Disable or re-enable comments for a LinkedIn destination.                                                                   |
| `platform_options.youtube.visibility`         | string        | No       | One of `unlisted`, `private`, or `public`.                                                                                  |
| `platform_options.youtube.title`              | string        | No       | Updated YouTube title.                                                                                                      |
| `platform_options.youtube.description`        | string        | No       | Updated YouTube description.                                                                                                |
| `platform_options.youtube.category_id`        | number        | No       | Updated YouTube category ID.                                                                                                |
| `social_connection_id`                        | string (uuid) | No       | Update using one specific connected account. Useful when a post targets multiple accounts on the same platform.             |

## Response

```json theme={null}
{
  "post_id": "2d8ca860-f8e0-4f3f-9f2c-337ead6ed91e",
  "status": "scheduled",
  "scheduled_at": "2026-03-10T18:30:00Z",
  "updated_destinations": [
    {
      "social_connection_id": "7f9388af-26e8-4e68-a52b-6b9a0ef3a017",
      "platform": "linkedin",
      "status": "scheduled"
    }
  ]
}
```

## Behavior

* `schedule_date` changes Mosaic's queued publish time for scheduled posts that have not published yet.
* `approved` does not create a new approval workflow. It only approves a post already waiting for approval.
* `platform_options.instagram.disable_comments`, `platform_options.linkedin.disable_comments`, and top-level `disable_comments` all map to the same comment setting update.
* Comment settings can be used on scheduled or published Instagram and LinkedIn posts. For queued scheduled posts, the setting is stored and applied when the post publishes. Existing platform behavior for previously created comments is platform-specific.
* Comment settings cannot target only one destination if the original post grouped multiple comment-configurable platforms under one publishing operation. Create separate posts when you need independent comment settings.
* `platform_options.youtube` can update supported YouTube metadata on YouTube posts.
* `youtube_options` is still accepted as a backward-compatible alias for `platform_options.youtube`, but new integrations should use `platform_options.youtube`.
