curl --request POST \
--url https://api.affinity.co/v2/reminders \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"owner": {
"id": 1
},
"entity": {
"type": "company",
"id": 1
},
"type": "one-time",
"dueDate": "2026-06-01T17:00:00Z",
"content": "Follow up about the funding round"
}
'import requests
url = "https://api.affinity.co/v2/reminders"
payload = {
"owner": { "id": 1 },
"entity": {
"type": "company",
"id": 1
},
"type": "one-time",
"dueDate": "2026-06-01T17:00:00Z",
"content": "Follow up about the funding round"
}
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({
owner: {id: 1},
entity: {type: 'company', id: 1},
type: 'one-time',
dueDate: '2026-06-01T17:00:00Z',
content: 'Follow up about the funding round'
})
};
fetch('https://api.affinity.co/v2/reminders', 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",
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([
'owner' => [
'id' => 1
],
'entity' => [
'type' => 'company',
'id' => 1
],
'type' => 'one-time',
'dueDate' => '2026-06-01T17:00:00Z',
'content' => 'Follow up about the funding round'
]),
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"
payload := strings.NewReader("{\n \"owner\": {\n \"id\": 1\n },\n \"entity\": {\n \"type\": \"company\",\n \"id\": 1\n },\n \"type\": \"one-time\",\n \"dueDate\": \"2026-06-01T17:00:00Z\",\n \"content\": \"Follow up about the funding round\"\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")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"owner\": {\n \"id\": 1\n },\n \"entity\": {\n \"type\": \"company\",\n \"id\": 1\n },\n \"type\": \"one-time\",\n \"dueDate\": \"2026-06-01T17:00:00Z\",\n \"content\": \"Follow up about the funding round\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.affinity.co/v2/reminders")
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 \"owner\": {\n \"id\": 1\n },\n \"entity\": {\n \"type\": \"company\",\n \"id\": 1\n },\n \"type\": \"one-time\",\n \"dueDate\": \"2026-06-01T17:00:00Z\",\n \"content\": \"Follow up about the funding round\"\n}"
response = http.request(request)
puts response.read_body{
"id": 1,
"content": "Follow up about the funding round",
"dueDate": "2026-06-01T17:00:00Z",
"creator": {
"id": 1
},
"owner": {
"id": 1
},
"completer": {
"id": 1
},
"company": {
"id": 1
},
"person": {
"id": 1
},
"opportunity": {
"id": 1
},
"createdAt": "2023-01-01T00:00:00Z",
"updatedAt": "2023-01-01T00:00:00Z",
"type": "one-time",
"status": "active",
"completedAt": "2023-01-01T00:00:00Z",
"recurrence": null
}{
"errors": [
{
"code": "bad-request",
"message": "<string>"
}
]
}{
"errors": [
{
"code": "authorization",
"message": "<string>"
}
]
}{
"errors": [
{
"code": "not-found",
"message": "<string>"
}
]
}{
"errors": [
{
"code": "authentication",
"message": "<string>"
}
]
}Create a Reminder
Creates a new Reminder. Exactly one of company, person, or opportunity must be provided.
The creator of the new reminder is the user associated with the API key.
curl --request POST \
--url https://api.affinity.co/v2/reminders \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"owner": {
"id": 1
},
"entity": {
"type": "company",
"id": 1
},
"type": "one-time",
"dueDate": "2026-06-01T17:00:00Z",
"content": "Follow up about the funding round"
}
'import requests
url = "https://api.affinity.co/v2/reminders"
payload = {
"owner": { "id": 1 },
"entity": {
"type": "company",
"id": 1
},
"type": "one-time",
"dueDate": "2026-06-01T17:00:00Z",
"content": "Follow up about the funding round"
}
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({
owner: {id: 1},
entity: {type: 'company', id: 1},
type: 'one-time',
dueDate: '2026-06-01T17:00:00Z',
content: 'Follow up about the funding round'
})
};
fetch('https://api.affinity.co/v2/reminders', 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",
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([
'owner' => [
'id' => 1
],
'entity' => [
'type' => 'company',
'id' => 1
],
'type' => 'one-time',
'dueDate' => '2026-06-01T17:00:00Z',
'content' => 'Follow up about the funding round'
]),
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"
payload := strings.NewReader("{\n \"owner\": {\n \"id\": 1\n },\n \"entity\": {\n \"type\": \"company\",\n \"id\": 1\n },\n \"type\": \"one-time\",\n \"dueDate\": \"2026-06-01T17:00:00Z\",\n \"content\": \"Follow up about the funding round\"\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")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"owner\": {\n \"id\": 1\n },\n \"entity\": {\n \"type\": \"company\",\n \"id\": 1\n },\n \"type\": \"one-time\",\n \"dueDate\": \"2026-06-01T17:00:00Z\",\n \"content\": \"Follow up about the funding round\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.affinity.co/v2/reminders")
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 \"owner\": {\n \"id\": 1\n },\n \"entity\": {\n \"type\": \"company\",\n \"id\": 1\n },\n \"type\": \"one-time\",\n \"dueDate\": \"2026-06-01T17:00:00Z\",\n \"content\": \"Follow up about the funding round\"\n}"
response = http.request(request)
puts response.read_body{
"id": 1,
"content": "Follow up about the funding round",
"dueDate": "2026-06-01T17:00:00Z",
"creator": {
"id": 1
},
"owner": {
"id": 1
},
"completer": {
"id": 1
},
"company": {
"id": 1
},
"person": {
"id": 1
},
"opportunity": {
"id": 1
},
"createdAt": "2023-01-01T00:00:00Z",
"updatedAt": "2023-01-01T00:00:00Z",
"type": "one-time",
"status": "active",
"completedAt": "2023-01-01T00:00:00Z",
"recurrence": null
}{
"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.
Body
- reminders.OneTimeReminderToBeCreated
- reminders.RecurringReminderToBeCreated
Request body for creating a one-time reminder. dueDate is required.
The person responsible for the reminder. Must reference an internal user.
Show child attributes
Show child attributes
The entity the reminder is attached to. Exactly one of company, person, or opportunity can be tagged on a reminder — the variant is selected by the type discriminator.
- reminders.TaggedCompany
- reminders.TaggedPerson
- reminders.TaggedOpportunity
Show child attributes
Show child attributes
Discriminator. Always one-time for this variant.
"one-time""one-time"
When the reminder is due.
"2026-06-01T17:00:00Z"
Free-form text attached to the reminder.
"Follow up about the funding round"
Response
Created
- reminders.OneTimeReminder
- reminders.RecurringReminder
A reminder that fires once on dueDate.
The reminder's unique identifier
1 <= x <= 90071992547409911
Free-form text attached to the reminder.
"Follow up about the funding round"
When the reminder is next due.
"2026-06-01T17:00:00Z"
The person who created the reminder.
Show child attributes
Show child attributes
The person responsible for acting on the reminder.
Show child attributes
Show child attributes
The person who completed the reminder. null when the reminder is not completed. May be set on a recurring reminder even when completedAt is null.
Show child attributes
Show child attributes
The tagged company. At most one of company, person, or opportunity is non-null on any given reminder.
Show child attributes
Show child attributes
The tagged person. At most one of company, person, or opportunity is non-null on any given reminder.
Show child attributes
Show child attributes
The tagged opportunity. At most one of company, person, or opportunity is non-null on any given reminder.
Show child attributes
Show child attributes
When the reminder was created.
"2023-01-01T00:00:00Z"
When the reminder was last updated. null if the reminder has never been updated.
"2023-01-01T00:00:00Z"
Discriminator. Always one-time for this variant.
"one-time""one-time"
Derived state. active if not completed and due in the future. overdue if not completed and due in the past. completed if completedAt is set.
active, overdue, completed "active"
When the reminder was completed. null if the reminder is not yet completed.
"2023-01-01T00:00:00Z"
Always null for one-time reminders.
Was this page helpful?