curl --request GET \
--url https://api.affinity.co/v2/lists/{listId}/list-entries/{listEntryId}/field-value-changes \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.affinity.co/v2/lists/{listId}/list-entries/{listEntryId}/field-value-changes"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.affinity.co/v2/lists/{listId}/list-entries/{listEntryId}/field-value-changes', 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/lists/{listId}/list-entries/{listEntryId}/field-value-changes",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.affinity.co/v2/lists/{listId}/list-entries/{listEntryId}/field-value-changes"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.affinity.co/v2/lists/{listId}/list-entries/{listEntryId}/field-value-changes")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.affinity.co/v2/lists/{listId}/list-entries/{listEntryId}/field-value-changes")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"data": [
{
"id": 42,
"field": {
"id": "field-1234",
"entityType": "company",
"name": "Stage",
"type": "global"
},
"entity": {
"id": 1
},
"listEntry": {
"id": 1,
"listId": 1
},
"changer": {
"id": 1,
"firstName": "John",
"lastName": "Smith",
"emailAddress": "john.smith@contoso.com"
},
"changedAt": "2024-06-01T12:00:00Z",
"actionType": "update",
"type": "company",
"value": {
"referenceType": "entity",
"id": 1,
"name": "Horizon Technologies",
"domain": "horizontech.com"
}
}
],
"pagination": {
"prevUrl": "https://api.affinity.co/v2/foo?cursor=ICAgICAgYmVmb3JlOjo6Nw",
"nextUrl": "https://api.affinity.co/v2/foo?cursor=ICAgICAgIGFmdGVyOjo6NA"
}
}{
"errors": [
{
"code": "bad-request",
"message": "<string>"
}
]
}{
"errors": [
{
"code": "authorization",
"message": "<string>"
}
]
}{
"errors": [
{
"code": "not-found",
"message": "<string>"
}
]
}{
"errors": [
{
"code": "authentication",
"message": "<string>"
}
]
}Get Field Value Changes on a List Entry
Paginate through the historical value changes on the fields of a List Entry.
For an overview of field value changes, including which fields support change tracking and how the action types behave, see Field Value Changes.
Each change includes who made the change, when it occurred, the action that was performed, and
the value that was set. Changes are sorted by changedAt in ascending order (oldest first).
You can filter field value changes using the filter query parameter. The filter parameter is a string that
you can specify conditions based on the following properties.
| Property Name | Type | Description | Allowed Operators | Examples |
|---|---|---|---|---|
field.id | text | = | field.id=field-1234 | |
changedAt | datetime | When the change was made. | >, <, >=, <= | changedAt>2026-01-01T00:00:00Z |
changer.id | int64 | The person who made the change. | = | changer.id=1234 |
actionType | text | The type of change (add, update, delete) | = | actionType=add |
curl --request GET \
--url https://api.affinity.co/v2/lists/{listId}/list-entries/{listEntryId}/field-value-changes \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.affinity.co/v2/lists/{listId}/list-entries/{listEntryId}/field-value-changes"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.affinity.co/v2/lists/{listId}/list-entries/{listEntryId}/field-value-changes', 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/lists/{listId}/list-entries/{listEntryId}/field-value-changes",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.affinity.co/v2/lists/{listId}/list-entries/{listEntryId}/field-value-changes"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.affinity.co/v2/lists/{listId}/list-entries/{listEntryId}/field-value-changes")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.affinity.co/v2/lists/{listId}/list-entries/{listEntryId}/field-value-changes")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"data": [
{
"id": 42,
"field": {
"id": "field-1234",
"entityType": "company",
"name": "Stage",
"type": "global"
},
"entity": {
"id": 1
},
"listEntry": {
"id": 1,
"listId": 1
},
"changer": {
"id": 1,
"firstName": "John",
"lastName": "Smith",
"emailAddress": "john.smith@contoso.com"
},
"changedAt": "2024-06-01T12:00:00Z",
"actionType": "update",
"type": "company",
"value": {
"referenceType": "entity",
"id": 1,
"name": "Horizon Technologies",
"domain": "horizontech.com"
}
}
],
"pagination": {
"prevUrl": "https://api.affinity.co/v2/foo?cursor=ICAgICAgYmVmb3JlOjo6Nw",
"nextUrl": "https://api.affinity.co/v2/foo?cursor=ICAgICAgIGFmdGVyOjo6NA"
}
}{
"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
List ID
1 <= x <= 9007199254740991List Entry ID
1 <= x <= 9007199254740991Query Parameters
Filter options
Cursor for the next or previous page
"ICAgICAgYmVmb3JlOjo6Nw"
Number of items to include in the page
1 <= x <= 10010
Response
OK
The field value changes for this page
100- fieldValueChanges.CompanyValueChange
- fieldValueChanges.CompanyMultiValueChange
- fieldValueChanges.DatetimeValueChange
- fieldValueChanges.DropdownValueChange
- fieldValueChanges.DropdownMultiValueChange
- fieldValueChanges.FilterableTextValueChange
- fieldValueChanges.FilterableTextMultiValueChange
- fieldValueChanges.LocationValueChange
- fieldValueChanges.LocationMultiValueChange
- fieldValueChanges.NumberValueChange
- fieldValueChanges.NumberMultiValueChange
- fieldValueChanges.PersonValueChange
- fieldValueChanges.PersonMultiValueChange
- fieldValueChanges.RankedDropdownValueChange
- fieldValueChanges.TextValueChange
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Was this page helpful?