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

# Update an engagement

> Update an existing engagement's copy, delay, profile, or reaction type.

**Validation rules:**
- `copy` cannot be updated for Like engagements
- `copy` cannot be removed from Comment engagements (must have content)
- `delaySeconds` cannot be updated for Like engagements
- `reactionType` can only be updated for Like engagements on LinkedIn
- When changing `profileId`, the new profile must have the required engagement permissions
- Cannot update engagements for posts that have already been published
- Only one Like engagement per profile is allowed (cannot change profileId to a profile that already has a Like)



## OpenAPI

````yaml /api/openapi.json patch /engagements/{id}
openapi: 3.1.0
info:
  title: Ordinal API
  version: 1.0.0
  description: API to create and manage Ordinal workspaces, posts, profiles, and analytics
servers:
  - url: https://app.tryordinal.com/api/v1
    description: Production server
security:
  - bearerAuth: []
tags:
  - name: Analytics
    description: Social media analytics data
  - name: Approvals
    description: Post approval workflows
  - name: Comments
    description: >-
      Post comments for team collaboration. Supports @mentions using the format
      @[Display Name](userId).
  - name: Engagements
    description: Auto-engagements for posts (likes, comments, reposts)
  - name: Invites
    description: Workspace invitations for adding new users
  - name: Labels
    description: Labels for organizing posts
  - name: Instagram
    description: Instagram utilities for location search and tagging
  - name: LinkedIn
    description: LinkedIn utilities for profile lookups, tagging, and mentions
  - name: Posts
    description: Create and manage posts
  - name: Profiles
    description: List connected social profiles
  - name: Slack Boosts
    description: >-
      List connected Slack channels (webhooks), then create and manage slack
      boosts so teams get notified in Slack when posts publish. Requires Slack
      connected with marketing boost channels.
  - name: Subscribers
    description: Post subscribers for notifications
  - name: File Uploads
    description: >-
      Upload files from URLs for use in posts. Supports images (JPEG, PNG, GIF,
      WebP) up to 10 MB and videos (MP4, MOV) up to 350 MB.
  - name: Ideas
    description: >-
      Create and manage content ideas. Ideas are draft posts without scheduled
      dates that can be converted to calendar posts.
  - name: Inline Comments
    description: >-
      Text-anchored comments on specific post content. Read-only API for
      retrieving inline comments across channels.
  - name: Users
    description: Workspace users
  - name: Webhooks
    description: >-
      Create, list, get, update, and delete webhooks to receive real-time event
      notifications
  - name: Workspaces
    description: Workspace information
paths:
  /engagements/{id}:
    patch:
      tags:
        - Engagements
      summary: Update an engagement
      description: >-
        Update an existing engagement's copy, delay, profile, or reaction type.


        **Validation rules:**

        - `copy` cannot be updated for Like engagements

        - `copy` cannot be removed from Comment engagements (must have content)

        - `delaySeconds` cannot be updated for Like engagements

        - `reactionType` can only be updated for Like engagements on LinkedIn

        - When changing `profileId`, the new profile must have the required
        engagement permissions

        - Cannot update engagements for posts that have already been published

        - Only one Like engagement per profile is allowed (cannot change
        profileId to a profile that already has a Like)
      operationId: engagements-update
      parameters:
        - name: id
          in: path
          required: true
          description: Engagement ID (UUID)
          schema:
            type: string
            format: uuid
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateEngagementInput'
            examples:
              updateComment:
                summary: Update comment text and delay
                value:
                  copy: Updated comment text with great insights!
                  delaySeconds: 600
              changeProfile:
                summary: Change the profile performing the engagement
                value:
                  profileId: 550e8400-e29b-41d4-a716-446655440003
              updateReactionType:
                summary: Update LinkedIn reaction type for a Like engagement
                value:
                  reactionType: Love
              clearRepostCopy:
                summary: Remove copy from a repost
                value:
                  copy: null
      responses:
        '200':
          description: Engagement updated
          content:
            application/json:
              schema:
                type: object
                properties:
                  engagement:
                    $ref: '#/components/schemas/EngagementResponse'
              example:
                engagement:
                  id: 550e8400-e29b-41d4-a716-446655440801
                  type: Comment
                  profileId: 550e8400-e29b-41d4-a716-446655440002
                  copy: Updated comment text with great insights!
                  delaySeconds: 600
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
components:
  schemas:
    UpdateEngagementInput:
      type: object
      description: All fields are optional. Only include the fields you want to update.
      properties:
        copy:
          type: string
          minLength: 1
          nullable: true
          description: >-
            The text content. Cannot be updated for Like engagements. Cannot be
            removed from Comment engagements. Set to null to remove copy from
            Repost engagements.
        delaySeconds:
          type: integer
          minimum: 0
          maximum: 86400
          nullable: true
          description: >-
            Delay in seconds after the post publishes. Accepts any integer from
            0 to 86400 (24 hours). Cannot be updated for Like engagements.
        profileId:
          type: string
          format: uuid
          description: >-
            Change the profile that will perform the engagement. The new profile
            must have the required engagement permissions.
        reactionType:
          $ref: '#/components/schemas/LinkedInReactionType'
          description: >-
            Update the LinkedIn reaction type for Like engagements. Only
            applicable when type is Like and channel is LinkedIn.
    EngagementResponse:
      type: object
      description: Engagement object returned from update operations (without channel)
      properties:
        id:
          type: string
          format: uuid
        type:
          $ref: '#/components/schemas/EngagementType'
        profileId:
          type: string
          format: uuid
          description: The profile ID that will perform the engagement
        copy:
          type: string
          nullable: true
          description: The text content for Comment or Repost engagements
        delaySeconds:
          type: integer
          description: Delay in seconds after post publishes
        reactionType:
          $ref: '#/components/schemas/LinkedInReactionType'
          nullable: true
          description: LinkedIn reaction type for Like engagements
    LinkedInReactionType:
      type: string
      enum:
        - Like
        - Celebrate
        - Love
        - Insightful
        - Support
        - Funny
      description: >-
        LinkedIn reaction type for Like engagements. Only applicable when type
        is Like and channel is LinkedIn. Defaults to Like if not specified.
    EngagementType:
      type: string
      enum:
        - Like
        - Comment
        - Repost
    ValidationError:
      type: object
      properties:
        code:
          type: string
        message:
          type: string
        data:
          type: object
          properties:
            errors:
              type: object
              additionalProperties:
                type: array
                items:
                  type: string
    Error:
      type: object
      properties:
        code:
          type: string
        message:
          type: string
  responses:
    BadRequest:
      description: Bad Request - Invalid input parameters
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ValidationError'
          example:
            code: BAD_REQUEST
            message: Bad Request
            data:
              errors:
                publishAt:
                  - Invalid date format
                status:
                  - Invalid enum value
    Unauthorized:
      description: Unauthorized - Missing or invalid API key
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            code: UNAUTHORIZED
            message: Invalid or unauthorized API key
    NotFound:
      description: Not Found - Resource does not exist
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            code: NOT_FOUND
            message: Post not found or does not belong to this workspace
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: >-
        API key authentication. Generate an API key from your workspace
        settings.

````