Kaseya Quote Manager
Overview
Kaseya Quote Manager (KQM), formerly Datto Commerce, is a quoting, purchasing, and sales-order platform for MSPs. The Bumblebee integration exposes the full KQM REST catalogue through a single send_request tool — the agent chooses the endpoint (e.g. /v1/customer, /v1/product, /v1/quote) and query parameters based on the request.
The public API is read-only today, so Bumblebee can list and retrieve data but cannot create or modify KQM records.
Prerequisites & Setup
Before setting up the Kaseya Quote Manager integration, you need:
- A Kaseya Quote Manager tenant (formerly Datto Commerce)
- Portal access with permission to manage API keys
- An API key generated from the portal's API Keys section
Create an API Key in Kaseya Quote Manager
- Sign in to your Kaseya Quote Manager tenant
- Click your account menu in the lower-left corner
- Select API Keys (sometimes labelled Developer API)
- Click New API Key, give it a descriptive name (e.g. Bumblebee)
- Copy the key immediately — it is only shown once
Vendor documentation:
- Overview and reference: api.dattocommerce.com/docs
- Portal instructions: help.quotemanager.kaseya.com
Configure in Bumblebee
- Go to the Integrations page in Bumblebee
- Select Kaseya Quote Manager
- Paste your API Key
- Save the configuration
- Run a test request (e.g. list customers) from the validation card
API Limits
- 60 requests per minute
- 10,000 requests per day
pageSizecaps at 100 records per page
Bumblebee handles 429 responses with exponential backoff and retry.
Available Tools
Core (1 tool)
- send_request — Thin wrapper around the Kaseya Quote Manager REST API. Required: endpoint (str, e.g.
"/v1/customer"or"/v1/customer/42"). Optional: method (str, default"GET"), params (object, query string), data (object, request body — reserved for future write endpoints).
The agent selects the KQM endpoint and parameters based on the workflow. Supported resources include:
| Resource | List endpoint | Get-by-id endpoint | Notable filters |
|---|---|---|---|
| Brand | /v1/brand | /v1/brand/{id} | modifiedAfter |
| Category | /v1/category | /v1/category/{id} | — |
| Contact | /v1/contact | /v1/contact/{id} | customerID, modifiedAfter |
| Customer | /v1/customer | /v1/customer/{id} | modifiedAfter |
| Customer address | /v1/customeraddress | /v1/customeraddress/{id} | customerID, modifiedAfter |
| Employee | /v1/employee | /v1/employee/{id} | — |
| Product | /v1/product | /v1/product/{id} | manufacturerPartNumber, modifiedAfter |
| Product image | /v1/productimage | — | productID |
| Product supplier | /v1/productsupplier | /v1/productsupplier/{id} | productID, modifiedAfter |
| Purchase order | /v1/purchaseorder | /v1/purchaseorder/{id} | orderNumber, modifiedAfter |
| Purchase order cost | /v1/purchaseordercost | /v1/purchaseordercost/{id} | purchaseOrderID, modifiedAfter |
| Purchase order line | /v1/purchaseorderline | /v1/purchaseorderline/{id} | purchaseOrderID, modifiedAfter |
| Quote | /v1/quote | /v1/quote/{id} | quoteNumber, modifiedAfter |
| Quote line | /v1/quoteline | /v1/quoteline/{id} | quoteSectionID |
| Quote section | /v1/quotesection | /v1/quotesection/{id} | quoteID |
| Sales order | /v1/salesorder | /v1/salesorder/{id} | orderNumber, modifiedAfter |
| Sales order line | /v1/salesorderline | /v1/salesorderline/{id} | salesOrderID, modifiedAfter |
| Sales order payment | /v1/salesorderpayment | /v1/salesorderpayment/{id} | salesOrderID, modifiedAfter |
| Supplier | /v1/supplier | /v1/supplier/{id} | modifiedAfter |
| Warehouse | /v1/warehouse | /v1/warehouse/{id} | modifiedAfter |
All list endpoints accept page and pageSize (default 100, max 100).
Example calls
# First page of customers
send_request(endpoint="/v1/customer", params={"page": 1, "pageSize": 100})
# Single product
send_request(endpoint="/v1/product/123")
# Quote lines for a specific quote section
send_request(endpoint="/v1/quoteline", params={"quoteSectionID": 17})
# Sales orders modified after a date
send_request(endpoint="/v1/salesorder", params={"modifiedAfter": "2024-01-01T00:00:00"})