Update a CRM event
Partially updates a CRM event. Only metadata, optional new attachmentUploadTokens[], and optional deletedAttachmentIds[] are mutable; type and target fields are forbidden on update. Attachments are not supported for the document_linked type. Metadata field availability is documented directly on metadata.content, metadata.email, metadata.personName, metadata.phoneNumber, metadata.documentType, and metadata.documentId.
curl --request PATCH \
--url https://app.fintoro.sk/api/public/v1/contact-activity-logs/{contactActivityLog} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"metadata": {
"content": "Follow-up call summary",
"email": "crm@example.test",
"personName": "John Caller",
"phoneNumber": "+421900000000",
"documentType": "invoice",
"documentId": 301
},
"attachmentUploadTokens": [
"eyJpdiI6Ik9wYXF1ZS1Ub2tlbi0xIn0="
],
"deletedAttachmentIds": [
9001
]
}
'import requests
url = "https://app.fintoro.sk/api/public/v1/contact-activity-logs/{contactActivityLog}"
payload = {
"metadata": {
"content": "Follow-up call summary",
"email": "crm@example.test",
"personName": "John Caller",
"phoneNumber": "+421900000000",
"documentType": "invoice",
"documentId": 301
},
"attachmentUploadTokens": ["eyJpdiI6Ik9wYXF1ZS1Ub2tlbi0xIn0="],
"deletedAttachmentIds": [9001]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
metadata: {
content: 'Follow-up call summary',
email: 'crm@example.test',
personName: 'John Caller',
phoneNumber: '+421900000000',
documentType: 'invoice',
documentId: 301
},
attachmentUploadTokens: ['eyJpdiI6Ik9wYXF1ZS1Ub2tlbi0xIn0='],
deletedAttachmentIds: [9001]
})
};
fetch('https://app.fintoro.sk/api/public/v1/contact-activity-logs/{contactActivityLog}', 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://app.fintoro.sk/api/public/v1/contact-activity-logs/{contactActivityLog}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'metadata' => [
'content' => 'Follow-up call summary',
'email' => 'crm@example.test',
'personName' => 'John Caller',
'phoneNumber' => '+421900000000',
'documentType' => 'invoice',
'documentId' => 301
],
'attachmentUploadTokens' => [
'eyJpdiI6Ik9wYXF1ZS1Ub2tlbi0xIn0='
],
'deletedAttachmentIds' => [
9001
]
]),
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://app.fintoro.sk/api/public/v1/contact-activity-logs/{contactActivityLog}"
payload := strings.NewReader("{\n \"metadata\": {\n \"content\": \"Follow-up call summary\",\n \"email\": \"crm@example.test\",\n \"personName\": \"John Caller\",\n \"phoneNumber\": \"+421900000000\",\n \"documentType\": \"invoice\",\n \"documentId\": 301\n },\n \"attachmentUploadTokens\": [\n \"eyJpdiI6Ik9wYXF1ZS1Ub2tlbi0xIn0=\"\n ],\n \"deletedAttachmentIds\": [\n 9001\n ]\n}")
req, _ := http.NewRequest("PATCH", 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.patch("https://app.fintoro.sk/api/public/v1/contact-activity-logs/{contactActivityLog}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"metadata\": {\n \"content\": \"Follow-up call summary\",\n \"email\": \"crm@example.test\",\n \"personName\": \"John Caller\",\n \"phoneNumber\": \"+421900000000\",\n \"documentType\": \"invoice\",\n \"documentId\": 301\n },\n \"attachmentUploadTokens\": [\n \"eyJpdiI6Ik9wYXF1ZS1Ub2tlbi0xIn0=\"\n ],\n \"deletedAttachmentIds\": [\n 9001\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.fintoro.sk/api/public/v1/contact-activity-logs/{contactActivityLog}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"metadata\": {\n \"content\": \"Follow-up call summary\",\n \"email\": \"crm@example.test\",\n \"personName\": \"John Caller\",\n \"phoneNumber\": \"+421900000000\",\n \"documentType\": \"invoice\",\n \"documentId\": 301\n },\n \"attachmentUploadTokens\": [\n \"eyJpdiI6Ik9wYXF1ZS1Ub2tlbi0xIn0=\"\n ],\n \"deletedAttachmentIds\": [\n 9001\n ]\n}"
response = http.request(request)
puts response.read_body{
"id": 551,
"type": "note",
"metadata": {
"content": "Follow-up call summary",
"email": "crm@example.test",
"personName": "John Caller",
"phoneNumber": "+421900000000",
"documentNumberSnapshot": "20260001",
"documentPriceSnapshot": 121,
"documentCurrencySnapshot": {
"id": 1,
"symbol": "EUR",
"name": "Euro",
"mark": "€"
},
"paidAmount": 25.5,
"relatedDocument": {
"documentType": "invoice",
"documentId": 301,
"name": "Invoice 20260001",
"number": "20260001",
"issueDate": "2026-03-10",
"totalWithVat": 121,
"currency": {
"id": 1,
"symbol": "EUR",
"name": "Euro",
"mark": "€"
}
}
},
"attachments": [
{
"id": 9001,
"name": "note.pdf",
"mimeType": "application/pdf",
"url": "https://cdn.fintoro.sk/contact-activity-attachments/note.pdf"
}
],
"businessCaseId": 501,
"clientId": 101,
"supplierId": 151,
"createdAt": "2026-03-10T10:00:00+01:00",
"updatedAt": "2026-03-10T10:30:00+01:00"
}{
"message": "This action is unauthorized."
}{
"message": "No query results for model."
}{
"message": "The given data was invalid.",
"errors": {}
}{
"message": "Too Many Attempts."
}{
"message": "Server Error"
}{
"message": "Service Unavailable"
}Authorizations
Bearer token created for a specific company in Integrations → API.
Path Parameters
Contact activity ID.
551
Body
Payload for updating a CRM event. Only metadata, optional new attachmentUploadTokens[], and optional deletedAttachmentIds[] are mutable. type, businessCaseId, clientId, and supplierId are forbidden on update.
Type-dependent payload for the existing CRM event type. Do not send snapshot fields or relatedDocument; those are computed or persisted by the backend.
Show child attributes
Show child attributes
["eyJpdiI6Ik9wYXF1ZS1Ub2tlbi0xIn0="]
[9001]
Response
CRM event updated.
Unified CRM event.
Internal CRM event ID.
551
CRM event type.
note, email, phone_call, document_linked, document_created, document_updated, document_deleted, document_payment_added "note"
CRM event metadata prepared for the Fintoro API response.
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Business case ID when the activity is linked to a business case.
501
Client ID when the activity is linked directly to a client outside a business case.
101
Supplier ID when the activity is linked directly to a supplier outside a business case.
151
CRM event creation timestamp.
"2026-03-10T10:00:00+01:00"
CRM event last update timestamp.
"2026-03-10T10:30:00+01:00"
curl --request PATCH \
--url https://app.fintoro.sk/api/public/v1/contact-activity-logs/{contactActivityLog} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"metadata": {
"content": "Follow-up call summary",
"email": "crm@example.test",
"personName": "John Caller",
"phoneNumber": "+421900000000",
"documentType": "invoice",
"documentId": 301
},
"attachmentUploadTokens": [
"eyJpdiI6Ik9wYXF1ZS1Ub2tlbi0xIn0="
],
"deletedAttachmentIds": [
9001
]
}
'import requests
url = "https://app.fintoro.sk/api/public/v1/contact-activity-logs/{contactActivityLog}"
payload = {
"metadata": {
"content": "Follow-up call summary",
"email": "crm@example.test",
"personName": "John Caller",
"phoneNumber": "+421900000000",
"documentType": "invoice",
"documentId": 301
},
"attachmentUploadTokens": ["eyJpdiI6Ik9wYXF1ZS1Ub2tlbi0xIn0="],
"deletedAttachmentIds": [9001]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
metadata: {
content: 'Follow-up call summary',
email: 'crm@example.test',
personName: 'John Caller',
phoneNumber: '+421900000000',
documentType: 'invoice',
documentId: 301
},
attachmentUploadTokens: ['eyJpdiI6Ik9wYXF1ZS1Ub2tlbi0xIn0='],
deletedAttachmentIds: [9001]
})
};
fetch('https://app.fintoro.sk/api/public/v1/contact-activity-logs/{contactActivityLog}', 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://app.fintoro.sk/api/public/v1/contact-activity-logs/{contactActivityLog}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'metadata' => [
'content' => 'Follow-up call summary',
'email' => 'crm@example.test',
'personName' => 'John Caller',
'phoneNumber' => '+421900000000',
'documentType' => 'invoice',
'documentId' => 301
],
'attachmentUploadTokens' => [
'eyJpdiI6Ik9wYXF1ZS1Ub2tlbi0xIn0='
],
'deletedAttachmentIds' => [
9001
]
]),
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://app.fintoro.sk/api/public/v1/contact-activity-logs/{contactActivityLog}"
payload := strings.NewReader("{\n \"metadata\": {\n \"content\": \"Follow-up call summary\",\n \"email\": \"crm@example.test\",\n \"personName\": \"John Caller\",\n \"phoneNumber\": \"+421900000000\",\n \"documentType\": \"invoice\",\n \"documentId\": 301\n },\n \"attachmentUploadTokens\": [\n \"eyJpdiI6Ik9wYXF1ZS1Ub2tlbi0xIn0=\"\n ],\n \"deletedAttachmentIds\": [\n 9001\n ]\n}")
req, _ := http.NewRequest("PATCH", 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.patch("https://app.fintoro.sk/api/public/v1/contact-activity-logs/{contactActivityLog}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"metadata\": {\n \"content\": \"Follow-up call summary\",\n \"email\": \"crm@example.test\",\n \"personName\": \"John Caller\",\n \"phoneNumber\": \"+421900000000\",\n \"documentType\": \"invoice\",\n \"documentId\": 301\n },\n \"attachmentUploadTokens\": [\n \"eyJpdiI6Ik9wYXF1ZS1Ub2tlbi0xIn0=\"\n ],\n \"deletedAttachmentIds\": [\n 9001\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.fintoro.sk/api/public/v1/contact-activity-logs/{contactActivityLog}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"metadata\": {\n \"content\": \"Follow-up call summary\",\n \"email\": \"crm@example.test\",\n \"personName\": \"John Caller\",\n \"phoneNumber\": \"+421900000000\",\n \"documentType\": \"invoice\",\n \"documentId\": 301\n },\n \"attachmentUploadTokens\": [\n \"eyJpdiI6Ik9wYXF1ZS1Ub2tlbi0xIn0=\"\n ],\n \"deletedAttachmentIds\": [\n 9001\n ]\n}"
response = http.request(request)
puts response.read_body{
"id": 551,
"type": "note",
"metadata": {
"content": "Follow-up call summary",
"email": "crm@example.test",
"personName": "John Caller",
"phoneNumber": "+421900000000",
"documentNumberSnapshot": "20260001",
"documentPriceSnapshot": 121,
"documentCurrencySnapshot": {
"id": 1,
"symbol": "EUR",
"name": "Euro",
"mark": "€"
},
"paidAmount": 25.5,
"relatedDocument": {
"documentType": "invoice",
"documentId": 301,
"name": "Invoice 20260001",
"number": "20260001",
"issueDate": "2026-03-10",
"totalWithVat": 121,
"currency": {
"id": 1,
"symbol": "EUR",
"name": "Euro",
"mark": "€"
}
}
},
"attachments": [
{
"id": 9001,
"name": "note.pdf",
"mimeType": "application/pdf",
"url": "https://cdn.fintoro.sk/contact-activity-attachments/note.pdf"
}
],
"businessCaseId": 501,
"clientId": 101,
"supplierId": 151,
"createdAt": "2026-03-10T10:00:00+01:00",
"updatedAt": "2026-03-10T10:30:00+01:00"
}{
"message": "This action is unauthorized."
}{
"message": "No query results for model."
}{
"message": "The given data was invalid.",
"errors": {}
}{
"message": "Too Many Attempts."
}{
"message": "Server Error"
}{
"message": "Service Unavailable"
}
