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
}
'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
}
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
})
};
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
]),
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}")
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}")
.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}"
response = http.request(request)
puts response.read_body{
"id": 12345,
"ownerUserId": 42,
"name": "Acme Corporation",
"description": "Enterprise software company",
"domainName": "acme.com",
"domainSecondary": "acme.io",
"industry": "Software",
"companySize": "51-200",
"country": "United States",
"state": "California",
"city": "San Francisco",
"timeZoneId": "America/Los_Angeles",
"linkedInUrl": "https://www.linkedin.com/company/acme",
"phone": "+1-415-555-0100",
"twitterUrl": "https://twitter.com/acme",
"logoUrl": "https://cdn.example.com/logos/acme.png",
"email": "info@acme.com",
"emailProvider": "office",
"stage": {
"id": 3,
"name": "Qualified",
"colorId": 2
},
"linkedProspectsCount": 17,
"createdDate": "2026-01-15T09:30:00Z",
"lastActivityDate": "2026-06-20T14:05:00Z"
}Update 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.
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
}
'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
}
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
})
};
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
]),
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}")
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}")
.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}"
response = http.request(request)
puts response.read_body{
"id": 12345,
"ownerUserId": 42,
"name": "Acme Corporation",
"description": "Enterprise software company",
"domainName": "acme.com",
"domainSecondary": "acme.io",
"industry": "Software",
"companySize": "51-200",
"country": "United States",
"state": "California",
"city": "San Francisco",
"timeZoneId": "America/Los_Angeles",
"linkedInUrl": "https://www.linkedin.com/company/acme",
"phone": "+1-415-555-0100",
"twitterUrl": "https://twitter.com/acme",
"logoUrl": "https://cdn.example.com/logos/acme.png",
"email": "info@acme.com",
"emailProvider": "office",
"stage": {
"id": 3,
"name": "Qualified",
"colorId": 2
},
"linkedProspectsCount": 17,
"createdDate": "2026-01-15T09:30:00Z",
"lastActivityDate": "2026-06-20T14:05:00Z"
}Authorizations
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
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