curl --request POST \
--url https://api.coverwhale.dev/v1/submission/{displayId}/public-reply \
--header 'Accept: <accept>' \
--header 'AccessToken: <api-key>' \
--header 'Content-Type: <content-type>' \
--data '
{
"content": "Please add the trailer VIN 1UYVS2538 to this policy."
}
'import requests
url = "https://api.coverwhale.dev/v1/submission/{displayId}/public-reply"
payload = { "content": "Please add the trailer VIN 1UYVS2538 to this policy." }
headers = {
"Content-Type": "<content-type>",
"Accept": "<accept>",
"AccessToken": "<api-key>"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': '<content-type>', Accept: '<accept>', AccessToken: '<api-key>'},
body: JSON.stringify({content: 'Please add the trailer VIN 1UYVS2538 to this policy.'})
};
fetch('https://api.coverwhale.dev/v1/submission/{displayId}/public-reply', 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.coverwhale.dev/v1/submission/{displayId}/public-reply",
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([
'content' => 'Please add the trailer VIN 1UYVS2538 to this policy.'
]),
CURLOPT_HTTPHEADER => [
"Accept: <accept>",
"AccessToken: <api-key>",
"Content-Type: <content-type>"
],
]);
$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.coverwhale.dev/v1/submission/{displayId}/public-reply"
payload := strings.NewReader("{\n \"content\": \"Please add the trailer VIN 1UYVS2538 to this policy.\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Content-Type", "<content-type>")
req.Header.Add("Accept", "<accept>")
req.Header.Add("AccessToken", "<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.coverwhale.dev/v1/submission/{displayId}/public-reply")
.header("Content-Type", "<content-type>")
.header("Accept", "<accept>")
.header("AccessToken", "<api-key>")
.body("{\n \"content\": \"Please add the trailer VIN 1UYVS2538 to this policy.\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.coverwhale.dev/v1/submission/{displayId}/public-reply")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = '<content-type>'
request["Accept"] = '<accept>'
request["AccessToken"] = '<api-key>'
request.body = "{\n \"content\": \"Please add the trailer VIN 1UYVS2538 to this policy.\"\n}"
response = http.request(request)
puts response.read_body{
"status": "success",
"note_id": 987654
}{
"error": "Submission not found"
}{
"message": "The content field is required.",
"errors": {
"content": [
"The content field is required."
]
}
}Post a Public Reply
Post a public reply / note back onto a submission — the inbound counterpart to the outbound submission.public_reply webhook. The note is recorded on the submission and is visible to Cover Whale staff on the account’s Notes tab; it does not trigger a webhook back to you.
Scoped to the calling partner’s own submissions. A display ID that does not exist, or that belongs to another company, returns 404 — existence is never revealed to a non-owner.
curl --request POST \
--url https://api.coverwhale.dev/v1/submission/{displayId}/public-reply \
--header 'Accept: <accept>' \
--header 'AccessToken: <api-key>' \
--header 'Content-Type: <content-type>' \
--data '
{
"content": "Please add the trailer VIN 1UYVS2538 to this policy."
}
'import requests
url = "https://api.coverwhale.dev/v1/submission/{displayId}/public-reply"
payload = { "content": "Please add the trailer VIN 1UYVS2538 to this policy." }
headers = {
"Content-Type": "<content-type>",
"Accept": "<accept>",
"AccessToken": "<api-key>"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': '<content-type>', Accept: '<accept>', AccessToken: '<api-key>'},
body: JSON.stringify({content: 'Please add the trailer VIN 1UYVS2538 to this policy.'})
};
fetch('https://api.coverwhale.dev/v1/submission/{displayId}/public-reply', 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.coverwhale.dev/v1/submission/{displayId}/public-reply",
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([
'content' => 'Please add the trailer VIN 1UYVS2538 to this policy.'
]),
CURLOPT_HTTPHEADER => [
"Accept: <accept>",
"AccessToken: <api-key>",
"Content-Type: <content-type>"
],
]);
$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.coverwhale.dev/v1/submission/{displayId}/public-reply"
payload := strings.NewReader("{\n \"content\": \"Please add the trailer VIN 1UYVS2538 to this policy.\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Content-Type", "<content-type>")
req.Header.Add("Accept", "<accept>")
req.Header.Add("AccessToken", "<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.coverwhale.dev/v1/submission/{displayId}/public-reply")
.header("Content-Type", "<content-type>")
.header("Accept", "<accept>")
.header("AccessToken", "<api-key>")
.body("{\n \"content\": \"Please add the trailer VIN 1UYVS2538 to this policy.\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.coverwhale.dev/v1/submission/{displayId}/public-reply")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = '<content-type>'
request["Accept"] = '<accept>'
request["AccessToken"] = '<api-key>'
request.body = "{\n \"content\": \"Please add the trailer VIN 1UYVS2538 to this policy.\"\n}"
response = http.request(request)
puts response.read_body{
"status": "success",
"note_id": 987654
}{
"error": "Submission not found"
}{
"message": "The content field is required.",
"errors": {
"content": [
"The content field is required."
]
}
}Authorizations
JWT returned as AccessToken by the /authentication endpoint (the Cognito ID token carrying the email claim). It expires after 3600 seconds.
Path Parameters
Submission display ID
Body
The reply text to record on the submission. Required, up to 5000 characters. HTML is sanitized on write.
"Please add the trailer VIN 1UYVS2538 to this policy."