cURL
curl --request POST \
--url https://api.finosu.com/customers/{id}/cancel-communications \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.finosu.com/customers/{id}/cancel-communications"
headers = {"X-API-Key": "<api-key>"}
response = requests.post(url, headers=headers)
print(response.text)const options = {method: 'POST', headers: {'X-API-Key': '<api-key>'}};
fetch('https://api.finosu.com/customers/{id}/cancel-communications', 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.finosu.com/customers/{id}/cancel-communications",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_HTTPHEADER => [
"X-API-Key: <api-key>"
],
]);
$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.finosu.com/customers/{id}/cancel-communications"
req, _ := http.NewRequest("POST", url, nil)
req.Header.Add("X-API-Key", "<api-key>")
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.finosu.com/customers/{id}/cancel-communications")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.finosu.com/customers/{id}/cancel-communications")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-API-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"id": "<string>",
"cancelledTasks": 0,
"cancelledCalls": 3,
"cancelledEmails": 2,
"cancelledSms": 1,
"cancelledCallSchedules": 1,
"cancelledEmailSchedules": 1,
"cancelledSmsSchedules": 0,
"totalCancelled": 13
}{
"detail": "<string>"
}{
"detail": "<string>"
}Customers
Cancel All Communications
Cancels all pending communications for a customer: scheduled calls, scheduled emails, scheduled SMS, and all active schedules
POST
/
customers
/
{id}
/
cancel-communications
cURL
curl --request POST \
--url https://api.finosu.com/customers/{id}/cancel-communications \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.finosu.com/customers/{id}/cancel-communications"
headers = {"X-API-Key": "<api-key>"}
response = requests.post(url, headers=headers)
print(response.text)const options = {method: 'POST', headers: {'X-API-Key': '<api-key>'}};
fetch('https://api.finosu.com/customers/{id}/cancel-communications', 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.finosu.com/customers/{id}/cancel-communications",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_HTTPHEADER => [
"X-API-Key: <api-key>"
],
]);
$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.finosu.com/customers/{id}/cancel-communications"
req, _ := http.NewRequest("POST", url, nil)
req.Header.Add("X-API-Key", "<api-key>")
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.finosu.com/customers/{id}/cancel-communications")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.finosu.com/customers/{id}/cancel-communications")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-API-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"id": "<string>",
"cancelledTasks": 0,
"cancelledCalls": 3,
"cancelledEmails": 2,
"cancelledSms": 1,
"cancelledCallSchedules": 1,
"cancelledEmailSchedules": 1,
"cancelledSmsSchedules": 0,
"totalCancelled": 13
}{
"detail": "<string>"
}{
"detail": "<string>"
}Overview
This endpoint stops outreach only. It cancels the customer’s pending communications and schedules, but their loans keep their servicing status and scheduled payments are not touched. To stop servicing entirely — including payments and the loan’s servicing status — use Cancel Loan Servicing or Cancel Customer Servicing in the collections API. To close an enrolled origination application, use Close Origination. This endpoint cancels all pending communications for a customer, including:- Scheduled Calls: All pending scheduled calls linked to the customer’s loans or call schedules
- Scheduled Emails: All pending scheduled emails
- Scheduled SMS: All pending scheduled SMS messages
- Call Schedules: All active loan call schedules
- Email Schedules: All active loan email schedules
- SMS Schedules: All active loan SMS schedules
Use Cases
- Stop all outreach to a customer who has requested no contact
- Cancel communications when a customer’s account is closed
- Clear all pending communications before setting up a new schedule
Response
The response includes a count for each type of cancelled item and atotalCancelled sum, allowing you to verify what was cancelled.
cancelledTasks is always 0: tasks are no longer cancelled directly, and
cancelling the pending scheduled calls above covers them. The field remains in
the response for compatibility.
Because only pending items are cancelled, repeating the request returns zero
counts and makes no further changes. An unknown customer id returns 404.Response
All communications canceled for customer