curl --request POST \
--url https://api.affinity.co/v2/reminders/{reminderId} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"content": "Follow up about the funding round",
"dueDate": "2026-06-01T17:00:00Z",
"completedAt": "2026-05-11T17:00:00Z",
"recurrence": {
"resetTrigger": "interaction",
"periodDays": 30
}
}
'import requests
url = "https://api.affinity.co/v2/reminders/{reminderId}"
payload = {
"content": "Follow up about the funding round",
"dueDate": "2026-06-01T17:00:00Z",
"completedAt": "2026-05-11T17:00:00Z",
"recurrence": {
"resetTrigger": "interaction",
"periodDays": 30
}
}
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({
content: 'Follow up about the funding round',
dueDate: '2026-06-01T17:00:00Z',
completedAt: '2026-05-11T17:00:00Z',
recurrence: {resetTrigger: 'interaction', periodDays: 30}
})
};
fetch('https://api.affinity.co/v2/reminders/{reminderId}', 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.affinity.co/v2/reminders/{reminderId}",
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([
'content' => 'Follow up about the funding round',
'dueDate' => '2026-06-01T17:00:00Z',
'completedAt' => '2026-05-11T17:00:00Z',
'recurrence' => [
'resetTrigger' => 'interaction',
'periodDays' => 30
]
]),
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.affinity.co/v2/reminders/{reminderId}"
payload := strings.NewReader("{\n \"content\": \"Follow up about the funding round\",\n \"dueDate\": \"2026-06-01T17:00:00Z\",\n \"completedAt\": \"2026-05-11T17:00:00Z\",\n \"recurrence\": {\n \"resetTrigger\": \"interaction\",\n \"periodDays\": 30\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.affinity.co/v2/reminders/{reminderId}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"content\": \"Follow up about the funding round\",\n \"dueDate\": \"2026-06-01T17:00:00Z\",\n \"completedAt\": \"2026-05-11T17:00:00Z\",\n \"recurrence\": {\n \"resetTrigger\": \"interaction\",\n \"periodDays\": 30\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.affinity.co/v2/reminders/{reminderId}")
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 \"content\": \"Follow up about the funding round\",\n \"dueDate\": \"2026-06-01T17:00:00Z\",\n \"completedAt\": \"2026-05-11T17:00:00Z\",\n \"recurrence\": {\n \"resetTrigger\": \"interaction\",\n \"periodDays\": 30\n }\n}"
response = http.request(request)
puts response.read_body{
"errors": [
{
"code": "bad-request",
"message": "<string>"
}
]
}{
"errors": [
{
"code": "authorization",
"message": "<string>"
}
]
}{
"errors": [
{
"code": "not-found",
"message": "<string>"
}
]
}{
"errors": [
{
"code": "authentication",
"message": "<string>"
}
]
}Update a Reminder
| ⚠️ This endpoint is currently in BETA |
|---|
Updates a Reminder. Only provided fields are changed; omitted fields keep their current value.
Setting completedAt marks the reminder complete (for recurring reminders, this advances
dueDate by recurrence.periodDays and completedAt remains null on the resource).
Setting completedAt to null marks the reminder incomplete and is rejected for recurring
reminders.
Only the reminder’s creator or owner may update it (including completing or uncompleting it).
curl --request POST \
--url https://api.affinity.co/v2/reminders/{reminderId} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"content": "Follow up about the funding round",
"dueDate": "2026-06-01T17:00:00Z",
"completedAt": "2026-05-11T17:00:00Z",
"recurrence": {
"resetTrigger": "interaction",
"periodDays": 30
}
}
'import requests
url = "https://api.affinity.co/v2/reminders/{reminderId}"
payload = {
"content": "Follow up about the funding round",
"dueDate": "2026-06-01T17:00:00Z",
"completedAt": "2026-05-11T17:00:00Z",
"recurrence": {
"resetTrigger": "interaction",
"periodDays": 30
}
}
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({
content: 'Follow up about the funding round',
dueDate: '2026-06-01T17:00:00Z',
completedAt: '2026-05-11T17:00:00Z',
recurrence: {resetTrigger: 'interaction', periodDays: 30}
})
};
fetch('https://api.affinity.co/v2/reminders/{reminderId}', 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.affinity.co/v2/reminders/{reminderId}",
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([
'content' => 'Follow up about the funding round',
'dueDate' => '2026-06-01T17:00:00Z',
'completedAt' => '2026-05-11T17:00:00Z',
'recurrence' => [
'resetTrigger' => 'interaction',
'periodDays' => 30
]
]),
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.affinity.co/v2/reminders/{reminderId}"
payload := strings.NewReader("{\n \"content\": \"Follow up about the funding round\",\n \"dueDate\": \"2026-06-01T17:00:00Z\",\n \"completedAt\": \"2026-05-11T17:00:00Z\",\n \"recurrence\": {\n \"resetTrigger\": \"interaction\",\n \"periodDays\": 30\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.affinity.co/v2/reminders/{reminderId}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"content\": \"Follow up about the funding round\",\n \"dueDate\": \"2026-06-01T17:00:00Z\",\n \"completedAt\": \"2026-05-11T17:00:00Z\",\n \"recurrence\": {\n \"resetTrigger\": \"interaction\",\n \"periodDays\": 30\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.affinity.co/v2/reminders/{reminderId}")
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 \"content\": \"Follow up about the funding round\",\n \"dueDate\": \"2026-06-01T17:00:00Z\",\n \"completedAt\": \"2026-05-11T17:00:00Z\",\n \"recurrence\": {\n \"resetTrigger\": \"interaction\",\n \"periodDays\": 30\n }\n}"
response = http.request(request)
puts response.read_body{
"errors": [
{
"code": "bad-request",
"message": "<string>"
}
]
}{
"errors": [
{
"code": "authorization",
"message": "<string>"
}
]
}{
"errors": [
{
"code": "not-found",
"message": "<string>"
}
]
}{
"errors": [
{
"code": "authentication",
"message": "<string>"
}
]
}Authorizations
A static Affinity API key, presented as a bearer token.
Path Parameters
Reminder ID
1 <= x <= 9007199254740991Body
Partial-update request body for a reminder. Only provided properties are updated. recurrence may only be sent when the reminder's existing type is recurring. Setting completedAt to a non-null value marks the reminder complete (for recurring reminders, this advances dueDate by recurrence.periodDays and completedAt remains null on the resource). Setting completedAt to null marks the reminder incomplete and is rejected for recurring reminders.
Free-form note attached to the reminder. Send null to clear.
"Follow up about the funding round"
New due date for the reminder.
"2026-06-01T17:00:00Z"
The new owner of the reminder. Must reference an internal user.
Show child attributes
Show child attributes
Set a value to mark the reminder complete. Send null to mark it incomplete (one-time reminders only). completer is populated from the API key's owning user.
"2026-05-11T17:00:00Z"
Update recurrence configuration. Only valid when the reminder's existing type is recurring. Send only the fields you want to change.
Show child attributes
Show child attributes
Response
No Content
Was this page helpful?