curl --request POST \
--url https://api.interchange.io/api/v2/storefront/creative-reviews/{creativeId}/preview \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"context_ref": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"expected_content_digest": "<string>"
}
'import requests
url = "https://api.interchange.io/api/v2/storefront/creative-reviews/{creativeId}/preview"
payload = {
"context_ref": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"expected_content_digest": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
context_ref: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
expected_content_digest: '<string>'
})
};
fetch('https://api.interchange.io/api/v2/storefront/creative-reviews/{creativeId}/preview', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"status": "completed",
"contextRef": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"authority": {
"kind": "serving_platform",
"authoritative": true,
"fidelity": "authoritative",
"placementId": "<string>"
},
"preview": {
"result": "<unknown>",
"expiresAt": "2023-11-07T05:31:56Z",
"metadata": "<unknown>"
},
"sourceTrust": {
"classification": "platform_managed_media",
"evidence": {
"kind": "<string>",
"digest": "<string>",
"policyVersion": "creative-review-source-trust/v1"
},
"reviewVersionDigest": "<string>",
"inlineAssets": [
{
"kind": "image",
"url": "<string>"
}
],
"staticRepresentation": {
"kind": "text",
"value": "<string>"
}
},
"representativeSellerPreview": {
"result": "<unknown>",
"expiresAt": "2023-11-07T05:31:56Z",
"metadata": "<unknown>"
},
"externalOpen": {
"url": "<string>",
"hostname": "<string>",
"expiresAt": "2023-11-07T05:31:56Z",
"authorizedOrigin": "https://preview.publisher.com"
}
}{
"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": {}
}
}Preview a creative in an exact placement context
Resolve the safest available preview for one immutable review version and one opaque, review-scoped placement context. Publisher-designated output is authoritative; serving-platform output is labeled representative. Submitted display tags and remote VAST remain source-only unless an authorized preview provider returns a render.
curl --request POST \
--url https://api.interchange.io/api/v2/storefront/creative-reviews/{creativeId}/preview \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"context_ref": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"expected_content_digest": "<string>"
}
'import requests
url = "https://api.interchange.io/api/v2/storefront/creative-reviews/{creativeId}/preview"
payload = {
"context_ref": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"expected_content_digest": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
context_ref: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
expected_content_digest: '<string>'
})
};
fetch('https://api.interchange.io/api/v2/storefront/creative-reviews/{creativeId}/preview', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"status": "completed",
"contextRef": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"authority": {
"kind": "serving_platform",
"authoritative": true,
"fidelity": "authoritative",
"placementId": "<string>"
},
"preview": {
"result": "<unknown>",
"expiresAt": "2023-11-07T05:31:56Z",
"metadata": "<unknown>"
},
"sourceTrust": {
"classification": "platform_managed_media",
"evidence": {
"kind": "<string>",
"digest": "<string>",
"policyVersion": "creative-review-source-trust/v1"
},
"reviewVersionDigest": "<string>",
"inlineAssets": [
{
"kind": "image",
"url": "<string>"
}
],
"staticRepresentation": {
"kind": "text",
"value": "<string>"
}
},
"representativeSellerPreview": {
"result": "<unknown>",
"expiresAt": "2023-11-07T05:31:56Z",
"metadata": "<unknown>"
},
"externalOpen": {
"url": "<string>",
"hostname": "<string>",
"expiresAt": "2023-11-07T05:31:56Z",
"authorizedOrigin": "https://preview.publisher.com"
}
}{
"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
Path Parameters
Immutable review reference returned by the queue. Preview requires the exact review:<id> namespace; bare creative ids are not accepted.
^review:[1-9]\d*$"review:42"
Body
Requests an authority-resolved preview for one immutable creative review placement context.
Opaque preview context returned on this exact review. The server resolves all route, provider, capability, package, and placement identity.
^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$SHA-256 content digest from the exact review version being previewed.
^[a-f0-9]{64}$Versioned review identity from this exact review row. Legacy callers may omit it; the server then derives the current identity from the persisted review context. A supplied value must match, and the request is rejected if the version changes before or after provider dispatch.
^[a-f0-9]{64}$Response
Preview a creative in an exact placement context
Authority-resolved preview result. Provider payloads remain inert data only: clients must never mount, prefetch, or execute provider content. A separate external-view envelope may only be opened after a second explicit user gesture through the MCP host bridge.
completed, source_only ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes