API ReferenceChannel accounts

Cette page n'est disponible qu'en anglais.

Connect a channel account

POST /rest/v1/channel_connections

POST
/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 on return_url with connection_id, status (connected / failed / needs_choice), channel_account_id, error and, for a partner's sub-account, account_id added to its query string (your own query parameters are kept). Without return_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 to return_url, with status and error (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 with GET /channel_connections/{id} or the channel_account.connected event.

  • Credential channels (Kaufland, OnBuy, PrestaShop, Subito) connect immediately with the keys in params: the response is already connected or failed. 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.

AuthorizationBearer <token>

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

Idempotency-Key?string

Unique client-generated key (max 255 chars), stored 24h.

Lengthlength <= 255

Request 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é.