# Update Campaign Message

PUT /api/v2/projects/{projectId}/email-campaigns/{campaignId}/messages/{messageId}

Updates one campaign message's sender or content. Read Get Email Campaign for messages[].id, then pass campaignId, messageId, and changes. Supports STANDARD, AUTOMATION, and AB_TEST campaigns while DRAFT or PAUSED; omitted fields are unchanged. Use this endpoint to set fromEmailUsername, fromName, and fromDomain on workflow emails. Use Update Email Campaign for workflowId and workflowStepId links.

## Request

- projectId: string, path, required
- campaignId: string, path, required
- messageId: string, path, required
- changes: object, required
  - bcc: string
  - bodyHTML: string
  - bodyJSON: object
  - cc: string
  - fromDomain: string
  - fromEmailUsername: string
  - fromName: string
  - label: string
  - previewTextHTML: string
  - previewTextJSON: object
  - replyTo: string
  - scheduledAt: string — When to send this message, as an ISO 8601 timestamp with a timezone offset. Null clears it.
  - subjectHTML: string
  - subjectJSON: object
  - text: string
  - theme: object
    - body: object, required
    - button: object, required
    - link: object, required
    - template: string, required
    - typography: object, required

## Response

- 200: Successful response
  - bodyHTML: string, required
  - bodyJSON: object, required
  - createdAt: string, required
  - emailCampaignId: string, required
  - fromDomain: string, required
  - fromEmailUsername: string, required
  - fromName: string, required
  - id: string, required
  - label: string, required
  - previewTextHTML: string, required
  - previewTextJSON: object, required
  - projectId: string, required
  - sendCount: integer, required, default 0
  - subjectHTML: string, required
  - subjectJSON: object, required
  - text: string, required
  - theme: object, required
    - body: object, required
    - button: object, required
    - link: object, required
    - template: string, required
    - typography: object, required
  - updatedAt: string, required
  - bcc: string
  - cc: string
  - lastSuccessContactCreatedAt: string
  - lastSuccessContactId: string
  - replyTo: string
  - scheduledAt: string
  - …
- 400: Invalid input data
- 401: Authorization not provided
- 403: Insufficient access
- 404: Not found
- 500: Internal server error
