curl --request GET \
--url https://api.coverwhale.dev/v1/submission/{displayId} \
--header 'Accept: <accept>' \
--header 'AccessToken: <api-key>' \
--header 'Content-Type: <content-type>'import requests
url = "https://api.coverwhale.dev/v1/submission/{displayId}"
headers = {
"Content-Type": "<content-type>",
"Accept": "<accept>",
"AccessToken": "<api-key>"
}
response = requests.get(url, headers=headers)
print(response.text)const options = {
method: 'GET',
headers: {'Content-Type': '<content-type>', Accept: '<accept>', AccessToken: '<api-key>'}
};
fetch('https://api.coverwhale.dev/v1/submission/{displayId}', 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}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
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"
"net/http"
"io"
)
func main() {
url := "https://api.coverwhale.dev/v1/submission/{displayId}"
req, _ := http.NewRequest("GET", url, nil)
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.get("https://api.coverwhale.dev/v1/submission/{displayId}")
.header("Content-Type", "<content-type>")
.header("Accept", "<accept>")
.header("AccessToken", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.coverwhale.dev/v1/submission/{displayId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Content-Type"] = '<content-type>'
request["Accept"] = '<accept>'
request["AccessToken"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"insuredInformation": {
"legal_name": "Alexander & Alexander, Inc.",
"mailing_address": "",
"mailing_city": null,
"mailing_state": "CA",
"mailing_zip": null
},
"submissionStatus": {
"submission_number": "2261310",
"status": "Request to Bind",
"pending_status": "None",
"calculated_status": "Bind Requested (Underwriting Review)",
"account_standing": "Not In Force"
},
"coverages": {
"al": {
"limit": 1000000,
"premium": "17300.00",
"deductible": null,
"policy_number": null,
"policy_effective_date": "2022-12-15",
"policy_expiration_date": "2023-12-15",
"carrier": "Everspan Indemnity Insurance Company",
"carrier_naic": 0
},
"apd": {
"limit": 50000,
"premium": "2500.00",
"deductible": 1000,
"policy_number": null,
"policy_effective_date": "2022-12-15",
"policy_expiration_date": "2023-12-15",
"carrier": "Everspan Indemnity Insurance Company",
"carrier_naic": 0
},
"mtc": {
"limit": 100000,
"premium": "5000.00",
"deductible": 100,
"policy_number": null,
"policy_effective_date": "2022-12-15",
"policy_expiration_date": "2023-12-15",
"carrier": "Canopius US Insurance",
"carrier_naic": 0
}
},
"vehicles": [
{
"equipment_type": "Vehicle",
"vin": "21S45D1S45",
"make": "VOLVO TRUCK",
"year": 2017,
"model": "VNL",
"value": 50000,
"body_type": "box_truck",
"deductible": 1000,
"loss_payee": null
}
],
"broker": {
"first_name": "firstname_1041",
"last_name": "lastname_1041",
"agency_name": "M.J. Hall and Company",
"address": "user_1041@example.com",
"phone": "8183371513"
},
"retailAgent": []
}{
"error": "Submission not found."
}Get Submission Status
Retrieve the current status and details of a submission by its display ID.
The response uses a two-part model: submissionStatus.status reflects the latest transaction (which may be an in-progress endorsement), while coverages, vehicles, drivers, insuredInformation, and premiumFinanceDetails reflect the effective (last-bound) policy. This means a pending endorsement is visible in status without blanking out the coverage the bound policy still provides. account_standing reports whether that effective policy is Active, Canceled, or Not In Force.
curl --request GET \
--url https://api.coverwhale.dev/v1/submission/{displayId} \
--header 'Accept: <accept>' \
--header 'AccessToken: <api-key>' \
--header 'Content-Type: <content-type>'import requests
url = "https://api.coverwhale.dev/v1/submission/{displayId}"
headers = {
"Content-Type": "<content-type>",
"Accept": "<accept>",
"AccessToken": "<api-key>"
}
response = requests.get(url, headers=headers)
print(response.text)const options = {
method: 'GET',
headers: {'Content-Type': '<content-type>', Accept: '<accept>', AccessToken: '<api-key>'}
};
fetch('https://api.coverwhale.dev/v1/submission/{displayId}', 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}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
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"
"net/http"
"io"
)
func main() {
url := "https://api.coverwhale.dev/v1/submission/{displayId}"
req, _ := http.NewRequest("GET", url, nil)
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.get("https://api.coverwhale.dev/v1/submission/{displayId}")
.header("Content-Type", "<content-type>")
.header("Accept", "<accept>")
.header("AccessToken", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.coverwhale.dev/v1/submission/{displayId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Content-Type"] = '<content-type>'
request["Accept"] = '<accept>'
request["AccessToken"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"insuredInformation": {
"legal_name": "Alexander & Alexander, Inc.",
"mailing_address": "",
"mailing_city": null,
"mailing_state": "CA",
"mailing_zip": null
},
"submissionStatus": {
"submission_number": "2261310",
"status": "Request to Bind",
"pending_status": "None",
"calculated_status": "Bind Requested (Underwriting Review)",
"account_standing": "Not In Force"
},
"coverages": {
"al": {
"limit": 1000000,
"premium": "17300.00",
"deductible": null,
"policy_number": null,
"policy_effective_date": "2022-12-15",
"policy_expiration_date": "2023-12-15",
"carrier": "Everspan Indemnity Insurance Company",
"carrier_naic": 0
},
"apd": {
"limit": 50000,
"premium": "2500.00",
"deductible": 1000,
"policy_number": null,
"policy_effective_date": "2022-12-15",
"policy_expiration_date": "2023-12-15",
"carrier": "Everspan Indemnity Insurance Company",
"carrier_naic": 0
},
"mtc": {
"limit": 100000,
"premium": "5000.00",
"deductible": 100,
"policy_number": null,
"policy_effective_date": "2022-12-15",
"policy_expiration_date": "2023-12-15",
"carrier": "Canopius US Insurance",
"carrier_naic": 0
}
},
"vehicles": [
{
"equipment_type": "Vehicle",
"vin": "21S45D1S45",
"make": "VOLVO TRUCK",
"year": 2017,
"model": "VNL",
"value": 50000,
"body_type": "box_truck",
"deductible": 1000,
"loss_payee": null
}
],
"broker": {
"first_name": "firstname_1041",
"last_name": "lastname_1041",
"agency_name": "M.J. Hall and Company",
"address": "user_1041@example.com",
"phone": "8183371513"
},
"retailAgent": []
}{
"error": "Submission not found."
}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
Query Parameters
Comma-separated list of extra sections to include. When omitted, documents are NOT returned (faster — ideal for status polling). Pass documents to include a documents section with signed S3 download URLs keyed by transaction (new_business, endorsement_1, ...).
"documents"
Response
quote success
Return the insured information
Show child attributes
Show child attributes
Current status of the submission. status, calculated_status, and account_standing are recomputed on every request (never cached) so they always reflect live state.
Show child attributes
Show child attributes
Return the coverages and the policy values and information
Show child attributes
Show child attributes
Return the vehicles and trailers of the submission
Show child attributes
Show child attributes
Return the broker information
Show child attributes
Show child attributes