curl --request GET \
--url https://api.interchange.io/api/v2/storefront/product-marketing/health \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.interchange.io/api/v2/storefront/product-marketing/health"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.interchange.io/api/v2/storefront/product-marketing/health', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"entryCount": 4503599627370495,
"claimCount": 4503599627370495,
"backedClaimCount": 4503599627370495,
"gapClaimCount": 4503599627370495,
"unreconciledClaimCount": 4503599627370495,
"lastVerdictChangeAt": "<string>"
}{
"data": null,
"error": {
"code": "<string>",
"message": "<string>",
"field": "<string>",
"details": {}
}
}{
"data": null,
"error": {
"code": "<string>",
"message": "<string>",
"field": "<string>",
"details": {}
}
}{
"data": null,
"error": {
"code": "<string>",
"message": "<string>",
"field": "<string>",
"details": {}
}
}{
"data": null,
"error": {
"code": "<string>",
"message": "<string>",
"field": "<string>",
"details": {}
}
}{
"data": null,
"error": {
"code": "<string>",
"message": "<string>",
"field": "<string>",
"details": {}
}
}Get product-marketing corpus health
Counts for the calling storefront’s product-marketing corpus: material ingested, live claims teaching the agent, how many of those the storefront’s live inventory backs, how many it does not (the gaps), how many carry no verdict, and when a verdict last changed. Reports persisted verdicts and does not re-run reconciliation, so it makes no claim about when the corpus was last checked; opening the corpus Page re-derives verdicts against current inventory and reports its own checked-at. Requires the product-marketing corpus to be enabled for the account.
curl --request GET \
--url https://api.interchange.io/api/v2/storefront/product-marketing/health \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.interchange.io/api/v2/storefront/product-marketing/health"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.interchange.io/api/v2/storefront/product-marketing/health', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"entryCount": 4503599627370495,
"claimCount": 4503599627370495,
"backedClaimCount": 4503599627370495,
"gapClaimCount": 4503599627370495,
"unreconciledClaimCount": 4503599627370495,
"lastVerdictChangeAt": "<string>"
}{
"data": null,
"error": {
"code": "<string>",
"message": "<string>",
"field": "<string>",
"details": {}
}
}{
"data": null,
"error": {
"code": "<string>",
"message": "<string>",
"field": "<string>",
"details": {}
}
}{
"data": null,
"error": {
"code": "<string>",
"message": "<string>",
"field": "<string>",
"details": {}
}
}{
"data": null,
"error": {
"code": "<string>",
"message": "<string>",
"field": "<string>",
"details": {}
}
}{
"data": null,
"error": {
"code": "<string>",
"message": "<string>",
"field": "<string>",
"details": {}
}
}Authorizations
API key or access token
Response
Get product-marketing corpus health
Counts for the seller rail’s Product marketing row: how much the corpus is teaching, how much of it live inventory backs, and when a verdict last changed.
Pieces of marketing material in the corpus.
0 <= x <= 9007199254740991Live claims currently teaching the agent.
0 <= x <= 9007199254740991Claims the storefront’s live inventory backs.
0 <= x <= 9007199254740991Claims live inventory does not back. This is the rail’s attention signal.
0 <= x <= 9007199254740991Claims with no verdict — nothing checkable in them, or never checked. Counted as its own bucket rather than folded into either verdict.
0 <= x <= 9007199254740991When a verdict last CHANGED, or null when none has ever been recorded. Deliberately not a measurement time: a claim’s reconciliation timestamp is only rewritten when its verdict moves, so this answers "when did this last change", never "when was this last checked". The rail renders it as a change time and makes no freshness claim; opening the corpus page re-derives verdicts against current inventory and reports its own checked-at.