curl --request PUT \
--url https://api.tilta.io/v1/persons/{external_id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"first_name": "<string>",
"last_name": "<string>",
"birth_date": 123,
"email": "jsmith@example.com",
"phone": "+491711010101",
"is_fatca": true,
"is_pep": true,
"tax_id": "<string>",
"citizenship": [],
"addresses": [
{
"postcode": "12345",
"city": "Berlin",
"street": "Example Street",
"house": "42b",
"additional": "c/o Testimonial"
}
]
}
'const options = {
method: 'PUT',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
first_name: '<string>',
last_name: '<string>',
birth_date: 123,
email: 'jsmith@example.com',
phone: '+491711010101',
is_fatca: true,
is_pep: true,
tax_id: '<string>',
citizenship: [],
addresses: [
{
postcode: '12345',
city: 'Berlin',
street: 'Example Street',
house: '42b',
additional: 'c/o Testimonial'
}
]
})
};
fetch('https://api.tilta.io/v1/persons/{external_id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.tilta.io/v1/persons/{external_id}"
payload = {
"first_name": "<string>",
"last_name": "<string>",
"birth_date": 123,
"email": "jsmith@example.com",
"phone": "+491711010101",
"is_fatca": True,
"is_pep": True,
"tax_id": "<string>",
"citizenship": [],
"addresses": [
{
"postcode": "12345",
"city": "Berlin",
"street": "Example Street",
"house": "42b",
"additional": "c/o Testimonial"
}
]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.tilta.io/v1/persons/{external_id}",
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([
'first_name' => '<string>',
'last_name' => '<string>',
'birth_date' => 123,
'email' => 'jsmith@example.com',
'phone' => '+491711010101',
'is_fatca' => true,
'is_pep' => true,
'tax_id' => '<string>',
'citizenship' => [
],
'addresses' => [
[
'postcode' => '12345',
'city' => 'Berlin',
'street' => 'Example Street',
'house' => '42b',
'additional' => 'c/o Testimonial'
]
]
]),
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;
}{
"external_id": "<string>",
"first_name": "<string>",
"last_name": "<string>",
"salutation": "MR",
"birth_date": 123,
"email": "jsmith@example.com",
"phone": "+491711010101",
"is_fatca": true,
"is_pep": true,
"tax_id": "<string>",
"citizenship": [
"AF"
],
"addresses": [
{
"postcode": "12345",
"city": "Berlin",
"country": "AF",
"street": "Example Street",
"house": "42b",
"additional": "c/o Testimonial"
}
]
}{
"code": "BAD_REQUEST",
"error": "Request validation failed. 1 issue found.",
"issues": [
{
"code": "INVALID_TYPE",
"path": "body.registered_at",
"message": "Invalid type"
}
]
}{
"error": "Unauthorized",
"code": "UNAUTHORIZED"
}Replace a person
Fully replace an existing person record using PUT semantics. The addresses array is replaced entirely – include all entries you want to retain.
curl --request PUT \
--url https://api.tilta.io/v1/persons/{external_id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"first_name": "<string>",
"last_name": "<string>",
"birth_date": 123,
"email": "jsmith@example.com",
"phone": "+491711010101",
"is_fatca": true,
"is_pep": true,
"tax_id": "<string>",
"citizenship": [],
"addresses": [
{
"postcode": "12345",
"city": "Berlin",
"street": "Example Street",
"house": "42b",
"additional": "c/o Testimonial"
}
]
}
'const options = {
method: 'PUT',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
first_name: '<string>',
last_name: '<string>',
birth_date: 123,
email: 'jsmith@example.com',
phone: '+491711010101',
is_fatca: true,
is_pep: true,
tax_id: '<string>',
citizenship: [],
addresses: [
{
postcode: '12345',
city: 'Berlin',
street: 'Example Street',
house: '42b',
additional: 'c/o Testimonial'
}
]
})
};
fetch('https://api.tilta.io/v1/persons/{external_id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.tilta.io/v1/persons/{external_id}"
payload = {
"first_name": "<string>",
"last_name": "<string>",
"birth_date": 123,
"email": "jsmith@example.com",
"phone": "+491711010101",
"is_fatca": True,
"is_pep": True,
"tax_id": "<string>",
"citizenship": [],
"addresses": [
{
"postcode": "12345",
"city": "Berlin",
"street": "Example Street",
"house": "42b",
"additional": "c/o Testimonial"
}
]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.tilta.io/v1/persons/{external_id}",
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([
'first_name' => '<string>',
'last_name' => '<string>',
'birth_date' => 123,
'email' => 'jsmith@example.com',
'phone' => '+491711010101',
'is_fatca' => true,
'is_pep' => true,
'tax_id' => '<string>',
'citizenship' => [
],
'addresses' => [
[
'postcode' => '12345',
'city' => 'Berlin',
'street' => 'Example Street',
'house' => '42b',
'additional' => 'c/o Testimonial'
]
]
]),
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;
}{
"external_id": "<string>",
"first_name": "<string>",
"last_name": "<string>",
"salutation": "MR",
"birth_date": 123,
"email": "jsmith@example.com",
"phone": "+491711010101",
"is_fatca": true,
"is_pep": true,
"tax_id": "<string>",
"citizenship": [
"AF"
],
"addresses": [
{
"postcode": "12345",
"city": "Berlin",
"country": "AF",
"street": "Example Street",
"house": "42b",
"additional": "c/o Testimonial"
}
]
}{
"code": "BAD_REQUEST",
"error": "Request validation failed. 1 issue found.",
"issues": [
{
"code": "INVALID_TYPE",
"path": "body.registered_at",
"message": "Invalid type"
}
]
}{
"error": "Unauthorized",
"code": "UNAUTHORIZED"
}PUT semantics. All fields are overwritten with the values you provide, and the addresses array is replaced in its entirety – any address entries not included in the new payload will be removed. Use this endpoint to correct identity data, update a person’s name after a legal change, or refresh address history with a new current address. To update only specific fields, retrieve the current person first using the Retrieve person endpoint, make your changes to the returned payload, and submit the complete updated object to this endpoint.
addresses array is replaced entirely – omitting an existing address entry will
permanently remove it. Always retrieve the current person record before calling this endpoint to avoid data loss.Authorizations
Your Tilta API key, sent as Bearer <key>.
Path Parameters
Unique identifier of a person.
100^[a-zA-Z0-9-_]+$Body
Person salutation. Send null to clear.
MR, MS, OTHER Person first name.
Person last name.
Person date of birth. Send null to clear.
Person email. Send null to clear.
Person phone number (+491711010101). Send null to clear.
"+491711010101"
Is the person a US taxpayer under FATCA reporting obligations? Send null to clear.
Is the person a Politically Exposed person (PEP)? Send null to clear.
Person tax ID. Send null to clear.
Person citizenship. Send null or [] to clear.
AF, AL, DZ, AS, AD, AO, AI, AQ, AG, AR, AM, AW, AU, AT, AZ, BS, BH, BD, BB, BY, BE, BZ, BJ, BM, BT, BO, BQ, BA, BW, BV, BR, IO, BN, BG, BF, BI, CV, KH, CM, CA, KY, CF, TD, CL, CN, CX, CC, CO, KM, CD, CG, CK, CR, HR, CU, CW, CY, CZ, CI, DK, DJ, DM, DO, EC, EG, SV, GQ, ER, EE, SZ, ET, FK, FO, FJ, FI, FR, GF, PF, TF, GA, GM, GE, DE, GH, GI, GR, GL, GD, GP, GU, GT, GG, GN, GW, GY, HT, HM, VA, HN, HK, HU, IS, IN, ID, IR, IQ, IE, IM, IL, IT, JM, JP, JE, JO, KZ, KE, KI, KP, KR, KW, KG, LA, LV, LB, LS, LR, LY, LI, LT, LU, MO, MG, MW, MY, MV, ML, MT, MH, MQ, MR, MU, YT, MX, FM, MD, MC, MN, ME, MS, MA, MZ, MM, NA, NR, NP, NL, NC, NZ, NI, NE, NG, NU, NF, MK, MP, NO, OM, PK, PW, PS, PA, PG, PY, PE, PH, PN, PL, PT, PR, QA, RO, RU, RW, RE, BL, SH, KN, LC, MF, PM, VC, WS, SM, ST, SA, SN, RS, SC, SL, SG, SX, SK, SI, SB, SO, ZA, GS, SS, ES, LK, SD, SR, SJ, SE, CH, SY, TW, TJ, TZ, TH, TL, TG, TK, TO, TT, TN, TM, TC, TV, TR, UG, UA, AE, GB, UM, US, UY, UZ, VU, VE, VN, VG, VI, WF, EH, YE, ZM, ZW, AX Person's addresses. Replaces the existing set entirely. Send [] to clear all stored addresses.
Show child attributes
Show child attributes
Response
The person has been successfully updated.
Unique identifier of a person.
100^[a-zA-Z0-9-_]+$Person first name.
Person last name.
Person salutation.
MR, MS, OTHER Person date of birth.
Person email.
Person phone number. (+491711010101)
"+491711010101"
Is the person a US taxpayer under FATCA reporting obligations?
Is the person a Politically Exposed person (PEP)?
Person tax ID.
Person citizenship.
AF, AL, DZ, AS, AD, AO, AI, AQ, AG, AR, AM, AW, AU, AT, AZ, BS, BH, BD, BB, BY, BE, BZ, BJ, BM, BT, BO, BQ, BA, BW, BV, BR, IO, BN, BG, BF, BI, CV, KH, CM, CA, KY, CF, TD, CL, CN, CX, CC, CO, KM, CD, CG, CK, CR, HR, CU, CW, CY, CZ, CI, DK, DJ, DM, DO, EC, EG, SV, GQ, ER, EE, SZ, ET, FK, FO, FJ, FI, FR, GF, PF, TF, GA, GM, GE, DE, GH, GI, GR, GL, GD, GP, GU, GT, GG, GN, GW, GY, HT, HM, VA, HN, HK, HU, IS, IN, ID, IR, IQ, IE, IM, IL, IT, JM, JP, JE, JO, KZ, KE, KI, KP, KR, KW, KG, LA, LV, LB, LS, LR, LY, LI, LT, LU, MO, MG, MW, MY, MV, ML, MT, MH, MQ, MR, MU, YT, MX, FM, MD, MC, MN, ME, MS, MA, MZ, MM, NA, NR, NP, NL, NC, NZ, NI, NE, NG, NU, NF, MK, MP, NO, OM, PK, PW, PS, PA, PG, PY, PE, PH, PN, PL, PT, PR, QA, RO, RU, RW, RE, BL, SH, KN, LC, MF, PM, VC, WS, SM, ST, SA, SN, RS, SC, SL, SG, SX, SK, SI, SB, SO, ZA, GS, SS, ES, LK, SD, SR, SJ, SE, CH, SY, TW, TJ, TZ, TH, TL, TG, TK, TO, TT, TN, TM, TC, TV, TR, UG, UA, AE, GB, UM, US, UY, UZ, VU, VE, VN, VG, VI, WF, EH, YE, ZM, ZW, AX Show child attributes
Show child attributes