Channels
Manage channel connections to Google Merchant Center, Meta, Microsoft, and other advertising platforms.
List channels
/v1/channels Returns all available channels and their connection status.
Required scope: read_channels
Request
curl https://app.simpleproductfeeds.com/v1/channels \
-H "Authorization: Bearer spf_live_sk_your_key_here"
Response
{
"data": [
{
"slug": "google",
"object": "channel",
"type": "google_merchant_center",
"display_name": "Google Merchant Center",
"available": true,
"status": "connected",
"sync_mode": "api",
"connected_at": "2026-01-10T08:00:00Z",
"last_synced_at": "2026-03-09T14:30:00Z"
},
{
"slug": "meta",
"object": "channel",
"type": "meta",
"display_name": "Meta",
"available": true,
"status": "not_connected",
"sync_mode": null,
"connected_at": null,
"last_synced_at": null
}
]
}
Channel slugs
| Slug | Channel |
|---|---|
google | Google Merchant Center |
meta | Meta (Facebook / Instagram) |
microsoft | Microsoft Advertising |
pinterest | |
tiktok | TikTok |
amazon | Amazon |
Response fields
| Field | Type | Description |
|---|---|---|
slug | string | Short identifier for the channel (e.g., google, meta). |
object | string | Always "channel". |
type | string | Internal channel type identifier. |
display_name | string | Human-readable channel name. |
available | boolean | Whether this channel is available on your plan. |
status | string | Connection status (e.g., connected, not_connected). |
sync_mode | string | null | How products are synced to this channel (e.g., api, feed_url). |
connected_at | string | null | ISO 8601 timestamp when the channel was connected. |
last_synced_at | string | null | ISO 8601 timestamp of the last successful sync. |
Get a channel
/v1/channels/:slug Returns a single channel by slug.
Required scope: read_channels
Request
curl https://app.simpleproductfeeds.com/v1/channels/google \
-H "Authorization: Bearer spf_live_sk_your_key_here"
Errors
| Status | Code | Description |
|---|---|---|
| 404 | resource_not_found | No channel found with the given slug. |
Update a channel
/v1/channels/:slug Updates channel settings.
Required scope: write_channels
Parameters
| Parameter | Type | Description |
|---|---|---|
sync_mode | string | How to sync products to this channel. |
settings | object | Channel-specific settings. |
Request
curl -X PATCH https://app.simpleproductfeeds.com/v1/channels/google \
-H "Authorization: Bearer spf_live_sk_your_key_here" \
-H "Content-Type: application/json" \
-d '{"sync_mode": "api"}'
Errors
| Status | Code | Description |
|---|---|---|
| 404 | resource_not_found | No channel found with the given slug. |
| 422 | validation_failed | Invalid settings. |
Connect a channel
/v1/channels/:slug/connect Initiates a channel connection. For channels that require OAuth (like Google), this returns an OAuth URL that the user must visit to authorize.
Required scope: write_channels
Request
curl -X POST https://app.simpleproductfeeds.com/v1/channels/google/connect \
-H "Authorization: Bearer spf_live_sk_your_key_here"
Response
{
"data": {
"requires_oauth": true,
"oauth_url": "https://accounts.google.com/o/oauth2/auth?...",
"message": "Visit the OAuth URL to authorize the connection."
}
}
Disconnect a channel
/v1/channels/:slug/disconnect Disconnects a channel. This does not delete any data from the external platform.
Required scope: write_channels
Request
curl -X POST https://app.simpleproductfeeds.com/v1/channels/google/disconnect \
-H "Authorization: Bearer spf_live_sk_your_key_here"
Response
Returns the updated channel object with status: "not_connected".
Sync a channel
/v1/channels/:slug/sync Triggers a product sync to the channel. Returns 202 Accepted — the sync runs asynchronously.
Required scope: write_channels
Request
curl -X POST https://app.simpleproductfeeds.com/v1/channels/google/sync \
-H "Authorization: Bearer spf_live_sk_your_key_here"
Response
{
"data": {
"message": "Sync initiated."
}
}
Errors
| Status | Code | Description |
|---|---|---|
| 422 | channel_not_connected | The channel must be connected before syncing. |
Get sync logs
/v1/channels/:slug/sync_logs Returns recent sync logs for a channel.
Required scope: read_channels
Request
curl https://app.simpleproductfeeds.com/v1/channels/google/sync_logs \
-H "Authorization: Bearer spf_live_sk_your_key_here"
Response
{
"data": [
{
"id": 1,
"status": "completed",
"started_at": "2026-03-09T14:25:00Z",
"completed_at": "2026-03-09T14:30:00Z",
"rows_synced": 1482,
"error_details": null
}
]
}
Get merchant accounts
/v1/channels/:slug/merchant_accounts Returns available merchant accounts for the connected channel (Google Merchant Center only). Used to select which merchant account to sync to.
Required scope: read_channels
Request
curl https://app.simpleproductfeeds.com/v1/channels/google/merchant_accounts \
-H "Authorization: Bearer spf_live_sk_your_key_here"
Response
{
"data": {
"accounts": [
{"id": "123456789", "name": "My Store - US"},
{"id": "987654321", "name": "My Store - EU"}
],
"current_merchant_id": "123456789"
}
}
Errors
| Status | Code | Description |
|---|---|---|
| 401 | oauth_required | Google OAuth is not connected. Connect the channel first. |
Select merchant account
/v1/channels/:slug/select_merchant Selects which merchant account to use for syncing.
Required scope: write_channels
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
merchant_id | string | Yes | The merchant account ID to select. |
Request
curl -X POST https://app.simpleproductfeeds.com/v1/channels/google/select_merchant \
-H "Authorization: Bearer spf_live_sk_your_key_here" \
-H "Content-Type: application/json" \
-d '{"merchant_id": "123456789"}'
Response
{
"data": {
"merchant_id": "123456789",
"message": "Merchant account selected."
}
}
Errors
| Status | Code | Description |
|---|---|---|
| 401 | oauth_required | Google OAuth is not connected. |
| 422 | missing_param | The merchant_id parameter is required. |