curl --request GET \
--url https://api.interchange.io/api/v2/buyer/storefront-connections/{connectionId}/accounts/{accountId}/directed-campaigns/subscription \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.interchange.io/api/v2/buyer/storefront-connections/{connectionId}/accounts/{accountId}/directed-campaigns/subscription"
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/buyer/storefront-connections/{connectionId}/accounts/{accountId}/directed-campaigns/subscription', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"id": "<string>",
"customerId": 4503599627370495,
"advertiserId": "<string>",
"connectionId": "<string>",
"accountId": "<string>",
"sourceId": "<string>",
"providerType": "<string>",
"status": "ACTIVE",
"backfillStart": "2023-11-07T05:31:56Z",
"lastSyncedAt": "2023-11-07T05:31:56Z",
"lastSyncStatus": "SUCCESS",
"lastSyncError": "Connected provider account could not be synchronized.",
"errorCode": "NOT_FOUND",
"errorField": "account.account_id",
"errorReason": "account_scope_mismatch",
"upstreamCode": "ACCOUNT_NOT_AUTHORIZED",
"lastPresenceSyncedAt": "2023-11-07T05:31:56Z",
"lastPresenceSyncStatus": "SUCCESS",
"lastPresenceSyncError": "<string>",
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z",
"archivedAt": "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": {}
}
}Get directed-campaign subscription health
Read subscription state, backfill boundary, freshness, and the latest sync outcome for one connected provider account.
curl --request GET \
--url https://api.interchange.io/api/v2/buyer/storefront-connections/{connectionId}/accounts/{accountId}/directed-campaigns/subscription \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.interchange.io/api/v2/buyer/storefront-connections/{connectionId}/accounts/{accountId}/directed-campaigns/subscription"
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/buyer/storefront-connections/{connectionId}/accounts/{accountId}/directed-campaigns/subscription', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"id": "<string>",
"customerId": 4503599627370495,
"advertiserId": "<string>",
"connectionId": "<string>",
"accountId": "<string>",
"sourceId": "<string>",
"providerType": "<string>",
"status": "ACTIVE",
"backfillStart": "2023-11-07T05:31:56Z",
"lastSyncedAt": "2023-11-07T05:31:56Z",
"lastSyncStatus": "SUCCESS",
"lastSyncError": "Connected provider account could not be synchronized.",
"errorCode": "NOT_FOUND",
"errorField": "account.account_id",
"errorReason": "account_scope_mismatch",
"upstreamCode": "ACCOUNT_NOT_AUTHORIZED",
"lastPresenceSyncedAt": "2023-11-07T05:31:56Z",
"lastPresenceSyncStatus": "SUCCESS",
"lastPresenceSyncError": "<string>",
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z",
"archivedAt": "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": {}
}
}Authorizations
API key or access token
Path Parameters
Storefront connection ID
Storefront connection account ID
Response
Get directed-campaign subscription health
Durable provider-account subscription and its read-only mirror health.
0 < x <= 9007199254740991ACTIVE, PAUSED, ERROR ^(?:(?:\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))$^(?:(?:\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))$SUCCESS, ERROR Fixed safe reconciliation summary. Provider messages and identifiers are never persisted or returned.
Connected provider account could not be synchronized. Machine-readable diagnosis of the most recent failed periodic sweep. Stable Scope3 service error code; null after a successful sweep. Provider messages and request identifiers are never returned.
NOT_FOUND, ACCESS_DENIED, VALIDATION_ERROR, INVALID_REQUEST, CONFLICT, INTERNAL_ERROR, RATE_LIMITED, SERVICE_UNAVAILABLE, BUYER_SETUP_REQUIRED, FEATURE_NOT_ENABLED, PRICING_NOT_CONFIGURED, CURRENCY_MISMATCH, INSUFFICIENT_MEDIA_BUDGET, ROUTED_AGENT_REQUIRES_OPERATOR_AUTH, ADAPTER_STOREFRONT_REQUIRES_ROUTED_CAMPAIGN, CAPABILITY_NOT_SUPPORTED, SELLER_APPROVAL_REQUIRED, SALES_AGENT_NOT_ACTIVE, CREDIT_LIMIT_EXCEEDED, FX_QUOTE_EXPIRED, FX_RATE_UNAVAILABLE, SPEND_DENOMINATION_UNRESOLVED, WORKOS_RESOURCE_TYPE_NOT_CONFIGURED, UNIT_CONTAINS_PRICING, UNIT_NOT_REUSABLE_KIND Allowlisted request field associated with the most recent failed sweep, when one is safe to expose; null after success.
account.account_id, accountId, advertiserId, assets, assets.post.identity_id, brief, buying_mode, clicks, format_id, impressions, instagram_actor_id, liveConformance.account, liveConformance.inventory, liveConformance.pagination, liveConformance.providerInventory, mediaBuy.canceled, mediaBuys.account, mediaBuys.currency, mediaBuys.envelope, mediaBuys.identity, mediaBuys.lifecycle, mediaBuys.numeric, mediaBuys.packages, mediaBuys.revision, mediaBuys.retirement, mediaBuys.schedule, operation, page_id, pixel_id, sourceId, spend, spotify.ads.identity, spotify.ads.rejectReasons, spotify.ads.status, (root), address, advertiser_id, advertiser_name, balance, company, contacter, create_time, currency, description, email, industry, language, license_no, license_url, name, phonenumber, promotion_area, role, status, timezone Allowlisted machine-readable reconciliation reason from the most recent failed sweep; null after success.
account_scope_mismatch, actor_relationship_rejected, catalog_shape_invalid, cleanup_readback_mismatch, create_account_mismatch, delegated_auth_unready, delivery_deadline_exceeded, delivery_reconciliation_mismatch, discovery_pricing_superseded, lifecycle_readback_mismatch, meta_geo_city_response_schema_mismatch, meta_dsa_defaults_missing, meta_account_readback_failed, meta_preview_generation_failed, meta_preview_preflight_rejected, missing_identity, instagram_actor_not_authorized, instagram_actor_selection_required, page_not_authorized, page_selection_required, nested_subdivision_hierarchy_unproven, value_optimization_not_eligible, pagination_incomplete, pagination_page_bound_exceeded, pagination_deadline_exceeded, pagination_response_malformed, pagination_list_malformed, pagination_page_info_missing, pagination_counters_invalid, pagination_page_mismatch, pagination_page_size_mismatch, pagination_bounds_exceeded, pagination_totals_inconsistent, pagination_totals_changed, pagination_page_count_mismatch, pagination_page_oversized, pagination_identity_invalid, pagination_duplicate_identity, pagination_terminal_confirmation_mismatch, pagination_collected_count_mismatch, provider_response_malformed, readback_mismatch, scope_insufficient, selected_account_mismatch, snap_account_restricted, snap_bid_rejected, snap_billing_rejected, snap_budget_rejected, snap_creative_rejected, snap_currency_rejected, snap_date_rejected, snap_objective_rejected, snap_pixel_rejected, snap_placement_rejected, snap_status_rejected, snap_targeting_rejected, snap_unclassified_rejected, unsupported_targeting_dimension, deprecated_targeting_dimension, spark_provenance_inconsistent, spark_tuple_inconsistent, spark_provider_tuple_conflict, carousel_provider_identity_mismatch, carousel_child_owner_conflict, carousel_child_standalone_conflict, carousel_assignment_identity_mismatch, active_identity_omitted, video_format_provenance_inconsistent, video_provider_digest_mismatch, video_format_selector_missing, image_format_provenance_inconsistent, image_provider_digest_mismatch, carousel_provider_inventory_missing, image_format_selector_missing, spark_provider_digest_mismatch Allowlisted provider error category from the most recent failed sweep; null after success. Raw provider messages, request IDs, and resource IDs are excluded.
ACCOUNT_NOT_AUTHORIZED, ACCOUNT_NOT_FOUND, ACCOUNT_SCOPE_MISMATCH, ACTIVATION_FAILED, ACTIVATION_READBACK_FAILED, ACTIVATION_RESPONSE_MISMATCH, ADVERTISER_INFO_DENIED, ADVERTISER_INFO_MALFORMED, AD_READBACK_FAILED, AMBIGUOUS_AUDIENCE_DETAIL, AMBIGUOUS_PROVIDER_SURFACE, APPLICATION_NOT_AUTHORIZED, APPLICATION_READBACK_MISMATCH, APPLICATION_REQUIRED, APP_OPTIMIZATION_EVENT_BID_TYPE_UNAVAILABLE, APP_OPTIMIZATION_EVENT_NOT_AUTHORIZED, APP_OPTIMIZATION_EVENT_REQUIRED, APP_OPTIMIZATION_EVENT_SOURCE_MISMATCH, APP_OPTIMIZATION_STATISTIC_READBACK_MISMATCH, APP_PROMOTION_TYPE_READBACK_MISMATCH, APP_PURCHASE_VALUE_GOAL_REQUIRED, APP_RETARGETING_AUDIENCE_REQUIRED, AUDIENCE_DETAIL_ID_MISMATCH, AUDIENCE_RUN_NOT_READY, AUDIENCE_UPLOAD_NOT_VERIFIED, AUTH_REQUIRED, BIDDING_READBACK_MISMATCH, BUDGET_TOO_LOW, CALL_DESTINATION_REGION_MISMATCH, CALL_DESTINATION_REQUIRED, CALL_TARGETING_AGE_RESTRICTED, CALL_TARGETING_LOCATION_REQUIRED, CAMPAIGN_IDENTITY_MALFORMED, CAMPAIGN_OBJECTIVE_READBACK_MISMATCH, CAMPAIGN_OWNERSHIP_MISMATCH, CAMPAIGN_PRODUCT_SOURCE_READBACK_MISMATCH, CAMPAIGN_READBACK_FAILED, CAMPAIGN_READBACK_INTERRUPTED, CAMPAIGN_STATUS_DRIFT, CATALOG_ATTACHMENT_CONFLICT, CATALOG_BINDING_READBACK_MISMATCH, CATALOG_CREATIVE_FORMAT_UNSUPPORTED, CATALOG_CREATIVE_REQUIRED, CATALOG_EVENT_SOURCE_NOT_BOUND, CATALOG_NOT_AUTHORIZED, CATALOG_RESOURCES_REQUIRED, CATALOG_SCOPE_MISMATCH, CONFIGURATION_ERROR, CONVERSION_EVENT_SOURCE_REQUIRED, CONVERSION_RESOURCE_READBACK_MISMATCH, CREATIVE_COPY_UNAVAILABLE, CREATIVE_FORMAT_LOOKUP_FAILED, CREATIVE_IDENTITY_DRIFT, CREATIVE_IDENTITY_MALFORMED, CREATIVE_IDENTITY_STORE_UNAVAILABLE, CREATIVE_IDENTITY_UNAVAILABLE, CREATIVE_MUSIC_UNAVAILABLE, CREATIVE_NOT_READY, DIRECT_MESSAGE_CREATIVE_IDENTITY_MISMATCH, DIRECT_MESSAGE_CREATIVE_REQUIRED, DIRECT_MESSAGE_IDENTITY_NOT_AUTHORIZED, DURABLE_TENANT_SCOPE_REQUIRED, EVENT_SOURCE_NOT_AUTHORIZED, INCOMPATIBLE_APP_PROMOTION_TYPES, INCOMPATIBLE_CAMPAIGN_OBJECTIVES, INCOMPATIBLE_CAMPAIGN_PRODUCT_SOURCES, INCOMPATIBLE_CAMPAIGN_TYPES, INCOMPATIBLE_OPTIMIZATION_GOALS, INCOMPLETE_PAGINATION, INVALID_ADVERTISER_SCOPE, INVALID_APPLICATION_INVENTORY, INVALID_AUDIENCE_DETAIL, INVALID_AUDIENCE_INVENTORY, INVALID_AUDIENCE_REFERENCE, INVALID_AUDIENCE_RESPONSE, INVALID_BUSINESS_IDENTITY_INVENTORY, INVALID_CALL_DESTINATION, INVALID_CATALOG_INVENTORY, INVALID_LEAD_FORM_INVENTORY, INVALID_MESSAGE_EVENT_SET, INVALID_MESSAGING_APP_DESTINATION, INVALID_PARAMS, INVALID_PIXEL_INVENTORY, INVALID_PROVIDER_RESPONSE, INVALID_REQUEST, INVALID_SELECTED_ACCOUNT, INVALID_SPARK_IDENTITY_INVENTORY, INVALID_SUCCESS_ENVELOPE, INVALID_WELCOME_MESSAGE_INVENTORY, LEAD_FORM_NOT_AUTHORIZED, LEAD_FORM_REQUIRED, MEDIA_BUY_CURRENCY_MISMATCH, MESSAGE_EVENT_SET_MISMATCH, MESSAGE_EVENT_SET_NOT_AUTHORIZED, MESSAGE_EVENT_SET_READBACK_MISMATCH, MESSAGE_EVENT_SET_REQUIRED, MESSAGING_APP_DESTINATION_READBACK_MISMATCH, MESSAGING_APP_DESTINATION_REQUIRED, MISSING_ACCOUNT_ID, MISSING_TARGETING_GEO, NETWORK_ERROR, NOT_FOUND, OPTIMIZATION_GOAL_READBACK_MISMATCH, OWNERSHIP_MISMATCH, PARTIAL_UPDATE_UNRECOVERED, PERMISSION_DENIED, PLACEMENT_READBACK_MALFORMED, PLACEMENT_READBACK_MISMATCH, PLATFORM_ERROR, PLATFORM_IDENTITY_NOT_AUTHORIZED, PLATFORM_IDENTITY_REQUIRED, POLICY_VIOLATION, PRODUCT_CURRENCY_MISMATCH, PRODUCT_SET_NOT_AUTHORIZED, PROMOTION_TARGET_TYPE_READBACK_MISMATCH, PROMOTION_TYPE_READBACK_MISMATCH, PROVIDER_READBACK_MISMATCH, PROVIDER_READBACK_UNAVAILABLE, RATE_LIMIT, RATE_LIMITED, REQUEST_ABORTED, REVISION_CONFLICT, REVISION_LEDGER_UNAVAILABLE, SCOPE_INSUFFICIENT, SERVICE_UNAVAILABLE, SMART_PLUS_ACTIVATION_FAILED, SMART_PLUS_ACTIVATION_READBACK_MISMATCH, SMART_PLUS_ADGROUP_READBACK_MISMATCH, SMART_PLUS_AD_READBACK_MISMATCH, SMART_PLUS_APP_REQUIRED, SMART_PLUS_CALL_TO_ACTION_UNSUPPORTED, SMART_PLUS_CAMPAIGN_READBACK_MISMATCH, SMART_PLUS_CATALOG_NOT_SUPPORTED, SMART_PLUS_COPY_REQUIRED, SMART_PLUS_CREATIVE_FORMAT_UNSUPPORTED, SMART_PLUS_CREATIVE_MODE_MISMATCH, SMART_PLUS_CREATIVE_REQUIRED, SMART_PLUS_DESTINATION_REQUIRED, SMART_PLUS_IDENTITY_MISMATCH, SMART_PLUS_IDENTITY_REQUIRED, SMART_PLUS_OPTIMIZATION_REQUIRED, SMART_PLUS_SELECTED_IDENTITY_MISMATCH, SMART_PLUS_SINGLE_PACKAGE_REQUIRED, SNAP_ME_MALFORMED, SPARK_CREATIVE_IDENTITY_MISMATCH, SPARK_CREATIVE_REQUIRED, TARGETING_LEDGER_CLEANUP_FAILED, TARGETING_LEDGER_INVALID, TARGETING_LEDGER_MISMATCH, TARGETING_LEDGER_UNAVAILABLE, TARGETING_READBACK_FAILED, TARGETING_READBACK_IDENTITY_MISMATCH, TARGETING_READBACK_MALFORMED, TARGETING_READBACK_MISMATCH, TERMINAL_MEDIA_BUY, TIMEOUT, UNKNOWN_CREATIVE_ID, UNSUPPORTED_CONVERSATION_DESTINATION, UNSUPPORTED_OFFERING_CREATIVE_PATH, UNSUPPORTED_OPTIMIZATION_GOAL, UNSUPPORTED_PLACEMENT_MUTATION, UNSUPPORTED_TARGETING_DIMENSION, UNSUPPORTED_UPDATE_FIELD, UPSTREAM_BAD_GATEWAY, UPSTREAM_HTTP_ERROR, UPSTREAM_NON_JSON, UPSTREAM_UNAVAILABLE, VALIDATION_ERROR, WELCOME_MESSAGE_NOT_AUTHORIZED, WELCOME_MESSAGE_REQUIRED When the tracked-presence sweep (audiences and event sources) last visited this subscription; null until the first presence sweep runs.
^(?:(?:\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))$Outcome of the most recent tracked-presence sweep. SKIPPED means the sweep visited the subscription but presence discovery did not apply (for example, the feature is not enabled for this customer); null until the first sweep.
SUCCESS, ERROR, SKIPPED Bounded, sanitized summary of the most recent presence sweep failure or skip reason; null after a fully successful sweep. Provider messages and identifiers are never returned.
^(?:(?:\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))$^(?:(?:\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))$^(?:(?:\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))$