curl --request POST \
--url https://{your-subdomain}.neetoengage.com/api/external/v1/feature_requests/{id}/comments \
--header 'Accept: <accept>' \
--header 'Content-Type: application/json' \
--header 'X-Api-Key: <x-api-key>' \
--data '
{
"comment": {
"content": "<p>We are working on this.</p>"
},
"author_email": "oliver@example.com",
"notify_all_voters": false,
"operation_key": "support-ticket-4821-comment"
}
'const options = {
method: 'POST',
headers: {
'X-Api-Key': '<x-api-key>',
Accept: '<accept>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
comment: {content: '<p>We are working on this.</p>'},
author_email: 'oliver@example.com',
notify_all_voters: false,
operation_key: 'support-ticket-4821-comment'
})
};
fetch('https://{your-subdomain}.neetoengage.com/api/external/v1/feature_requests/{id}/comments', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://{your-subdomain}.neetoengage.com/api/external/v1/feature_requests/{id}/comments"
payload = {
"comment": { "content": "<p>We are working on this.</p>" },
"author_email": "oliver@example.com",
"notify_all_voters": False,
"operation_key": "support-ticket-4821-comment"
}
headers = {
"X-Api-Key": "<x-api-key>",
"Accept": "<accept>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"comment": {
"id": "0b9c4f1a-3e7d-4a62-b8f5-61d2c7a9e403",
"content": "<p>We are working on this.</p>",
"created_at": "2026-03-05T12:30:00Z"
},
"feature_request": {
"id": "5f0f3c2e-8d1b-4c53-9a6e-2b7d41c9e8a1",
"title": "Export roadmap as CSV",
"url": "https://spinkart.neetoengage.com/feature-requests/120-export-roadmap-as-csv",
"admin_url": "https://spinkart.neetoengage.com/admin/feature-requests/120-export-roadmap-as-csv",
"status": "Under consideration",
"track": "Backlog",
"votes_count": 15,
"created_at": "2026-03-02T10:15:30Z"
}
}{
"error": "Could not authenticate, invalid API Key"
}{
"error": "FeatureRequest does not exist."
}{
"error": "param is missing or the value is empty or invalid: content"
}Create a comment on a feature request
Posts a comment on a feature request. Comments are public on the roadmap. Set notify_all_voters to true to email the comment to every subscribed voter.
Send an operation_key to make the call safe to retry. See Idempotency.
curl --request POST \
--url https://{your-subdomain}.neetoengage.com/api/external/v1/feature_requests/{id}/comments \
--header 'Accept: <accept>' \
--header 'Content-Type: application/json' \
--header 'X-Api-Key: <x-api-key>' \
--data '
{
"comment": {
"content": "<p>We are working on this.</p>"
},
"author_email": "oliver@example.com",
"notify_all_voters": false,
"operation_key": "support-ticket-4821-comment"
}
'const options = {
method: 'POST',
headers: {
'X-Api-Key': '<x-api-key>',
Accept: '<accept>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
comment: {content: '<p>We are working on this.</p>'},
author_email: 'oliver@example.com',
notify_all_voters: false,
operation_key: 'support-ticket-4821-comment'
})
};
fetch('https://{your-subdomain}.neetoengage.com/api/external/v1/feature_requests/{id}/comments', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://{your-subdomain}.neetoengage.com/api/external/v1/feature_requests/{id}/comments"
payload = {
"comment": { "content": "<p>We are working on this.</p>" },
"author_email": "oliver@example.com",
"notify_all_voters": False,
"operation_key": "support-ticket-4821-comment"
}
headers = {
"X-Api-Key": "<x-api-key>",
"Accept": "<accept>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"comment": {
"id": "0b9c4f1a-3e7d-4a62-b8f5-61d2c7a9e403",
"content": "<p>We are working on this.</p>",
"created_at": "2026-03-05T12:30:00Z"
},
"feature_request": {
"id": "5f0f3c2e-8d1b-4c53-9a6e-2b7d41c9e8a1",
"title": "Export roadmap as CSV",
"url": "https://spinkart.neetoengage.com/feature-requests/120-export-roadmap-as-csv",
"admin_url": "https://spinkart.neetoengage.com/admin/feature-requests/120-export-roadmap-as-csv",
"status": "Under consideration",
"track": "Backlog",
"votes_count": 15,
"created_at": "2026-03-02T10:15:30Z"
}
}{
"error": "Could not authenticate, invalid API Key"
}{
"error": "FeatureRequest does not exist."
}{
"error": "param is missing or the value is empty or invalid: content"
}{your-subdomain} with your workspace’s subdomain. Learn how to find your subdomain in Workspace subdomain.
Headers
API key. Refer to Authentication for more information.
Must be application/json.
application/json Path Parameters
The feature request's id (UUID) or its slug. The slug is the last segment of the feature request's admin URL, for example 120-export-roadmap-as-csv. Both are accepted.
Body
Email of the team member the comment is attributed to. If it does not match a team member, the comment is attributed to the workspace's oldest team member.
"oliver@example.com"
Email the comment to every subscribed voter.
false
Retry token. See Idempotency.
"support-ticket-4821-comment"
Response
The comment was created.
Hide child attributes
Hide child attributes
Unique identifier of the feature request.
"5f0f3c2e-8d1b-4c53-9a6e-2b7d41c9e8a1"
Title of the feature request. Public on the roadmap.
"Export roadmap as CSV"
Public URL of the feature request on the roadmap.
"https://spinkart.neetoengage.com/feature-requests/120-export-roadmap-as-csv"
URL of the feature request in the NeetoEngage admin panel.
"https://spinkart.neetoengage.com/admin/feature-requests/120-export-roadmap-as-csv"
Name of the public roadmap lane the feature request is shown in. null when the feature request's track does not map to a public lane.
"Under consideration"
Name of the track the feature request is on.
"Backlog"
Number of votes on the feature request.
1
Time the feature request was created.
"2026-03-02T10:15:30Z"