Skip to main content
Create localized campaign content
curl --request POST \
  --url https://api.getvero.com/api/v2/api/v2/campaign-messages/{campaign_message_id}/content \
  --header 'Authorization: <api-key>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "locale": "fr-FR",
  "name": "French",
  "subject": "Bonjour",
  "content": {
    "html": "<p>Bonjour</p>"
  }
}
'
{
  "id": 123,
  "locale": "<string>",
  "name": "<string>",
  "is_default": true,
  "content": {
    "mjml": "<string>",
    "html": "<string>",
    "text": "<string>",
    "payload": {}
  },
  "created_at": "2023-11-07T05:31:56Z",
  "updated_at": "2023-11-07T05:31:56Z",
  "subject": "<string>",
  "preheader_text": "<string>"
}

Authorizations

Authorization
string
header
required

Accepts either a raw secret key or Bearer <sk_KEY>.

Headers

revision
string

Optional dated API revision for the request. Must use YYYY-MM-DD format.

Pattern: ^\d{4}-\d{2}-\d{2}$
Example:

"2026-03-01"

Path Parameters

campaign_message_id
integer
required

Campaign message ID.

Body

application/json
locale
string
required

Locale for the cloned localized content, for example fr-FR.

name
string | null
subject
string | null
preheader_text
string | null
content
object

Exactly one of mjml, html, text or payload must be present in write requests. Email messages accept mjml, html, or text. SMS accepts text. Push accepts payload.

Response

Campaign content created.

id
integer
required
locale
string | null
required

null for the default content variant.

name
string | null
required
is_default
boolean
required
content
object
required

Full body: exactly one of mjml, html, text or payload is set.

created_at
string<date-time>
required
updated_at
string<date-time>
required
subject
string | null
preheader_text
string | null