curl --request POST \
--url https://api.reply.io/v3/contact-accounts/{id}/notes \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"notes": "Renewal due in October; champion is the VP Sales"
}
'import requests
url = "https://api.reply.io/v3/contact-accounts/{id}/notes"
payload = { "notes": "Renewal due in October; champion is the VP Sales" }
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({notes: 'Renewal due in October; champion is the VP Sales'})
};
fetch('https://api.reply.io/v3/contact-accounts/{id}/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://api.reply.io/v3/contact-accounts/{id}/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([
'notes' => 'Renewal due in October; champion is the VP Sales'
]),
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.reply.io/v3/contact-accounts/{id}/notes"
payload := strings.NewReader("{\n \"notes\": \"Renewal due in October; champion is the VP Sales\"\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.reply.io/v3/contact-accounts/{id}/notes")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"notes\": \"Renewal due in October; champion is the VP Sales\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.reply.io/v3/contact-accounts/{id}/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 \"notes\": \"Renewal due in October; champion is the VP Sales\"\n}"
response = http.request(request)
puts response.read_body{
"id": 77,
"date": "2026-10-06T10:15:00+00:00",
"notes": "Renewal due in October; champion is the VP Sales",
"userId": 42,
"userName": "Jane Doe"
}Add a note to an account
Coming soon. This endpoint will be available by late October 2026.
contacts:operate scope (or a broader one that includes it).
Record company-level context on an account — CRM facts, funding news, research — so your team and later agent runs can read it back. Every call appends a new note; existing notes are never changed. Returns the stored note with its id.
curl --request POST \
--url https://api.reply.io/v3/contact-accounts/{id}/notes \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"notes": "Renewal due in October; champion is the VP Sales"
}
'import requests
url = "https://api.reply.io/v3/contact-accounts/{id}/notes"
payload = { "notes": "Renewal due in October; champion is the VP Sales" }
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({notes: 'Renewal due in October; champion is the VP Sales'})
};
fetch('https://api.reply.io/v3/contact-accounts/{id}/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://api.reply.io/v3/contact-accounts/{id}/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([
'notes' => 'Renewal due in October; champion is the VP Sales'
]),
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.reply.io/v3/contact-accounts/{id}/notes"
payload := strings.NewReader("{\n \"notes\": \"Renewal due in October; champion is the VP Sales\"\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.reply.io/v3/contact-accounts/{id}/notes")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"notes\": \"Renewal due in October; champion is the VP Sales\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.reply.io/v3/contact-accounts/{id}/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 \"notes\": \"Renewal due in October; champion is the VP Sales\"\n}"
response = http.request(request)
puts response.read_body{
"id": 77,
"date": "2026-10-06T10:15:00+00:00",
"notes": "Renewal due in October; champion is the VP Sales",
"userId": 42,
"userName": "Jane Doe"
}Authorizations
Authenticate every request with a Bearer token. Pass your Reply API key in the
Authorization header:
Authorization: Bearer <your-api-key>
Get your API key from the Reply dashboard: Settings → API Key.
Path Parameters
Account ID
Body
Body for recording a note on an account
Note text. Leading and trailing whitespace is trimmed; the trimmed text must be 1 to 512 characters.
1 - 512Response
Note created. The Location header points at the new note.
A free-text note recorded on an account
Unique identifier of the note
When the note was written, in UTC
Note text
512ID of the user who wrote the note. For notes written through the API this is the owner of the API key.
Display name of the user who wrote the note