---
title: "Replace planner item carousel media"
method: PUT
path: "/v1/workspaces/{workspaceId}/grid-planner/items/{itemId}/media"
tags: ["Grid Planner"]
---

# Replace planner item carousel media

`PUT /v1/workspaces/{workspaceId}/grid-planner/items/{itemId}/media`

## Request

- Base URL: `https://api.maevesocial.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.maevesocial.com/v1/workspaces/{workspaceId}/grid-planner/items/{itemId}/media`
- Auth: HTTP bearer

Replace the full carousel set on a visual-only planner item. Accepts up to the Instagram 10-item cap; clears the cover when the result is no longer eligible.

## Path parameters

- `itemId` string, required
- `workspaceId` string, uuid, required

## Request body

- ReplaceGridPlannerItemMediaDto
  - `integrationId` string, uuid, required
  - `mediaIds` string[], required

## Response `200`

Grid planner item carousel media replaced

- object
  - `data` PublicGridPlannerItemDto, required
    - `id` string, uuid, required
    - `integrationId` string, uuid, required
    - `kind` 'visual_only' | 'linked_post' | 'placeholder', required
    - `position` number, required
    - `linkedPostId` string, uuid, nullable, required: Linked content edition ID (content.id), kept as linkedPostId for API compatibility.
    - `note` string, nullable, required
    - `settings` object, required
    - `createdAt` string, required
    - `updatedAt` string, required
    - `coverMedia` PublicGridPlannerMediaDto, required
      - `id` string, uuid, required
      - `url` string, required
      - `thumbnailUrl` string, nullable, required
      - `type` string, required
    - `media` PublicGridPlannerMediaDto[], required
      - `id` string, uuid, required
      - `url` string, required
      - `thumbnailUrl` string, nullable, required
      - `type` string, required
    - `post` PublicGridPlannerLinkedPostDto, required
      - `id` string, uuid, required: Linked content edition ID (content.id). Grid planner linked items intentionally remain edition-level.
      - `status` string, required
      - `scheduledAt` string, nullable, required
      - `sentAt` string, nullable, required
      - `captions` CaptionsDto, required
        - `canonical` string, nullable
        - `overrides` CaptionOverridesDto
          - `x` string, nullable
          - `linkedin` string, nullable
          - `linkedin-page` string, nullable
          - `youtube` string, nullable
          - `instagram` string, nullable
          - `facebook` string, nullable
          - `threads` string, nullable
          - `tiktok` string, nullable
          - `pinterest` string, nullable
          - `google-business-profile` string, nullable
      - `resolvedCaption` string, required
      - `postType` string, required
      - `firstComment` string, nullable, required
      - `shareToFeed` boolean, required
      - `contentMedia` PublicContentMediaAttachmentDto[], required
        - `mediaId` string, uuid, required
        - `order` number, required
        - `type` string, nullable, required
        - `url` string, nullable, required
        - `thumbnailUrl` string, nullable, required
        - `filename` string, nullable, required
        - `crops` object, required
        - `userTags` object[], required
        - `productTags` object[], required
        - `cover` object, nullable, required
      - `media` PublicGridPlannerMediaDto[], required
        - `id` string, uuid, required
        - `url` string, required
        - `thumbnailUrl` string, nullable, required
        - `type` string, required
      - `campaignId` string, uuid, nullable, required
      - `campaignPhaseId` string, uuid, nullable, required
      - `priority` 'urgent' | 'high' | 'medium' | 'low'
  - `meta` unknown, required

---

[API](https://skmtc.dev/maevesocial/apis/maeve-social-api.md) · [All operations](https://skmtc.dev/maevesocial/apis/maeve-social-api/llms.txt) · [OpenAPI document](https://skmtc.dev/maevesocial/apis/maeve-social-api/revisions/1b00fd7e4b15?raw)
