Archive a Contact
curl --request PUT \
--url https://api.virtuoussoftware.com/api/Contact/Archive/{contactId} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"archiveReason": "Optional reason for Archiving the contact"
}
'const options = {
method: 'PUT',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({archiveReason: 'Optional reason for Archiving the contact'})
};
fetch('https://api.virtuoussoftware.com/api/Contact/Archive/{contactId}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.virtuoussoftware.com/api/Contact/Archive/{contactId}"
payload = { "archiveReason": "Optional reason for Archiving the contact" }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)using RestSharp;
var options = new RestClientOptions("https://api.virtuoussoftware.com/api/Contact/Archive/{contactId}");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddHeader("Authorization", "Bearer <token>");
request.AddJsonBody("{\n \"archiveReason\": \"Optional reason for Archiving the contact\"\n}", false);
var response = await client.PutAsync(request);
Console.WriteLine("{0}", response.Content);
<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.virtuoussoftware.com/api/Contact/Archive/{contactId}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'archiveReason' => 'Optional reason for Archiving the contact'
]),
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;
}HttpResponse<String> response = Unirest.put("https://api.virtuoussoftware.com/api/Contact/Archive/{contactId}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"archiveReason\": \"Optional reason for Archiving the contact\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.virtuoussoftware.com/api/Contact/Archive/{contactId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"archiveReason\": \"Optional reason for Archiving the contact\"\n}"
response = http.request(request)
puts response.read_bodyconst url = 'https://api.virtuoussoftware.com/api/Contact/Archive/{contactId}';
const options = {
method: 'PUT',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({archiveReason: 'Optional reason for Archiving the contact'})
};
fetch(url, options)
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.error(err));{
"message": "Authorization has been denied for this request."
}{
"message": "You do not have permission to perform this action."
}{
"message": "Rate limit exceeded. Try again later."
}Contacts and Individuals
Archive a Contact
Archives the contact so it no longer appears in everyday lists and searches. Send an archiveReason to record why. Archived contacts are retained, along with their gifts and history, and can be restored with the Unarchive a Contact endpoint.
PUT
/
api
/
Contact
/
Archive
/
{contactId}
Archive a Contact
curl --request PUT \
--url https://api.virtuoussoftware.com/api/Contact/Archive/{contactId} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"archiveReason": "Optional reason for Archiving the contact"
}
'const options = {
method: 'PUT',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({archiveReason: 'Optional reason for Archiving the contact'})
};
fetch('https://api.virtuoussoftware.com/api/Contact/Archive/{contactId}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.virtuoussoftware.com/api/Contact/Archive/{contactId}"
payload = { "archiveReason": "Optional reason for Archiving the contact" }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)using RestSharp;
var options = new RestClientOptions("https://api.virtuoussoftware.com/api/Contact/Archive/{contactId}");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddHeader("Authorization", "Bearer <token>");
request.AddJsonBody("{\n \"archiveReason\": \"Optional reason for Archiving the contact\"\n}", false);
var response = await client.PutAsync(request);
Console.WriteLine("{0}", response.Content);
<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.virtuoussoftware.com/api/Contact/Archive/{contactId}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'archiveReason' => 'Optional reason for Archiving the contact'
]),
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;
}HttpResponse<String> response = Unirest.put("https://api.virtuoussoftware.com/api/Contact/Archive/{contactId}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"archiveReason\": \"Optional reason for Archiving the contact\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.virtuoussoftware.com/api/Contact/Archive/{contactId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"archiveReason\": \"Optional reason for Archiving the contact\"\n}"
response = http.request(request)
puts response.read_bodyconst url = 'https://api.virtuoussoftware.com/api/Contact/Archive/{contactId}';
const options = {
method: 'PUT',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({archiveReason: 'Optional reason for Archiving the contact'})
};
fetch(url, options)
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.error(err));{
"message": "Authorization has been denied for this request."
}{
"message": "You do not have permission to perform this action."
}{
"message": "Rate limit exceeded. Try again later."
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Path Parameters
(Required) The contact identifier.
Body
application/json
The reason the contact is being archived.
Response
OK
Last modified on August 11, 2026
Was this page helpful?
⌘I