Introduction
BoardQ turns score data into a live, beautiful leaderboard you can put on any screen. Push results from your own app through the REST API, sync them from a tool you already use, or add them by hand — either way the board updates in real time and stays sharp on everything from a phone to an office TV.
This guide covers what BoardQ can do, the key concepts behind a result, the full API reference for reading and writing scores, and how to style a board with custom CSS.
Features
Create & Display Custom Scoreboards
BoardQ simplifies the process of creating and displaying scoreboards for any occasion. Whether it's for a sport competitions, classroom achievements, or events, our tool lets you choose a design and add scores remotely.
Live Updates
As scores change, BoardQ instantly refreshes, ensuring viewers always see the most recent results. Turn every score update into a moment of intrigue and celebration.
Multiple Screens
BoardQ seamlessly broadcasts scores in real-time across multiple screens, ensuring synchronized displays for all viewers, no matter where they're watching.
API Integration
Seamlessly display scores from diverse sources such as gaming platforms, sports tracking systems, and educational quizzes, ensuring real-time consistency no matter the application. Generate API key in leaderboard settings section.
QR Integration
Display QR code next to your leaderboard in order to navigate mobile users to your online activity or companies personal page. Generate QR code in leaderboard settings section.
Board insertion to your web page
Just with a few lines of code you can grab created leaderboard and add it to your personal or business web page. Find your board code snippet under created board settings.
Key Concepts
displayTitle
| title of the result which will be displayed in the screen. Usually it is a participant name or number.additionalInfo
| not visible info in the screen. Usually it is used write down a participant data like email or phone number. It is possible to see that data when you click on scoreboard result or when you export the data.imgUrl
| optional http(s) URL to an image, displayed as a circular avatar next to the place number on the scoreboard. Pass an empty string to clear an existing image. points
| for the points scoreboard you have to use points value. ms
| stands for milliseconds. ms value is used in time scoreboard. You have to send ms value and that ms will be transformed to targeted time value which is set in time scoreboard setting, for example if you want to display time scores in hours then: 7950000ms --> 2h 12min 30secapikey
| key which is needed to interact with BoardQ API. This key should be sended though headers.API
The BoardQ REST API lets your app push and read scores so they appear on a live leaderboard. Any language that can make an HTTP request works — there's no SDK to install. Authenticate each request with your API key in the apikey header.
Generating an API key
API access is a Premium feature. Open the scoreboard you want to connect, go to Settings → API, and click Generate API key. Keep the key secret — treat it like a password and send it only from your backend.
A Premium account can have up to 2 scoreboards with an active API key. To free up a slot, remove the key from an existing board before generating a new one. Need more keys? Reach out through the contact page.
Base URL
All endpoints below are relative to this base URL.
https://bq-server.onrender.com/api
POST/result/:scoreboardId
Endpoint dedicated to add new result to the targeted time or points scoreboard.
URL:
:scoreboardId
(required)BODY:
displayTitle
(required)additionalInfo
imgUrl
- http(s) URL, shown as a circle next to the place number
points OR ms
(required)HEADERS:
apikey
(required)const url = 'https://bq-server.onrender.com/api/result/SCOREBOARD_ID';const apiKey = API_KEY
const data = {displayTitle: "John Doe",additionalInfo: "johndoe@example.com",imgUrl: "https://example.com/avatar.png",points: 120};
fetch(url, {method: 'POST',headers: {'Content-Type': 'application/json','apikey': apiKey},body: JSON.stringify(data)}).then(response => response.json()).then(data => console.log(data)).catch(error => console.error('Error:', error));
GET/results/:scoreboardId
Endpoint dedicated to get all results from targeted scoreboard.
URL:
:scoreboardId
(required)HEADERS:
apikey
(required)const url = 'https://bq-server.onrender.com/api/result/SCOREBOARD_ID';const apiKey = API_KEY
fetch(url, {method: 'GET',headers: {'Content-Type': 'application/json','apikey': apiKey}}).then(response => response.json()).then(data => console.log(data)).catch(error => console.error('Error:', error));
GET/results/:scoreboardId/:resultId
Endpoint dedicated to get specific result from targeted scoreboard.
URL:
:scoreboardId
(required):resultId
(required)HEADERS:
apikey
(required)const url = 'https://bq-server.onrender.com/api/result/SCOREBOARD_ID/RESULT_ID';const apiKey = API_KEY
fetch(url, {method: 'GET',headers: {'Content-Type': 'application/json','apikey': apiKey}}).then(response => response.json()).then(data => console.log(data)).catch(error => console.error('Error:', error));
PUT/result/:scoreboardId/:resultId
Endpoint dedicated to add new result to the targeted time or points scoreboard.
URL:
:scoreboardId
(required):resultId
(required)BODY:
displayTitle
additionalInfo
imgUrl
- http(s) URL; pass empty string to clear
points OR ms
HEADERS:
apikey
(required)const url = 'https://bq-server.onrender.com/api/result/SCOREBOARD_ID/RESULT_ID';const apiKey = API_KEY
const data = {displayTitle: "John Doe",additionalInfo: "johndoe@example.com",imgUrl: "https://example.com/avatar.png",points: 120};
fetch(url, {method: 'PUT',headers: {'Content-Type': 'application/json','apikey': apiKey},body: JSON.stringify(data)}).then(response => response.json()).then(data => console.log(data)).catch(error => console.error('Error:', error));
DELETE/results/:scoreboardId/:resultId
Endpoint dedicated to delete specific result from targeted scoreboard.
URL:
:scoreboardId
(required):resultId
(required)HEADERS:
apikey
(required)const url = 'https://bq-server.onrender.com/api/result/SCOREBOARD_ID/RESULT_ID'; const apiKey = API_KEY;
fetch(url, {method: 'DELETE',headers: {'Content-Type': 'application/json','apikey': apiKey}}).then(response => response.json()).then(data => console.log(data)).catch(error => console.error('Error:', error));
Settings
Adding custom CSS styles
You are able to add your custom CSS styles that is suitable for your needs. Inspect custom HTML element class on the board screen and add styles to that class.
Example: