curl --request POST \
--url https://cloud.memsource.com/web/api2/v3/jobs/{jobUid}/conversations/plains/{conversationId}/comments \
--header 'Authorization: <api-key>' \
--header 'Content-Type: application/json' \
--data '
{
"text": "<string>"
}
'import requests
url = "https://cloud.memsource.com/web/api2/v3/jobs/{jobUid}/conversations/plains/{conversationId}/comments"
payload = { "text": "<string>" }
headers = {
"Authorization": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({text: '<string>'})
};
fetch('https://cloud.memsource.com/web/api2/v3/jobs/{jobUid}/conversations/plains/{conversationId}/comments', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://cloud.memsource.com/web/api2/v3/jobs/{jobUid}/conversations/plains/{conversationId}/comments",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'text' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: <api-key>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://cloud.memsource.com/web/api2/v3/jobs/{jobUid}/conversations/plains/{conversationId}/comments"
payload := strings.NewReader("{\n \"text\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://cloud.memsource.com/web/api2/v3/jobs/{jobUid}/conversations/plains/{conversationId}/comments")
.header("Authorization", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"text\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://cloud.memsource.com/web/api2/v3/jobs/{jobUid}/conversations/plains/{conversationId}/comments")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"text\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"conversation": {
"comments": [
{
"createdBy": {
"unavailable": true,
"email": "<string>",
"firstName": "<string>",
"id": "<string>",
"jobRoles": [
{
"workflowStep": {
"abbreviation": "<string>",
"id": 123,
"name": "<string>",
"workflowLevel": 123,
"workflowStep": {
"id": "<string>",
"lqaEnabled": true,
"name": "<string>",
"order": 123,
"uid": "<string>"
}
}
}
],
"lastName": "<string>",
"uid": "<string>",
"userName": "<string>"
},
"dateCreated": "2023-11-07T05:31:56Z",
"dateModified": "2023-11-07T05:31:56Z",
"id": "<string>",
"mentions": [
{
"mentionableGroup": {
"groupName": "<string>",
"groupReference": {
"uid": "3HYnHHLkTPJfMxBCDbPXFe"
}
},
"tag": "<string>",
"uidReference": {
"uid": "3HYnHHLkTPJfMxBCDbPXFe"
},
"userReferences": [
{
"unavailable": true,
"email": "<string>",
"firstName": "<string>",
"id": "<string>",
"jobRoles": [
{
"workflowStep": {
"abbreviation": "<string>",
"id": 123,
"name": "<string>",
"workflowLevel": 123,
"workflowStep": {
"id": "<string>",
"lqaEnabled": true,
"name": "<string>",
"order": 123,
"uid": "<string>"
}
}
}
],
"lastName": "<string>",
"uid": "<string>",
"userName": "<string>"
}
]
}
],
"text": "<string>"
}
],
"createdBy": {
"unavailable": true,
"email": "<string>",
"firstName": "<string>",
"id": "<string>",
"jobRoles": [
{
"workflowStep": {
"abbreviation": "<string>",
"id": 123,
"name": "<string>",
"workflowLevel": 123,
"workflowStep": {
"id": "<string>",
"lqaEnabled": true,
"name": "<string>",
"order": 123,
"uid": "<string>"
}
}
}
],
"lastName": "<string>",
"uid": "<string>",
"userName": "<string>"
},
"dateCreated": "2023-11-07T05:31:56Z",
"dateEdited": "2023-11-07T05:31:56Z",
"dateModified": "2023-11-07T05:31:56Z",
"deleted": true,
"id": "<string>",
"references": {
"segmentId": "<string>",
"transGroupId": 1,
"commentedText": "<string>",
"conversationTitle": "<string>",
"conversationTitleOffset": 1,
"correlation": {
"role": "PARENT",
"uid": "<string>"
},
"jobPartUid": "<string>",
"taskId": "<string>"
},
"status": {
"by": {
"unavailable": true,
"email": "<string>",
"firstName": "<string>",
"id": "<string>",
"jobRoles": [
{
"workflowStep": {
"abbreviation": "<string>",
"id": 123,
"name": "<string>",
"workflowLevel": 123,
"workflowStep": {
"id": "<string>",
"lqaEnabled": true,
"name": "<string>",
"order": 123,
"uid": "<string>"
}
}
}
],
"lastName": "<string>",
"uid": "<string>",
"userName": "<string>"
},
"date": "2023-11-07T05:31:56Z"
},
"type": "<string>"
},
"id": "<string>"
}Add plain comment
curl --request POST \
--url https://cloud.memsource.com/web/api2/v3/jobs/{jobUid}/conversations/plains/{conversationId}/comments \
--header 'Authorization: <api-key>' \
--header 'Content-Type: application/json' \
--data '
{
"text": "<string>"
}
'import requests
url = "https://cloud.memsource.com/web/api2/v3/jobs/{jobUid}/conversations/plains/{conversationId}/comments"
payload = { "text": "<string>" }
headers = {
"Authorization": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({text: '<string>'})
};
fetch('https://cloud.memsource.com/web/api2/v3/jobs/{jobUid}/conversations/plains/{conversationId}/comments', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://cloud.memsource.com/web/api2/v3/jobs/{jobUid}/conversations/plains/{conversationId}/comments",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'text' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: <api-key>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://cloud.memsource.com/web/api2/v3/jobs/{jobUid}/conversations/plains/{conversationId}/comments"
payload := strings.NewReader("{\n \"text\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://cloud.memsource.com/web/api2/v3/jobs/{jobUid}/conversations/plains/{conversationId}/comments")
.header("Authorization", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"text\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://cloud.memsource.com/web/api2/v3/jobs/{jobUid}/conversations/plains/{conversationId}/comments")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"text\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"conversation": {
"comments": [
{
"createdBy": {
"unavailable": true,
"email": "<string>",
"firstName": "<string>",
"id": "<string>",
"jobRoles": [
{
"workflowStep": {
"abbreviation": "<string>",
"id": 123,
"name": "<string>",
"workflowLevel": 123,
"workflowStep": {
"id": "<string>",
"lqaEnabled": true,
"name": "<string>",
"order": 123,
"uid": "<string>"
}
}
}
],
"lastName": "<string>",
"uid": "<string>",
"userName": "<string>"
},
"dateCreated": "2023-11-07T05:31:56Z",
"dateModified": "2023-11-07T05:31:56Z",
"id": "<string>",
"mentions": [
{
"mentionableGroup": {
"groupName": "<string>",
"groupReference": {
"uid": "3HYnHHLkTPJfMxBCDbPXFe"
}
},
"tag": "<string>",
"uidReference": {
"uid": "3HYnHHLkTPJfMxBCDbPXFe"
},
"userReferences": [
{
"unavailable": true,
"email": "<string>",
"firstName": "<string>",
"id": "<string>",
"jobRoles": [
{
"workflowStep": {
"abbreviation": "<string>",
"id": 123,
"name": "<string>",
"workflowLevel": 123,
"workflowStep": {
"id": "<string>",
"lqaEnabled": true,
"name": "<string>",
"order": 123,
"uid": "<string>"
}
}
}
],
"lastName": "<string>",
"uid": "<string>",
"userName": "<string>"
}
]
}
],
"text": "<string>"
}
],
"createdBy": {
"unavailable": true,
"email": "<string>",
"firstName": "<string>",
"id": "<string>",
"jobRoles": [
{
"workflowStep": {
"abbreviation": "<string>",
"id": 123,
"name": "<string>",
"workflowLevel": 123,
"workflowStep": {
"id": "<string>",
"lqaEnabled": true,
"name": "<string>",
"order": 123,
"uid": "<string>"
}
}
}
],
"lastName": "<string>",
"uid": "<string>",
"userName": "<string>"
},
"dateCreated": "2023-11-07T05:31:56Z",
"dateEdited": "2023-11-07T05:31:56Z",
"dateModified": "2023-11-07T05:31:56Z",
"deleted": true,
"id": "<string>",
"references": {
"segmentId": "<string>",
"transGroupId": 1,
"commentedText": "<string>",
"conversationTitle": "<string>",
"conversationTitleOffset": 1,
"correlation": {
"role": "PARENT",
"uid": "<string>"
},
"jobPartUid": "<string>",
"taskId": "<string>"
},
"status": {
"by": {
"unavailable": true,
"email": "<string>",
"firstName": "<string>",
"id": "<string>",
"jobRoles": [
{
"workflowStep": {
"abbreviation": "<string>",
"id": 123,
"name": "<string>",
"workflowLevel": 123,
"workflowStep": {
"id": "<string>",
"lqaEnabled": true,
"name": "<string>",
"order": 123,
"uid": "<string>"
}
}
}
],
"lastName": "<string>",
"uid": "<string>",
"userName": "<string>"
},
"date": "2023-11-07T05:31:56Z"
},
"type": "<string>"
},
"id": "<string>"
}Authorizations
Get a token from auth/login endpoint and then pass it in the Authorization HTTP header in every subsequent API call. For more information visit our help center.
Path Parameters
UID of the job
ID of the plain conversation
Body
Add comment request body
Text content of the comment. To trigger a mention notification, embed a tag using the exact wire format <@user:UID> for a specific user, <@group:GROUPNAME> for a predefined group (e.g. <@group:owners>, <@group:providers>), or <@group:WORKFLOW_STEP_UID> for a workflow step group. UID is the mentionable user's uid; GROUPNAME is the lowercase groupName field (not groupType) returned by the "List mentionable users" endpoint for non-workflow-step groups; WORKFLOW_STEP_UID is that same endpoint's groupReference.uid, since a workflow step's groupName is a human-readable display value and will not match the tag. Only uids/groupNames returned by that endpoint for this comment's job part are valid mention targets — any other value silently fails to produce a mention. Plain human-readable text such as "@owners" or "@username" is stored as inert text and does not resolve to a mention.
Was this page helpful?