Add Comment Annotations
curl --request POST \
--url https://api.velt.dev/v2/commentannotations/add \
--header 'Content-Type: application/json' \
--header 'x-velt-api-key: <x-velt-api-key>' \
--header 'x-velt-auth-token: <x-velt-auth-token>' \
--data '
{
"data": {
"organizationId": "<string>",
"documentId": "<string>",
"verifyUserPermissions": true,
"commentAnnotations": [
{
"annotationId": "<string>",
"location": {
"id": "<string>",
"locationName": "<string>"
},
"targetElement": {
"elementId": "<string>",
"targetText": "<string>",
"occurrence": 123,
"selectAllContent": true
},
"commentData": [
{
"commentId": 123,
"commentText": "<string>",
"commentHtml": "<string>",
"context": {},
"isCommentResolverUsed": true,
"isCommentTextAvailable": true,
"triggerNotification": true,
"triggerActivities": true,
"from": {},
"createdAt": 123,
"lastUpdated": 123,
"taggedUserContacts": [
{
"userId": "<string>",
"contact": {
"userId": "<string>",
"name": "<string>",
"email": "<string>"
}
}
]
}
],
"status": {
"id": "<string>",
"name": "<string>",
"type": "<string>",
"color": "<string>",
"lightColor": "<string>",
"svg": "<string>",
"iconUrl": "<string>"
},
"assignedTo": {},
"context": {},
"createdAt": 123,
"lastUpdated": 123,
"priority": {
"id": "<string>",
"color": "<string>",
"name": "<string>",
"lightColor": "<string>"
}
}
]
}
}
'import requests
url = "https://api.velt.dev/v2/commentannotations/add"
payload = { "data": {
"organizationId": "<string>",
"documentId": "<string>",
"verifyUserPermissions": True,
"commentAnnotations": [
{
"annotationId": "<string>",
"location": {
"id": "<string>",
"locationName": "<string>"
},
"targetElement": {
"elementId": "<string>",
"targetText": "<string>",
"occurrence": 123,
"selectAllContent": True
},
"commentData": [
{
"commentId": 123,
"commentText": "<string>",
"commentHtml": "<string>",
"context": {},
"isCommentResolverUsed": True,
"isCommentTextAvailable": True,
"triggerNotification": True,
"triggerActivities": True,
"from": {},
"createdAt": 123,
"lastUpdated": 123,
"taggedUserContacts": [
{
"userId": "<string>",
"contact": {
"userId": "<string>",
"name": "<string>",
"email": "<string>"
}
}
]
}
],
"status": {
"id": "<string>",
"name": "<string>",
"type": "<string>",
"color": "<string>",
"lightColor": "<string>",
"svg": "<string>",
"iconUrl": "<string>"
},
"assignedTo": {},
"context": {},
"createdAt": 123,
"lastUpdated": 123,
"priority": {
"id": "<string>",
"color": "<string>",
"name": "<string>",
"lightColor": "<string>"
}
}
]
} }
headers = {
"x-velt-api-key": "<x-velt-api-key>",
"x-velt-auth-token": "<x-velt-auth-token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'x-velt-api-key': '<x-velt-api-key>',
'x-velt-auth-token': '<x-velt-auth-token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
data: {
organizationId: '<string>',
documentId: '<string>',
verifyUserPermissions: true,
commentAnnotations: [
{
annotationId: '<string>',
location: {id: '<string>', locationName: '<string>'},
targetElement: {
elementId: '<string>',
targetText: '<string>',
occurrence: 123,
selectAllContent: true
},
commentData: [
{
commentId: 123,
commentText: '<string>',
commentHtml: '<string>',
context: {},
isCommentResolverUsed: true,
isCommentTextAvailable: true,
triggerNotification: true,
triggerActivities: true,
from: {},
createdAt: 123,
lastUpdated: 123,
taggedUserContacts: [
{
userId: '<string>',
contact: {userId: '<string>', name: '<string>', email: '<string>'}
}
]
}
],
status: {
id: '<string>',
name: '<string>',
type: '<string>',
color: '<string>',
lightColor: '<string>',
svg: '<string>',
iconUrl: '<string>'
},
assignedTo: {},
context: {},
createdAt: 123,
lastUpdated: 123,
priority: {id: '<string>', color: '<string>', name: '<string>', lightColor: '<string>'}
}
]
}
})
};
fetch('https://api.velt.dev/v2/commentannotations/add', 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://api.velt.dev/v2/commentannotations/add",
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([
'data' => [
'organizationId' => '<string>',
'documentId' => '<string>',
'verifyUserPermissions' => true,
'commentAnnotations' => [
[
'annotationId' => '<string>',
'location' => [
'id' => '<string>',
'locationName' => '<string>'
],
'targetElement' => [
'elementId' => '<string>',
'targetText' => '<string>',
'occurrence' => 123,
'selectAllContent' => true
],
'commentData' => [
[
'commentId' => 123,
'commentText' => '<string>',
'commentHtml' => '<string>',
'context' => [
],
'isCommentResolverUsed' => true,
'isCommentTextAvailable' => true,
'triggerNotification' => true,
'triggerActivities' => true,
'from' => [
],
'createdAt' => 123,
'lastUpdated' => 123,
'taggedUserContacts' => [
[
'userId' => '<string>',
'contact' => [
'userId' => '<string>',
'name' => '<string>',
'email' => '<string>'
]
]
]
]
],
'status' => [
'id' => '<string>',
'name' => '<string>',
'type' => '<string>',
'color' => '<string>',
'lightColor' => '<string>',
'svg' => '<string>',
'iconUrl' => '<string>'
],
'assignedTo' => [
],
'context' => [
],
'createdAt' => 123,
'lastUpdated' => 123,
'priority' => [
'id' => '<string>',
'color' => '<string>',
'name' => '<string>',
'lightColor' => '<string>'
]
]
]
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-velt-api-key: <x-velt-api-key>",
"x-velt-auth-token: <x-velt-auth-token>"
],
]);
$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://api.velt.dev/v2/commentannotations/add"
payload := strings.NewReader("{\n \"data\": {\n \"organizationId\": \"<string>\",\n \"documentId\": \"<string>\",\n \"verifyUserPermissions\": true,\n \"commentAnnotations\": [\n {\n \"annotationId\": \"<string>\",\n \"location\": {\n \"id\": \"<string>\",\n \"locationName\": \"<string>\"\n },\n \"targetElement\": {\n \"elementId\": \"<string>\",\n \"targetText\": \"<string>\",\n \"occurrence\": 123,\n \"selectAllContent\": true\n },\n \"commentData\": [\n {\n \"commentId\": 123,\n \"commentText\": \"<string>\",\n \"commentHtml\": \"<string>\",\n \"context\": {},\n \"isCommentResolverUsed\": true,\n \"isCommentTextAvailable\": true,\n \"triggerNotification\": true,\n \"triggerActivities\": true,\n \"from\": {},\n \"createdAt\": 123,\n \"lastUpdated\": 123,\n \"taggedUserContacts\": [\n {\n \"userId\": \"<string>\",\n \"contact\": {\n \"userId\": \"<string>\",\n \"name\": \"<string>\",\n \"email\": \"<string>\"\n }\n }\n ]\n }\n ],\n \"status\": {\n \"id\": \"<string>\",\n \"name\": \"<string>\",\n \"type\": \"<string>\",\n \"color\": \"<string>\",\n \"lightColor\": \"<string>\",\n \"svg\": \"<string>\",\n \"iconUrl\": \"<string>\"\n },\n \"assignedTo\": {},\n \"context\": {},\n \"createdAt\": 123,\n \"lastUpdated\": 123,\n \"priority\": {\n \"id\": \"<string>\",\n \"color\": \"<string>\",\n \"name\": \"<string>\",\n \"lightColor\": \"<string>\"\n }\n }\n ]\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-velt-api-key", "<x-velt-api-key>")
req.Header.Add("x-velt-auth-token", "<x-velt-auth-token>")
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://api.velt.dev/v2/commentannotations/add")
.header("x-velt-api-key", "<x-velt-api-key>")
.header("x-velt-auth-token", "<x-velt-auth-token>")
.header("Content-Type", "application/json")
.body("{\n \"data\": {\n \"organizationId\": \"<string>\",\n \"documentId\": \"<string>\",\n \"verifyUserPermissions\": true,\n \"commentAnnotations\": [\n {\n \"annotationId\": \"<string>\",\n \"location\": {\n \"id\": \"<string>\",\n \"locationName\": \"<string>\"\n },\n \"targetElement\": {\n \"elementId\": \"<string>\",\n \"targetText\": \"<string>\",\n \"occurrence\": 123,\n \"selectAllContent\": true\n },\n \"commentData\": [\n {\n \"commentId\": 123,\n \"commentText\": \"<string>\",\n \"commentHtml\": \"<string>\",\n \"context\": {},\n \"isCommentResolverUsed\": true,\n \"isCommentTextAvailable\": true,\n \"triggerNotification\": true,\n \"triggerActivities\": true,\n \"from\": {},\n \"createdAt\": 123,\n \"lastUpdated\": 123,\n \"taggedUserContacts\": [\n {\n \"userId\": \"<string>\",\n \"contact\": {\n \"userId\": \"<string>\",\n \"name\": \"<string>\",\n \"email\": \"<string>\"\n }\n }\n ]\n }\n ],\n \"status\": {\n \"id\": \"<string>\",\n \"name\": \"<string>\",\n \"type\": \"<string>\",\n \"color\": \"<string>\",\n \"lightColor\": \"<string>\",\n \"svg\": \"<string>\",\n \"iconUrl\": \"<string>\"\n },\n \"assignedTo\": {},\n \"context\": {},\n \"createdAt\": 123,\n \"lastUpdated\": 123,\n \"priority\": {\n \"id\": \"<string>\",\n \"color\": \"<string>\",\n \"name\": \"<string>\",\n \"lightColor\": \"<string>\"\n }\n }\n ]\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.velt.dev/v2/commentannotations/add")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-velt-api-key"] = '<x-velt-api-key>'
request["x-velt-auth-token"] = '<x-velt-auth-token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"data\": {\n \"organizationId\": \"<string>\",\n \"documentId\": \"<string>\",\n \"verifyUserPermissions\": true,\n \"commentAnnotations\": [\n {\n \"annotationId\": \"<string>\",\n \"location\": {\n \"id\": \"<string>\",\n \"locationName\": \"<string>\"\n },\n \"targetElement\": {\n \"elementId\": \"<string>\",\n \"targetText\": \"<string>\",\n \"occurrence\": 123,\n \"selectAllContent\": true\n },\n \"commentData\": [\n {\n \"commentId\": 123,\n \"commentText\": \"<string>\",\n \"commentHtml\": \"<string>\",\n \"context\": {},\n \"isCommentResolverUsed\": true,\n \"isCommentTextAvailable\": true,\n \"triggerNotification\": true,\n \"triggerActivities\": true,\n \"from\": {},\n \"createdAt\": 123,\n \"lastUpdated\": 123,\n \"taggedUserContacts\": [\n {\n \"userId\": \"<string>\",\n \"contact\": {\n \"userId\": \"<string>\",\n \"name\": \"<string>\",\n \"email\": \"<string>\"\n }\n }\n ]\n }\n ],\n \"status\": {\n \"id\": \"<string>\",\n \"name\": \"<string>\",\n \"type\": \"<string>\",\n \"color\": \"<string>\",\n \"lightColor\": \"<string>\",\n \"svg\": \"<string>\",\n \"iconUrl\": \"<string>\"\n },\n \"assignedTo\": {},\n \"context\": {},\n \"createdAt\": 123,\n \"lastUpdated\": 123,\n \"priority\": {\n \"id\": \"<string>\",\n \"color\": \"<string>\",\n \"name\": \"<string>\",\n \"lightColor\": \"<string>\"\n }\n }\n ]\n }\n}"
response = http.request(request)
puts response.read_body{
"result": {
"status": "success",
"message": "Comment Annotation(s) added successfully.",
"data": {
"-O0mpUziLcBwzREvZKs6": {
"success": true,
"annotationId": "-O0mpUziLcBwzREvZKs6",
"commentIds": [
126535
],
"message": "Added Successfully"
}
}
}
}
Comments Annotations
Add Comment Annotations
POST
/
v2
/
commentannotations
/
add
Add Comment Annotations
curl --request POST \
--url https://api.velt.dev/v2/commentannotations/add \
--header 'Content-Type: application/json' \
--header 'x-velt-api-key: <x-velt-api-key>' \
--header 'x-velt-auth-token: <x-velt-auth-token>' \
--data '
{
"data": {
"organizationId": "<string>",
"documentId": "<string>",
"verifyUserPermissions": true,
"commentAnnotations": [
{
"annotationId": "<string>",
"location": {
"id": "<string>",
"locationName": "<string>"
},
"targetElement": {
"elementId": "<string>",
"targetText": "<string>",
"occurrence": 123,
"selectAllContent": true
},
"commentData": [
{
"commentId": 123,
"commentText": "<string>",
"commentHtml": "<string>",
"context": {},
"isCommentResolverUsed": true,
"isCommentTextAvailable": true,
"triggerNotification": true,
"triggerActivities": true,
"from": {},
"createdAt": 123,
"lastUpdated": 123,
"taggedUserContacts": [
{
"userId": "<string>",
"contact": {
"userId": "<string>",
"name": "<string>",
"email": "<string>"
}
}
]
}
],
"status": {
"id": "<string>",
"name": "<string>",
"type": "<string>",
"color": "<string>",
"lightColor": "<string>",
"svg": "<string>",
"iconUrl": "<string>"
},
"assignedTo": {},
"context": {},
"createdAt": 123,
"lastUpdated": 123,
"priority": {
"id": "<string>",
"color": "<string>",
"name": "<string>",
"lightColor": "<string>"
}
}
]
}
}
'import requests
url = "https://api.velt.dev/v2/commentannotations/add"
payload = { "data": {
"organizationId": "<string>",
"documentId": "<string>",
"verifyUserPermissions": True,
"commentAnnotations": [
{
"annotationId": "<string>",
"location": {
"id": "<string>",
"locationName": "<string>"
},
"targetElement": {
"elementId": "<string>",
"targetText": "<string>",
"occurrence": 123,
"selectAllContent": True
},
"commentData": [
{
"commentId": 123,
"commentText": "<string>",
"commentHtml": "<string>",
"context": {},
"isCommentResolverUsed": True,
"isCommentTextAvailable": True,
"triggerNotification": True,
"triggerActivities": True,
"from": {},
"createdAt": 123,
"lastUpdated": 123,
"taggedUserContacts": [
{
"userId": "<string>",
"contact": {
"userId": "<string>",
"name": "<string>",
"email": "<string>"
}
}
]
}
],
"status": {
"id": "<string>",
"name": "<string>",
"type": "<string>",
"color": "<string>",
"lightColor": "<string>",
"svg": "<string>",
"iconUrl": "<string>"
},
"assignedTo": {},
"context": {},
"createdAt": 123,
"lastUpdated": 123,
"priority": {
"id": "<string>",
"color": "<string>",
"name": "<string>",
"lightColor": "<string>"
}
}
]
} }
headers = {
"x-velt-api-key": "<x-velt-api-key>",
"x-velt-auth-token": "<x-velt-auth-token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'x-velt-api-key': '<x-velt-api-key>',
'x-velt-auth-token': '<x-velt-auth-token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
data: {
organizationId: '<string>',
documentId: '<string>',
verifyUserPermissions: true,
commentAnnotations: [
{
annotationId: '<string>',
location: {id: '<string>', locationName: '<string>'},
targetElement: {
elementId: '<string>',
targetText: '<string>',
occurrence: 123,
selectAllContent: true
},
commentData: [
{
commentId: 123,
commentText: '<string>',
commentHtml: '<string>',
context: {},
isCommentResolverUsed: true,
isCommentTextAvailable: true,
triggerNotification: true,
triggerActivities: true,
from: {},
createdAt: 123,
lastUpdated: 123,
taggedUserContacts: [
{
userId: '<string>',
contact: {userId: '<string>', name: '<string>', email: '<string>'}
}
]
}
],
status: {
id: '<string>',
name: '<string>',
type: '<string>',
color: '<string>',
lightColor: '<string>',
svg: '<string>',
iconUrl: '<string>'
},
assignedTo: {},
context: {},
createdAt: 123,
lastUpdated: 123,
priority: {id: '<string>', color: '<string>', name: '<string>', lightColor: '<string>'}
}
]
}
})
};
fetch('https://api.velt.dev/v2/commentannotations/add', 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://api.velt.dev/v2/commentannotations/add",
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([
'data' => [
'organizationId' => '<string>',
'documentId' => '<string>',
'verifyUserPermissions' => true,
'commentAnnotations' => [
[
'annotationId' => '<string>',
'location' => [
'id' => '<string>',
'locationName' => '<string>'
],
'targetElement' => [
'elementId' => '<string>',
'targetText' => '<string>',
'occurrence' => 123,
'selectAllContent' => true
],
'commentData' => [
[
'commentId' => 123,
'commentText' => '<string>',
'commentHtml' => '<string>',
'context' => [
],
'isCommentResolverUsed' => true,
'isCommentTextAvailable' => true,
'triggerNotification' => true,
'triggerActivities' => true,
'from' => [
],
'createdAt' => 123,
'lastUpdated' => 123,
'taggedUserContacts' => [
[
'userId' => '<string>',
'contact' => [
'userId' => '<string>',
'name' => '<string>',
'email' => '<string>'
]
]
]
]
],
'status' => [
'id' => '<string>',
'name' => '<string>',
'type' => '<string>',
'color' => '<string>',
'lightColor' => '<string>',
'svg' => '<string>',
'iconUrl' => '<string>'
],
'assignedTo' => [
],
'context' => [
],
'createdAt' => 123,
'lastUpdated' => 123,
'priority' => [
'id' => '<string>',
'color' => '<string>',
'name' => '<string>',
'lightColor' => '<string>'
]
]
]
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-velt-api-key: <x-velt-api-key>",
"x-velt-auth-token: <x-velt-auth-token>"
],
]);
$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://api.velt.dev/v2/commentannotations/add"
payload := strings.NewReader("{\n \"data\": {\n \"organizationId\": \"<string>\",\n \"documentId\": \"<string>\",\n \"verifyUserPermissions\": true,\n \"commentAnnotations\": [\n {\n \"annotationId\": \"<string>\",\n \"location\": {\n \"id\": \"<string>\",\n \"locationName\": \"<string>\"\n },\n \"targetElement\": {\n \"elementId\": \"<string>\",\n \"targetText\": \"<string>\",\n \"occurrence\": 123,\n \"selectAllContent\": true\n },\n \"commentData\": [\n {\n \"commentId\": 123,\n \"commentText\": \"<string>\",\n \"commentHtml\": \"<string>\",\n \"context\": {},\n \"isCommentResolverUsed\": true,\n \"isCommentTextAvailable\": true,\n \"triggerNotification\": true,\n \"triggerActivities\": true,\n \"from\": {},\n \"createdAt\": 123,\n \"lastUpdated\": 123,\n \"taggedUserContacts\": [\n {\n \"userId\": \"<string>\",\n \"contact\": {\n \"userId\": \"<string>\",\n \"name\": \"<string>\",\n \"email\": \"<string>\"\n }\n }\n ]\n }\n ],\n \"status\": {\n \"id\": \"<string>\",\n \"name\": \"<string>\",\n \"type\": \"<string>\",\n \"color\": \"<string>\",\n \"lightColor\": \"<string>\",\n \"svg\": \"<string>\",\n \"iconUrl\": \"<string>\"\n },\n \"assignedTo\": {},\n \"context\": {},\n \"createdAt\": 123,\n \"lastUpdated\": 123,\n \"priority\": {\n \"id\": \"<string>\",\n \"color\": \"<string>\",\n \"name\": \"<string>\",\n \"lightColor\": \"<string>\"\n }\n }\n ]\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-velt-api-key", "<x-velt-api-key>")
req.Header.Add("x-velt-auth-token", "<x-velt-auth-token>")
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://api.velt.dev/v2/commentannotations/add")
.header("x-velt-api-key", "<x-velt-api-key>")
.header("x-velt-auth-token", "<x-velt-auth-token>")
.header("Content-Type", "application/json")
.body("{\n \"data\": {\n \"organizationId\": \"<string>\",\n \"documentId\": \"<string>\",\n \"verifyUserPermissions\": true,\n \"commentAnnotations\": [\n {\n \"annotationId\": \"<string>\",\n \"location\": {\n \"id\": \"<string>\",\n \"locationName\": \"<string>\"\n },\n \"targetElement\": {\n \"elementId\": \"<string>\",\n \"targetText\": \"<string>\",\n \"occurrence\": 123,\n \"selectAllContent\": true\n },\n \"commentData\": [\n {\n \"commentId\": 123,\n \"commentText\": \"<string>\",\n \"commentHtml\": \"<string>\",\n \"context\": {},\n \"isCommentResolverUsed\": true,\n \"isCommentTextAvailable\": true,\n \"triggerNotification\": true,\n \"triggerActivities\": true,\n \"from\": {},\n \"createdAt\": 123,\n \"lastUpdated\": 123,\n \"taggedUserContacts\": [\n {\n \"userId\": \"<string>\",\n \"contact\": {\n \"userId\": \"<string>\",\n \"name\": \"<string>\",\n \"email\": \"<string>\"\n }\n }\n ]\n }\n ],\n \"status\": {\n \"id\": \"<string>\",\n \"name\": \"<string>\",\n \"type\": \"<string>\",\n \"color\": \"<string>\",\n \"lightColor\": \"<string>\",\n \"svg\": \"<string>\",\n \"iconUrl\": \"<string>\"\n },\n \"assignedTo\": {},\n \"context\": {},\n \"createdAt\": 123,\n \"lastUpdated\": 123,\n \"priority\": {\n \"id\": \"<string>\",\n \"color\": \"<string>\",\n \"name\": \"<string>\",\n \"lightColor\": \"<string>\"\n }\n }\n ]\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.velt.dev/v2/commentannotations/add")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-velt-api-key"] = '<x-velt-api-key>'
request["x-velt-auth-token"] = '<x-velt-auth-token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"data\": {\n \"organizationId\": \"<string>\",\n \"documentId\": \"<string>\",\n \"verifyUserPermissions\": true,\n \"commentAnnotations\": [\n {\n \"annotationId\": \"<string>\",\n \"location\": {\n \"id\": \"<string>\",\n \"locationName\": \"<string>\"\n },\n \"targetElement\": {\n \"elementId\": \"<string>\",\n \"targetText\": \"<string>\",\n \"occurrence\": 123,\n \"selectAllContent\": true\n },\n \"commentData\": [\n {\n \"commentId\": 123,\n \"commentText\": \"<string>\",\n \"commentHtml\": \"<string>\",\n \"context\": {},\n \"isCommentResolverUsed\": true,\n \"isCommentTextAvailable\": true,\n \"triggerNotification\": true,\n \"triggerActivities\": true,\n \"from\": {},\n \"createdAt\": 123,\n \"lastUpdated\": 123,\n \"taggedUserContacts\": [\n {\n \"userId\": \"<string>\",\n \"contact\": {\n \"userId\": \"<string>\",\n \"name\": \"<string>\",\n \"email\": \"<string>\"\n }\n }\n ]\n }\n ],\n \"status\": {\n \"id\": \"<string>\",\n \"name\": \"<string>\",\n \"type\": \"<string>\",\n \"color\": \"<string>\",\n \"lightColor\": \"<string>\",\n \"svg\": \"<string>\",\n \"iconUrl\": \"<string>\"\n },\n \"assignedTo\": {},\n \"context\": {},\n \"createdAt\": 123,\n \"lastUpdated\": 123,\n \"priority\": {\n \"id\": \"<string>\",\n \"color\": \"<string>\",\n \"name\": \"<string>\",\n \"lightColor\": \"<string>\"\n }\n }\n ]\n }\n}"
response = http.request(request)
puts response.read_body{
"result": {
"status": "success",
"message": "Comment Annotation(s) added successfully.",
"data": {
"-O0mpUziLcBwzREvZKs6": {
"success": true,
"annotationId": "-O0mpUziLcBwzREvZKs6",
"commentIds": [
126535
],
"message": "Added Successfully"
}
}
}
}
Use this API to add comment annotations to a document within an organization.
In this example,
- You can add comments on an elemement, text or page.
- You can provide HTML or text content.
- Additional filters can be applied using location IDs.
Endpoint
POST https://api.velt.dev/v2/commentannotations/add
Headers
string
required
Your API key.
string
required
Your Auth Token.
Body
Params
object
required
Show properties
Show properties
string
required
Organization ID
string
required
Document ID
boolean
When enabled, verifies the user has access to the document before creating comment annotations.
This ensures annotations respect document access permissions configured via Access Control or Permission Provider.Default:
falseobject[]
required
Show properties
Show properties
string
Custom Annotation ID. If not provided, Velt will generate a unique ID for the annotation.
object
Target Element
Show properties
Show properties
string
Element DOM Id. When used with
targetText, defines the text search boundaries for locating text comments within the specified element.string
Target Text. Provide this if you want to add comment annotation on the provided text content.
number
Occurrence. Provide this if you want to add comment annotation on a text content.
boolean
Select All Content. Provide this if you want to select and add comment annotation on the entire text content of the target elementId.
object[]
required
Array of Comment Data
Show properties
Show properties
number
Custom Comment ID. If not provided, Velt will generate a unique ID for the comment.
string
Comment content in plain text string. To tag users, wrap their userId in double curly braces like
{{userId}}. The frontend will replace this with the user’s name.string
Comment content in HTML string. To tag users, wrap their userId in double curly braces like
{{userId}}. The frontend will replace this with the user’s name.object
Custom key/value metadata object. This is used to store any additional information about the comment.
boolean
Use this for self-hosting comments data. Set this as true if you are comments resolver data provider in the SDK.
boolean
Use this for self-hosting comments data. Set this as true if this comment will have text content. Sometimes, comments might only have attachments and in that case, set this as false.
boolean
When enabled, adding comments via the REST API will trigger in-app notifications, email notifications to relevant users and also trigger webhooks matching the SDK’s native notification behavior. Default: false.
boolean
When enabled, adding comments via the REST API will create activity log records matching the SDK’s native activity log behavior. Default: false.
User
required
User object from whom the comment is added
number
Created At timestamp (in milliseconds since epoch).
number
Last Updated timestamp (in milliseconds since epoch).
object[]
Array of tagged user contacts. Use this field to provide information about users tagged in the comment. Each userId wrapped in
{{userId}} in commentText or commentHtml should have a corresponding entry here so the frontend can replace it with the user’s name.Show properties
Show properties
string
required
User ID of the tagged user. This should match the userId used in
{{userId}} syntax within commentText or commentHtml.Status
Status
Show properties
Show properties
string
required
Status ID
string
required
Status Name
string
required
Type. Must be one of:
default, ongoing, or terminal.string
required
Text and comment pin color
string
required
Background color on the status indicator
string
Raw SVG of the icon. Either
svg or iconUrl is required.string
Icon URL. Either
svg or iconUrl is required.User
User object to whom the comment is assigned
object
Custom key/value metadata object
number
Created At timestamp (in milliseconds since epoch).
number
Last Updated timestamp (in milliseconds since epoch).
Example Requests
Add comment annotation by organizationId, documentId and location
{
"data": {
"organizationId": "yourOrganizationId",
"documentId": "yourDocumentId",
"commentAnnotations": [
{
"location": {
"id": "yourLocationId",
"locationName": "yourLocationName"
},
"targetElement": {
"elementId": "yourElementId",
"targetText": "Your Target Text",
"occurrence": 1,
"selectAllContent": false
},
"commentData": [
{
"commentText": "Sample Comment",
"commentHtml": "<div>Sample Comment</div>",
"from": {
"userId": "yourUserId",
"name": "yourUserName",
"email": "yourUserEmail",
}
}
]
}
]
}
}
Add comment annotation with user tagging
{
"data": {
"organizationId": "acme-corp",
"documentId": "design-mockup-v2",
"commentAnnotations": [
{
"commentData": [
{
"triggerNotification": true,
"commentText": "Hey {{user_sarah_chen}}, can you review this color scheme? I think we should use a darker shade for better contrast.",
"commentHtml": "<p>Hey {{user_sarah_chen}}, can you review this color scheme? I think we should use a darker shade for better contrast.</p>",
"from": {
"userId": "user_john_smith",
"name": "John Smith",
"email": "john.smith@acme-corp.com"
},
"taggedUserContacts": [
{
"userId": "user_sarah_chen",
"contact": {
"userId": "user_sarah_chen",
"name": "Sarah Chen",
"email": "sarah.chen@acme-corp.com"
}
}
]
}
]
}
]
}
}
{{user_sarah_chen}} in the commentText will be replaced with “Sarah Chen” on the frontend, displaying as “Hey Sarah Chen, can you review this color scheme? I think we should use a darker shade for better contrast.”
Add comment annotation with permission verification
{
"data": {
"organizationId": "acme-corp",
"documentId": "design-mockup-v2",
"verifyUserPermissions": true,
"commentAnnotations": [
{
"commentData": [
{
"commentText": "Please review this section",
"from": {
"userId": "user_john_smith",
"name": "John Smith",
"email": "john.smith@acme-corp.com"
}
}
]
}
]
}
}
When
verifyUserPermissions is enabled, the API verifies the user has access to the document before creating the comment annotation. If verification fails, the request will be rejected.Add comment annotation with activity tracking
{
"data": {
"organizationId": "acme-corp",
"documentId": "design-mockup-v2",
"commentAnnotations": [
{
"commentData": [
{
"commentText": "This needs review",
"triggerNotification": true,
"triggerActivities": true,
"from": {
"userId": "user-1",
"email": "user@example.com",
"name": "User Name"
}
}
]
}
]
}
}
Add comment annotation with access context
{
"data": {
"organizationId": "acme-corp",
"documentId": "analytics-dashboard",
"commentAnnotations": [
{
"context": {
"access": {
"entityId": "numberOfVisitors",
"dashboardId": "myDashboard"
}
},
"commentData": [
{
"commentText": "Traffic numbers look unusual today",
"from": {
"userId": "user_john_smith",
"name": "John Smith",
"email": "john.smith@acme-corp.com"
}
}
]
}
]
}
}
Response
Success Response
{
"result": {
"status": "success",
"message": "Comment Annotation(s) added successfully.",
"data": {
"-O0mpUziLcBwzREvZKs6": {
"success": true,
"annotationId": "-O0mpUziLcBwzREvZKs6",
"commentIds": [
126535
],
"message": "Added Successfully"
}
}
}
}
Failure Response
{
"error": {
"message": "ERROR_MESSAGE",
"status": "INVALID_ARGUMENT"
}
}
{
"result": {
"status": "success",
"message": "Comment Annotation(s) added successfully.",
"data": {
"-O0mpUziLcBwzREvZKs6": {
"success": true,
"annotationId": "-O0mpUziLcBwzREvZKs6",
"commentIds": [
126535
],
"message": "Added Successfully"
}
}
}
}
Was this page helpful?

