---
title: "Set or clear the assignee (responsible team member) of a library post. The assignee is either a regular user (assigneeUserId) or an agency end client (assigneeAgencyUserId); sending both is rejected and sending neither unassigns the post."
method: PUT
path: "/v2/scheduler/library/posts/{postId}/assignee"
tags: ["Library Posts Assignee Api Service"]
---

# Set or clear the assignee (responsible team member) of a library post. The assignee is either a regular user (assigneeUserId) or an agency end client (assigneeAgencyUserId); sending both is rejected and sending neither unassigns the post.

`PUT /v2/scheduler/library/posts/{postId}/assignee`

## Request

- Base URL: `https://app.metricool.com/api`
- URL: `https://app.metricool.com/api/v2/scheduler/library/posts/{postId}/assignee`
- Auth: none declared

## Path parameters

- `postId` integer, required

## Request body

- UpdateLibraryPostAssigneeRequest: Body to set or clear the assignee of a library post.
  - `assigneeUserId` integer: Regular user id to assign; null (or omitted) to unassign.
  - `assigneeAgencyUserId` integer: Agency user id (agency end client) to assign; null (or omitted) to unassign. Mutually exclusive with assigneeUserId.

## Response `200`

OK

- JsonOkResponseLibraryPostDto
  - `metadata` object
  - `page` JsonPaging
    - `next` string
  - `data` LibraryPostDto
    - `id` integer
    - `creationDate` DateTimeInfo
      - `dateTime` string, required: Local Date-time represented with a certain timezone
      - `timezone` string: Timezone applied to the datetime
    - `updatedDate` DateTimeInfo
      - `dateTime` string, required: Local Date-time represented with a certain timezone
      - `timezone` string: Timezone applied to the datetime
    - `shortener` boolean
    - `draft` boolean
    - `commonData` LibraryPostCommonConfigurationDto
      - `content` string, required
      - `firstCommentText` string
      - `publishMode` string
      - `smartlinkData` SmartlinkData
        - `targetUrl` string
        - `ids` integer[]
    - `media` LibraryPostMediaDto[]
      - `id` integer
      - `position` integer, required
      - `url` string
      - `altText` string
      - `videoCoverMilliseconds` integer
      - `videoThumbnailUrl` string
    - `saveExternalMediaFiles` boolean
    - `parentId` integer
    - `twitterData` TwitterConfigurationDto
      - `enabled` boolean
      - `tags` string[]
      - `replySettings` string
      - `type` string
      - `poll` ScheduledPostTwitterPoll
        - `options` ScheduledPostTwitterPollOption[]
          - `text` string
        - `settings` ScheduledPostTwitterPollSettings
          - `durationMinutes` integer
    - `facebookData` FacebookConfigurationDto
      - `enabled` boolean
      - `boostBudget` number
      - `boostPayer` string
      - `boostBeneficiary` string
      - `location` LibraryPostLocationDto
        - `name` string
        - `link` string
        - `id` string
        - `locationCoordinates` LibraryPostLocationCoordinates
          - `city` string
          - `country` string
          - `state` string
          - `street` string
          - `zip` string
          - `latitude` number, double
          - `longitude` number, double
      - `type` string
      - `reelTitle` string
    - `instagramData` InstagramConfigurationDto
      - `enabled` boolean
      - `carouselTags` object
      - `carouselProductTags` object
      - `type` string
      - `showReelOnFeed` boolean
      - `isAiGenerated` boolean: Whether the Instagram post is flagged as AI-generated content (sent as is_ai_generated on publish).
      - `boostBudget` number
      - `boostPayer` string
      - `boostBeneficiary` string
      - `location` LibraryPostLocationDto
        - `name` string
        - `link` string
        - `id` string
        - `locationCoordinates` LibraryPostLocationCoordinates
          - `city` string
          - `country` string
          - `state` string
          - `street` string
          - `zip` string
          - `latitude` number, double
          - `longitude` number, double
      - `reelAudioName` string
      - `collaborators` InstagramCollaboratorTag[]
        - `username` string
        - `deleted` boolean
      - `shareTrialAutomatically` boolean
      - `audioConfiguration` InstagramAudioConfigurationDto
        - `audioId` string, required: Unique identifier of the audio asset from the Instagram Audio API.
        - `audioType` 'music' | 'original_sound' | 'music' | 'original_sound': Audio type. Allowed values: 'music', 'original_sound'.
        - `title` string: Title of the audio track.
        - `displayArtist` string: Display artist name (populated for 'music' type).
        - `igUsername` string: Instagram username of the creator (populated for 'original_sound' type).
        - `coverArtworkUrl` string: URL of the cover artwork thumbnail.
        - `durationMs` integer: Duration of the audio in milliseconds.
        - `audioVolume` integer: Volume level for the audio asset, from 0 (muted) to 100 (full volume). Defaults to 100.
        - `videoVolume` integer: Volume level for the video's original audio, from 0 (muted) to 100 (full volume). Defaults to 100.
    - `threadsData` ThreadsConfigurationDto
      - `enabled` boolean: A boolean that represents if the Threads configuration is enabled for this library post
      - `allowedCountryCodes` string[]: A string list of valid ISO 3166-1 alpha-2 country codes that represents the countries where this media should be shown.
      - `replyControl` string: A string that represents who can reply to a Threads post, been EVERYONE by default. (EVERYONE, ACCOUNTS_YOU_FOLLOW,MENTIONED_ONLY,PARENT_POST_AUTHOR_ONLY,FOLLOWERS_ONLY)
      - `type` string: Post type (POST or GHOST)
      - `shareAsInstagramStory` boolean: A boolean that represents if the Threads post must be cross-shared as an Instagram Story. The Story is published on the Instagram account linked to the Threads account, which may not match the Instagram account connected to this brand.
      - `instagramStoryTheme` string: Theme used when the Threads post is cross-shared as an Instagram Story (LIGHT or DARK). Only allowed when shareAsInstagramStory is enabled; must be absent otherwise.
      - `isSpoiler` boolean: A boolean that represents if isSpoiler is activated or not
    - `linkedinData` LinkedinConfigurationDto
      - `enabled` boolean
      - `documentTitle` string
      - `publishImagesAsPDF` boolean, required
      - `previewIncluded` boolean, required
      - `type` string
      - `poll` LinkedinPollDto
        - `question` string
        - `options` LinkedinOptionDto[]
          - `text` string
        - `settings` LinkedinSettingsDto
          - `duration` string
    - `pinterestData` PinterestConfigurationDto
      - `enabled` boolean
      - `boardId` string
      - `pinTitle` string
      - `pinLink` string
      - `pinNewFormat` boolean
    - `tiktokData` TikTokConfigurationDto
      - `enabled` boolean
      - `disableComment` boolean
      - `disableDuet` boolean
      - `disableStitch` boolean
      - `privacyOption` string
      - `commercialContentThirdParty` boolean
      - `commercialContentOwnBrand` boolean
      - `title` string
      - `autoAddMusic` boolean
      - `photoCoverIndex` integer
      - `music` TikTokTrackDto
        - `musicId` string
        - `title` string
        - `author` string
        - `previewUrl` string
        - `thumbnailUrl` string
        - `soundVolume` integer
        - `originalVolume` integer
        - `startMillis` integer
        - `endMillis` integer
      - `isAigc` boolean
    - `youtubeData` YoutubeConfigurationDto
      - `enabled` boolean
      - `title` string
      - `type` string
      - `privacy` string
      - `tags` string[]
      - `category` string
      - `madeForKids` boolean
      - `playlistId` string
      - `isAiGeneratedContent` boolean
      - `notifySubscribers` boolean
    - `gbpData` GbpConfigurationDto
      - `enabled` boolean
      - `type` string
    - `blueskyData` BlueskyConfigurationDto
      - `enabled` boolean
      - `postLanguages` string[]
    - `descendants` LibraryPostDto[]
    - `notes` LibraryPostNoteDto[]
      - `id` integer, required
      - `libraryPostId` integer, required
      - `userId` integer
      - `agencyId` integer
      - `agencyUserId` integer
      - `userName` string, required
      - `created` DateTimeInfo, required
        - `dateTime` string, required: Local Date-time represented with a certain timezone
        - `timezone` string: Timezone applied to the datetime
      - `content` string, required
      - `updatedDate` DateTimeInfo
        - `dateTime` string, required: Local Date-time represented with a certain timezone
        - `timezone` string: Timezone applied to the datetime
      - `updated` boolean
      - `deleted` boolean
      - `profilePicture` string: Public URL of the author's 400x400 profile picture. Absent when they have none, in which case the frontend renders its initials fallback. Filled for agency-authored notes too.
      - `mentions` NoteMentionDto[]: Users mentioned in the content of the note, resolved when the note is read. Empty when the note mentions nobody.
        - `userId` integer: Regular user id of the mentioned user. Absent for an agency end client.
        - `agencyId` integer: Agency id of the mentioned user. Only for an agency end client.
        - `agencyUserId` integer: Agency user id of the mentioned user. Only for an agency end client.
        - `name` string: Current display name of the mentioned user. Absent when the account was deleted, in which case the frontend renders its own localized deleted-user label.
        - `deleted` boolean: True when the mentioned account no longer exists. A user that merely lost access to the brand is not deleted: their mention keeps rendering as it always did.
      - `mentionId` string: Identity of the note author, and the field to compare against your own to tell whether a note is yours. `12345` for a regular user, `a:<agencyId>:<agencyUserId>` for an agency end client. Prefer it over the raw id fields: an agency author has no `userId` at all, so comparing that one answers "not mine" on their own note. Same shape as the `mentionId` of the mention picker, so the author of a note and the entry that mentions them carry the same string. Absent only for a note whose author could not be resolved.
    - `hasNotReadNotes` boolean
    - `tags` string
    - `performanceDashboardIds` integer[]
    - `assignee` LibraryPostAssigneeDto: Team member assigned to a library post.
      - `label` 'CLIENT' | 'STAFF': Badge to show next to the user, relative to the requesting session: CLIENT (an agency end client, as seen by a Metricool session), STAFF (anyone who is not an agency end client, as seen by an agency end-client session), or absent for no badge.
      - `userId` integer: Regular user id of the assignee. Absent for an agency end client.
      - `agencyId` integer: Agency id of the assignee. Only for an agency end client.
      - `agencyUserId` integer: Agency user id of the assignee. Only for an agency end client.
      - `name` string: Display name of the assignee, or null when it cannot be resolved.
      - `deleted` boolean: True when the assignee account has been deleted (frontend shows 'deleted user').
      - `hasBrandAccess` boolean: False when the assignee no longer has access to this brand (frontend shows a warning).
      - `profilePicture` string: Absolute URL of the assignee's profile picture. Omitted when it has none; the UI then renders its initials. Filled for both assignee kinds (ES5MPTM3-7292).
    - `state` LibraryPostStateDto: A workflow state of a library post.
      - `id` integer: State id.
      - `name` string: Display name of the state.
      - `color` string: Color of the state.
      - `position` integer: Ordering position of the state within the brand's workflow (ascending).

---

[API](https://skmtc.dev/metricool/apis/metricool-api.md) · [All operations](https://skmtc.dev/metricool/apis/metricool-api/llms.txt) · [OpenAPI document](https://skmtc.dev/metricool/apis/metricool-api/revisions/aea9d9a8415a?raw)
