curl --request POST \
--url https://api.interchange.io/api/v2/buyer/storefronts/{storefrontId}/connection \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{}'import requests
url = "https://api.interchange.io/api/v2/buyer/storefronts/{storefrontId}/connection"
payload = {}
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({})
};
fetch('https://api.interchange.io/api/v2/buyer/storefronts/{storefrontId}/connection', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"connectionUrl": "<string>",
"authModes": [
"oauth"
],
"preferredAuthMode": "oauth",
"storefront": {},
"connection": {}
}{
"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": {}
}
}Connect storefront
Create (or resume) a buyer integration connection to an adapter storefront (Reddit, Snap, Meta, TikTok, Pinterest, Spotify, Google, Amazon, …). Returns the existing connection summary (if any) plus a connectionUrl browser handoff — share that URL with the human buyer to complete OAuth or token entry. Pass connectionId to target a specific existing connection for reconnect instead of an untargeted flow; authorizing a different provider account than the one named is kept as its own connection and reported, never silently swapped.
curl --request POST \
--url https://api.interchange.io/api/v2/buyer/storefronts/{storefrontId}/connection \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{}'import requests
url = "https://api.interchange.io/api/v2/buyer/storefronts/{storefrontId}/connection"
payload = {}
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({})
};
fetch('https://api.interchange.io/api/v2/buyer/storefronts/{storefrontId}/connection', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"connectionUrl": "<string>",
"authModes": [
"oauth"
],
"preferredAuthMode": "oauth",
"storefront": {},
"connection": {}
}{
"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 ID
0 < x <= 9007199254740991Body
Optional body. Omit entirely for the existing untargeted connect/reconnect flow.
Existing storefront connection to reconnect. When set, the returned handoff targets that connection instead of starting an untargeted reconnect. A hint only: if the human authorizes a different provider account, that grant is kept as its own connection rather than overwriting the named one.
^[1-9]\d*$Response
Connect storefront
First-party browser URL to share with the human buyer — for OAuth providers it goes straight to the provider's consent screen; bearer-only providers land on the Connections view for token entry.
oauth, bearer oauth, bearer Adapter storefront metadata (id, platformId, name, providerType, channels, logoUrl, …).
Show child attributes
Show child attributes
The existing connection summary, or null when none.
Show child attributes
Show child attributes