curl --request GET \
--url https://api.interchange.io/api/v2/storefront/media-buy-approvals/{mediaBuyId} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.interchange.io/api/v2/storefront/media-buy-approvals/{mediaBuyId}"
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/media-buy-approvals/{mediaBuyId}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"id": "42",
"kind": "create",
"storefrontId": "1234",
"mediaBuyId": "<string>",
"buyerCustomerId": 0,
"submittedPayload": "<unknown>",
"status": "pending",
"reviewedBy": "<string>",
"reviewedAt": "2023-11-07T05:31:56Z",
"reviewerNotes": "<string>",
"forwardedAt": "2023-11-07T05:31:56Z",
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z",
"readiness": {
"packages": [
{
"mediaProductId": "<string>",
"buyerRef": "<string>",
"assignedCreativeIds": [
"<string>"
],
"unusableCreatives": [
{
"creativeId": "<string>",
"reason": "<string>"
}
],
"unusableCreativeCount": 4503599627370495,
"compatibleUnattachedCreativeIds": [
"<string>"
],
"compatibleUnattachedCreativeCount": 4503599627370495
}
],
"packageCount": 4503599627370495,
"creativelessPackageCount": 4503599627370495,
"creativeSyncFailures": [
{
"creativeId": "<string>",
"status": "<string>",
"detail": "<string>"
}
],
"creativeSyncFailureCount": 4503599627370495
}
}{
"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 a single media-buy approval entry
Fetch one approval-queue entry by the buyer’s media_buy_id. Returns the raw submitted payload alongside the current status and any operator decision.
curl --request GET \
--url https://api.interchange.io/api/v2/storefront/media-buy-approvals/{mediaBuyId} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.interchange.io/api/v2/storefront/media-buy-approvals/{mediaBuyId}"
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/media-buy-approvals/{mediaBuyId}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"id": "42",
"kind": "create",
"storefrontId": "1234",
"mediaBuyId": "<string>",
"buyerCustomerId": 0,
"submittedPayload": "<unknown>",
"status": "pending",
"reviewedBy": "<string>",
"reviewedAt": "2023-11-07T05:31:56Z",
"reviewerNotes": "<string>",
"forwardedAt": "2023-11-07T05:31:56Z",
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z",
"readiness": {
"packages": [
{
"mediaProductId": "<string>",
"buyerRef": "<string>",
"assignedCreativeIds": [
"<string>"
],
"unusableCreatives": [
{
"creativeId": "<string>",
"reason": "<string>"
}
],
"unusableCreativeCount": 4503599627370495,
"compatibleUnattachedCreativeIds": [
"<string>"
],
"compatibleUnattachedCreativeCount": 4503599627370495
}
],
"packageCount": 4503599627370495,
"creativelessPackageCount": 4503599627370495,
"creativeSyncFailures": [
{
"creativeId": "<string>",
"status": "<string>",
"detail": "<string>"
}
],
"creativeSyncFailureCount": 4503599627370495
}
}{
"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
Buyer-supplied media buy identifier (AdCP media_buy_id).
1Query Parameters
Buyer customer id that disambiguates a buyer-scoped media-buy id. Omit only when the id is unique for this storefront.
0 < x <= 9007199254740991Response
Get a single media-buy approval entry
A single pending media-buy entry on a storefront approval queue.
Surrogate id of the approval row (BIGINT serialized as string).
"42"
Approval workstream kind. create is an initial create_media_buy approval; update is a material update_media_buy approval for an already-created buy.
create, update Storefront the pending buy was submitted to (BIGINT serialized as string).
"1234"
Buyer-supplied media buy identifier (AdCP media_buy_id). Unique per storefront — re-submitting the same id is idempotent.
Customer id of the buyer who submitted the media buy.
-9007199254740991 <= x <= 9007199254740991Raw AdCP create_media_buy payload as the buyer submitted it, with buyer webhook credentials (push_notification_config / pushNotificationConfig) removed before it reaches operator-facing responses. Not normalized — the operator UI renders a summary directly from this object.
Lifecycle state. pending until the operator decides; approved once the operator accepts (forwarding upstream happens out-of-band and is reflected by forwardedAt); rejected when the operator declines; revoked when a buyer withdraws a pending create or when forwarding detects that its buyer-side buy was already canceled or archived.
pending, approved, rejected, revoked User id of the operator who recorded the decision (BIGINT serialized as string). Null while pending.
When the operator decision was recorded (ISO 8601). Null while pending.
^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$Operator note attached to the decision. Null while pending.
When forwarding to the underlying sales agent settled (ISO 8601) — stamped both when every source accepted the buy and when the forward was terminalized, because the stamp is also what stops the background worker re-attempting a dead forward. Null means the forward has not been attempted or is still in flight. Read it with the per-source legs to tell a delivered buy from a refused one: a delivered buy carries an upstreamMediaBuyId.
^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$When the buyer submitted the media buy (ISO 8601).
^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$When the row was last modified — submission, decision, or forwarding stamp (ISO 8601).
^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$Structural fillability of the buy. Present on pending create entries; null when the buy has already been decided, when it is an update approval, or when the projection could not be computed — never as a way of saying "nothing is wrong".
Show child attributes
Show child attributes