border.bot
Docs menu

API reference

API reference

Sync records from a source

POST https://api.border.bot/v1/catalog/sync

Requires an API key (Authorization: Bearer bb_live_…).

For connectors: a page of up to 250 records from a store, marketplace, feed or ERP (a source kind from GET /catalog/sources), upserted by the source’s own key. Unchanged records only update their sync time. Free.

API key scope: catalog.

Request body (JSON)#

Name Type Required Description
sourceKind string yes
connection string yes
records object[] yes

Responses#

  • 200: What each record did. (CatalogSyncResponse)
  • 400: Invalid input (invalid_input). (Error)
  • 401: Missing, invalid, revoked or expired API key (unauthorized). (Error)
  • 403: The API key doesn’t have the catalog scope (forbidden, details.reason: "missing_scope"). (Error)
  • 429: Rate limited (rate_limited). Retry after Retry-After seconds; RateLimit says which limit was hit (r=0, t seconds until its window ends) and RateLimit-Policy its quota. (Error)
  • 500: Unexpected error (internal). (Error)

Example#

bash
curl -X POST 'https://api.border.bot/v1/catalog/sync' \
  -H 'Authorization: Bearer bb_live_...' \
  -H 'Content-Type: application/json' \
  -d '{"sourceKind":"woocommerce","connection":"https://shop.example.com","records":[{"externalKey":"1042","externalIds":{"productId":"1040","variationId":"1042"},"groupKey":"1040","product":{"title":"Merino scarf","originCountry":"NZ"},"item":{"sku":"SCARF-GREY","unitValue":49,"currency":"NZD","weight":120,"weightUnit":"g"}}]}'