Response Structure
All responses are returned as application/json. A successful response uses HTTP status 200 and contains a ValidResponse object. Error responses also use 200 with an error_code field — see Error Codes.
Top-Level Fields
| Field | Type | Description |
|---|---|---|
blink_receipt_id | string | The unique receipt ID created for this submission. |
isDuplicate | boolean | true if the submitted receipt was detected as a duplicate of a previously submitted receipt. |
duplicateBlinkReceiptIds | array of strings | The Blink receipt IDs of existing records that matched this submission. Only present when isDuplicate is true. |
products | array of objects | The submitted products, each enriched with product intelligence data. |
qualifiedPromotions | array of objects | Promotions that the basket qualified for. Present when promotion validation is enabled. |
unqualifiedPromos | array of objects | Promotions that were evaluated but not satisfied. Present when promotion validation is enabled. |
Product Fields
Each object in the products array contains the following fields. The rpn, rsd, qty, price, fullPrice, and totalPrice fields are confidence-wrapped objects (see below). The remaining fields are product intelligence enrichments returned as plain values.
Confidence-Wrapped Fields
These fields contain a value and a confidence score (0–100) indicating how certain the system is about the extracted value.
| Field | Value Type | Description |
|---|---|---|
rpn | string | Receipt product number (SKU) found on the receipt. |
rsd | string | Receipt product description found on the receipt. |
qty | number | Quantity of the item. May represent a weight when combined with a unit of measure. |
price | number | Actual unit price paid (after discounts). |
fullPrice | number | Full item price before any coupons or discounts. |
totalPrice | number | Total price paid for this line item (price x qty). |
Structure of each confidence-wrapped field:
{
"confidence": 99,
"value": "<the extracted value>"
}
Product Intelligence Fields
These fields are returned as plain values and are populated by the BlinkReceipt product intelligence database.
| Field | Type | Description |
|---|---|---|
brand | string | The brand of the matched product. |
category | string | The product category. |
image_url | string | URL of the product image. |
product_name | string | Full canonical product name. |
size | string | Package size (e.g. "5 oz"). |
upc | string | Universal Product Code. |
possible_products | array of objects | Returned when the match is ambiguous. Each entry is a candidate product with a probability score. See table below. |
possible_products Object Fields
| Field | Type | Description |
|---|---|---|
brand | string | Brand of the candidate product. |
category | string | Category of the candidate product. |
image_url | string | Image URL of the candidate product. |
product_name | string | Full name of the candidate product. |
size | string | Package size of the candidate product. |
upc | string | UPC of the candidate product. |
probability | number | Probability (0–1) that this candidate matches the scanned item. |
Qualified Promo Fields
Each object in qualifiedPromotions contains:
| Field | Type | Description |
|---|---|---|
slug | string | The promotion slug that qualified. |
rewardValue | number | The monetary value of the reward. |
rewardCurrency | string | Currency of the reward (e.g. "USD"). |
relatedProductIndexes | array of numbers | Zero-based indexes of the products in the products array that triggered this promotion. |
qualifications | array of arrays | When a promo qualifies multiple times on the same receipt, each element is an array of product indexes for that qualifying instance. |
qualifiedProductLists | array of objects | Detailed per-product qualification data. See table below. |
qualifiedProductLists Object Fields
| Field | Type | Description |
|---|---|---|
productIndex | integer | Index of the product in the products array. |
productGroups | array of strings | The promotion product groups this product qualified for. |
Unqualified Promo Fields
Each object in unqualifiedPromos contains:
| Field | Type | Description |
|---|---|---|
slug | string | The promotion slug that failed to qualify. |
errorCode | number | Numeric code indicating the reason for failure. |
errorMessage | string | Human-readable description of why the promotion did not qualify. |
Example Response
{
"blink_receipt_id": "394dc731-d77b-4eb9-93d2-d9612b3aa8c5",
"isDuplicate": false,
"duplicateBlinkReceiptIds": [],
"products": [
{
"rpn": { "confidence": 99, "value": "00021000658435" },
"rsd": { "confidence": 99, "value": "KRAFT MAC CHEESE" },
"qty": { "confidence": 99, "value": 2 },
"price": { "confidence": 99, "value": 1.99 },
"fullPrice": { "confidence": 99, "value": 2.49 },
"totalPrice": { "confidence": 99, "value": 3.98 },
"brand": "Kraft",
"category": "Microwaveable Meals",
"image_url": "https://www.domain.com/kraft-mac-cheese.png",
"product_name": "Kraft Macaroni & Cheese Original Flavor",
"size": "7.25 oz",
"upc": "021000658435",
"possible_products": []
},
{
"rpn": { "confidence": 99, "value": "00044600012618" },
"rsd": { "confidence": 99, "value": "CLOROX WIPES 75CT" },
"qty": { "confidence": 99, "value": 1 },
"price": { "confidence": 99, "value": 4.99 },
"fullPrice": { "confidence": 99, "value": 4.99 },
"totalPrice": { "confidence": 99, "value": 4.99 },
"brand": "Clorox",
"category": "Household Cleaning",
"image_url": "https://www.domain.com/clorox-wipes.png",
"product_name": "Clorox Disinfecting Wipes, Fresh Scent, 75 Count",
"size": "75 ct",
"upc": "044600012618",
"possible_products": []
}
],
"qualifiedPromotions": [
{
"slug": "clorox-spring-promo",
"rewardValue": 2.00,
"rewardCurrency": "USD",
"relatedProductIndexes": [1],
"qualifications": [[1]],
"qualifiedProductLists": [
{
"productIndex": 1,
"productGroups": ["Clorox Cleaning Products"]
}
]
}
],
"unqualifiedPromos": [
{
"slug": "buy2-kraft-promo",
"errorCode": 1,
"errorMessage": "Minimum quantity of 3 Kraft products not met"
}
]
}