Cette page n'est disponible qu'en anglais.
Connect a channel account
POST /rest/v1/channel_connections
Starts connecting a new channel account, with the same flow as the dashboard's Connect, on the next free slot for that channel (a second eBay account becomes a new channel account). Two kinds of channels:
-
OAuth channels (eBay, Etsy, Shopify, WooCommerce, TikTok Shop, Temu, Amazon, Google Merchant Center, Facebook Catalog, Square, Squarespace, Faire, Wix, Facebook, Pinterest, Tumblr) return a single-use
connect_url, valid 1 hour. Open it in the merchant's browser: they log in on the channel and approve Nembol, then land onreturn_urlwithconnection_id,status(connected/failed/needs_choice),channel_account_id,errorand, for a partner's sub-account,account_idadded to its query string (your own query parameters are kept). Withoutreturn_url, they land on a Nembol page saying they can close the tab (the right choice for AI agents). A link that can't be used (expired, already used, or refused because of the store's plan, subscription or free slots) also sends the browser back toreturn_url, withstatusanderror(link_expired,link_already_used,plan_not_eligible,subscription_inactive,slot_no_longer_available,channel_login_failed), so your app shows its own message. Follow the outcome withGET /channel_connections/{id}or thechannel_account.connectedevent. -
Credential channels (Kaufland, OnBuy, PrestaShop, Subito) connect immediately with the keys in
params: the response is alreadyconnectedorfailed. Keys are passed to the channel and never stored on the connection.
Amazon (several marketplaces), Google Merchant Center (which Merchant Center account) and Facebook Catalog (several businesses) ask which account to connect after the seller logs in: the connection becomes needs_choice with choices; pick one with POST /channel_connections/{id}/choose. For Amazon, params.country (and optionally params.marketplace) usually avoids the question.
return_url must start with a URL registered for the store (POST /redirect_urls, or Settings → Developers), otherwise 422 return_url_not_allowed. Requires channels:connect.
Authorization
apiKey Authorization: Bearer nbl_live_... (or nbl_test_... for test mode). Test-mode writes are validated and simulated but never persisted and never touch channels; simulated results are marked simulated.
In: header
Header Parameters
Unique client-generated key (max 255 chars), stored 24h.
length <= 255Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
channel is required, except when channel_account_id is given (reconnect).
Response Body
application/json
application/json
application/json
application/json
curl -X POST "https://example.com/channel_connections" \ -H "Content-Type: application/json" \ -d '{ "channel": "ebay" }'{ "id": "conn_66f0a1", "object": "channel_connection", "channel": "ebay", "method": "oauth", "status": "pending", "choices": [ { "value": "string", "label": "string" } ], "params": {}, "connect_url": "http://example.com", "return_url": "string", "channel_account_id": "string", "error": { "code": "channel_login_failed", "message": "string" }, "expires_at": "2019-08-24T14:15:22Z", "created_at": "2019-08-24T14:15:22Z", "reconnects_shop": "acme-vintage", "import_products": true, "import_orders": true, "import_operation_id": "op_8fd2c1", "completed_at": "2019-08-24T14:15:22Z"}Dernière mise à jour le 16 octobre 2026
Besoin d'aide ?
Écrivez-nous et une personne vous répond, généralement sous un jour ouvré.