BizRatings API Integration Guide
Base URL: https://api.bizratings.com
Interactive Explorer: https://api.bizratings.com/swagger/index.html
Support: support@bizratings.com
1. Getting Started
Authentication
All API requests require an API key issued by BizRatings. Pass your key in the request header:
Authorization: Bearer YOUR_API_KEY
Contact support@bizratings.com to obtain or rotate your API key.
Response Format
All endpoints return JSON. Dates are returned as ISO 8601 strings. All requests must be made over HTTPS.
Versioning
Several endpoints are available in multiple versions. Each version adds fields to the response without removing anything from the previous version:
/api/tickets/...— Base version, core fields/api/v1.1/tickets/...— Adds ContactRecID/api/v1.2/tickets/...— Adds ResponderIP and UserAgent/api/v1.3/tickets/...— Adds SentOn (recommended for new integrations)
Pagination
Use currentPage (starting at 1) and pageSize to page through large result sets. Omitting both returns the first page at the default page size.
Date Formats
Date parameters accept two formats interchangeably: 2022/06/01 or 01-Jun-2022.
Filtering with filterBy / keyword
Many endpoints support a two-parameter filter pair. Set filterBy to an internal field name and keyword to the value you want to match. Example:
?filterBy=CompanyName&keyword=Acme Corp
Valid filterBy values are listed under each endpoint below.
2. How BizRatings Sends Surveys
BizRatings sends survey invitations to your clients when a support ticket or project closes. There are two integration methods — the method used affects which fields are available in the API response.
API Integration (e.g. ConnectWise Manage)
When a ticket closes, your PSA submits the ticket record to BizRatings via POST /api/tickets. BizRatings queues the ticket and dispatches the survey invitation through SendGrid. The SentOn timestamp accurately reflects when the survey email was delivered.
Email Template Integration (e.g. HaloPSA)
A BizRatings rating widget is embedded directly in your PSA's closed-ticket email template. When your PSA sends the closure email, the widget notifies BizRatings with the ticket details and a survey record is created at that moment.
Important differences for email template integrations:
- SentOn — Reflects when BizRatings received the signal from your email template, accurate to within seconds of the actual send.
- TicketClosedOn — Will be null. Use
startDate/endDate(based on survey send date) to filter these records. - Duplicate records — May appear when the same ticket sends to multiple contacts simultaneously.
3. Ticket Survey Responses
These endpoints return survey responses collected from closed support tickets. Each response includes ticket metadata, assigned technicians, the client's satisfaction rating, and any written comment. All versions share the same query parameters — later versions add fields to the response payload.
GET /api/tickets/responses
Returns survey responses with core response fields.
Parameters:
memberName(string) — Filter to a specific technician by name.filterBy(string) — Field to filter on:SRServiceRecID,Keywords,mKeywords,CompanyName,ContactEmail,AssignedResources,BoardName.keyword(string) — Value to match against the filterBy field.reviewType(integer) — 0 = all responses; 3 = only responses with a written comment.score(integer) — Filter by survey score. Pass 0 to return all scores.startDate(string) — Start of date range.endDate(string) — End of date range.currentPage(integer) — Page number, starts at 1.pageSize(integer) — Records per page.
GET /api/v1.1/tickets/responses
Adds ContactRecID to the response — your CRM's internal ID for the survey respondent's contact record. Use this version when you need to correlate respondents back to contacts in your PSA. Same parameters as above.
GET /api/v1.2/tickets/responses
Adds ResponderIP and UserAgent — the IP address and browser string of the device used to submit the survey. Useful for fraud detection or audit purposes. Same parameters as above.
GET /api/v1.3/tickets/responses
Adds SentOn — the date and time the survey invitation was dispatched. This is the recommended version for all new integrations. Same parameters as above.
4. Extended Survey Response Details
For accounts using multi-question survey formats, these endpoints return per-question response data rather than a single summary score.
GET /api/tickets/fivequestionsurveydetailresponse
Returns per-question responses for tickets using the Five-Question Survey format. Each row represents one question response.
Parameters: startDate, endDate, currentPage, pageSize
GET /api/tickets/employeesurveydetailresponse
Returns per-question responses for tickets using the Employee Survey format — designed to gather feedback about specific technicians rather than overall service.
Parameters: startDate, endDate, currentPage, pageSize
5. Project Survey Responses
These endpoints return survey responses for completed projects rather than individual support tickets.
GET /api/tickets/projectresponses
Returns project survey responses. Filter by project ID, project manager, company, or contact.
Parameters:
filterBy(string) — Field to filter on:PRecId,ProjectMgr,CompanyName,ContactName.keyword(string) — Value to match against the filterBy field.reviewType(integer) — 0 = all responses; 3 = only responses with a written comment.startDate(string) — Start of date range.endDate(string) — End of date range.currentPage(integer) — Page number, starts at 1.pageSize(integer) — Records per page.
GET /api/v1.1/tickets/projectresponses
Adds additional response fields over the base version. Same parameters as above.
GET /api/v1.2/tickets/projectresponses
Adds SentOn — the date the survey invitation was dispatched for the project. Same parameters as above.
6. Multi-Site Responses
For partners operating multiple client locations under a single BizRatings account, these endpoints aggregate survey responses across all sites.
GET /api/tickets/multisiteresponses
Returns combined ticket responses across all sites. Same parameters as the Ticket Survey Responses endpoints (Section 3).
GET /api/v1.1/tickets/multisiteresponses
Adds additional response fields. Same parameters as above.
GET /api/v1.2/tickets/multisiteresponses
Adds SentOn. Recommended version. Same parameters as above.
GET /api/tickets/multisiteemployeerating
Returns ratings given to individual technicians aggregated across all site locations.
Parameters: startDate, endDate, currentPage, pageSize
7. Single Ticket Lookup
Retrieve the survey record for a single ticket by its ticket number. All four versions share the same path parameter — later versions add fields to the response.
GET /api/tickets/{ticketno}— Base versionGET /api/v1.1/tickets/{ticketno}— Adds ContactRecIDGET /api/v1.2/tickets/{ticketno}— Adds ResponderIP, UserAgentGET /api/v1.3/tickets/{ticketno}— Adds SentOn (recommended)
Parameters: ticketno (required) — The ticket number from your PSA or CRM.
8. Summary and Aggregate Statistics
GET /api/tickets/summary
Returns aggregated statistics for the filtered dataset: response counts, average scores, and response rates.
Parameters:
memberName(string) — Filter by technician name.filterBy(string) — Field to filter on:SRServiceRecID,Keywords,mKeywords,CompanyName,ContactEmail,AssignedResources,BoardName.keyword(string) — Value to match against the filterBy field.reviewType(integer) — 0 = all responses; 3 = only responses with a written comment.startDate(string) — Start of date range.endDate(string) — End of date range.
GET /api/responses/summary
Returns a count of survey responses over a date range, grouped by time period. Use this endpoint to build response volume trend charts.
Parameters:
startDate(string) — Start of date range. Example:2025-10-01or01-Oct-2025.endDate(string) — End of date range.viewType(string) — Time grouping:monthly,quarterly,weekly, ordaily.source(string) — Survey type:CSATorNPS.
9. Client and Employee Statistics
GET /api/tickets/clientresponses
Returns survey statistics grouped by client company. Each row summarizes response volume and average score for one client — useful for account health views and business reviews.
Parameters:
filterBy(string) — Field to filter on:SRServiceRecID,Keywords,mKeywords,CompanyName,ContactEmail,AssignedResources,BoardName.keyword(string) — Value to match against the filterBy field.startDate(string) — Start of date range. Format:dd-M-yyyy.endDate(string) — End of date range.currentPage(integer) — Page number, starts at 1.pageSize(integer) — Records per page.
GET /api/tickets/employeeeresponses
Returns survey statistics grouped by technician or engineer. Each row summarizes response counts and average scores for one team member.
Note: The endpoint path contains three e's — employeeeresponses. Use this path exactly as shown.
Parameters:
companyName(string) — Filter by client company name.startDate(string) — Start of date range. Format:dd-M-yyyy.endDate(string) — End of date range.currentPage(integer) — Page number, starts at 1.pageSize(integer) — Records per page.
10. Quarterly Statistics
These endpoints return quarterly profitability statistics by client. No filter parameters are supported — all available data is returned.
GET /api/tickets/quarterlyresponses
Returns one summary row per client across all available quarters. No parameters.
GET /api/tickets/quarterlyresponsessummary
Returns the same data broken into individual rows per quarter per client — useful for charting quarterly trends. No parameters.
11. Submit a Ticket
This endpoint submits a closed ticket from your PSA or CRM to BizRatings. On receipt, BizRatings queues and sends a survey invitation to the contact email address via SendGrid.
Note: If you are using the BizRatings email template widget (e.g. HaloPSA), your tickets are submitted automatically and you do not need to call this endpoint.
POST /api/tickets
Content-Type: application/json
Required fields:
ticketID(integer) — Unique ticket number from your PSA or CRM.ticketTitle(string) — Title or subject of the support ticket. Max 500 characters.companyRecID(integer) — Your CRM's internal numeric ID for the client company.companyName(string) — Client company display name. Max 300 characters.contactRecID(integer) — Your CRM's internal numeric ID for the survey recipient.contactName(string) — Full name of the survey recipient. Max 100 characters.contactEmail(string) — Email address where BizRatings will send the survey. Max 100 characters.ticketCreatedOn(datetime) — When the ticket was created in your PSA/CRM.ticketClosedOn(datetime) — When the ticket was closed.ticketUpdatedOn(datetime) — Timestamp of the most recent update.
Optional fields:
boardName(string) — Ticket category or queue name. Max 300 characters.resource(string) — Comma-separated technician identifiers. Max 500 characters.
Example request body:
{
"ticketID": 100123,
"ticketTitle": "Unable to access shared drive",
"boardName": "Networking",
"companyRecID": 4501,
"companyName": "Acme Corporation",
"contactRecID": 8812,
"contactName": "Jane Smith",
"contactEmail": "jane.smith@acme.com",
"resource": "jdoe,mlee",
"ticketCreatedOn": "2025-05-01T08:30:00Z",
"ticketClosedOn": "2025-05-02T15:45:00Z",
"ticketUpdatedOn": "2025-05-02T15:45:00Z"
}
12. Quick Reference — All Endpoints
GET /api/tickets/responses— Ticket survey responses (base)GET /api/v1.1/tickets/responses— Adds ContactRecIDGET /api/v1.2/tickets/responses— Adds ResponderIP, UserAgentGET /api/v1.3/tickets/responses— Adds SentOn (recommended)GET /api/tickets/fivequestionsurveydetailresponse— 5-question survey detailGET /api/tickets/employeesurveydetailresponse— Employee survey detailGET /api/tickets/projectresponses— Project survey responses (base)GET /api/v1.1/tickets/projectresponses— Project responses + extra fieldsGET /api/v1.2/tickets/projectresponses— Project responses + SentOnGET /api/tickets/multisiteresponses— Multi-site responses (base)GET /api/v1.1/tickets/multisiteresponses— Multi-site + extra fieldsGET /api/v1.2/tickets/multisiteresponses— Multi-site + SentOn (recommended)GET /api/tickets/multisiteemployeerating— Technician ratings, multi-siteGET /api/tickets/{ticketno}— Single ticket lookup (base)GET /api/v1.1/tickets/{ticketno}— Single ticket + ContactRecIDGET /api/v1.2/tickets/{ticketno}— Single ticket + IP/UserAgentGET /api/v1.3/tickets/{ticketno}— Single ticket + SentOn (recommended)GET /api/tickets/summary— Aggregated response statisticsGET /api/responses/summary— Response volume over timeGET /api/tickets/clientresponses— Stats per client companyGET /api/tickets/employeeeresponses— Stats per technicianGET /api/tickets/quarterlyresponses— Quarterly stats summaryGET /api/tickets/quarterlyresponsessummary— Quarterly stats by quarterPOST /api/tickets— Submit a closed ticket
Questions? Contact support@bizratings.com