curl --request POST \
--url https://api.virtuoussoftware.com/api/Contact \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"contactType": "<string>",
"referenceSource": "<string>",
"referenceId": "<string>",
"name": "<string>",
"informalName": "<string>",
"description": "<string>",
"website": "<string>",
"maritalStatus": "<string>",
"anniversaryMonth": "<integer>",
"anniversaryDay": "<integer>",
"anniversaryYear": "<integer>",
"originSegmentId": "<integer>",
"isPrivate": "<boolean>",
"isArchived": "<boolean>",
"contactAddresses": [
{
"label": "<string>",
"address1": "<string>",
"address2": "<string>",
"city": "<string>",
"stateCode": "<string>",
"postal": "<string>",
"countryCode": "<string>",
"isPrimary": "<boolean>",
"latitude": "<double>",
"longitude": "<double>"
},
{
"label": "<string>",
"address1": "<string>",
"address2": "<string>",
"city": "<string>",
"stateCode": "<string>",
"postal": "<string>",
"countryCode": "<string>",
"isPrimary": "<boolean>",
"latitude": "<double>",
"longitude": "<double>"
}
],
"contactIndividuals": [
{
"firstName": "<string>",
"lastName": "<string>",
"prefix": "<string>",
"middleName": "<string>",
"suffix": "<string>",
"birthMonth": "<integer>",
"birthDay": "<integer>",
"birthYear": "<integer>",
"approximateAge": "<integer>",
"gender": "<string>",
"passion": "<string>",
"isPrimary": "<boolean>",
"isSecondary": "<boolean>",
"isDeceased": "<boolean>",
"contactMethods": [
{
"type": "<string>",
"value": "<string>",
"isOptedIn": "<boolean>",
"isPrimary": "<boolean>"
},
{
"type": "<string>",
"value": "<string>",
"isOptedIn": "<boolean>",
"isPrimary": "<boolean>"
}
],
"customFields": "<object>"
},
{
"firstName": "<string>",
"lastName": "<string>",
"prefix": "<string>",
"middleName": "<string>",
"suffix": "<string>",
"birthMonth": "<integer>",
"birthDay": "<integer>",
"birthYear": "<integer>",
"approximateAge": "<integer>",
"gender": "<string>",
"passion": "<string>",
"isPrimary": "<boolean>",
"isSecondary": "<boolean>",
"isDeceased": "<boolean>",
"contactMethods": [
{
"type": "<string>",
"value": "<string>",
"isOptedIn": "<boolean>",
"isPrimary": "<boolean>"
},
{
"type": "<string>",
"value": "<string>",
"isOptedIn": "<boolean>",
"isPrimary": "<boolean>"
}
],
"customFields": "<object>"
}
],
"customFields": "<object>",
"customCollections": [
{
"name": "<string>",
"fields": [
{
"name": "<string>",
"value": "<string>"
},
{
"name": "<string>",
"value": "<string>"
}
]
},
{
"name": "<string>",
"fields": [
{
"name": "<string>",
"value": "<string>"
},
{
"name": "<string>",
"value": "<string>"
}
]
}
]
}
'const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
contactType: '<string>',
referenceSource: '<string>',
referenceId: '<string>',
name: '<string>',
informalName: '<string>',
description: '<string>',
website: '<string>',
maritalStatus: '<string>',
anniversaryMonth: '<integer>',
anniversaryDay: '<integer>',
anniversaryYear: '<integer>',
originSegmentId: '<integer>',
isPrivate: '<boolean>',
isArchived: '<boolean>',
contactAddresses: [
{
label: '<string>',
address1: '<string>',
address2: '<string>',
city: '<string>',
stateCode: '<string>',
postal: '<string>',
countryCode: '<string>',
isPrimary: '<boolean>',
latitude: '<double>',
longitude: '<double>'
},
{
label: '<string>',
address1: '<string>',
address2: '<string>',
city: '<string>',
stateCode: '<string>',
postal: '<string>',
countryCode: '<string>',
isPrimary: '<boolean>',
latitude: '<double>',
longitude: '<double>'
}
],
contactIndividuals: [
{
firstName: '<string>',
lastName: '<string>',
prefix: '<string>',
middleName: '<string>',
suffix: '<string>',
birthMonth: '<integer>',
birthDay: '<integer>',
birthYear: '<integer>',
approximateAge: '<integer>',
gender: '<string>',
passion: '<string>',
isPrimary: '<boolean>',
isSecondary: '<boolean>',
isDeceased: '<boolean>',
contactMethods: [
{
type: '<string>',
value: '<string>',
isOptedIn: '<boolean>',
isPrimary: '<boolean>'
},
{
type: '<string>',
value: '<string>',
isOptedIn: '<boolean>',
isPrimary: '<boolean>'
}
],
customFields: '<object>'
},
{
firstName: '<string>',
lastName: '<string>',
prefix: '<string>',
middleName: '<string>',
suffix: '<string>',
birthMonth: '<integer>',
birthDay: '<integer>',
birthYear: '<integer>',
approximateAge: '<integer>',
gender: '<string>',
passion: '<string>',
isPrimary: '<boolean>',
isSecondary: '<boolean>',
isDeceased: '<boolean>',
contactMethods: [
{
type: '<string>',
value: '<string>',
isOptedIn: '<boolean>',
isPrimary: '<boolean>'
},
{
type: '<string>',
value: '<string>',
isOptedIn: '<boolean>',
isPrimary: '<boolean>'
}
],
customFields: '<object>'
}
],
customFields: '<object>',
customCollections: [
{
name: '<string>',
fields: [{name: '<string>', value: '<string>'}, {name: '<string>', value: '<string>'}]
},
{
name: '<string>',
fields: [{name: '<string>', value: '<string>'}, {name: '<string>', value: '<string>'}]
}
]
})
};
fetch('https://api.virtuoussoftware.com/api/Contact', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.virtuoussoftware.com/api/Contact"
payload = {
"contactType": "<string>",
"referenceSource": "<string>",
"referenceId": "<string>",
"name": "<string>",
"informalName": "<string>",
"description": "<string>",
"website": "<string>",
"maritalStatus": "<string>",
"anniversaryMonth": "<integer>",
"anniversaryDay": "<integer>",
"anniversaryYear": "<integer>",
"originSegmentId": "<integer>",
"isPrivate": "<boolean>",
"isArchived": "<boolean>",
"contactAddresses": [
{
"label": "<string>",
"address1": "<string>",
"address2": "<string>",
"city": "<string>",
"stateCode": "<string>",
"postal": "<string>",
"countryCode": "<string>",
"isPrimary": "<boolean>",
"latitude": "<double>",
"longitude": "<double>"
},
{
"label": "<string>",
"address1": "<string>",
"address2": "<string>",
"city": "<string>",
"stateCode": "<string>",
"postal": "<string>",
"countryCode": "<string>",
"isPrimary": "<boolean>",
"latitude": "<double>",
"longitude": "<double>"
}
],
"contactIndividuals": [
{
"firstName": "<string>",
"lastName": "<string>",
"prefix": "<string>",
"middleName": "<string>",
"suffix": "<string>",
"birthMonth": "<integer>",
"birthDay": "<integer>",
"birthYear": "<integer>",
"approximateAge": "<integer>",
"gender": "<string>",
"passion": "<string>",
"isPrimary": "<boolean>",
"isSecondary": "<boolean>",
"isDeceased": "<boolean>",
"contactMethods": [
{
"type": "<string>",
"value": "<string>",
"isOptedIn": "<boolean>",
"isPrimary": "<boolean>"
},
{
"type": "<string>",
"value": "<string>",
"isOptedIn": "<boolean>",
"isPrimary": "<boolean>"
}
],
"customFields": "<object>"
},
{
"firstName": "<string>",
"lastName": "<string>",
"prefix": "<string>",
"middleName": "<string>",
"suffix": "<string>",
"birthMonth": "<integer>",
"birthDay": "<integer>",
"birthYear": "<integer>",
"approximateAge": "<integer>",
"gender": "<string>",
"passion": "<string>",
"isPrimary": "<boolean>",
"isSecondary": "<boolean>",
"isDeceased": "<boolean>",
"contactMethods": [
{
"type": "<string>",
"value": "<string>",
"isOptedIn": "<boolean>",
"isPrimary": "<boolean>"
},
{
"type": "<string>",
"value": "<string>",
"isOptedIn": "<boolean>",
"isPrimary": "<boolean>"
}
],
"customFields": "<object>"
}
],
"customFields": "<object>",
"customCollections": [
{
"name": "<string>",
"fields": [
{
"name": "<string>",
"value": "<string>"
},
{
"name": "<string>",
"value": "<string>"
}
]
},
{
"name": "<string>",
"fields": [
{
"name": "<string>",
"value": "<string>"
},
{
"name": "<string>",
"value": "<string>"
}
]
}
]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)using RestSharp;
var options = new RestClientOptions("https://api.virtuoussoftware.com/api/Contact");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddHeader("Authorization", "Bearer <token>");
request.AddJsonBody("{\n \"contactType\": \"<string>\",\n \"referenceSource\": \"<string>\",\n \"referenceId\": \"<string>\",\n \"name\": \"<string>\",\n \"informalName\": \"<string>\",\n \"description\": \"<string>\",\n \"website\": \"<string>\",\n \"maritalStatus\": \"<string>\",\n \"anniversaryMonth\": \"<integer>\",\n \"anniversaryDay\": \"<integer>\",\n \"anniversaryYear\": \"<integer>\",\n \"originSegmentId\": \"<integer>\",\n \"isPrivate\": \"<boolean>\",\n \"isArchived\": \"<boolean>\",\n \"contactAddresses\": [\n {\n \"label\": \"<string>\",\n \"address1\": \"<string>\",\n \"address2\": \"<string>\",\n \"city\": \"<string>\",\n \"stateCode\": \"<string>\",\n \"postal\": \"<string>\",\n \"countryCode\": \"<string>\",\n \"isPrimary\": \"<boolean>\",\n \"latitude\": \"<double>\",\n \"longitude\": \"<double>\"\n },\n {\n \"label\": \"<string>\",\n \"address1\": \"<string>\",\n \"address2\": \"<string>\",\n \"city\": \"<string>\",\n \"stateCode\": \"<string>\",\n \"postal\": \"<string>\",\n \"countryCode\": \"<string>\",\n \"isPrimary\": \"<boolean>\",\n \"latitude\": \"<double>\",\n \"longitude\": \"<double>\"\n }\n ],\n \"contactIndividuals\": [\n {\n \"firstName\": \"<string>\",\n \"lastName\": \"<string>\",\n \"prefix\": \"<string>\",\n \"middleName\": \"<string>\",\n \"suffix\": \"<string>\",\n \"birthMonth\": \"<integer>\",\n \"birthDay\": \"<integer>\",\n \"birthYear\": \"<integer>\",\n \"approximateAge\": \"<integer>\",\n \"gender\": \"<string>\",\n \"passion\": \"<string>\",\n \"isPrimary\": \"<boolean>\",\n \"isSecondary\": \"<boolean>\",\n \"isDeceased\": \"<boolean>\",\n \"contactMethods\": [\n {\n \"type\": \"<string>\",\n \"value\": \"<string>\",\n \"isOptedIn\": \"<boolean>\",\n \"isPrimary\": \"<boolean>\"\n },\n {\n \"type\": \"<string>\",\n \"value\": \"<string>\",\n \"isOptedIn\": \"<boolean>\",\n \"isPrimary\": \"<boolean>\"\n }\n ],\n \"customFields\": \"<object>\"\n },\n {\n \"firstName\": \"<string>\",\n \"lastName\": \"<string>\",\n \"prefix\": \"<string>\",\n \"middleName\": \"<string>\",\n \"suffix\": \"<string>\",\n \"birthMonth\": \"<integer>\",\n \"birthDay\": \"<integer>\",\n \"birthYear\": \"<integer>\",\n \"approximateAge\": \"<integer>\",\n \"gender\": \"<string>\",\n \"passion\": \"<string>\",\n \"isPrimary\": \"<boolean>\",\n \"isSecondary\": \"<boolean>\",\n \"isDeceased\": \"<boolean>\",\n \"contactMethods\": [\n {\n \"type\": \"<string>\",\n \"value\": \"<string>\",\n \"isOptedIn\": \"<boolean>\",\n \"isPrimary\": \"<boolean>\"\n },\n {\n \"type\": \"<string>\",\n \"value\": \"<string>\",\n \"isOptedIn\": \"<boolean>\",\n \"isPrimary\": \"<boolean>\"\n }\n ],\n \"customFields\": \"<object>\"\n }\n ],\n \"customFields\": \"<object>\",\n \"customCollections\": [\n {\n \"name\": \"<string>\",\n \"fields\": [\n {\n \"name\": \"<string>\",\n \"value\": \"<string>\"\n },\n {\n \"name\": \"<string>\",\n \"value\": \"<string>\"\n }\n ]\n },\n {\n \"name\": \"<string>\",\n \"fields\": [\n {\n \"name\": \"<string>\",\n \"value\": \"<string>\"\n },\n {\n \"name\": \"<string>\",\n \"value\": \"<string>\"\n }\n ]\n }\n ]\n}", false);
var response = await client.PostAsync(request);
Console.WriteLine("{0}", response.Content);
<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.virtuoussoftware.com/api/Contact",
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([
'contactType' => '<string>',
'referenceSource' => '<string>',
'referenceId' => '<string>',
'name' => '<string>',
'informalName' => '<string>',
'description' => '<string>',
'website' => '<string>',
'maritalStatus' => '<string>',
'anniversaryMonth' => '<integer>',
'anniversaryDay' => '<integer>',
'anniversaryYear' => '<integer>',
'originSegmentId' => '<integer>',
'isPrivate' => '<boolean>',
'isArchived' => '<boolean>',
'contactAddresses' => [
[
'label' => '<string>',
'address1' => '<string>',
'address2' => '<string>',
'city' => '<string>',
'stateCode' => '<string>',
'postal' => '<string>',
'countryCode' => '<string>',
'isPrimary' => '<boolean>',
'latitude' => '<double>',
'longitude' => '<double>'
],
[
'label' => '<string>',
'address1' => '<string>',
'address2' => '<string>',
'city' => '<string>',
'stateCode' => '<string>',
'postal' => '<string>',
'countryCode' => '<string>',
'isPrimary' => '<boolean>',
'latitude' => '<double>',
'longitude' => '<double>'
]
],
'contactIndividuals' => [
[
'firstName' => '<string>',
'lastName' => '<string>',
'prefix' => '<string>',
'middleName' => '<string>',
'suffix' => '<string>',
'birthMonth' => '<integer>',
'birthDay' => '<integer>',
'birthYear' => '<integer>',
'approximateAge' => '<integer>',
'gender' => '<string>',
'passion' => '<string>',
'isPrimary' => '<boolean>',
'isSecondary' => '<boolean>',
'isDeceased' => '<boolean>',
'contactMethods' => [
[
'type' => '<string>',
'value' => '<string>',
'isOptedIn' => '<boolean>',
'isPrimary' => '<boolean>'
],
[
'type' => '<string>',
'value' => '<string>',
'isOptedIn' => '<boolean>',
'isPrimary' => '<boolean>'
]
],
'customFields' => '<object>'
],
[
'firstName' => '<string>',
'lastName' => '<string>',
'prefix' => '<string>',
'middleName' => '<string>',
'suffix' => '<string>',
'birthMonth' => '<integer>',
'birthDay' => '<integer>',
'birthYear' => '<integer>',
'approximateAge' => '<integer>',
'gender' => '<string>',
'passion' => '<string>',
'isPrimary' => '<boolean>',
'isSecondary' => '<boolean>',
'isDeceased' => '<boolean>',
'contactMethods' => [
[
'type' => '<string>',
'value' => '<string>',
'isOptedIn' => '<boolean>',
'isPrimary' => '<boolean>'
],
[
'type' => '<string>',
'value' => '<string>',
'isOptedIn' => '<boolean>',
'isPrimary' => '<boolean>'
]
],
'customFields' => '<object>'
]
],
'customFields' => '<object>',
'customCollections' => [
[
'name' => '<string>',
'fields' => [
[
'name' => '<string>',
'value' => '<string>'
],
[
'name' => '<string>',
'value' => '<string>'
]
]
],
[
'name' => '<string>',
'fields' => [
[
'name' => '<string>',
'value' => '<string>'
],
[
'name' => '<string>',
'value' => '<string>'
]
]
]
]
]),
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.post("https://api.virtuoussoftware.com/api/Contact")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"contactType\": \"<string>\",\n \"referenceSource\": \"<string>\",\n \"referenceId\": \"<string>\",\n \"name\": \"<string>\",\n \"informalName\": \"<string>\",\n \"description\": \"<string>\",\n \"website\": \"<string>\",\n \"maritalStatus\": \"<string>\",\n \"anniversaryMonth\": \"<integer>\",\n \"anniversaryDay\": \"<integer>\",\n \"anniversaryYear\": \"<integer>\",\n \"originSegmentId\": \"<integer>\",\n \"isPrivate\": \"<boolean>\",\n \"isArchived\": \"<boolean>\",\n \"contactAddresses\": [\n {\n \"label\": \"<string>\",\n \"address1\": \"<string>\",\n \"address2\": \"<string>\",\n \"city\": \"<string>\",\n \"stateCode\": \"<string>\",\n \"postal\": \"<string>\",\n \"countryCode\": \"<string>\",\n \"isPrimary\": \"<boolean>\",\n \"latitude\": \"<double>\",\n \"longitude\": \"<double>\"\n },\n {\n \"label\": \"<string>\",\n \"address1\": \"<string>\",\n \"address2\": \"<string>\",\n \"city\": \"<string>\",\n \"stateCode\": \"<string>\",\n \"postal\": \"<string>\",\n \"countryCode\": \"<string>\",\n \"isPrimary\": \"<boolean>\",\n \"latitude\": \"<double>\",\n \"longitude\": \"<double>\"\n }\n ],\n \"contactIndividuals\": [\n {\n \"firstName\": \"<string>\",\n \"lastName\": \"<string>\",\n \"prefix\": \"<string>\",\n \"middleName\": \"<string>\",\n \"suffix\": \"<string>\",\n \"birthMonth\": \"<integer>\",\n \"birthDay\": \"<integer>\",\n \"birthYear\": \"<integer>\",\n \"approximateAge\": \"<integer>\",\n \"gender\": \"<string>\",\n \"passion\": \"<string>\",\n \"isPrimary\": \"<boolean>\",\n \"isSecondary\": \"<boolean>\",\n \"isDeceased\": \"<boolean>\",\n \"contactMethods\": [\n {\n \"type\": \"<string>\",\n \"value\": \"<string>\",\n \"isOptedIn\": \"<boolean>\",\n \"isPrimary\": \"<boolean>\"\n },\n {\n \"type\": \"<string>\",\n \"value\": \"<string>\",\n \"isOptedIn\": \"<boolean>\",\n \"isPrimary\": \"<boolean>\"\n }\n ],\n \"customFields\": \"<object>\"\n },\n {\n \"firstName\": \"<string>\",\n \"lastName\": \"<string>\",\n \"prefix\": \"<string>\",\n \"middleName\": \"<string>\",\n \"suffix\": \"<string>\",\n \"birthMonth\": \"<integer>\",\n \"birthDay\": \"<integer>\",\n \"birthYear\": \"<integer>\",\n \"approximateAge\": \"<integer>\",\n \"gender\": \"<string>\",\n \"passion\": \"<string>\",\n \"isPrimary\": \"<boolean>\",\n \"isSecondary\": \"<boolean>\",\n \"isDeceased\": \"<boolean>\",\n \"contactMethods\": [\n {\n \"type\": \"<string>\",\n \"value\": \"<string>\",\n \"isOptedIn\": \"<boolean>\",\n \"isPrimary\": \"<boolean>\"\n },\n {\n \"type\": \"<string>\",\n \"value\": \"<string>\",\n \"isOptedIn\": \"<boolean>\",\n \"isPrimary\": \"<boolean>\"\n }\n ],\n \"customFields\": \"<object>\"\n }\n ],\n \"customFields\": \"<object>\",\n \"customCollections\": [\n {\n \"name\": \"<string>\",\n \"fields\": [\n {\n \"name\": \"<string>\",\n \"value\": \"<string>\"\n },\n {\n \"name\": \"<string>\",\n \"value\": \"<string>\"\n }\n ]\n },\n {\n \"name\": \"<string>\",\n \"fields\": [\n {\n \"name\": \"<string>\",\n \"value\": \"<string>\"\n },\n {\n \"name\": \"<string>\",\n \"value\": \"<string>\"\n }\n ]\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.virtuoussoftware.com/api/Contact")
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 \"contactType\": \"<string>\",\n \"referenceSource\": \"<string>\",\n \"referenceId\": \"<string>\",\n \"name\": \"<string>\",\n \"informalName\": \"<string>\",\n \"description\": \"<string>\",\n \"website\": \"<string>\",\n \"maritalStatus\": \"<string>\",\n \"anniversaryMonth\": \"<integer>\",\n \"anniversaryDay\": \"<integer>\",\n \"anniversaryYear\": \"<integer>\",\n \"originSegmentId\": \"<integer>\",\n \"isPrivate\": \"<boolean>\",\n \"isArchived\": \"<boolean>\",\n \"contactAddresses\": [\n {\n \"label\": \"<string>\",\n \"address1\": \"<string>\",\n \"address2\": \"<string>\",\n \"city\": \"<string>\",\n \"stateCode\": \"<string>\",\n \"postal\": \"<string>\",\n \"countryCode\": \"<string>\",\n \"isPrimary\": \"<boolean>\",\n \"latitude\": \"<double>\",\n \"longitude\": \"<double>\"\n },\n {\n \"label\": \"<string>\",\n \"address1\": \"<string>\",\n \"address2\": \"<string>\",\n \"city\": \"<string>\",\n \"stateCode\": \"<string>\",\n \"postal\": \"<string>\",\n \"countryCode\": \"<string>\",\n \"isPrimary\": \"<boolean>\",\n \"latitude\": \"<double>\",\n \"longitude\": \"<double>\"\n }\n ],\n \"contactIndividuals\": [\n {\n \"firstName\": \"<string>\",\n \"lastName\": \"<string>\",\n \"prefix\": \"<string>\",\n \"middleName\": \"<string>\",\n \"suffix\": \"<string>\",\n \"birthMonth\": \"<integer>\",\n \"birthDay\": \"<integer>\",\n \"birthYear\": \"<integer>\",\n \"approximateAge\": \"<integer>\",\n \"gender\": \"<string>\",\n \"passion\": \"<string>\",\n \"isPrimary\": \"<boolean>\",\n \"isSecondary\": \"<boolean>\",\n \"isDeceased\": \"<boolean>\",\n \"contactMethods\": [\n {\n \"type\": \"<string>\",\n \"value\": \"<string>\",\n \"isOptedIn\": \"<boolean>\",\n \"isPrimary\": \"<boolean>\"\n },\n {\n \"type\": \"<string>\",\n \"value\": \"<string>\",\n \"isOptedIn\": \"<boolean>\",\n \"isPrimary\": \"<boolean>\"\n }\n ],\n \"customFields\": \"<object>\"\n },\n {\n \"firstName\": \"<string>\",\n \"lastName\": \"<string>\",\n \"prefix\": \"<string>\",\n \"middleName\": \"<string>\",\n \"suffix\": \"<string>\",\n \"birthMonth\": \"<integer>\",\n \"birthDay\": \"<integer>\",\n \"birthYear\": \"<integer>\",\n \"approximateAge\": \"<integer>\",\n \"gender\": \"<string>\",\n \"passion\": \"<string>\",\n \"isPrimary\": \"<boolean>\",\n \"isSecondary\": \"<boolean>\",\n \"isDeceased\": \"<boolean>\",\n \"contactMethods\": [\n {\n \"type\": \"<string>\",\n \"value\": \"<string>\",\n \"isOptedIn\": \"<boolean>\",\n \"isPrimary\": \"<boolean>\"\n },\n {\n \"type\": \"<string>\",\n \"value\": \"<string>\",\n \"isOptedIn\": \"<boolean>\",\n \"isPrimary\": \"<boolean>\"\n }\n ],\n \"customFields\": \"<object>\"\n }\n ],\n \"customFields\": \"<object>\",\n \"customCollections\": [\n {\n \"name\": \"<string>\",\n \"fields\": [\n {\n \"name\": \"<string>\",\n \"value\": \"<string>\"\n },\n {\n \"name\": \"<string>\",\n \"value\": \"<string>\"\n }\n ]\n },\n {\n \"name\": \"<string>\",\n \"fields\": [\n {\n \"name\": \"<string>\",\n \"value\": \"<string>\"\n },\n {\n \"name\": \"<string>\",\n \"value\": \"<string>\"\n }\n ]\n }\n ]\n}"
response = http.request(request)
puts response.read_bodyconst url = 'https://api.virtuoussoftware.com/api/Contact';
const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
contactType: '<string>',
referenceSource: '<string>',
referenceId: '<string>',
name: '<string>',
informalName: '<string>',
description: '<string>',
website: '<string>',
maritalStatus: '<string>',
anniversaryMonth: '<integer>',
anniversaryDay: '<integer>',
anniversaryYear: '<integer>',
originSegmentId: '<integer>',
isPrivate: '<boolean>',
isArchived: '<boolean>',
contactAddresses: [
{
label: '<string>',
address1: '<string>',
address2: '<string>',
city: '<string>',
stateCode: '<string>',
postal: '<string>',
countryCode: '<string>',
isPrimary: '<boolean>',
latitude: '<double>',
longitude: '<double>'
},
{
label: '<string>',
address1: '<string>',
address2: '<string>',
city: '<string>',
stateCode: '<string>',
postal: '<string>',
countryCode: '<string>',
isPrimary: '<boolean>',
latitude: '<double>',
longitude: '<double>'
}
],
contactIndividuals: [
{
firstName: '<string>',
lastName: '<string>',
prefix: '<string>',
middleName: '<string>',
suffix: '<string>',
birthMonth: '<integer>',
birthDay: '<integer>',
birthYear: '<integer>',
approximateAge: '<integer>',
gender: '<string>',
passion: '<string>',
isPrimary: '<boolean>',
isSecondary: '<boolean>',
isDeceased: '<boolean>',
contactMethods: [
{
type: '<string>',
value: '<string>',
isOptedIn: '<boolean>',
isPrimary: '<boolean>'
},
{
type: '<string>',
value: '<string>',
isOptedIn: '<boolean>',
isPrimary: '<boolean>'
}
],
customFields: '<object>'
},
{
firstName: '<string>',
lastName: '<string>',
prefix: '<string>',
middleName: '<string>',
suffix: '<string>',
birthMonth: '<integer>',
birthDay: '<integer>',
birthYear: '<integer>',
approximateAge: '<integer>',
gender: '<string>',
passion: '<string>',
isPrimary: '<boolean>',
isSecondary: '<boolean>',
isDeceased: '<boolean>',
contactMethods: [
{
type: '<string>',
value: '<string>',
isOptedIn: '<boolean>',
isPrimary: '<boolean>'
},
{
type: '<string>',
value: '<string>',
isOptedIn: '<boolean>',
isPrimary: '<boolean>'
}
],
customFields: '<object>'
}
],
customFields: '<object>',
customCollections: [
{
name: '<string>',
fields: [{name: '<string>', value: '<string>'}, {name: '<string>', value: '<string>'}]
},
{
name: '<string>',
fields: [{name: '<string>', value: '<string>'}, {name: '<string>', value: '<string>'}]
}
]
})
};
fetch(url, options)
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.error(err));{
"id": 100456,
"contactType": "Household",
"isPrivate": false,
"name": "Priya Sharma",
"informalName": "Priya",
"description": null,
"website": null,
"maritalStatus": null,
"anniversaryMonth": null,
"anniversaryDay": null,
"anniversaryYear": null,
"mergedIntoContactId": null,
"address": {
"id": 400456,
"label": "Home",
"address1": "1542 Elmwood Lane",
"address2": null,
"city": "Springfield",
"state": "OR",
"postal": "97477",
"country": "United States",
"isPrimary": true,
"canBePrimary": true,
"startMonth": null,
"startDay": null,
"endMonth": null,
"endDay": null
},
"giftAskAmount": null,
"giftAskType": null,
"lifeToDateGiving": "0.00",
"yearToDateGiving": "0.00",
"lastGiftAmount": "0.00",
"lastGiftDate": null,
"contactIndividuals": [
{
"id": 200456,
"contactId": 100456,
"prefix": "Ms.",
"firstName": "Priya",
"middleName": null,
"lastName": "Sharma",
"suffix": null,
"gender": "Female",
"isPrimary": true,
"canBePrimary": true,
"isSecondary": false,
"canBeSecondary": true,
"birthMonth": 11,
"birthDay": 4,
"birthYear": 1985,
"birthDate": "1985-11-04T00:00:00Z",
"approximateAge": 40,
"isDeceased": false,
"passion": null,
"avatarUrl": "https://api.virtuoussoftware.com/api/ContactIndividual/200456/Avatar",
"contactMethods": [
{
"id": 300201,
"type": "Home Email",
"value": "priya.sharma@example.org",
"isOptedIn": true,
"isPrimary": true,
"canBePrimary": true
},
{
"id": 300202,
"type": "Mobile Phone",
"value": "(555) 012-3450",
"isOptedIn": true,
"isPrimary": true,
"canBePrimary": true
}
],
"createDateTimeUtc": "2025-11-15T16:04:22Z",
"modifiedDateTimeUtc": "2025-11-15T16:04:22Z",
"customFields": [],
"customCollections": []
}
],
"contactGiftsUrl": "https://api.virtuoussoftware.com/api/Gift/ByContact/100456",
"contactPassthroughGiftsUrl": "https://api.virtuoussoftware.com/api/Gift/Passthrough/ByContact/100456",
"contactPlannedGiftsUrl": "https://api.virtuoussoftware.com/api/PlannedGift/ByContact/100456",
"contactRecurringGiftsUrl": "https://api.virtuoussoftware.com/api/RecurringGift/ByContact/100456",
"contactImportantNotesUrl": "https://api.virtuoussoftware.com/api/ContactNote/Important/ByContact/100456",
"contactNotesUrl": "https://api.virtuoussoftware.com/api/ContactNote/ByContact/100456",
"contactTagsUrl": "https://api.virtuoussoftware.com/api/ContactTag/ByContact/100456",
"contactRelationshipsUrl": "https://api.virtuoussoftware.com/api/Relationship/ByContact/100456",
"primaryAvatarUrl": "https://api.virtuoussoftware.com/api/ContactIndividual/200456/Avatar",
"contactReferences": [
{
"source": "Raise",
"id": "200456"
}
],
"originSegmentId": null,
"originSegment": null,
"createDateTimeUtc": "2025-11-15T16:04:22Z",
"createdByUser": "Partner Integration",
"modifiedDateTimeUtc": "2025-11-15T16:04:22Z",
"modifiedByUser": "Partner Integration",
"tags": [
"Recurring Donor"
],
"organizationGroups": [],
"customFields": [],
"customCollections": []
}{
"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."
}Create a Contact
Creates a contact directly, along with the individuals, addresses, and contact methods you send. Will not check for contact duplicates. To have the contact checked for changes and duplicates first, use the Create a Contact Transaction endpoint instead.
curl --request POST \
--url https://api.virtuoussoftware.com/api/Contact \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"contactType": "<string>",
"referenceSource": "<string>",
"referenceId": "<string>",
"name": "<string>",
"informalName": "<string>",
"description": "<string>",
"website": "<string>",
"maritalStatus": "<string>",
"anniversaryMonth": "<integer>",
"anniversaryDay": "<integer>",
"anniversaryYear": "<integer>",
"originSegmentId": "<integer>",
"isPrivate": "<boolean>",
"isArchived": "<boolean>",
"contactAddresses": [
{
"label": "<string>",
"address1": "<string>",
"address2": "<string>",
"city": "<string>",
"stateCode": "<string>",
"postal": "<string>",
"countryCode": "<string>",
"isPrimary": "<boolean>",
"latitude": "<double>",
"longitude": "<double>"
},
{
"label": "<string>",
"address1": "<string>",
"address2": "<string>",
"city": "<string>",
"stateCode": "<string>",
"postal": "<string>",
"countryCode": "<string>",
"isPrimary": "<boolean>",
"latitude": "<double>",
"longitude": "<double>"
}
],
"contactIndividuals": [
{
"firstName": "<string>",
"lastName": "<string>",
"prefix": "<string>",
"middleName": "<string>",
"suffix": "<string>",
"birthMonth": "<integer>",
"birthDay": "<integer>",
"birthYear": "<integer>",
"approximateAge": "<integer>",
"gender": "<string>",
"passion": "<string>",
"isPrimary": "<boolean>",
"isSecondary": "<boolean>",
"isDeceased": "<boolean>",
"contactMethods": [
{
"type": "<string>",
"value": "<string>",
"isOptedIn": "<boolean>",
"isPrimary": "<boolean>"
},
{
"type": "<string>",
"value": "<string>",
"isOptedIn": "<boolean>",
"isPrimary": "<boolean>"
}
],
"customFields": "<object>"
},
{
"firstName": "<string>",
"lastName": "<string>",
"prefix": "<string>",
"middleName": "<string>",
"suffix": "<string>",
"birthMonth": "<integer>",
"birthDay": "<integer>",
"birthYear": "<integer>",
"approximateAge": "<integer>",
"gender": "<string>",
"passion": "<string>",
"isPrimary": "<boolean>",
"isSecondary": "<boolean>",
"isDeceased": "<boolean>",
"contactMethods": [
{
"type": "<string>",
"value": "<string>",
"isOptedIn": "<boolean>",
"isPrimary": "<boolean>"
},
{
"type": "<string>",
"value": "<string>",
"isOptedIn": "<boolean>",
"isPrimary": "<boolean>"
}
],
"customFields": "<object>"
}
],
"customFields": "<object>",
"customCollections": [
{
"name": "<string>",
"fields": [
{
"name": "<string>",
"value": "<string>"
},
{
"name": "<string>",
"value": "<string>"
}
]
},
{
"name": "<string>",
"fields": [
{
"name": "<string>",
"value": "<string>"
},
{
"name": "<string>",
"value": "<string>"
}
]
}
]
}
'const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
contactType: '<string>',
referenceSource: '<string>',
referenceId: '<string>',
name: '<string>',
informalName: '<string>',
description: '<string>',
website: '<string>',
maritalStatus: '<string>',
anniversaryMonth: '<integer>',
anniversaryDay: '<integer>',
anniversaryYear: '<integer>',
originSegmentId: '<integer>',
isPrivate: '<boolean>',
isArchived: '<boolean>',
contactAddresses: [
{
label: '<string>',
address1: '<string>',
address2: '<string>',
city: '<string>',
stateCode: '<string>',
postal: '<string>',
countryCode: '<string>',
isPrimary: '<boolean>',
latitude: '<double>',
longitude: '<double>'
},
{
label: '<string>',
address1: '<string>',
address2: '<string>',
city: '<string>',
stateCode: '<string>',
postal: '<string>',
countryCode: '<string>',
isPrimary: '<boolean>',
latitude: '<double>',
longitude: '<double>'
}
],
contactIndividuals: [
{
firstName: '<string>',
lastName: '<string>',
prefix: '<string>',
middleName: '<string>',
suffix: '<string>',
birthMonth: '<integer>',
birthDay: '<integer>',
birthYear: '<integer>',
approximateAge: '<integer>',
gender: '<string>',
passion: '<string>',
isPrimary: '<boolean>',
isSecondary: '<boolean>',
isDeceased: '<boolean>',
contactMethods: [
{
type: '<string>',
value: '<string>',
isOptedIn: '<boolean>',
isPrimary: '<boolean>'
},
{
type: '<string>',
value: '<string>',
isOptedIn: '<boolean>',
isPrimary: '<boolean>'
}
],
customFields: '<object>'
},
{
firstName: '<string>',
lastName: '<string>',
prefix: '<string>',
middleName: '<string>',
suffix: '<string>',
birthMonth: '<integer>',
birthDay: '<integer>',
birthYear: '<integer>',
approximateAge: '<integer>',
gender: '<string>',
passion: '<string>',
isPrimary: '<boolean>',
isSecondary: '<boolean>',
isDeceased: '<boolean>',
contactMethods: [
{
type: '<string>',
value: '<string>',
isOptedIn: '<boolean>',
isPrimary: '<boolean>'
},
{
type: '<string>',
value: '<string>',
isOptedIn: '<boolean>',
isPrimary: '<boolean>'
}
],
customFields: '<object>'
}
],
customFields: '<object>',
customCollections: [
{
name: '<string>',
fields: [{name: '<string>', value: '<string>'}, {name: '<string>', value: '<string>'}]
},
{
name: '<string>',
fields: [{name: '<string>', value: '<string>'}, {name: '<string>', value: '<string>'}]
}
]
})
};
fetch('https://api.virtuoussoftware.com/api/Contact', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.virtuoussoftware.com/api/Contact"
payload = {
"contactType": "<string>",
"referenceSource": "<string>",
"referenceId": "<string>",
"name": "<string>",
"informalName": "<string>",
"description": "<string>",
"website": "<string>",
"maritalStatus": "<string>",
"anniversaryMonth": "<integer>",
"anniversaryDay": "<integer>",
"anniversaryYear": "<integer>",
"originSegmentId": "<integer>",
"isPrivate": "<boolean>",
"isArchived": "<boolean>",
"contactAddresses": [
{
"label": "<string>",
"address1": "<string>",
"address2": "<string>",
"city": "<string>",
"stateCode": "<string>",
"postal": "<string>",
"countryCode": "<string>",
"isPrimary": "<boolean>",
"latitude": "<double>",
"longitude": "<double>"
},
{
"label": "<string>",
"address1": "<string>",
"address2": "<string>",
"city": "<string>",
"stateCode": "<string>",
"postal": "<string>",
"countryCode": "<string>",
"isPrimary": "<boolean>",
"latitude": "<double>",
"longitude": "<double>"
}
],
"contactIndividuals": [
{
"firstName": "<string>",
"lastName": "<string>",
"prefix": "<string>",
"middleName": "<string>",
"suffix": "<string>",
"birthMonth": "<integer>",
"birthDay": "<integer>",
"birthYear": "<integer>",
"approximateAge": "<integer>",
"gender": "<string>",
"passion": "<string>",
"isPrimary": "<boolean>",
"isSecondary": "<boolean>",
"isDeceased": "<boolean>",
"contactMethods": [
{
"type": "<string>",
"value": "<string>",
"isOptedIn": "<boolean>",
"isPrimary": "<boolean>"
},
{
"type": "<string>",
"value": "<string>",
"isOptedIn": "<boolean>",
"isPrimary": "<boolean>"
}
],
"customFields": "<object>"
},
{
"firstName": "<string>",
"lastName": "<string>",
"prefix": "<string>",
"middleName": "<string>",
"suffix": "<string>",
"birthMonth": "<integer>",
"birthDay": "<integer>",
"birthYear": "<integer>",
"approximateAge": "<integer>",
"gender": "<string>",
"passion": "<string>",
"isPrimary": "<boolean>",
"isSecondary": "<boolean>",
"isDeceased": "<boolean>",
"contactMethods": [
{
"type": "<string>",
"value": "<string>",
"isOptedIn": "<boolean>",
"isPrimary": "<boolean>"
},
{
"type": "<string>",
"value": "<string>",
"isOptedIn": "<boolean>",
"isPrimary": "<boolean>"
}
],
"customFields": "<object>"
}
],
"customFields": "<object>",
"customCollections": [
{
"name": "<string>",
"fields": [
{
"name": "<string>",
"value": "<string>"
},
{
"name": "<string>",
"value": "<string>"
}
]
},
{
"name": "<string>",
"fields": [
{
"name": "<string>",
"value": "<string>"
},
{
"name": "<string>",
"value": "<string>"
}
]
}
]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)using RestSharp;
var options = new RestClientOptions("https://api.virtuoussoftware.com/api/Contact");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddHeader("Authorization", "Bearer <token>");
request.AddJsonBody("{\n \"contactType\": \"<string>\",\n \"referenceSource\": \"<string>\",\n \"referenceId\": \"<string>\",\n \"name\": \"<string>\",\n \"informalName\": \"<string>\",\n \"description\": \"<string>\",\n \"website\": \"<string>\",\n \"maritalStatus\": \"<string>\",\n \"anniversaryMonth\": \"<integer>\",\n \"anniversaryDay\": \"<integer>\",\n \"anniversaryYear\": \"<integer>\",\n \"originSegmentId\": \"<integer>\",\n \"isPrivate\": \"<boolean>\",\n \"isArchived\": \"<boolean>\",\n \"contactAddresses\": [\n {\n \"label\": \"<string>\",\n \"address1\": \"<string>\",\n \"address2\": \"<string>\",\n \"city\": \"<string>\",\n \"stateCode\": \"<string>\",\n \"postal\": \"<string>\",\n \"countryCode\": \"<string>\",\n \"isPrimary\": \"<boolean>\",\n \"latitude\": \"<double>\",\n \"longitude\": \"<double>\"\n },\n {\n \"label\": \"<string>\",\n \"address1\": \"<string>\",\n \"address2\": \"<string>\",\n \"city\": \"<string>\",\n \"stateCode\": \"<string>\",\n \"postal\": \"<string>\",\n \"countryCode\": \"<string>\",\n \"isPrimary\": \"<boolean>\",\n \"latitude\": \"<double>\",\n \"longitude\": \"<double>\"\n }\n ],\n \"contactIndividuals\": [\n {\n \"firstName\": \"<string>\",\n \"lastName\": \"<string>\",\n \"prefix\": \"<string>\",\n \"middleName\": \"<string>\",\n \"suffix\": \"<string>\",\n \"birthMonth\": \"<integer>\",\n \"birthDay\": \"<integer>\",\n \"birthYear\": \"<integer>\",\n \"approximateAge\": \"<integer>\",\n \"gender\": \"<string>\",\n \"passion\": \"<string>\",\n \"isPrimary\": \"<boolean>\",\n \"isSecondary\": \"<boolean>\",\n \"isDeceased\": \"<boolean>\",\n \"contactMethods\": [\n {\n \"type\": \"<string>\",\n \"value\": \"<string>\",\n \"isOptedIn\": \"<boolean>\",\n \"isPrimary\": \"<boolean>\"\n },\n {\n \"type\": \"<string>\",\n \"value\": \"<string>\",\n \"isOptedIn\": \"<boolean>\",\n \"isPrimary\": \"<boolean>\"\n }\n ],\n \"customFields\": \"<object>\"\n },\n {\n \"firstName\": \"<string>\",\n \"lastName\": \"<string>\",\n \"prefix\": \"<string>\",\n \"middleName\": \"<string>\",\n \"suffix\": \"<string>\",\n \"birthMonth\": \"<integer>\",\n \"birthDay\": \"<integer>\",\n \"birthYear\": \"<integer>\",\n \"approximateAge\": \"<integer>\",\n \"gender\": \"<string>\",\n \"passion\": \"<string>\",\n \"isPrimary\": \"<boolean>\",\n \"isSecondary\": \"<boolean>\",\n \"isDeceased\": \"<boolean>\",\n \"contactMethods\": [\n {\n \"type\": \"<string>\",\n \"value\": \"<string>\",\n \"isOptedIn\": \"<boolean>\",\n \"isPrimary\": \"<boolean>\"\n },\n {\n \"type\": \"<string>\",\n \"value\": \"<string>\",\n \"isOptedIn\": \"<boolean>\",\n \"isPrimary\": \"<boolean>\"\n }\n ],\n \"customFields\": \"<object>\"\n }\n ],\n \"customFields\": \"<object>\",\n \"customCollections\": [\n {\n \"name\": \"<string>\",\n \"fields\": [\n {\n \"name\": \"<string>\",\n \"value\": \"<string>\"\n },\n {\n \"name\": \"<string>\",\n \"value\": \"<string>\"\n }\n ]\n },\n {\n \"name\": \"<string>\",\n \"fields\": [\n {\n \"name\": \"<string>\",\n \"value\": \"<string>\"\n },\n {\n \"name\": \"<string>\",\n \"value\": \"<string>\"\n }\n ]\n }\n ]\n}", false);
var response = await client.PostAsync(request);
Console.WriteLine("{0}", response.Content);
<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.virtuoussoftware.com/api/Contact",
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([
'contactType' => '<string>',
'referenceSource' => '<string>',
'referenceId' => '<string>',
'name' => '<string>',
'informalName' => '<string>',
'description' => '<string>',
'website' => '<string>',
'maritalStatus' => '<string>',
'anniversaryMonth' => '<integer>',
'anniversaryDay' => '<integer>',
'anniversaryYear' => '<integer>',
'originSegmentId' => '<integer>',
'isPrivate' => '<boolean>',
'isArchived' => '<boolean>',
'contactAddresses' => [
[
'label' => '<string>',
'address1' => '<string>',
'address2' => '<string>',
'city' => '<string>',
'stateCode' => '<string>',
'postal' => '<string>',
'countryCode' => '<string>',
'isPrimary' => '<boolean>',
'latitude' => '<double>',
'longitude' => '<double>'
],
[
'label' => '<string>',
'address1' => '<string>',
'address2' => '<string>',
'city' => '<string>',
'stateCode' => '<string>',
'postal' => '<string>',
'countryCode' => '<string>',
'isPrimary' => '<boolean>',
'latitude' => '<double>',
'longitude' => '<double>'
]
],
'contactIndividuals' => [
[
'firstName' => '<string>',
'lastName' => '<string>',
'prefix' => '<string>',
'middleName' => '<string>',
'suffix' => '<string>',
'birthMonth' => '<integer>',
'birthDay' => '<integer>',
'birthYear' => '<integer>',
'approximateAge' => '<integer>',
'gender' => '<string>',
'passion' => '<string>',
'isPrimary' => '<boolean>',
'isSecondary' => '<boolean>',
'isDeceased' => '<boolean>',
'contactMethods' => [
[
'type' => '<string>',
'value' => '<string>',
'isOptedIn' => '<boolean>',
'isPrimary' => '<boolean>'
],
[
'type' => '<string>',
'value' => '<string>',
'isOptedIn' => '<boolean>',
'isPrimary' => '<boolean>'
]
],
'customFields' => '<object>'
],
[
'firstName' => '<string>',
'lastName' => '<string>',
'prefix' => '<string>',
'middleName' => '<string>',
'suffix' => '<string>',
'birthMonth' => '<integer>',
'birthDay' => '<integer>',
'birthYear' => '<integer>',
'approximateAge' => '<integer>',
'gender' => '<string>',
'passion' => '<string>',
'isPrimary' => '<boolean>',
'isSecondary' => '<boolean>',
'isDeceased' => '<boolean>',
'contactMethods' => [
[
'type' => '<string>',
'value' => '<string>',
'isOptedIn' => '<boolean>',
'isPrimary' => '<boolean>'
],
[
'type' => '<string>',
'value' => '<string>',
'isOptedIn' => '<boolean>',
'isPrimary' => '<boolean>'
]
],
'customFields' => '<object>'
]
],
'customFields' => '<object>',
'customCollections' => [
[
'name' => '<string>',
'fields' => [
[
'name' => '<string>',
'value' => '<string>'
],
[
'name' => '<string>',
'value' => '<string>'
]
]
],
[
'name' => '<string>',
'fields' => [
[
'name' => '<string>',
'value' => '<string>'
],
[
'name' => '<string>',
'value' => '<string>'
]
]
]
]
]),
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.post("https://api.virtuoussoftware.com/api/Contact")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"contactType\": \"<string>\",\n \"referenceSource\": \"<string>\",\n \"referenceId\": \"<string>\",\n \"name\": \"<string>\",\n \"informalName\": \"<string>\",\n \"description\": \"<string>\",\n \"website\": \"<string>\",\n \"maritalStatus\": \"<string>\",\n \"anniversaryMonth\": \"<integer>\",\n \"anniversaryDay\": \"<integer>\",\n \"anniversaryYear\": \"<integer>\",\n \"originSegmentId\": \"<integer>\",\n \"isPrivate\": \"<boolean>\",\n \"isArchived\": \"<boolean>\",\n \"contactAddresses\": [\n {\n \"label\": \"<string>\",\n \"address1\": \"<string>\",\n \"address2\": \"<string>\",\n \"city\": \"<string>\",\n \"stateCode\": \"<string>\",\n \"postal\": \"<string>\",\n \"countryCode\": \"<string>\",\n \"isPrimary\": \"<boolean>\",\n \"latitude\": \"<double>\",\n \"longitude\": \"<double>\"\n },\n {\n \"label\": \"<string>\",\n \"address1\": \"<string>\",\n \"address2\": \"<string>\",\n \"city\": \"<string>\",\n \"stateCode\": \"<string>\",\n \"postal\": \"<string>\",\n \"countryCode\": \"<string>\",\n \"isPrimary\": \"<boolean>\",\n \"latitude\": \"<double>\",\n \"longitude\": \"<double>\"\n }\n ],\n \"contactIndividuals\": [\n {\n \"firstName\": \"<string>\",\n \"lastName\": \"<string>\",\n \"prefix\": \"<string>\",\n \"middleName\": \"<string>\",\n \"suffix\": \"<string>\",\n \"birthMonth\": \"<integer>\",\n \"birthDay\": \"<integer>\",\n \"birthYear\": \"<integer>\",\n \"approximateAge\": \"<integer>\",\n \"gender\": \"<string>\",\n \"passion\": \"<string>\",\n \"isPrimary\": \"<boolean>\",\n \"isSecondary\": \"<boolean>\",\n \"isDeceased\": \"<boolean>\",\n \"contactMethods\": [\n {\n \"type\": \"<string>\",\n \"value\": \"<string>\",\n \"isOptedIn\": \"<boolean>\",\n \"isPrimary\": \"<boolean>\"\n },\n {\n \"type\": \"<string>\",\n \"value\": \"<string>\",\n \"isOptedIn\": \"<boolean>\",\n \"isPrimary\": \"<boolean>\"\n }\n ],\n \"customFields\": \"<object>\"\n },\n {\n \"firstName\": \"<string>\",\n \"lastName\": \"<string>\",\n \"prefix\": \"<string>\",\n \"middleName\": \"<string>\",\n \"suffix\": \"<string>\",\n \"birthMonth\": \"<integer>\",\n \"birthDay\": \"<integer>\",\n \"birthYear\": \"<integer>\",\n \"approximateAge\": \"<integer>\",\n \"gender\": \"<string>\",\n \"passion\": \"<string>\",\n \"isPrimary\": \"<boolean>\",\n \"isSecondary\": \"<boolean>\",\n \"isDeceased\": \"<boolean>\",\n \"contactMethods\": [\n {\n \"type\": \"<string>\",\n \"value\": \"<string>\",\n \"isOptedIn\": \"<boolean>\",\n \"isPrimary\": \"<boolean>\"\n },\n {\n \"type\": \"<string>\",\n \"value\": \"<string>\",\n \"isOptedIn\": \"<boolean>\",\n \"isPrimary\": \"<boolean>\"\n }\n ],\n \"customFields\": \"<object>\"\n }\n ],\n \"customFields\": \"<object>\",\n \"customCollections\": [\n {\n \"name\": \"<string>\",\n \"fields\": [\n {\n \"name\": \"<string>\",\n \"value\": \"<string>\"\n },\n {\n \"name\": \"<string>\",\n \"value\": \"<string>\"\n }\n ]\n },\n {\n \"name\": \"<string>\",\n \"fields\": [\n {\n \"name\": \"<string>\",\n \"value\": \"<string>\"\n },\n {\n \"name\": \"<string>\",\n \"value\": \"<string>\"\n }\n ]\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.virtuoussoftware.com/api/Contact")
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 \"contactType\": \"<string>\",\n \"referenceSource\": \"<string>\",\n \"referenceId\": \"<string>\",\n \"name\": \"<string>\",\n \"informalName\": \"<string>\",\n \"description\": \"<string>\",\n \"website\": \"<string>\",\n \"maritalStatus\": \"<string>\",\n \"anniversaryMonth\": \"<integer>\",\n \"anniversaryDay\": \"<integer>\",\n \"anniversaryYear\": \"<integer>\",\n \"originSegmentId\": \"<integer>\",\n \"isPrivate\": \"<boolean>\",\n \"isArchived\": \"<boolean>\",\n \"contactAddresses\": [\n {\n \"label\": \"<string>\",\n \"address1\": \"<string>\",\n \"address2\": \"<string>\",\n \"city\": \"<string>\",\n \"stateCode\": \"<string>\",\n \"postal\": \"<string>\",\n \"countryCode\": \"<string>\",\n \"isPrimary\": \"<boolean>\",\n \"latitude\": \"<double>\",\n \"longitude\": \"<double>\"\n },\n {\n \"label\": \"<string>\",\n \"address1\": \"<string>\",\n \"address2\": \"<string>\",\n \"city\": \"<string>\",\n \"stateCode\": \"<string>\",\n \"postal\": \"<string>\",\n \"countryCode\": \"<string>\",\n \"isPrimary\": \"<boolean>\",\n \"latitude\": \"<double>\",\n \"longitude\": \"<double>\"\n }\n ],\n \"contactIndividuals\": [\n {\n \"firstName\": \"<string>\",\n \"lastName\": \"<string>\",\n \"prefix\": \"<string>\",\n \"middleName\": \"<string>\",\n \"suffix\": \"<string>\",\n \"birthMonth\": \"<integer>\",\n \"birthDay\": \"<integer>\",\n \"birthYear\": \"<integer>\",\n \"approximateAge\": \"<integer>\",\n \"gender\": \"<string>\",\n \"passion\": \"<string>\",\n \"isPrimary\": \"<boolean>\",\n \"isSecondary\": \"<boolean>\",\n \"isDeceased\": \"<boolean>\",\n \"contactMethods\": [\n {\n \"type\": \"<string>\",\n \"value\": \"<string>\",\n \"isOptedIn\": \"<boolean>\",\n \"isPrimary\": \"<boolean>\"\n },\n {\n \"type\": \"<string>\",\n \"value\": \"<string>\",\n \"isOptedIn\": \"<boolean>\",\n \"isPrimary\": \"<boolean>\"\n }\n ],\n \"customFields\": \"<object>\"\n },\n {\n \"firstName\": \"<string>\",\n \"lastName\": \"<string>\",\n \"prefix\": \"<string>\",\n \"middleName\": \"<string>\",\n \"suffix\": \"<string>\",\n \"birthMonth\": \"<integer>\",\n \"birthDay\": \"<integer>\",\n \"birthYear\": \"<integer>\",\n \"approximateAge\": \"<integer>\",\n \"gender\": \"<string>\",\n \"passion\": \"<string>\",\n \"isPrimary\": \"<boolean>\",\n \"isSecondary\": \"<boolean>\",\n \"isDeceased\": \"<boolean>\",\n \"contactMethods\": [\n {\n \"type\": \"<string>\",\n \"value\": \"<string>\",\n \"isOptedIn\": \"<boolean>\",\n \"isPrimary\": \"<boolean>\"\n },\n {\n \"type\": \"<string>\",\n \"value\": \"<string>\",\n \"isOptedIn\": \"<boolean>\",\n \"isPrimary\": \"<boolean>\"\n }\n ],\n \"customFields\": \"<object>\"\n }\n ],\n \"customFields\": \"<object>\",\n \"customCollections\": [\n {\n \"name\": \"<string>\",\n \"fields\": [\n {\n \"name\": \"<string>\",\n \"value\": \"<string>\"\n },\n {\n \"name\": \"<string>\",\n \"value\": \"<string>\"\n }\n ]\n },\n {\n \"name\": \"<string>\",\n \"fields\": [\n {\n \"name\": \"<string>\",\n \"value\": \"<string>\"\n },\n {\n \"name\": \"<string>\",\n \"value\": \"<string>\"\n }\n ]\n }\n ]\n}"
response = http.request(request)
puts response.read_bodyconst url = 'https://api.virtuoussoftware.com/api/Contact';
const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
contactType: '<string>',
referenceSource: '<string>',
referenceId: '<string>',
name: '<string>',
informalName: '<string>',
description: '<string>',
website: '<string>',
maritalStatus: '<string>',
anniversaryMonth: '<integer>',
anniversaryDay: '<integer>',
anniversaryYear: '<integer>',
originSegmentId: '<integer>',
isPrivate: '<boolean>',
isArchived: '<boolean>',
contactAddresses: [
{
label: '<string>',
address1: '<string>',
address2: '<string>',
city: '<string>',
stateCode: '<string>',
postal: '<string>',
countryCode: '<string>',
isPrimary: '<boolean>',
latitude: '<double>',
longitude: '<double>'
},
{
label: '<string>',
address1: '<string>',
address2: '<string>',
city: '<string>',
stateCode: '<string>',
postal: '<string>',
countryCode: '<string>',
isPrimary: '<boolean>',
latitude: '<double>',
longitude: '<double>'
}
],
contactIndividuals: [
{
firstName: '<string>',
lastName: '<string>',
prefix: '<string>',
middleName: '<string>',
suffix: '<string>',
birthMonth: '<integer>',
birthDay: '<integer>',
birthYear: '<integer>',
approximateAge: '<integer>',
gender: '<string>',
passion: '<string>',
isPrimary: '<boolean>',
isSecondary: '<boolean>',
isDeceased: '<boolean>',
contactMethods: [
{
type: '<string>',
value: '<string>',
isOptedIn: '<boolean>',
isPrimary: '<boolean>'
},
{
type: '<string>',
value: '<string>',
isOptedIn: '<boolean>',
isPrimary: '<boolean>'
}
],
customFields: '<object>'
},
{
firstName: '<string>',
lastName: '<string>',
prefix: '<string>',
middleName: '<string>',
suffix: '<string>',
birthMonth: '<integer>',
birthDay: '<integer>',
birthYear: '<integer>',
approximateAge: '<integer>',
gender: '<string>',
passion: '<string>',
isPrimary: '<boolean>',
isSecondary: '<boolean>',
isDeceased: '<boolean>',
contactMethods: [
{
type: '<string>',
value: '<string>',
isOptedIn: '<boolean>',
isPrimary: '<boolean>'
},
{
type: '<string>',
value: '<string>',
isOptedIn: '<boolean>',
isPrimary: '<boolean>'
}
],
customFields: '<object>'
}
],
customFields: '<object>',
customCollections: [
{
name: '<string>',
fields: [{name: '<string>', value: '<string>'}, {name: '<string>', value: '<string>'}]
},
{
name: '<string>',
fields: [{name: '<string>', value: '<string>'}, {name: '<string>', value: '<string>'}]
}
]
})
};
fetch(url, options)
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.error(err));{
"id": 100456,
"contactType": "Household",
"isPrivate": false,
"name": "Priya Sharma",
"informalName": "Priya",
"description": null,
"website": null,
"maritalStatus": null,
"anniversaryMonth": null,
"anniversaryDay": null,
"anniversaryYear": null,
"mergedIntoContactId": null,
"address": {
"id": 400456,
"label": "Home",
"address1": "1542 Elmwood Lane",
"address2": null,
"city": "Springfield",
"state": "OR",
"postal": "97477",
"country": "United States",
"isPrimary": true,
"canBePrimary": true,
"startMonth": null,
"startDay": null,
"endMonth": null,
"endDay": null
},
"giftAskAmount": null,
"giftAskType": null,
"lifeToDateGiving": "0.00",
"yearToDateGiving": "0.00",
"lastGiftAmount": "0.00",
"lastGiftDate": null,
"contactIndividuals": [
{
"id": 200456,
"contactId": 100456,
"prefix": "Ms.",
"firstName": "Priya",
"middleName": null,
"lastName": "Sharma",
"suffix": null,
"gender": "Female",
"isPrimary": true,
"canBePrimary": true,
"isSecondary": false,
"canBeSecondary": true,
"birthMonth": 11,
"birthDay": 4,
"birthYear": 1985,
"birthDate": "1985-11-04T00:00:00Z",
"approximateAge": 40,
"isDeceased": false,
"passion": null,
"avatarUrl": "https://api.virtuoussoftware.com/api/ContactIndividual/200456/Avatar",
"contactMethods": [
{
"id": 300201,
"type": "Home Email",
"value": "priya.sharma@example.org",
"isOptedIn": true,
"isPrimary": true,
"canBePrimary": true
},
{
"id": 300202,
"type": "Mobile Phone",
"value": "(555) 012-3450",
"isOptedIn": true,
"isPrimary": true,
"canBePrimary": true
}
],
"createDateTimeUtc": "2025-11-15T16:04:22Z",
"modifiedDateTimeUtc": "2025-11-15T16:04:22Z",
"customFields": [],
"customCollections": []
}
],
"contactGiftsUrl": "https://api.virtuoussoftware.com/api/Gift/ByContact/100456",
"contactPassthroughGiftsUrl": "https://api.virtuoussoftware.com/api/Gift/Passthrough/ByContact/100456",
"contactPlannedGiftsUrl": "https://api.virtuoussoftware.com/api/PlannedGift/ByContact/100456",
"contactRecurringGiftsUrl": "https://api.virtuoussoftware.com/api/RecurringGift/ByContact/100456",
"contactImportantNotesUrl": "https://api.virtuoussoftware.com/api/ContactNote/Important/ByContact/100456",
"contactNotesUrl": "https://api.virtuoussoftware.com/api/ContactNote/ByContact/100456",
"contactTagsUrl": "https://api.virtuoussoftware.com/api/ContactTag/ByContact/100456",
"contactRelationshipsUrl": "https://api.virtuoussoftware.com/api/Relationship/ByContact/100456",
"primaryAvatarUrl": "https://api.virtuoussoftware.com/api/ContactIndividual/200456/Avatar",
"contactReferences": [
{
"source": "Raise",
"id": "200456"
}
],
"originSegmentId": null,
"originSegment": null,
"createDateTimeUtc": "2025-11-15T16:04:22Z",
"createdByUser": "Partner Integration",
"modifiedDateTimeUtc": "2025-11-15T16:04:22Z",
"modifiedByUser": "Partner Integration",
"tags": [
"Recurring Donor"
],
"organizationGroups": [],
"customFields": [],
"customCollections": []
}{
"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.
Body
The type of contact, for example Household, Organization, or Foundation. Must match a contact type configured for the organization.
The name of the external system that owns the reference identifier, for example Stripe, MailChimp, or Shopify.
The identifier of the record in the reference source system.
The full name of the contact, for example "Bob and Jane Smith" for a household.
The informal name used in salutations, for example "Bob and Jane".
A free-text description of the contact.
The website address for the contact.
The marital status of the contact.
The month of the anniversary date, from 1 to 12.
The day of the month of the anniversary date.
The year of the anniversary date.
The identifier of the segment that the contact was originally acquired through.
When true, the record is only visible to users with permission to view private records.
When true, the contact is created in an archived state.
The addresses to create with the contact.
Show child attributes
Show child attributes
The individuals to create with the contact.
Show child attributes
Show child attributes
Custom field values to set on the record. Field names must match custom fields configured for the organization.
Custom collection instances to set on the record. Each entry supplies the collection name and the values for its fields.
Show child attributes
Show child attributes
Response
OK
The unique identifier of the record in Virtuous.
The type of contact, for example Household, Organization, or Foundation.
When true, the record is only visible to users with permission to view private records.
The display name of the record.
The free-text description stored on the record.
Show child attributes
Show child attributes
The total amount the contact has given since the first gift.
The total amount the contact has given in the current year.
The amount of the most recent gift from the contact.
The date of the most recent gift from the contact.
Show child attributes
Show child attributes
Show child attributes
Show child attributes
The UTC date and time the record was created.
The name of the user who created the record.
The UTC date and time the record was last modified.
The name of the user who last modified the record.
The custom field values stored on the record.
Show child attributes
Show child attributes
The custom collection instances stored on the record.
Show child attributes
Show child attributes
Was this page helpful?