curl --request POST \
--url https://api.reply.io/v3/ai-prompts \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "Warm, specific comment",
"text": "Write a short, genuine comment that reacts to one concrete point in the post. Avoid flattery and never pitch.",
"stepType": "commentOnRecentPost"
}
'import requests
url = "https://api.reply.io/v3/ai-prompts"
payload = {
"name": "Warm, specific comment",
"text": "Write a short, genuine comment that reacts to one concrete point in the post. Avoid flattery and never pitch.",
"stepType": "commentOnRecentPost"
}
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: 'Warm, specific comment',
text: 'Write a short, genuine comment that reacts to one concrete point in the post. Avoid flattery and never pitch.',
stepType: 'commentOnRecentPost'
})
};
fetch('https://api.reply.io/v3/ai-prompts', 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-prompts",
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' => 'Warm, specific comment',
'text' => 'Write a short, genuine comment that reacts to one concrete point in the post. Avoid flattery and never pitch.',
'stepType' => 'commentOnRecentPost'
]),
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-prompts"
payload := strings.NewReader("{\n \"name\": \"Warm, specific comment\",\n \"text\": \"Write a short, genuine comment that reacts to one concrete point in the post. Avoid flattery and never pitch.\",\n \"stepType\": \"commentOnRecentPost\"\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-prompts")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"Warm, specific comment\",\n \"text\": \"Write a short, genuine comment that reacts to one concrete point in the post. Avoid flattery and never pitch.\",\n \"stepType\": \"commentOnRecentPost\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.reply.io/v3/ai-prompts")
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\": \"Warm, specific comment\",\n \"text\": \"Write a short, genuine comment that reacts to one concrete point in the post. Avoid flattery and never pitch.\",\n \"stepType\": \"commentOnRecentPost\"\n}"
response = http.request(request)
puts response.read_body{
"id": 123,
"name": "Warm, specific comment",
"text": "Write a short, genuine comment that reacts to one concrete point in the post. Avoid flattery and never pitch.",
"scope": "personal",
"stepType": "commentOnRecentPost"
}Create a personal AI prompt
New. This endpoint shipped recently. If anything about it is unclear or could work better for you, tell us in the developer Slack.
sequences:write scope (or a broader one that includes it).
Save your own AI prompt for a sequence step type so you can reuse it. The name must be unique among your personal prompts.
curl --request POST \
--url https://api.reply.io/v3/ai-prompts \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "Warm, specific comment",
"text": "Write a short, genuine comment that reacts to one concrete point in the post. Avoid flattery and never pitch.",
"stepType": "commentOnRecentPost"
}
'import requests
url = "https://api.reply.io/v3/ai-prompts"
payload = {
"name": "Warm, specific comment",
"text": "Write a short, genuine comment that reacts to one concrete point in the post. Avoid flattery and never pitch.",
"stepType": "commentOnRecentPost"
}
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: 'Warm, specific comment',
text: 'Write a short, genuine comment that reacts to one concrete point in the post. Avoid flattery and never pitch.',
stepType: 'commentOnRecentPost'
})
};
fetch('https://api.reply.io/v3/ai-prompts', 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-prompts",
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' => 'Warm, specific comment',
'text' => 'Write a short, genuine comment that reacts to one concrete point in the post. Avoid flattery and never pitch.',
'stepType' => 'commentOnRecentPost'
]),
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-prompts"
payload := strings.NewReader("{\n \"name\": \"Warm, specific comment\",\n \"text\": \"Write a short, genuine comment that reacts to one concrete point in the post. Avoid flattery and never pitch.\",\n \"stepType\": \"commentOnRecentPost\"\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-prompts")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"Warm, specific comment\",\n \"text\": \"Write a short, genuine comment that reacts to one concrete point in the post. Avoid flattery and never pitch.\",\n \"stepType\": \"commentOnRecentPost\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.reply.io/v3/ai-prompts")
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\": \"Warm, specific comment\",\n \"text\": \"Write a short, genuine comment that reacts to one concrete point in the post. Avoid flattery and never pitch.\",\n \"stepType\": \"commentOnRecentPost\"\n}"
response = http.request(request)
puts response.read_body{
"id": 123,
"name": "Warm, specific comment",
"text": "Write a short, genuine comment that reacts to one concrete point in the post. Avoid flattery and never pitch.",
"scope": "personal",
"stepType": "commentOnRecentPost"
}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 saving a new personal AI prompt.
Display name for the prompt. Must be unique among your personal prompts for the same step type.
256The prompt instructions given to the AI
2000The sequence step type this prompt is for. Fixed at creation and cannot be changed later.
commentOnRecentPost Response
The prompt was created
An AI prompt available for configuring a sequence step.
Unique identifier for the prompt
Display name of the prompt
The prompt instructions given to the AI
Whether the prompt is a read-only library prompt or your own personal prompt
library, personal The sequence step type this prompt is written for
commentOnRecentPost