curl --request PUT \
--url https://api.reply.io/v3/contact-accounts/{id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "<string>",
"description": "<string>",
"domainName": "<string>",
"domainSecondary": "<string>",
"industry": "<string>",
"country": "<string>",
"state": "<string>",
"city": "<string>",
"timeZoneId": "<string>",
"linkedInUrl": "<string>",
"phone": "<string>",
"twitterUrl": "<string>",
"logoUrl": "<string>",
"email": "<string>",
"ownerUserId": 123,
"customFields": [
{
"id": 123,
"name": "<string>",
"value": "<string>"
}
]
}
'import requests
url = "https://api.reply.io/v3/contact-accounts/{id}"
payload = {
"name": "<string>",
"description": "<string>",
"domainName": "<string>",
"domainSecondary": "<string>",
"industry": "<string>",
"country": "<string>",
"state": "<string>",
"city": "<string>",
"timeZoneId": "<string>",
"linkedInUrl": "<string>",
"phone": "<string>",
"twitterUrl": "<string>",
"logoUrl": "<string>",
"email": "<string>",
"ownerUserId": 123,
"customFields": [
{
"id": 123,
"name": "<string>",
"value": "<string>"
}
]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: '<string>',
description: '<string>',
domainName: '<string>',
domainSecondary: '<string>',
industry: '<string>',
country: '<string>',
state: '<string>',
city: '<string>',
timeZoneId: '<string>',
linkedInUrl: '<string>',
phone: '<string>',
twitterUrl: '<string>',
logoUrl: '<string>',
email: '<string>',
ownerUserId: 123,
customFields: [{id: 123, name: '<string>', value: '<string>'}]
})
};
fetch('https://api.reply.io/v3/contact-accounts/{id}', 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.reply.io/v3/contact-accounts/{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([
'name' => '<string>',
'description' => '<string>',
'domainName' => '<string>',
'domainSecondary' => '<string>',
'industry' => '<string>',
'country' => '<string>',
'state' => '<string>',
'city' => '<string>',
'timeZoneId' => '<string>',
'linkedInUrl' => '<string>',
'phone' => '<string>',
'twitterUrl' => '<string>',
'logoUrl' => '<string>',
'email' => '<string>',
'ownerUserId' => 123,
'customFields' => [
[
'id' => 123,
'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;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.reply.io/v3/contact-accounts/{id}"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"domainName\": \"<string>\",\n \"domainSecondary\": \"<string>\",\n \"industry\": \"<string>\",\n \"country\": \"<string>\",\n \"state\": \"<string>\",\n \"city\": \"<string>\",\n \"timeZoneId\": \"<string>\",\n \"linkedInUrl\": \"<string>\",\n \"phone\": \"<string>\",\n \"twitterUrl\": \"<string>\",\n \"logoUrl\": \"<string>\",\n \"email\": \"<string>\",\n \"ownerUserId\": 123,\n \"customFields\": [\n {\n \"id\": 123,\n \"name\": \"<string>\",\n \"value\": \"<string>\"\n }\n ]\n}")
req, _ := http.NewRequest("PUT", 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.put("https://api.reply.io/v3/contact-accounts/{id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"domainName\": \"<string>\",\n \"domainSecondary\": \"<string>\",\n \"industry\": \"<string>\",\n \"country\": \"<string>\",\n \"state\": \"<string>\",\n \"city\": \"<string>\",\n \"timeZoneId\": \"<string>\",\n \"linkedInUrl\": \"<string>\",\n \"phone\": \"<string>\",\n \"twitterUrl\": \"<string>\",\n \"logoUrl\": \"<string>\",\n \"email\": \"<string>\",\n \"ownerUserId\": 123,\n \"customFields\": [\n {\n \"id\": 123,\n \"name\": \"<string>\",\n \"value\": \"<string>\"\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.reply.io/v3/contact-accounts/{id}")
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 \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"domainName\": \"<string>\",\n \"domainSecondary\": \"<string>\",\n \"industry\": \"<string>\",\n \"country\": \"<string>\",\n \"state\": \"<string>\",\n \"city\": \"<string>\",\n \"timeZoneId\": \"<string>\",\n \"linkedInUrl\": \"<string>\",\n \"phone\": \"<string>\",\n \"twitterUrl\": \"<string>\",\n \"logoUrl\": \"<string>\",\n \"email\": \"<string>\",\n \"ownerUserId\": 123,\n \"customFields\": [\n {\n \"id\": 123,\n \"name\": \"<string>\",\n \"value\": \"<string>\"\n }\n ]\n}"
response = http.request(request)
puts response.read_bodyUpdate an account
contacts:write scope (or a broader one that includes it).
Replace an account’s details in full. Name and ownerUserId are required, and any optional field you leave out is cleared. customFields is the exception: the values you send are written, the values you leave out stay as they are.
curl --request PUT \
--url https://api.reply.io/v3/contact-accounts/{id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "<string>",
"description": "<string>",
"domainName": "<string>",
"domainSecondary": "<string>",
"industry": "<string>",
"country": "<string>",
"state": "<string>",
"city": "<string>",
"timeZoneId": "<string>",
"linkedInUrl": "<string>",
"phone": "<string>",
"twitterUrl": "<string>",
"logoUrl": "<string>",
"email": "<string>",
"ownerUserId": 123,
"customFields": [
{
"id": 123,
"name": "<string>",
"value": "<string>"
}
]
}
'import requests
url = "https://api.reply.io/v3/contact-accounts/{id}"
payload = {
"name": "<string>",
"description": "<string>",
"domainName": "<string>",
"domainSecondary": "<string>",
"industry": "<string>",
"country": "<string>",
"state": "<string>",
"city": "<string>",
"timeZoneId": "<string>",
"linkedInUrl": "<string>",
"phone": "<string>",
"twitterUrl": "<string>",
"logoUrl": "<string>",
"email": "<string>",
"ownerUserId": 123,
"customFields": [
{
"id": 123,
"name": "<string>",
"value": "<string>"
}
]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: '<string>',
description: '<string>',
domainName: '<string>',
domainSecondary: '<string>',
industry: '<string>',
country: '<string>',
state: '<string>',
city: '<string>',
timeZoneId: '<string>',
linkedInUrl: '<string>',
phone: '<string>',
twitterUrl: '<string>',
logoUrl: '<string>',
email: '<string>',
ownerUserId: 123,
customFields: [{id: 123, name: '<string>', value: '<string>'}]
})
};
fetch('https://api.reply.io/v3/contact-accounts/{id}', 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.reply.io/v3/contact-accounts/{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([
'name' => '<string>',
'description' => '<string>',
'domainName' => '<string>',
'domainSecondary' => '<string>',
'industry' => '<string>',
'country' => '<string>',
'state' => '<string>',
'city' => '<string>',
'timeZoneId' => '<string>',
'linkedInUrl' => '<string>',
'phone' => '<string>',
'twitterUrl' => '<string>',
'logoUrl' => '<string>',
'email' => '<string>',
'ownerUserId' => 123,
'customFields' => [
[
'id' => 123,
'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;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.reply.io/v3/contact-accounts/{id}"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"domainName\": \"<string>\",\n \"domainSecondary\": \"<string>\",\n \"industry\": \"<string>\",\n \"country\": \"<string>\",\n \"state\": \"<string>\",\n \"city\": \"<string>\",\n \"timeZoneId\": \"<string>\",\n \"linkedInUrl\": \"<string>\",\n \"phone\": \"<string>\",\n \"twitterUrl\": \"<string>\",\n \"logoUrl\": \"<string>\",\n \"email\": \"<string>\",\n \"ownerUserId\": 123,\n \"customFields\": [\n {\n \"id\": 123,\n \"name\": \"<string>\",\n \"value\": \"<string>\"\n }\n ]\n}")
req, _ := http.NewRequest("PUT", 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.put("https://api.reply.io/v3/contact-accounts/{id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"domainName\": \"<string>\",\n \"domainSecondary\": \"<string>\",\n \"industry\": \"<string>\",\n \"country\": \"<string>\",\n \"state\": \"<string>\",\n \"city\": \"<string>\",\n \"timeZoneId\": \"<string>\",\n \"linkedInUrl\": \"<string>\",\n \"phone\": \"<string>\",\n \"twitterUrl\": \"<string>\",\n \"logoUrl\": \"<string>\",\n \"email\": \"<string>\",\n \"ownerUserId\": 123,\n \"customFields\": [\n {\n \"id\": 123,\n \"name\": \"<string>\",\n \"value\": \"<string>\"\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.reply.io/v3/contact-accounts/{id}")
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 \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"domainName\": \"<string>\",\n \"domainSecondary\": \"<string>\",\n \"industry\": \"<string>\",\n \"country\": \"<string>\",\n \"state\": \"<string>\",\n \"city\": \"<string>\",\n \"timeZoneId\": \"<string>\",\n \"linkedInUrl\": \"<string>\",\n \"phone\": \"<string>\",\n \"twitterUrl\": \"<string>\",\n \"logoUrl\": \"<string>\",\n \"email\": \"<string>\",\n \"ownerUserId\": 123,\n \"customFields\": [\n {\n \"id\": 123,\n \"name\": \"<string>\",\n \"value\": \"<string>\"\n }\n ]\n}"
response = http.request(request)
puts response.read_bodyAuthorizations
Authenticate every request with a Bearer token. Pass your Reply API key in the
Authorization header:
Authorization: Bearer <your-api-key>
Get your API key from the Reply dashboard: Settings → API Key.
Path Parameters
Account ID
Body
Request body for updating a contact account
Contact account name
Optional description
Primary domain name
Secondary domain name
Industry of the company
Company size range
Empty, SelfEmployed, 2-10, 11-50, 51-200, 201-500, 501-1000, 1001-5000, 5001-10000, 10001+ Country of the company
State or province
City
Time zone identifier
LinkedIn profile URL
Phone number
Twitter profile URL
Company logo URL
Contact email address
ID of the user who owns this contact account
Account custom field values to write. Identify each field by id or by name; id wins when both are present.
A value for a number field must parse as a number, and every field must exist for your team: otherwise the request is rejected with 400 and nothing is written.
Requires the account custom fields feature; without it the request is rejected with 403.
Show child attributes
Show child attributes
Response
Account updated successfully
A single contact account, including the resolved email provider
Unique identifier of the contact account
ID of the user who owns this contact account
Contact account name
Optional description of the contact account
Primary domain name
Secondary domain name
Industry of the company
Company size range
Empty, SelfEmployed, 2-10, 11-50, 51-200, 201-500, 501-1000, 1001-5000, 5001-10000, 10001+ Country of the company
State or province
City
Time zone identifier
LinkedIn profile URL
Phone number
Twitter profile URL
Company logo URL
Contact email address
Email hosting provider for the account's primary domain, resolved from the domain's MX records.
null when the account has no domain or the provider could not be determined.
other, gSuite, office, zoho, mimecast, proofpoint, yandex, ovh, goDaddy, ionos, gandi, hostinger, oneAndOne, amazon, barracuda, spamexperts, hotmail, liveCom, yahoo, bloomberg, gmail, outlook, ciscoSecureEmail, titanMail, protonmail, namecheap, appleMail, linkedin Current stage of the contact account
Show child attributes
Show child attributes
Number of contacts linked to this account
Date when the account was created
Date of the last activity on this account
Account custom field values. key is the custom field id. Only fields that hold a value are listed.
Show child attributes
Show child attributes