Developer Docs
Build on the BGSOF API
One REST API to pull catalogs, build quotes, and sync orders. First-class SDKs, real-time webhooks, and OAuth 2.0 — everything you need to integrate BGSOF into your stack.
Developer Ready
Integrate Bgsof
into your app in minutes
First-class SDKs for every platform your team ships on. One API, fully documented, with real-time webhooks and OAuth 2.0 built in.
- REST + JSON — fetch products, quotes, and customer data with clean, predictable responses
- Real-time webhooks — get notified instantly when a quote is updated or a new order is placed
- OAuth 2.0 auth — secure, scoped API keys with fine-grained permissions per integration
- 99.9 % uptime SLA — built on redundant infrastructure so your catalog is always available
Manufacturer API Key required — Settings → API in your dashboard
import { BGSofClient, useBGSof } from '@bgsof/react'
// Settings → API in your Manufacturer dashboard
const client = new BGSofClient({
apiKey: 'mfr_live_••••••••',
})
export function ProductCatalog() {
const { products, loading } = useBGSof({
brand: 'Kohler',
category: 'faucets',
})
if (loading) return <Spinner />
return <ProductGrid items={products} />
}
import BGSofSDK
// Settings → API in your Manufacturer dashboard
let client = BGSofClient(
apiKey: "mfr_live_••••••••"
)
Task {
let catalog = try await client.products.list(
brand: "Kohler",
category: .faucets
)
await MainActor.run {
self.products = catalog.items
}
}
import com.bgsof.sdk.BGSofClient
import com.bgsof.sdk.Category
// Settings → API in your Manufacturer dashboard
val client = BGSofClient("mfr_live_••••••••")
lifecycleScope.launch {
val catalog = client.products.list(
brand = "Kohler",
category = Category.FAUCETS
)
adapter.submitList(catalog.items)
}
<script>
import { getProducts } from '@bgsof/svelte'
// Settings → API in your Manufacturer dashboard
const catalog = getProducts({
apiKey: 'mfr_live_••••••••',
brand: 'Kohler',
category: 'faucets',
})
</script>
{#await catalog}
<Spinner />
{:then items}
<ProductGrid {items} />
{/await}
Authentication
Secure by default
Every request is authenticated with a scoped key. Generate and rotate keys anytime from your dashboard under Settings → API.
API keys
Bearer tokens scoped per integration. Separate test and live keys keep your data safe.
OAuth 2.0
Let showrooms authorize your app with fine-grained scopes — no password sharing, revocable anytime.
Rate limits
1,000 requests/min per key by default. Every response returns X-RateLimit-* headers so you can back off cleanly.
# Fetch a manufacturer's product catalog
curl https://api.bgsof.com/v1/products?brand=Kohler \
-H "Authorization: Bearer mfr_live_••••••••" \
-H "Accept: application/json"
Reference
Core endpoints
Base URL https://api.bgsof.com/v1. All responses are JSON.
- GET /products List products across verified brands
- GET /products/{id} Retrieve a single product with pricing
- GET /manufacturers List brands you have access to
- POST /quotes Create a quote from line items
- GET /quotes/{id} Retrieve a quote and its status
- PATCH /quotes/{id} Update line items or discounts
- POST /webhooks Subscribe to real-time events
Looking for the full schema, error codes, and webhook payloads? Talk to our team to get early access to the complete reference.
Ready to build? Grab an API key and ship your first BGSOF integration today.