Skip to content

Create Email Comment

POST
/api/v1/workspaces/{workspace_id}/emails/{email_id}/email_comments
curl --request POST \
--url https://example.com/%7B%7Bapp_url%7D/api/v1/workspaces/1/emails/1/email_comments \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{ "locale": "en-GB", "parent_id": 1, "body": "<p>Can we change the hero image?</p>", "pin_data": { "id": "12345", "component_instance_id": "12345", "branch_key": "a_branch_key", "coordinates": { "center_offset_x_px": 0.5, "y": 0.5 } }, "anchor": { "id": "0d3c9a52-8f0e-4a7b-9a1c-1f2e3d4c5b6a", "component_instance_id": "5b2f8c1e-3d4a-4e6f-8a9b-0c1d2e3f4a5b", "branch_key": "null_branch", "quote": { "exact": "Shop the sale", "prefix": "Ends Sunday. ", "suffix": " now" } } }'

Creates a new email comment.

workspace_id
required
integer

Workspace ID

email_id
required
integer

Email ID

Media typeapplication/json
object
locale
required

A BCP 47 language tag identifying the language and region of a piece of content. Must carry both a language and a region subtag, and must be in canonical case (lowercase language, titlecase script, uppercase region) — en-GB, not en-gb or en_GB. The region may be a UN M.49 code, so en-001 (world) is valid.

string
Example
en-GB
parent_id

The ID of the parent comment to reply to. Omit to create a top-level comment.

integer
Example
1
body
required

The content of the comment.

string
Example
<p>Can we change the hero image?</p>
pin_data
object
id
required
string
Example
12345
component_instance_id
string
Example
12345
branch_key
string
Example
a_branch_key
coordinates
required
object
center_offset_x_px
required

The horizontal offset of the pin from the center of the component, in pixels.

number
Example
0.5
y
required

The vertical position of the pin, as a percentage (0–1) from the top of the component.

number
Example
0.5
anchor

Anchors a comment to a passage of text inside a component instance. The passage is found again in the rendered email by searching for the quote, so it survives edits elsewhere in the email.

object
id
required
string
Example
0d3c9a52-8f0e-4a7b-9a1c-1f2e3d4c5b6a
component_instance_id
required
string
Example
5b2f8c1e-3d4a-4e6f-8a9b-0c1d2e3f4a5b
branch_key
required
string
Example
null_branch
quote
required
object
exact
required

The highlighted text, as it appears in the rendered email.

string
>= 1 characters
Example
Shop the sale
prefix

The text immediately before the highlighted text, used to tell repeated passages apart.

string
Example
Ends Sunday.
suffix

The text immediately after the highlighted text, used to tell repeated passages apart.

string
Example
now

Successful

Media typeapplication/json
object
id
required
integer
email_id
required
integer
ai_review_id
required
integer | null
locale
required

A BCP 47 language tag identifying the language and region of a piece of content. Must carry both a language and a region subtag, and must be in canonical case (lowercase language, titlecase script, uppercase region) — en-GB, not en-gb or en_GB. The region may be a UN M.49 code, so en-001 (world) is valid.

string
author_type
string
Allowed values: User AiReviewer ShareLinkGuest
author
required
One of:
One of:
object
type
required
string
Allowed values: User
id
required
integer
first_name
required
string
last_name
required
string
profile_image_url
required
string | null
parent_id
required
integer | null
pin_data
required
One of:
object
id
required
string
component_instance_id
string
branch_key
string
coordinates
required
object
center_offset_x_px
required

The horizontal offset of the pin from the center of the component, in pixels.

number
y
required

The vertical position of the pin, as a percentage (0–1) from the top of the component.

number
anchor
required
One of:

Anchors a comment to a passage of text inside a component instance. The passage is found again in the rendered email by searching for the quote, so it survives edits elsewhere in the email.

object
id
required
string
component_instance_id
required
string
branch_key
required
string
quote
required
object
exact
required

The highlighted text, as it appears in the rendered email.

string
>= 1 characters
prefix

The text immediately before the highlighted text, used to tell repeated passages apart.

string
suffix

The text immediately after the highlighted text, used to tell repeated passages apart.

string
suggested_changes
required
Array<object>

A field value change suggested to address a comment.

object
component_instance_id
required
string
>= 1 characters
branch_key
required
string
>= 1 characters
locale
required

A BCP 47 language tag identifying the language and region of a piece of content. Must carry both a language and a region subtag, and must be in canonical case (lowercase language, titlecase script, uppercase region) — en-GB, not en-gb or en_GB. The region may be a UN M.49 code, so en-001 (world) is valid.

string
liquid_variable
required

The liquid variable of the field to change.

string
>= 1 characters
value
required
One of:
string
body
required
string
resolved
required
boolean
resolver_id
required
integer | null
resolver
required
One of:
One of:
object
type
required
string
Allowed values: User
id
required
integer
first_name
required
string
last_name
required
string
profile_image_url
required
string | null
created_at
required
string format: date-time
Example
{
"id": 12345,
"email_id": 12345,
"ai_review_id": 54321,
"locale": "en-GB",
"author_type": "User",
"author": {
"type": "User",
"id": 12345,
"first_name": "John",
"last_name": "Smith",
"profile_image_url": "https://example.com/profile.jpg"
},
"parent_id": 12345,
"pin_data": {
"id": "12345",
"component_instance_id": "12345",
"branch_key": "a_branch_key",
"coordinates": {
"center_offset_x_px": 0.5,
"y": 0.5
}
},
"anchor": {
"id": "0d3c9a52-8f0e-4a7b-9a1c-1f2e3d4c5b6a",
"component_instance_id": "5b2f8c1e-3d4a-4e6f-8a9b-0c1d2e3f4a5b",
"branch_key": "null_branch",
"quote": {
"exact": "Shop the sale",
"prefix": "Ends Sunday. ",
"suffix": " now"
}
},
"suggested_changes": [
{
"component_instance_id": "5b2f8c1e-3d4a-4e6f-8a9b-0c1d2e3f4a5b",
"branch_key": "null_branch",
"locale": "en-GB",
"liquid_variable": "headline",
"value": "Shop the sale"
}
],
"body": "This is a comment",
"resolved": false,
"resolver_id": 12345,
"resolver": {
"type": "User",
"id": 12345,
"first_name": "John",
"last_name": "Smith",
"profile_image_url": "https://example.com/profile.jpg"
},
"created_at": "2023-08-23T10:30:00.000Z"
}

Unauthorized

Media typeapplication/json
object
message
required
string
code
string
Example
{
"message": "Record not found",
"code": "share_link_expired"
}

Forbidden

Media typeapplication/json
object
message
required
string
code
string
Example
{
"message": "Record not found",
"code": "share_link_expired"
}

Not Found

Media typeapplication/json
object
message
required
string
code
string
Example
{
"message": "Record not found",
"code": "share_link_expired"
}

Unprocessable Entity

Media typeapplication/json
object
message
required
string
errors
required
object
key
additional properties
Array<string>
Example
{
"errors": {
"username": [
"Username is required.",
"Username must be unique."
],
"email": [
"Invalid email format."
]
}
}