Legacy (v0)
Create a media comment
Adds a comment to a media item on behalf of a contact. The contact is matched by contact.email within the company, or created with contact.name when no match exists. Returns the new comment. Requires a Bearer token for a company admin, rep, or customer of the company; admin users, company API tokens, and partner tokens need the media update permission. Returns 400 with an error message when the comment cannot be saved, and 404 when the media item does not belong to the company.
POST
/
api
/
media
/
{id}
/
comment
Create a media comment
curl --request POST \
--url https://api.fluid.app/api/media/{id}/comment \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"comment": {
"body": "Ordered a case for the Utica branch. Great paper!"
},
"contact": {
"name": "Holly Flax",
"email": "holly.flax@gmail.com"
}
}
'import requests
url = "https://api.fluid.app/api/media/{id}/comment"
payload = {
"comment": { "body": "Ordered a case for the Utica branch. Great paper!" },
"contact": {
"name": "Holly Flax",
"email": "holly.flax@gmail.com"
}
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
comment: {body: JSON.stringify('Ordered a case for the Utica branch. Great paper!')},
contact: {name: 'Holly Flax', email: 'holly.flax@gmail.com'}
})
};
fetch('https://api.fluid.app/api/media/{id}/comment', 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.fluid.app/api/media/{id}/comment",
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([
'comment' => [
'body' => 'Ordered a case for the Utica branch. Great paper!'
],
'contact' => [
'name' => 'Holly Flax',
'email' => 'holly.flax@gmail.com'
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"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://api.fluid.app/api/media/{id}/comment"
payload := strings.NewReader("{\n \"comment\": {\n \"body\": \"Ordered a case for the Utica branch. Great paper!\"\n },\n \"contact\": {\n \"name\": \"Holly Flax\",\n \"email\": \"holly.flax@gmail.com\"\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <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.fluid.app/api/media/{id}/comment")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"comment\": {\n \"body\": \"Ordered a case for the Utica branch. Great paper!\"\n },\n \"contact\": {\n \"name\": \"Holly Flax\",\n \"email\": \"holly.flax@gmail.com\"\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.fluid.app/api/media/{id}/comment")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"comment\": {\n \"body\": \"Ordered a case for the Utica branch. Great paper!\"\n },\n \"contact\": {\n \"name\": \"Holly Flax\",\n \"email\": \"holly.flax@gmail.com\"\n }\n}"
response = http.request(request)
puts response.read_body{
"id": 30518,
"body": "Ordered a case for the Utica branch. Great paper!",
"deleted_at": null,
"full_name": null,
"first_name": null,
"last_name": null,
"image_url": null,
"relateable_id": 48213,
"relateable_type": "Medium",
"likes": 0,
"replies": [],
"created_at": "2026-09-19T13:07:45Z",
"contact_id": 61842,
"user_id": null,
"liked": false,
"user": {},
"contact": {
"id": 61842,
"first_name": "Holly",
"last_name": "Flax",
"email": "holly.flax@gmail.com",
"company_id": 1405,
"status": "new",
"created_at": "2026-09-18T19:42:11Z",
"updated_at": "2026-09-18T19:42:11Z"
}
}{
"message": "<string>"
}Response
Success
A comment on a media item.
⌘I
Create a media comment
curl --request POST \
--url https://api.fluid.app/api/media/{id}/comment \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"comment": {
"body": "Ordered a case for the Utica branch. Great paper!"
},
"contact": {
"name": "Holly Flax",
"email": "holly.flax@gmail.com"
}
}
'import requests
url = "https://api.fluid.app/api/media/{id}/comment"
payload = {
"comment": { "body": "Ordered a case for the Utica branch. Great paper!" },
"contact": {
"name": "Holly Flax",
"email": "holly.flax@gmail.com"
}
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
comment: {body: JSON.stringify('Ordered a case for the Utica branch. Great paper!')},
contact: {name: 'Holly Flax', email: 'holly.flax@gmail.com'}
})
};
fetch('https://api.fluid.app/api/media/{id}/comment', 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.fluid.app/api/media/{id}/comment",
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([
'comment' => [
'body' => 'Ordered a case for the Utica branch. Great paper!'
],
'contact' => [
'name' => 'Holly Flax',
'email' => 'holly.flax@gmail.com'
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"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://api.fluid.app/api/media/{id}/comment"
payload := strings.NewReader("{\n \"comment\": {\n \"body\": \"Ordered a case for the Utica branch. Great paper!\"\n },\n \"contact\": {\n \"name\": \"Holly Flax\",\n \"email\": \"holly.flax@gmail.com\"\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <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.fluid.app/api/media/{id}/comment")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"comment\": {\n \"body\": \"Ordered a case for the Utica branch. Great paper!\"\n },\n \"contact\": {\n \"name\": \"Holly Flax\",\n \"email\": \"holly.flax@gmail.com\"\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.fluid.app/api/media/{id}/comment")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"comment\": {\n \"body\": \"Ordered a case for the Utica branch. Great paper!\"\n },\n \"contact\": {\n \"name\": \"Holly Flax\",\n \"email\": \"holly.flax@gmail.com\"\n }\n}"
response = http.request(request)
puts response.read_body{
"id": 30518,
"body": "Ordered a case for the Utica branch. Great paper!",
"deleted_at": null,
"full_name": null,
"first_name": null,
"last_name": null,
"image_url": null,
"relateable_id": 48213,
"relateable_type": "Medium",
"likes": 0,
"replies": [],
"created_at": "2026-09-19T13:07:45Z",
"contact_id": 61842,
"user_id": null,
"liked": false,
"user": {},
"contact": {
"id": 61842,
"first_name": "Holly",
"last_name": "Flax",
"email": "holly.flax@gmail.com",
"company_id": 1405,
"status": "new",
"created_at": "2026-09-18T19:42:11Z",
"updated_at": "2026-09-18T19:42:11Z"
}
}{
"message": "<string>"
}