curl --request PUT \
--url https://api.reply.io/v3/ai-prompts/{id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "Warm, specific comment (v2)",
"text": "Write a short, genuine comment that reacts to one concrete point in the post. Keep it under 30 words."
}
'import requests
url = "https://api.reply.io/v3/ai-prompts/{id}"
payload = {
"name": "Warm, specific comment (v2)",
"text": "Write a short, genuine comment that reacts to one concrete point in the post. Keep it under 30 words."
}
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: 'Warm, specific comment (v2)',
text: 'Write a short, genuine comment that reacts to one concrete point in the post. Keep it under 30 words.'
})
};
fetch('https://api.reply.io/v3/ai-prompts/{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/ai-prompts/{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' => 'Warm, specific comment (v2)',
'text' => 'Write a short, genuine comment that reacts to one concrete point in the post. Keep it under 30 words.'
]),
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/{id}"
payload := strings.NewReader("{\n \"name\": \"Warm, specific comment (v2)\",\n \"text\": \"Write a short, genuine comment that reacts to one concrete point in the post. Keep it under 30 words.\"\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/ai-prompts/{id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"Warm, specific comment (v2)\",\n \"text\": \"Write a short, genuine comment that reacts to one concrete point in the post. Keep it under 30 words.\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.reply.io/v3/ai-prompts/{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\": \"Warm, specific comment (v2)\",\n \"text\": \"Write a short, genuine comment that reacts to one concrete point in the post. Keep it under 30 words.\"\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"
}Update 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).
Rename one of your personal AI prompts or rewrite its text. Both fields are replaced, so send everything you want to keep.
curl --request PUT \
--url https://api.reply.io/v3/ai-prompts/{id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "Warm, specific comment (v2)",
"text": "Write a short, genuine comment that reacts to one concrete point in the post. Keep it under 30 words."
}
'import requests
url = "https://api.reply.io/v3/ai-prompts/{id}"
payload = {
"name": "Warm, specific comment (v2)",
"text": "Write a short, genuine comment that reacts to one concrete point in the post. Keep it under 30 words."
}
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: 'Warm, specific comment (v2)',
text: 'Write a short, genuine comment that reacts to one concrete point in the post. Keep it under 30 words.'
})
};
fetch('https://api.reply.io/v3/ai-prompts/{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/ai-prompts/{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' => 'Warm, specific comment (v2)',
'text' => 'Write a short, genuine comment that reacts to one concrete point in the post. Keep it under 30 words.'
]),
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/{id}"
payload := strings.NewReader("{\n \"name\": \"Warm, specific comment (v2)\",\n \"text\": \"Write a short, genuine comment that reacts to one concrete point in the post. Keep it under 30 words.\"\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/ai-prompts/{id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"Warm, specific comment (v2)\",\n \"text\": \"Write a short, genuine comment that reacts to one concrete point in the post. Keep it under 30 words.\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.reply.io/v3/ai-prompts/{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\": \"Warm, specific comment (v2)\",\n \"text\": \"Write a short, genuine comment that reacts to one concrete point in the post. Keep it under 30 words.\"\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.
Path Parameters
AI prompt ID
Body
Request body for updating a personal AI prompt. Both fields are required — the prompt is replaced with exactly what you send.
Display name for the prompt. Must be unique among your personal prompts for the same step type.
256The prompt instructions given to the AI
2000Response
The updated prompt
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