curl --request POST \
--url https://api.getoneprofile.ai/inbox/threads/{thread_id}/blocked-reply/retry/ \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.getoneprofile.ai/inbox/threads/{thread_id}/blocked-reply/retry/"
headers = {"X-API-Key": "<api-key>"}
response = requests.post(url, headers=headers)
print(response.text)const options = {method: 'POST', headers: {'X-API-Key': '<api-key>'}};
fetch('https://api.getoneprofile.ai/inbox/threads/{thread_id}/blocked-reply/retry/', 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.getoneprofile.ai/inbox/threads/{thread_id}/blocked-reply/retry/",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_HTTPHEADER => [
"X-API-Key: <api-key>"
],
]);
$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.getoneprofile.ai/inbox/threads/{thread_id}/blocked-reply/retry/"
req, _ := http.NewRequest("POST", url, nil)
req.Header.Add("X-API-Key", "<api-key>")
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.getoneprofile.ai/inbox/threads/{thread_id}/blocked-reply/retry/")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.getoneprofile.ai/inbox/threads/{thread_id}/blocked-reply/retry/")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-API-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"body_text": "<string>",
"confidence": "high",
"confidence_reason": "<string>",
"generated_body_text": "<string>",
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"source": "auto_drafted",
"status": "pending_approval",
"steer_text": "<string>",
"subject": "<string>",
"thread_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"ask_reason": "low_confidence",
"channel": "email",
"confidence_score": 123,
"learning_subject_key": "<string>",
"mailbox_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"outbound_message_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"rating": "good",
"send_after": "2023-11-07T05:31:56Z",
"send_outcome": "as_written",
"sent_by_kind": "person"
}{
"detail": "<string>"
}{
"detail": "<string>"
}{
"detail": "<string>"
}{
"detail": "<string>",
"issues": [
{
"input": "<string>",
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}{
"detail": "<string>"
}{
"detail": "<string>"
}{
"detail": "<string>"
}Have the agent write a reply it wrote no draft for
The button on a conversation’s “No draft for this reply” line (blocked_reply): its sequence’s agent would answer the newest reply and wrote no draft for it, and blocked_reply.reason says why. The agent writes that reply now, for the person asking, as Draft with AI does: charged as any reply it writes, it waits for a person, and nothing is sent. A reply it leaves to a person by rule (one whose earlier reply was discarded, one long after the sequence ended) is written too, since a person asked. When nothing usable was written it answers 409 saying so, and the line then says so too; the line goes once the draft exists. A refusal leaves the line saying why. With dry_run it makes the checks made before the agent is asked and answers the draft as it would stand before its words are written, its words empty, asking no model, charging nothing and writing nothing.
curl --request POST \
--url https://api.getoneprofile.ai/inbox/threads/{thread_id}/blocked-reply/retry/ \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.getoneprofile.ai/inbox/threads/{thread_id}/blocked-reply/retry/"
headers = {"X-API-Key": "<api-key>"}
response = requests.post(url, headers=headers)
print(response.text)const options = {method: 'POST', headers: {'X-API-Key': '<api-key>'}};
fetch('https://api.getoneprofile.ai/inbox/threads/{thread_id}/blocked-reply/retry/', 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.getoneprofile.ai/inbox/threads/{thread_id}/blocked-reply/retry/",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_HTTPHEADER => [
"X-API-Key: <api-key>"
],
]);
$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.getoneprofile.ai/inbox/threads/{thread_id}/blocked-reply/retry/"
req, _ := http.NewRequest("POST", url, nil)
req.Header.Add("X-API-Key", "<api-key>")
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.getoneprofile.ai/inbox/threads/{thread_id}/blocked-reply/retry/")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.getoneprofile.ai/inbox/threads/{thread_id}/blocked-reply/retry/")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-API-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"body_text": "<string>",
"confidence": "high",
"confidence_reason": "<string>",
"generated_body_text": "<string>",
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"source": "auto_drafted",
"status": "pending_approval",
"steer_text": "<string>",
"subject": "<string>",
"thread_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"ask_reason": "low_confidence",
"channel": "email",
"confidence_score": 123,
"learning_subject_key": "<string>",
"mailbox_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"outbound_message_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"rating": "good",
"send_after": "2023-11-07T05:31:56Z",
"send_outcome": "as_written",
"sent_by_kind": "person"
}{
"detail": "<string>"
}{
"detail": "<string>"
}{
"detail": "<string>"
}{
"detail": "<string>",
"issues": [
{
"input": "<string>",
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}{
"detail": "<string>"
}{
"detail": "<string>"
}{
"detail": "<string>"
}Authorizations
Path Parameters
Query Parameters
Answer the draft as it would stand before its words are written, and write nothing.
Response
Successful Response
How sure the model is. Shown on the card; no band sends without a person.
high, medium, low auto_drafted, on_demand Where this reply stands. pending_approval: waiting for a person to approve, edit or discard it. scheduled: a reply an older release scheduled, which nothing sends now; it waits for a person exactly as pending_approval does, and is approved, edited or discarded the same way. sending: it is leaving now and can no longer be changed. send_unknown: it was sent, but the mailbox has not confirmed it yet; it settles on its own as sent or send_failed. send_failed: it did not go; write a fresh reply. sent: it went out. discarded: a person rejected it or asked for a new version. stale: the contact wrote again before anyone answered it.
pending_approval, sent, discarded, stale, scheduled, sending, send_unknown, send_failed Why an older release held this reply for a person when it would otherwise have sent it, for example low_confidence, always_ask, unverified_sender, different_sender or daily_cap. Every reply waits for a person now, so it is null on every reply written since, and on a reply a person asked for.
low_confidence, findings, insufficient_data, policy, always_ask, sequence_manual, step_requires_approval, daily_cap, unverified_sender, suppressed, different_sender, label, question, consecutive_cap, thread_cap, hourly_cap, org_daily_cap, stale_inbound, sequence_gone, bot_question, automated_counterparty, kill_switch, authentication, language, linkedin_only, send_interrupted, sender_switched_to_manual The channel the reply goes out on: the one the message it answers came in on, so a contact who answered a LinkedIn conversation by email is answered by email. Null on a reply written before this was recorded, which goes out on the conversation's own channel.
email, linkedin The model's 0-100 calibration, clamped into the categorical band. Null for drafts that predate the field. Presentation only: every decision reads the categorical confidence.
What a Needs work on this reply is filed under: list its events with GET /agent-learnings/thumbs-downs/?subject_key=. One key for every version of the reply (Write again, a Needs work's rewrite, its Undo), so the note a Needs work left on one version is found on the next. Null on a reply no sequence's agent wrote, which has no agent to save a learning for.
The mailbox an email reply is sent from: the one the email it answers came in to. Null on a LinkedIn reply, on one written before this was recorded, and once that mailbox is removed; each goes out from the conversation's own mailbox.
The agent's message this reply came from, when a sequence's agent wrote it. Ratings and the send are recorded against that message too, as a record that saves no learning: only Needs work on the draft does. Null on a reply written in the default voice for a conversation outside any sequence.
The human verdict on this draft, when one was given.
good, bad When an older release would have sent a scheduled reply; nothing sends it now. Kept on a reply that release sent. Null on a reply that was never scheduled, and on one handed back to a person, edited or approved.
How the words a person sent stand to what the AI wrote, decided as they sent it. as_written: the AI's words, unchanged. edited: the person changed them and kept what they say. replaced: the person sent a reply of their own in its place. Null until a person sends it, on a reply an older release sent without one, and on one sent before this was recorded.
as_written, edited, replaced Who sent the reply: person when someone approved it, system on a reply an older release sent without one. Null until it is sent.
person, system Was this page helpful?