curl --request POST \
--url https://api.reply.io/v3/ai-sdr/offers \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "Q3 Enterprise Outbound",
"companyName": "Acme Robotics",
"companyDescription": "AI-driven warehouse automation for mid-market logistics.",
"icp": "Director of Operations at logistics companies with 200+ warehouse staff",
"reasonForOutreach": "Q3 push into mid-market logistics.",
"caseStudies": [
"Reduced order-pick errors 38% at NorthStar Logistics"
],
"painPoints": [
"Manual pick-pack errors driving customer churn"
],
"proofPoints": [
"Used by 4 of top 10 mid-market 3PLs"
],
"valuePropositions": [
"30% pick-rate improvement in 90 days"
],
"callToActions": [
"15-min demo this week?"
]
}
'import requests
url = "https://api.reply.io/v3/ai-sdr/offers"
payload = {
"name": "Q3 Enterprise Outbound",
"companyName": "Acme Robotics",
"companyDescription": "AI-driven warehouse automation for mid-market logistics.",
"icp": "Director of Operations at logistics companies with 200+ warehouse staff",
"reasonForOutreach": "Q3 push into mid-market logistics.",
"caseStudies": ["Reduced order-pick errors 38% at NorthStar Logistics"],
"painPoints": ["Manual pick-pack errors driving customer churn"],
"proofPoints": ["Used by 4 of top 10 mid-market 3PLs"],
"valuePropositions": ["30% pick-rate improvement in 90 days"],
"callToActions": ["15-min demo this week?"]
}
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({
name: 'Q3 Enterprise Outbound',
companyName: 'Acme Robotics',
companyDescription: 'AI-driven warehouse automation for mid-market logistics.',
icp: 'Director of Operations at logistics companies with 200+ warehouse staff',
reasonForOutreach: 'Q3 push into mid-market logistics.',
caseStudies: ['Reduced order-pick errors 38% at NorthStar Logistics'],
painPoints: ['Manual pick-pack errors driving customer churn'],
proofPoints: ['Used by 4 of top 10 mid-market 3PLs'],
valuePropositions: ['30% pick-rate improvement in 90 days'],
callToActions: ['15-min demo this week?']
})
};
fetch('https://api.reply.io/v3/ai-sdr/offers', 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/ai-sdr/offers",
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([
'name' => 'Q3 Enterprise Outbound',
'companyName' => 'Acme Robotics',
'companyDescription' => 'AI-driven warehouse automation for mid-market logistics.',
'icp' => 'Director of Operations at logistics companies with 200+ warehouse staff',
'reasonForOutreach' => 'Q3 push into mid-market logistics.',
'caseStudies' => [
'Reduced order-pick errors 38% at NorthStar Logistics'
],
'painPoints' => [
'Manual pick-pack errors driving customer churn'
],
'proofPoints' => [
'Used by 4 of top 10 mid-market 3PLs'
],
'valuePropositions' => [
'30% pick-rate improvement in 90 days'
],
'callToActions' => [
'15-min demo this week?'
]
]),
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/ai-sdr/offers"
payload := strings.NewReader("{\n \"name\": \"Q3 Enterprise Outbound\",\n \"companyName\": \"Acme Robotics\",\n \"companyDescription\": \"AI-driven warehouse automation for mid-market logistics.\",\n \"icp\": \"Director of Operations at logistics companies with 200+ warehouse staff\",\n \"reasonForOutreach\": \"Q3 push into mid-market logistics.\",\n \"caseStudies\": [\n \"Reduced order-pick errors 38% at NorthStar Logistics\"\n ],\n \"painPoints\": [\n \"Manual pick-pack errors driving customer churn\"\n ],\n \"proofPoints\": [\n \"Used by 4 of top 10 mid-market 3PLs\"\n ],\n \"valuePropositions\": [\n \"30% pick-rate improvement in 90 days\"\n ],\n \"callToActions\": [\n \"15-min demo this week?\"\n ]\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/ai-sdr/offers")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"Q3 Enterprise Outbound\",\n \"companyName\": \"Acme Robotics\",\n \"companyDescription\": \"AI-driven warehouse automation for mid-market logistics.\",\n \"icp\": \"Director of Operations at logistics companies with 200+ warehouse staff\",\n \"reasonForOutreach\": \"Q3 push into mid-market logistics.\",\n \"caseStudies\": [\n \"Reduced order-pick errors 38% at NorthStar Logistics\"\n ],\n \"painPoints\": [\n \"Manual pick-pack errors driving customer churn\"\n ],\n \"proofPoints\": [\n \"Used by 4 of top 10 mid-market 3PLs\"\n ],\n \"valuePropositions\": [\n \"30% pick-rate improvement in 90 days\"\n ],\n \"callToActions\": [\n \"15-min demo this week?\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.reply.io/v3/ai-sdr/offers")
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 \"name\": \"Q3 Enterprise Outbound\",\n \"companyName\": \"Acme Robotics\",\n \"companyDescription\": \"AI-driven warehouse automation for mid-market logistics.\",\n \"icp\": \"Director of Operations at logistics companies with 200+ warehouse staff\",\n \"reasonForOutreach\": \"Q3 push into mid-market logistics.\",\n \"caseStudies\": [\n \"Reduced order-pick errors 38% at NorthStar Logistics\"\n ],\n \"painPoints\": [\n \"Manual pick-pack errors driving customer churn\"\n ],\n \"proofPoints\": [\n \"Used by 4 of top 10 mid-market 3PLs\"\n ],\n \"valuePropositions\": [\n \"30% pick-rate improvement in 90 days\"\n ],\n \"callToActions\": [\n \"15-min demo this week?\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"id": 4821,
"name": "Q3 Enterprise Outbound",
"companyName": "Acme Robotics",
"companyDescription": "AI-driven warehouse automation for mid-market logistics.",
"icp": "Director of Operations at logistics companies with 200+ warehouse staff",
"reasonForOutreach": "Q3 push into mid-market logistics — Acme just closed a marquee customer in this segment.",
"caseStudies": [
"Reduced order-pick errors 38% at NorthStar Logistics"
],
"painPoints": [
"Manual pick-pack errors driving customer churn",
"Labor cost rising 12% YoY"
],
"proofPoints": [
"Used by 4 of top 10 mid-market 3PLs"
],
"valuePropositions": [
"30% pick-rate improvement in 90 days"
],
"callToActions": [
"15-min demo this week?"
]
}Create an offer
ai-sdr:write scope (or a broader one that includes it).
Creates a new offer. Only name is strictly required; all other fields default to empty.
Requires the AI SDR feature on the caller’s team.
curl --request POST \
--url https://api.reply.io/v3/ai-sdr/offers \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "Q3 Enterprise Outbound",
"companyName": "Acme Robotics",
"companyDescription": "AI-driven warehouse automation for mid-market logistics.",
"icp": "Director of Operations at logistics companies with 200+ warehouse staff",
"reasonForOutreach": "Q3 push into mid-market logistics.",
"caseStudies": [
"Reduced order-pick errors 38% at NorthStar Logistics"
],
"painPoints": [
"Manual pick-pack errors driving customer churn"
],
"proofPoints": [
"Used by 4 of top 10 mid-market 3PLs"
],
"valuePropositions": [
"30% pick-rate improvement in 90 days"
],
"callToActions": [
"15-min demo this week?"
]
}
'import requests
url = "https://api.reply.io/v3/ai-sdr/offers"
payload = {
"name": "Q3 Enterprise Outbound",
"companyName": "Acme Robotics",
"companyDescription": "AI-driven warehouse automation for mid-market logistics.",
"icp": "Director of Operations at logistics companies with 200+ warehouse staff",
"reasonForOutreach": "Q3 push into mid-market logistics.",
"caseStudies": ["Reduced order-pick errors 38% at NorthStar Logistics"],
"painPoints": ["Manual pick-pack errors driving customer churn"],
"proofPoints": ["Used by 4 of top 10 mid-market 3PLs"],
"valuePropositions": ["30% pick-rate improvement in 90 days"],
"callToActions": ["15-min demo this week?"]
}
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({
name: 'Q3 Enterprise Outbound',
companyName: 'Acme Robotics',
companyDescription: 'AI-driven warehouse automation for mid-market logistics.',
icp: 'Director of Operations at logistics companies with 200+ warehouse staff',
reasonForOutreach: 'Q3 push into mid-market logistics.',
caseStudies: ['Reduced order-pick errors 38% at NorthStar Logistics'],
painPoints: ['Manual pick-pack errors driving customer churn'],
proofPoints: ['Used by 4 of top 10 mid-market 3PLs'],
valuePropositions: ['30% pick-rate improvement in 90 days'],
callToActions: ['15-min demo this week?']
})
};
fetch('https://api.reply.io/v3/ai-sdr/offers', 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/ai-sdr/offers",
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([
'name' => 'Q3 Enterprise Outbound',
'companyName' => 'Acme Robotics',
'companyDescription' => 'AI-driven warehouse automation for mid-market logistics.',
'icp' => 'Director of Operations at logistics companies with 200+ warehouse staff',
'reasonForOutreach' => 'Q3 push into mid-market logistics.',
'caseStudies' => [
'Reduced order-pick errors 38% at NorthStar Logistics'
],
'painPoints' => [
'Manual pick-pack errors driving customer churn'
],
'proofPoints' => [
'Used by 4 of top 10 mid-market 3PLs'
],
'valuePropositions' => [
'30% pick-rate improvement in 90 days'
],
'callToActions' => [
'15-min demo this week?'
]
]),
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/ai-sdr/offers"
payload := strings.NewReader("{\n \"name\": \"Q3 Enterprise Outbound\",\n \"companyName\": \"Acme Robotics\",\n \"companyDescription\": \"AI-driven warehouse automation for mid-market logistics.\",\n \"icp\": \"Director of Operations at logistics companies with 200+ warehouse staff\",\n \"reasonForOutreach\": \"Q3 push into mid-market logistics.\",\n \"caseStudies\": [\n \"Reduced order-pick errors 38% at NorthStar Logistics\"\n ],\n \"painPoints\": [\n \"Manual pick-pack errors driving customer churn\"\n ],\n \"proofPoints\": [\n \"Used by 4 of top 10 mid-market 3PLs\"\n ],\n \"valuePropositions\": [\n \"30% pick-rate improvement in 90 days\"\n ],\n \"callToActions\": [\n \"15-min demo this week?\"\n ]\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/ai-sdr/offers")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"Q3 Enterprise Outbound\",\n \"companyName\": \"Acme Robotics\",\n \"companyDescription\": \"AI-driven warehouse automation for mid-market logistics.\",\n \"icp\": \"Director of Operations at logistics companies with 200+ warehouse staff\",\n \"reasonForOutreach\": \"Q3 push into mid-market logistics.\",\n \"caseStudies\": [\n \"Reduced order-pick errors 38% at NorthStar Logistics\"\n ],\n \"painPoints\": [\n \"Manual pick-pack errors driving customer churn\"\n ],\n \"proofPoints\": [\n \"Used by 4 of top 10 mid-market 3PLs\"\n ],\n \"valuePropositions\": [\n \"30% pick-rate improvement in 90 days\"\n ],\n \"callToActions\": [\n \"15-min demo this week?\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.reply.io/v3/ai-sdr/offers")
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 \"name\": \"Q3 Enterprise Outbound\",\n \"companyName\": \"Acme Robotics\",\n \"companyDescription\": \"AI-driven warehouse automation for mid-market logistics.\",\n \"icp\": \"Director of Operations at logistics companies with 200+ warehouse staff\",\n \"reasonForOutreach\": \"Q3 push into mid-market logistics.\",\n \"caseStudies\": [\n \"Reduced order-pick errors 38% at NorthStar Logistics\"\n ],\n \"painPoints\": [\n \"Manual pick-pack errors driving customer churn\"\n ],\n \"proofPoints\": [\n \"Used by 4 of top 10 mid-market 3PLs\"\n ],\n \"valuePropositions\": [\n \"30% pick-rate improvement in 90 days\"\n ],\n \"callToActions\": [\n \"15-min demo this week?\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"id": 4821,
"name": "Q3 Enterprise Outbound",
"companyName": "Acme Robotics",
"companyDescription": "AI-driven warehouse automation for mid-market logistics.",
"icp": "Director of Operations at logistics companies with 200+ warehouse staff",
"reasonForOutreach": "Q3 push into mid-market logistics — Acme just closed a marquee customer in this segment.",
"caseStudies": [
"Reduced order-pick errors 38% at NorthStar Logistics"
],
"painPoints": [
"Manual pick-pack errors driving customer churn",
"Labor cost rising 12% YoY"
],
"proofPoints": [
"Used by 4 of top 10 mid-market 3PLs"
],
"valuePropositions": [
"30% pick-rate improvement in 90 days"
],
"callToActions": [
"15-min demo this week?"
]
}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.
Body
Request body for creating a new offer.
Display name of the offer
1 - 200The company being represented in outreach
200Short description of what the company does
3000Ideal Customer Profile
1000Free-form rationale for the outreach
1000Case studies (max 10; each non-empty, max 1000 chars)
101 - 1000Customer pain points (max 10; each non-empty, max 1000 chars)
101 - 1000Proof points (max 10; each non-empty, max 1000 chars)
101 - 1000Value propositions (max 10; each non-empty, max 1000 chars)
101 - 1000Call-to-action phrasings (max 10; each non-empty, max 1000 chars)
101 - 1000Response
Offer created successfully
Detailed representation of an offer — the bundle of company-context inputs the AI SDR uses to personalize outreach. Returned by get/create/update responses.
Unique identifier for the offer
Display name of the offer
The company being represented in outreach
Short description of what the company does
Ideal Customer Profile — who the offer is meant for
Free-form rationale shown to the AI SDR for why this outreach is being made
Case studies that demonstrate the company's value
Customer pain points this offer addresses
Proof points that back up the offer's claims
Value propositions presented in messaging
Call-to-action phrasings the AI SDR can use