curl --request GET \
--url https://api.interchange.io/api/v2/storefront/pending-operations \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.interchange.io/api/v2/storefront/pending-operations"
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/pending-operations', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"approvals": {
"count": 4503599627370495,
"items": [
{
"mediaBuyId": "<string>",
"kind": "create",
"buyer": {
"customerId": 0,
"name": "<string>"
},
"submittedAt": "2023-11-07T05:31:56Z"
}
]
},
"creativeReviews": {
"count": 4503599627370495,
"items": [
{
"creativeId": "<string>",
"reviewRef": "<string>",
"mediaBuyId": "<string>",
"buyer": {
"customerId": 0,
"name": "<string>"
},
"submittedAt": "2023-11-07T05:31:56Z"
}
]
},
"failedForwards": {
"count": 4503599627370495,
"groups": [
{
"errorCode": "<string>",
"recovery": "transient",
"action": "retry",
"count": 4503599627370495,
"items": [
{
"mediaBuyId": "<string>",
"buyer": {
"customerId": 0,
"name": "<string>"
},
"since": "2023-11-07T05:31:56Z",
"terminalized": true,
"action": "retry",
"references": {
"idempotencyKey": "<string>",
"requestedAt": "<string>"
}
}
]
}
]
},
"awaitingSource": {
"count": 4503599627370495,
"items": [
{
"mediaBuyId": "<string>",
"sourceId": "<string>",
"sourceName": "<string>",
"buyer": {
"customerId": 0,
"name": "<string>"
},
"since": "2023-11-07T05:31:56Z",
"taskId": "<string>"
}
]
},
"manualSourceWork": {
"count": 4503599627370495,
"returnedCount": 4503599627370495,
"mediaBuyCount": 4503599627370495,
"truncated": true,
"offset": 4503599627370495,
"nextOffset": 4503599627370495,
"groups": [
{
"mediaBuyId": "<string>",
"buyerCustomerId": 0,
"sourceId": "<string>",
"sourceName": "<string>",
"buyer": {
"customerId": 0,
"name": "<string>"
},
"items": [
{
"workItemId": "<string>",
"mediaBuyId": "<string>",
"buyerCustomerId": 0,
"sourceId": "<string>",
"sourceName": "<string>",
"buyer": {
"customerId": 0,
"name": "<string>"
},
"kind": "EXECUTE_UPSTREAM_BOOKING",
"title": "<string>",
"status": "OPEN",
"actionState": "action_required",
"currentAction": "<string>",
"blockedReason": "<string>",
"priority": "LOW",
"dueAt": "2023-11-07T05:31:56Z",
"createdAt": "2023-11-07T05:31:56Z",
"nextOwner": "seller",
"action": {
"operation": "get_modular_inventory_source_readiness",
"arguments": {
"sourceId": "<string>",
"workItemId": "<string>"
}
}
}
]
}
]
},
"sourceDegradations": {
"count": 4503599627370495,
"items": [
{
"sourceId": "<string>",
"sourceName": "<string>",
"severity": "blocking",
"headline": "<string>"
}
]
},
"gamCleanups": {
"count": 4503599627370495,
"items": [
{
"operationId": "<string>",
"orderId": "<string>",
"sourceId": "<string>",
"sourceName": "<string>",
"outcome": "failed",
"safeToCleanup": true,
"requiredPermission": "<string>",
"retryDisposition": "not_applicable",
"safeNextAction": "none",
"createdAt": "2023-11-07T05:31:56Z"
}
]
}
}{
"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": {}
}
}List everything waiting on someone
The union of pending media-buy approvals, pending creative reviews, failed forwards (grouped by structured error code, each carrying the recovery-class-gated action: retry, fix-and-resubmit, or escalate), and buys awaiting asynchronous source acceptance (“waiting on source moderation since T”). Groups appear only when non-empty.
curl --request GET \
--url https://api.interchange.io/api/v2/storefront/pending-operations \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.interchange.io/api/v2/storefront/pending-operations"
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/pending-operations', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"approvals": {
"count": 4503599627370495,
"items": [
{
"mediaBuyId": "<string>",
"kind": "create",
"buyer": {
"customerId": 0,
"name": "<string>"
},
"submittedAt": "2023-11-07T05:31:56Z"
}
]
},
"creativeReviews": {
"count": 4503599627370495,
"items": [
{
"creativeId": "<string>",
"reviewRef": "<string>",
"mediaBuyId": "<string>",
"buyer": {
"customerId": 0,
"name": "<string>"
},
"submittedAt": "2023-11-07T05:31:56Z"
}
]
},
"failedForwards": {
"count": 4503599627370495,
"groups": [
{
"errorCode": "<string>",
"recovery": "transient",
"action": "retry",
"count": 4503599627370495,
"items": [
{
"mediaBuyId": "<string>",
"buyer": {
"customerId": 0,
"name": "<string>"
},
"since": "2023-11-07T05:31:56Z",
"terminalized": true,
"action": "retry",
"references": {
"idempotencyKey": "<string>",
"requestedAt": "<string>"
}
}
]
}
]
},
"awaitingSource": {
"count": 4503599627370495,
"items": [
{
"mediaBuyId": "<string>",
"sourceId": "<string>",
"sourceName": "<string>",
"buyer": {
"customerId": 0,
"name": "<string>"
},
"since": "2023-11-07T05:31:56Z",
"taskId": "<string>"
}
]
},
"manualSourceWork": {
"count": 4503599627370495,
"returnedCount": 4503599627370495,
"mediaBuyCount": 4503599627370495,
"truncated": true,
"offset": 4503599627370495,
"nextOffset": 4503599627370495,
"groups": [
{
"mediaBuyId": "<string>",
"buyerCustomerId": 0,
"sourceId": "<string>",
"sourceName": "<string>",
"buyer": {
"customerId": 0,
"name": "<string>"
},
"items": [
{
"workItemId": "<string>",
"mediaBuyId": "<string>",
"buyerCustomerId": 0,
"sourceId": "<string>",
"sourceName": "<string>",
"buyer": {
"customerId": 0,
"name": "<string>"
},
"kind": "EXECUTE_UPSTREAM_BOOKING",
"title": "<string>",
"status": "OPEN",
"actionState": "action_required",
"currentAction": "<string>",
"blockedReason": "<string>",
"priority": "LOW",
"dueAt": "2023-11-07T05:31:56Z",
"createdAt": "2023-11-07T05:31:56Z",
"nextOwner": "seller",
"action": {
"operation": "get_modular_inventory_source_readiness",
"arguments": {
"sourceId": "<string>",
"workItemId": "<string>"
}
}
}
]
}
]
},
"sourceDegradations": {
"count": 4503599627370495,
"items": [
{
"sourceId": "<string>",
"sourceName": "<string>",
"severity": "blocking",
"headline": "<string>"
}
]
},
"gamCleanups": {
"count": 4503599627370495,
"items": [
{
"operationId": "<string>",
"orderId": "<string>",
"sourceId": "<string>",
"sourceName": "<string>",
"outcome": "failed",
"safeToCleanup": true,
"requiredPermission": "<string>",
"retryDisposition": "not_applicable",
"safeNextAction": "none",
"createdAt": "2023-11-07T05:31:56Z"
}
]
}
}{
"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
Query Parameters
0 < x <= 2000 <= x <= 9007199254740991Response
List everything waiting on someone
The union of things waiting on someone: pending approvals, pending creative reviews, failed forwards (grouped by error code), async-pending source acceptance, modular manual source work, and seller-owned source degradations. Groups appear only when non-empty.
Media buys waiting on operator approval.
Show child attributes
Show child attributes
Creatives waiting on operator review.
Show child attributes
Show child attributes
Forwards that failed, grouped by structured error code with the recovery-class-gated action.
Show child attributes
Show child attributes
Buys a source accepted asynchronously and is still moderating ("waiting on source moderation since T").
Show child attributes
Show child attributes
Open modular-source booking, creative-sync, and final-reporting work, grouped by the same buyer/media-buy/source identifiers and owned by the seller. count and mediaBuyCount cover the full active backlog; returnedCount, offset, nextOffset, and truncated describe the bounded page and how to continue it.
Show child attributes
Show child attributes
Seller-owned source-health diagnoses (a degraded ad-server or sales-agent source) surfaced here so they are visible without opening the source directly. Scope3/vendor-owned diagnoses never appear.
Show child attributes
Show child attributes
Unresolved safe GAM failed-order cleanup operations. Archive is offered only after verified upstream safety and explicit confirmation.
Show child attributes
Show child attributes