Skip to main content
GET
/
v3
/
ai-sdr
/
knowledge-bases
/
{knowledge_base_id}
/
reply-handlers
/
{reply_handler_id}
Get a reply handler
curl --request GET \
  --url https://api.reply.io/v3/ai-sdr/knowledge-bases/{knowledge_base_id}/reply-handlers/{reply_handler_id} \
  --header 'Authorization: Bearer <token>'
import requests

url = "https://api.reply.io/v3/ai-sdr/knowledge-bases/{knowledge_base_id}/reply-handlers/{reply_handler_id}"

headers = {"Authorization": "Bearer <token>"}

response = requests.get(url, headers=headers)

print(response.text)
const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};

fetch('https://api.reply.io/v3/ai-sdr/knowledge-bases/{knowledge_base_id}/reply-handlers/{reply_handler_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-sdr/knowledge-bases/{knowledge_base_id}/reply-handlers/{reply_handler_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
package main

import (
"fmt"
"net/http"
"io"
)

func main() {

url := "https://api.reply.io/v3/ai-sdr/knowledge-bases/{knowledge_base_id}/reply-handlers/{reply_handler_id}"

req, _ := http.NewRequest("GET", url, nil)

req.Header.Add("Authorization", "Bearer <token>")

res, _ := http.DefaultClient.Do(req)

defer res.Body.Close()
body, _ := io.ReadAll(res.Body)

fmt.Println(string(body))

}
HttpResponse<String> response = Unirest.get("https://api.reply.io/v3/ai-sdr/knowledge-bases/{knowledge_base_id}/reply-handlers/{reply_handler_id}")
.header("Authorization", "Bearer <token>")
.asString();
require 'uri'
require 'net/http'

url = URI("https://api.reply.io/v3/ai-sdr/knowledge-bases/{knowledge_base_id}/reply-handlers/{reply_handler_id}")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'

response = http.request(request)
puts response.read_body
{
  "id": "9c1f8a7e-0b3a-4d11-9b9c-2c4f8a7e0b3a",
  "typeOfQuestion": "Pricing inquiry",
  "instructions": "Quote our published tiered pricing; offer a discovery call for enterprise.",
  "sampleAnswer": "Thanks for asking! Our tiered pricing starts at $X...",
  "toneOfVoice": "confident",
  "responseLength": "medium",
  "links": [
    "https://example.com/pricing"
  ],
  "media": [
    {
      "id": 12345,
      "fileName": "pricing-tiers.png",
      "size": 248
    }
  ],
  "deliveryMode": "draft",
  "additionalNotificationEmail": null,
  "createdAt": "2026-05-10T14:32:11Z"
}
{
"title": "Validation failed",
"status": 400,
"detail": "The request contains validation errors.",
"errors": [
{
"pointer": "/knowledge_base_id",
"detail": "'knowledge_base_id' must be a positive integer."
}
]
}
{
"title": "Unauthorized",
"status": 401,
"detail": "Authentication credentials are missing or invalid."
}
{
"title": "Forbidden",
"status": 403,
"detail": "AI SDR feature is not available for your team",
"code": "knowledgeBase.forbidden"
}
{
"title": "Not Found",
"status": 404,
"detail": "Reply handler '9c1f8a7e-0b3a-4d11-9b9c-2c4f8a7e0b3a' not found",
"code": "knowledgeBase.notFound"
}
{
"title": "Bad Gateway",
"status": 502,
"detail": "Upstream service returned an unexpected error",
"code": "knowledgeBase.upstreamFailure"
}

Authorizations

Authorization
string
header
required

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

knowledge_base_id
integer<int64>
required
Required range: x >= 1
reply_handler_id
string<uuid>
required

Response

Reply handler found

Detailed representation of a reply handler.

id
string<uuid>
read-only

Unique identifier for the reply handler

typeOfQuestion
string

Short label describing the type of incoming reply this handler covers

instructions
string

Instructions for how to handle replies of this type

sampleAnswer
string

Optional sample answer used as a few-shot example

toneOfVoice
enum<string>

Tone applied to generated replies

Available options:
confident,
persuasive,
witty,
straightforward,
empathetic
responseLength
enum<string>

Target length for generated replies

Available options:
superShort,
short,
medium,
long

Reference URLs the AI SDR can quote when generating a reply

media
KnowledgeBaseMedia · object[]
read-only

Media items attached to this reply handler. Managed via the /media sub-resource.

deliveryMode
enum<string>

How generated replies for this handler are delivered

Available options:
draft,
auto,
stopAndNotify
additionalNotificationEmail
string | null

Extra recipient notified when a reply is handled with stopAndNotify. Ignored for other delivery modes.

createdAt
string<date-time>
read-only

Timestamp when the reply handler was created