Enrich contacts with an AI custom field
curl --request POST \
--url https://api.reply.io/v3/custom-fields/{id}/enrich \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"contactIds": [
1024,
1025,
1026
],
"overrideExistingData": false
}
'import requests
url = "https://api.reply.io/v3/custom-fields/{id}/enrich"
payload = {
"contactIds": [1024, 1025, 1026],
"overrideExistingData": False
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({contactIds: [1024, 1025, 1026], overrideExistingData: false})
};
fetch('https://api.reply.io/v3/custom-fields/{id}/enrich', 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/custom-fields/{id}/enrich",
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([
'contactIds' => [
1024,
1025,
1026
],
'overrideExistingData' => false
]),
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/custom-fields/{id}/enrich"
payload := strings.NewReader("{\n \"contactIds\": [\n 1024,\n 1025,\n 1026\n ],\n \"overrideExistingData\": false\n}")
req, _ := http.NewRequest("POST", 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.post("https://api.reply.io/v3/custom-fields/{id}/enrich")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"contactIds\": [\n 1024,\n 1025,\n 1026\n ],\n \"overrideExistingData\": false\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.reply.io/v3/custom-fields/{id}/enrich")
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 \"contactIds\": [\n 1024,\n 1025,\n 1026\n ],\n \"overrideExistingData\": false\n}"
response = http.request(request)
puts response.read_body{
"jobId": "6f6a2f0e-6a5a-4f2e-9a7a-2f0e6a5a4f2e",
"contactsAccepted": 3,
"enrichmentsQueued": 3
}Custom Fields
Enrich contacts with an AI custom field
Coming soon. This endpoint will be available by early October 2026.
contacts:operate scope (or a broader one that includes it).
Fill an AI custom field for your contacts. The work is queued and runs in the background; each enrichment costs one credit.
POST
/
v3
/
custom-fields
/
{id}
/
enrich
Enrich contacts with an AI custom field
curl --request POST \
--url https://api.reply.io/v3/custom-fields/{id}/enrich \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"contactIds": [
1024,
1025,
1026
],
"overrideExistingData": false
}
'import requests
url = "https://api.reply.io/v3/custom-fields/{id}/enrich"
payload = {
"contactIds": [1024, 1025, 1026],
"overrideExistingData": False
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({contactIds: [1024, 1025, 1026], overrideExistingData: false})
};
fetch('https://api.reply.io/v3/custom-fields/{id}/enrich', 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/custom-fields/{id}/enrich",
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([
'contactIds' => [
1024,
1025,
1026
],
'overrideExistingData' => false
]),
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/custom-fields/{id}/enrich"
payload := strings.NewReader("{\n \"contactIds\": [\n 1024,\n 1025,\n 1026\n ],\n \"overrideExistingData\": false\n}")
req, _ := http.NewRequest("POST", 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.post("https://api.reply.io/v3/custom-fields/{id}/enrich")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"contactIds\": [\n 1024,\n 1025,\n 1026\n ],\n \"overrideExistingData\": false\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.reply.io/v3/custom-fields/{id}/enrich")
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 \"contactIds\": [\n 1024,\n 1025,\n 1026\n ],\n \"overrideExistingData\": false\n}"
response = http.request(request)
puts response.read_body{
"jobId": "6f6a2f0e-6a5a-4f2e-9a7a-2f0e6a5a4f2e",
"contactsAccepted": 3,
"enrichmentsQueued": 3
}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
Custom field ID
Body
application/json
The contacts to enrich, up to 1000 per call. Omit the property entirely to enrich every contact you own, as far as your credits reach. An empty array is rejected.
Required array length:
1 - 1000 elementsRequired range:
x >= 1When false, contacts that already hold a value for the field are skipped. Set it to true to regenerate those values as well.
Response
Enrichment queued