This article covers the Brilliant Assessments API, including V2 authentication, endpoints, response models, and partner access. It also covers V1 legacy support and migration guidance.
The Brilliant Assessments API allows you to integrate your assessment platform with external applications and automate workflows. It provides endpoints for creating responses, retrieving response data, and polling for changes.
Two versions of the API are currently available:
| Version | Status | Base URL | Authentication |
| V2 | Current (recommended) | https://apiv2.brilliantassessments.com |
Public Key + Private Key |
| V1 | Legacy (supported until Dec 31, 2027) | https://api.brilliantassessments.com |
Single API Key |
We recommend all new integrations use API V2. Existing V1 integrations will continue to work during the transition period.
Tip: Looking for real-time notifications? Webhooks can notify your system when a response is created or completed by sending the ResponseID. You then call the API to retrieve the full response data. See Setting Up Webhooks.
On this page
API V2 (Current)
Security and Authentication
API V2 uses a two-key authentication model for increased security, similar to payment providers like Stripe:
- Public Key - Identifies your tenant. Included in API requests.
- Private Key - Used to authenticate requests. Must be kept secret.
Both keys are required for every API request. The private key is encrypted and stored securely. Unlike V1's single key, this two-key model means that even if one key is exposed, both are needed to access your data.
Setting Up API Keys
- Go to Administer > Site Settings
- Click the Integrations tab
- Select the API & Webhooks sub-tab
- Click Generate API Keys
- Your Public Key and Private Key will be displayed
-
Copy your Private Key immediately and store it securely. The Private Key can be viewed again from this screen, but treat it like a password.
Important: If you regenerate your keys, all existing integrations using the old keys will stop working. A warning message will be shown before regenerating.
Partner/Organization API Access
API V2 allows partners (Organizations) to access the API using their own keys. This means partners can integrate with their own systems while only seeing their own response data.
To set up partner API access:
- Go to Site Settings > Features > Organizations
- Click Edit on the organization
- Under V2 API Key > Click Add API key (or Edit API key if one already exists)
- The API key fields will appear in the same format as Site Settings
Note: Only administrators can configure API keys for organizations. Partners using these keys will only be able to access response data associated with their own organization.
Base URL and Documentation
| Environment | Base URL |
| Production | https://apiv2.brilliantassessments.com |
| Swagger Documentation | https://apiv2.brilliantassessments.com/swagger/index.html |
All requests must include your API keys in the following request headers:
| Header | Value |
X-API-PublicKey |
Your public key |
X-API-PrivateKey |
Your private key |
Note: Field names in API requests are case-insensitive. You may see camelCase (e.g., externalId) in the Swagger documentation and PascalCase (e.g., ExternalId) in this article. Both work identically.
Endpoints
| API | Description |
| Get Test | Test connectivity to the API |
| Get Assessment Response | Get full data for a single response |
| Get Changes | Get ResponseIDs and ExternalIDs for completed responses, optionally filtered by date and assessment |
| Get All Responses for an Assessment | Get all responses for an assessment regardless of status |
| Post Create Response | Create a new assessment response |
Get Test
Test connectivity to the API.
Endpoint: GET /api/v2/test
Parameters: None
Response: "Test succeeded" string
Get Assessment Response
Gets full data for a single assessment response.
Endpoint: GET /api/v2/responses/{responseID}
URI Parameters
| Name | Description | Type | Required |
| responseID | The response ID | integer | Yes |
Response Model - Top-level Fields
| Name | Type | Notes |
| ResponseId | integer | |
| ExternalId | string | New in V2 |
| BusinessName | string | |
| string | ||
| FirstName | string | |
| LastName | string | |
| CompletionDate | date | |
| Address1 | string | |
| Address2 | string | |
| City | string | |
| Postcode | string | |
| Country | string | |
| Longitude | decimal | |
| Latitude | decimal | |
| HasImage | boolean | |
| AdvisorName | string | |
| OrganisationLevel1-5 | string | |
| ReportIdentifier | string | |
| GroupName | string | |
| CustomerType | string | |
| StatusId | integer | |
| Status | string |
Response Model - Rating
| Name | Type | Notes |
| RatingId | integer | |
| Rating | string | Rating label (e.g., "Strong") |
| Score | decimal | |
| RatingText | string | |
| RatingText2 | string | New in V2 |
| RatingText3 | string | New in V2 |
| RatingText4 | string | New in V2 |
| RatingText5 | string | New in V2 |
| RatingColour | string | |
| HasImage | boolean |
SegmentationRatings (collection): Same fields as Rating, plus SegmentationId and SegmentationName.
Response Model - SectionRatings (collection)
| Name | Type | Notes |
| SectionId | integer | |
| SectionName | string | |
| SectionNo | integer | |
| RatingId | integer | |
| Rating | string | |
| Score | decimal | |
| RatingText | string | |
| RatingText2 | string | New in V2 |
| RatingText3 | string | New in V2 |
| RatingText4 | string | New in V2 |
| RatingText5 | string | New in V2 |
| RatingColour | string | |
| HasImage | boolean |
V2 change: SegmentationId and SegmentationName have been removed from SectionRatings, SubSectionRatings, and Answers as they were not valid in this context.
SubSectionRatings (collection): Same structure as SectionRatings but with SubSectionId, SubSectionNo, SubSectionName instead of Section fields.
Response Model - Answers (collection)
| Name | Type | Notes |
| AvailibleAnswerId | integer | |
| AssessmentAnswerId | integer | |
| AnswerType | string | |
| QuestionId | integer | |
| QuestionPath | string | |
| QuestionText | string | |
| QuestionShortName | string | |
| QuestionPotentialPoints | decimal | |
| AnswerText | string | |
| AnswerShortName | string | |
| AnswerScore | decimal | |
| ReportText | string | |
| ReportText2 | string | |
| ReportText3 | string | |
| ReportText4 | string | New in V2 |
| ReportText5 | string | New in V2 |
V2 changes to Answers:
- Added: ReportText4, ReportText5
- Removed: FeatureName (obsolete), SegmentationId, SegmentationName (not valid in this context)
Response Model - Classifiers (collection)
| Name | Type |
| Key | string |
| Value | string |
Response Model - ReportDetails (collection)
| Name | Type |
| Text | string |
| Name | string |
| Id | string |
| ReportUrl | string |
DashboardUrl: string
For complete response examples, see the Swagger documentation.
Get Changes
Performs a search for completed assessment responses, optionally filtered by date and assessment. Use this endpoint to poll for new completions.
Endpoint: GET /api/v2/changes?since={date}&assessmentId={ExternalID}
Query Parameters
| Name | Description | Type | Required |
| since | Change date search start. Accepts MM-DD-YYYY and YYYY-MM-DD. Omit to return all. |
date | No |
| assessmentId | External ID of the assessment. Omit to return changes across all assessments. | string | No |
Response Model
| Name | Type | Notes |
| ResponseIds | collection of integer | |
| ExternalIds | collection of string | New in V2 - The ExternalID of the assessment for each response |
V2 change: The response now includes ExternalIds alongside ResponseIds (as parallel arrays), so you can identify which assessment each response belongs to without making additional API calls.
Sample Response:
{
"ResponseIds": [1, 2],
"ExternalIds": ["LEADERSHIP-001", "LEADERSHIP-001"]
}Get All Responses for an Assessment
Returns all responses for an assessment regardless of status (completed, in-progress, etc.).
Endpoint: GET /api/v2/responses?assessmentId={ExternalID}
Note: This endpoint is only suitable for small datasets. For large assessments, use Get Changes with a recent date filter.
Query Parameters
| Name | Description | Type | Required |
| assessmentId | External ID of the assessment | string | Yes |
Post Create Response
Create a new assessment response. The contact details can be set by specifying a ContactId or by providing contact details directly.
The response returns the ResponseID and ResponseURL. You can redirect the user to the URL, or set up a Welcome email template to have the system send them an invitation.
Endpoint: POST /api/v2/responses
Body Parameters
| Name | Type | Required | Notes |
| ExternalId* | string | Yes | External ID of the assessment |
| ReportIdentifier | string | No | |
| GroupName | string | No | |
| BccEmail | string | No | |
| ContactId | string | No | Use if contact already exists |
| BusinessName | string | No | |
| FirstName* | string | Yes | |
| LastName* | string | Yes | |
| Email* | string | Yes | |
| CustomerType | string | No | |
| OrganisationL1-L5 | string | No | |
| Classifiers | collection | No | Key/Value pairs |
| ReturnOKOnValidationFailure | boolean | No | |
| ReturnAction | integer | No | 1 = Redirect (goes to specified URL on completion), 2 = Add button (display a button alongside the report print buttons) |
| ReturnURL | string | No | Full URL |
| ButtonText | string | No | Only applicable if ReturnAction = 2 |
Response Model
| Name | Type | Description |
| Message | string | |
| ResponseID | integer | The response ID assigned |
| ResponseURL | string | The unique response URL |
Rate Limits
| Period | Maximum Requests |
| Per second | 1 |
| Per minute | 10 |
| Per hour | 200 |
| Per day | 1,500 |
| Per week | 3,000 |
If you need higher limits, contact support@brilliantassessments.com.
Note: Access to the API is only available for paid subscriptions (not available during the free trial).
API V1 (Legacy)
API V1 continues to work until December 31, 2027. If you have existing integrations using V1, they will continue to function. However, we recommend migrating to V2 for improved security and additional data fields.
| Detail | Value |
| Base URL | https://api.brilliantassessments.com |
| Documentation | https://api.brilliantassessments.com/help |
| Authentication | Single API key (found in Site Settings > Integrations > API & Webhooks, shown as "V1 API Key") |
| End of support | December 31, 2027 |
Migrating from V1 to V2
What's Changed
| Area | V1 | V2 |
| Authentication | Single API key | Public Key + Private Key |
| Base URL | api.brilliantassessments.com |
apiv2.brilliantassessments.com |
| Get Changes | Returns ResponseIds only | Returns ResponseIds and ExternalIds |
| Rating fields | RatingText only | RatingText, RatingText2-5 |
| Answer fields | ReportText 1-3, FeatureName, SegmentationId/Name | ReportText 1-5, FeatureName and Segmentation removed |
| Partner access | Not available | Organization-level API keys |
Migration Steps
- Generate your V2 API keys in Site Settings > Integrations > API & Webhooks
- Update your base URL to
https://apiv2.brilliantassessments.com - Update your authentication to send both keys via the
X-API-PublicKeyandX-API-PrivateKeyheaders - Update any code that references removed fields (FeatureName, SegmentationId/SegmentationName in Answers/SectionRatings/SubSectionRatings)
- Test using the Swagger documentation
- Consider adding Webhooks to receive ResponseIDs in real time when responses are created or completed, reducing the need to poll with Get Changes
Tip: You can run V1 and V2 simultaneously during migration. There is no need to switch over all at once.
FAQs & Troubleshooting
Use the questions below to troubleshoot common API issues.
Related Articles
- Setting Up Webhooks - Real-time notifications when responses are created or completed
- Connecting Webhooks to Zapier - Step-by-step Zapier integration with webhooks
- Integrating CRMs and Other Systems with Zapier - Polling-based Zapier integration (V1)
- Configuring Site Settings - Integrations tab overview
Comments
0 comments
Please sign in to leave a comment.