curl --request GET \
--url https://api.byblend.com/api/v1/exceptions/entity/{entity_type}/{entity_id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.byblend.com/api/v1/exceptions/entity/{entity_type}/{entity_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.byblend.com/api/v1/exceptions/entity/{entity_type}/{entity_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.byblend.com/api/v1/exceptions/entity/{entity_type}/{entity_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.byblend.com/api/v1/exceptions/entity/{entity_type}/{entity_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.byblend.com/api/v1/exceptions/entity/{entity_type}/{entity_id}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.byblend.com/api/v1/exceptions/entity/{entity_type}/{entity_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": "0227d1e5-ba9a-42b5-8fe2-38882aa65708",
"entity_type": "order",
"entity_id": "b658f16f-819c-4503-aede-bd555fc4ebfb",
"exception_reason": "address",
"exception_reason_display": "Address Update Required",
"exception_description": "Address could not be verified by the carrier",
"is_active": true,
"is_customer_resolvable": true,
"expires_at": null,
"created_at": "2026-09-30T17:12:00",
"resolved_at": null,
"resolution_reason": null,
"annotation_id": "7d0f2a8c-8b4e-4c2e-9f1d-3a6b5c4d2e10",
"responses": [
{
"id": "5b1f7f0e-2f6c-4c1e-9a55-0f3f4b0c9a21",
"exception_id": "0227d1e5-ba9a-42b5-8fe2-38882aa65708",
"text": "The patient's corrected address is on the order now.",
"created_at": "2026-09-30T18:04:00",
"author": {
"first_name": "Charlie",
"last_name": "Customer",
"type": "customer"
}
}
]
}
]Get an entity's exceptions
Retrieve the exceptions on an order or prescription. For an order, this includes exceptions on the order’s prescriptions. The order.stuck webhook’s entity_type and id map directly onto this path, including for a stuck prescription that is not yet on an order.
curl --request GET \
--url https://api.byblend.com/api/v1/exceptions/entity/{entity_type}/{entity_id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.byblend.com/api/v1/exceptions/entity/{entity_type}/{entity_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.byblend.com/api/v1/exceptions/entity/{entity_type}/{entity_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.byblend.com/api/v1/exceptions/entity/{entity_type}/{entity_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.byblend.com/api/v1/exceptions/entity/{entity_type}/{entity_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.byblend.com/api/v1/exceptions/entity/{entity_type}/{entity_id}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.byblend.com/api/v1/exceptions/entity/{entity_type}/{entity_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": "0227d1e5-ba9a-42b5-8fe2-38882aa65708",
"entity_type": "order",
"entity_id": "b658f16f-819c-4503-aede-bd555fc4ebfb",
"exception_reason": "address",
"exception_reason_display": "Address Update Required",
"exception_description": "Address could not be verified by the carrier",
"is_active": true,
"is_customer_resolvable": true,
"expires_at": null,
"created_at": "2026-09-30T17:12:00",
"resolved_at": null,
"resolution_reason": null,
"annotation_id": "7d0f2a8c-8b4e-4c2e-9f1d-3a6b5c4d2e10",
"responses": [
{
"id": "5b1f7f0e-2f6c-4c1e-9a55-0f3f4b0c9a21",
"exception_id": "0227d1e5-ba9a-42b5-8fe2-38882aa65708",
"text": "The patient's corrected address is on the order now.",
"created_at": "2026-09-30T18:04:00",
"author": {
"first_name": "Charlie",
"last_name": "Customer",
"type": "customer"
}
}
]
}
]Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Path Parameters
Type of the stuck item
order, prescription For order: unique identifier for the order, either UUID, order number (e.g. ORD250312003548IAU4), or external ID (e.g. my-system-128318AA2) if you have provided one during order creation or update. For prescription: the prescription's UUID.
Query Parameters
Include resolved exceptions
Include each exception's responses (oldest first) as responses
Response
Successful response with an array of exceptions, newest first
Unique identifier for the exception. Sent as exception_id in the order.stuck webhook.
"0227d1e5-ba9a-42b5-8fe2-38882aa65708"
Whether the exception is on an order or on a prescription
order, prescription "order"
ID of the order or prescription the exception is on
"b658f16f-819c-4503-aede-bd555fc4ebfb"
Why the order or prescription is stuck
prescriber_data, patient_data, clinical_issue, patient_readiness, prescription_expired, prescription_missing, no_fills_remaining, order_data, address, order_too_early, duplicate_active_order "address"
Human-readable version of exception_reason
"Address Update Required"
Detail from Blend on what is needed
"Address could not be verified by the carrier"
true while the exception is blocking fulfillment; false once resolved
true
Whether supplying data from your side is expected to clear the exception
true
For time-based exceptions (e.g. too early to fill), when the exception resolves on its own
null
"2026-09-30T17:12:00"
null
Why the exception was resolved
null
ID of the exception's discussion thread
"7d0f2a8c-8b4e-4c2e-9f1d-3a6b5c4d2e10"
Responses on the exception, oldest first. Only present when include_responses=true.
Show child attributes
Show child attributes