Criar nota no post
curl --request POST \
--url https://post.chatclean.com.br/api/posts/{post}/notes \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"body": "Dá para trocar a imagem pela versão escura?"
}
'import requests
url = "https://post.chatclean.com.br/api/posts/{post}/notes"
payload = { "body": "Dá para trocar a imagem pela versão escura?" }
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({body: JSON.stringify('Dá para trocar a imagem pela versão escura?')})
};
fetch('https://post.chatclean.com.br/api/posts/{post}/notes', 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://post.chatclean.com.br/api/posts/{post}/notes",
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([
'body' => 'Dá para trocar a imagem pela versão escura?'
]),
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://post.chatclean.com.br/api/posts/{post}/notes"
payload := strings.NewReader("{\n \"body\": \"Dá para trocar a imagem pela versão escura?\"\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://post.chatclean.com.br/api/posts/{post}/notes")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"body\": \"Dá para trocar a imagem pela versão escura?\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://post.chatclean.com.br/api/posts/{post}/notes")
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 \"body\": \"Dá para trocar a imagem pela versão escura?\"\n}"
response = http.request(request)
puts response.read_body{
"id": "9d3c2a10-3b4c-4d5e-8f6a-7b8c9d0e1f2a",
"post_id": "9d3c1f2a-6b4e-4c8a-9f1e-2a7b5c8d0e41",
"body": "Dá para trocar a imagem pela versão escura?",
"author": {
"id": "9b1e2d3c-4f5a-4b6c-8d7e-9f0a1b2c3d4e",
"name": "Ana Souza",
"photo_url": "https://post.chatclean.com.br/storage/avatars/9b1e2d3c-4f5a-4b6c-8d7e-9f0a1b2c3d4e.jpg"
},
"created_at": "2026-11-06 14:02:45",
"updated_at": "2026-11-06 14:02:45"
}{
"message": "Unauthenticated."
}{
"message": "Active subscription required."
}{
"message": "<string>"
}{
"message": "<string>"
}{
"message": "<string>",
"errors": {}
}{
"name": "rate_limit_exceeded",
"message": "Rate limit exceeded. Please retry after 30 seconds."
}Notas de posts
Criar nota no post
Adiciona uma nota interna ao post, em nome do usuário da chave de API. Notas nunca são publicadas. Os outros membros do workspace recebem um e-mail sobre ela (a não ser que tenham desligado esse aviso nas preferências de notificação); num post aguardando aprovação, só os aprovadores e quem pediu a aprovação recebem.
POST
/
posts
/
{post}
/
notes
Criar nota no post
curl --request POST \
--url https://post.chatclean.com.br/api/posts/{post}/notes \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"body": "Dá para trocar a imagem pela versão escura?"
}
'import requests
url = "https://post.chatclean.com.br/api/posts/{post}/notes"
payload = { "body": "Dá para trocar a imagem pela versão escura?" }
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({body: JSON.stringify('Dá para trocar a imagem pela versão escura?')})
};
fetch('https://post.chatclean.com.br/api/posts/{post}/notes', 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://post.chatclean.com.br/api/posts/{post}/notes",
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([
'body' => 'Dá para trocar a imagem pela versão escura?'
]),
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://post.chatclean.com.br/api/posts/{post}/notes"
payload := strings.NewReader("{\n \"body\": \"Dá para trocar a imagem pela versão escura?\"\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://post.chatclean.com.br/api/posts/{post}/notes")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"body\": \"Dá para trocar a imagem pela versão escura?\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://post.chatclean.com.br/api/posts/{post}/notes")
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 \"body\": \"Dá para trocar a imagem pela versão escura?\"\n}"
response = http.request(request)
puts response.read_body{
"id": "9d3c2a10-3b4c-4d5e-8f6a-7b8c9d0e1f2a",
"post_id": "9d3c1f2a-6b4e-4c8a-9f1e-2a7b5c8d0e41",
"body": "Dá para trocar a imagem pela versão escura?",
"author": {
"id": "9b1e2d3c-4f5a-4b6c-8d7e-9f0a1b2c3d4e",
"name": "Ana Souza",
"photo_url": "https://post.chatclean.com.br/storage/avatars/9b1e2d3c-4f5a-4b6c-8d7e-9f0a1b2c3d4e.jpg"
},
"created_at": "2026-11-06 14:02:45",
"updated_at": "2026-11-06 14:02:45"
}{
"message": "Unauthenticated."
}{
"message": "Active subscription required."
}{
"message": "<string>"
}{
"message": "<string>"
}{
"message": "<string>",
"errors": {}
}{
"name": "rate_limit_exceeded",
"message": "Rate limit exceeded. Please retry after 30 seconds."
}Authorizations
Chave de API do workspace, criada em Configurações > Chaves de API.
Path Parameters
Id do post. Um post de outro workspace devolve 404.
Body
application/json
Texto da nota, até 2000 caracteres.
Maximum string length:
2000Response
A nota criada.