Loquiz API Documentation
Overview
The Loquiz API version 3 provides a RESTful interface for retrieving game results. The API is hosted at:
Base URL: https://api.loquiz.com/v3
Endpoints
1. Get Game Info
Endpoint: GET /games/{gameId}
Retrieve detailed information about a specific game, including tasks.
Parameters:
gameId
(path, required): The unique identifier of the game.
Responses:
200 OK
: Returns game details.401 Unauthorized
: Game data is not public or invalid API key.404 Not Found
: Game not found.500 Internal Server Error
: Server-side error.
2. Get Teams in a Game
Endpoint: GET /results/{gameId}/teams
Retrieve a list of teams registered for a specific game.
Parameters:
gameId
(path, required): The unique identifier of the game.scope
(query, optional): Filter by comma-separated list of scopes.ticketId
(query, optional): Filter by comma-separated list of ticket IDs.skip
(query, optional): Number of items to skip.limit
(query, optional): Number of items to return (max 100).sort
(query, optional): Field to sort by. Default is-totalScore
. Prepend with-
for descending order.- Options:
totalScore
,correctAnswers
,incorrectAnswers
,startTime
,finishTime
, etc. group
(query, optional): Group teams by scope. Response will includeid
,teamIds
, andnames
.includeAnswers
(query, optional): Include team answers if set totrue
or1
.includeFirstImage
(query, optional): Include the first uploaded image for each team if set totrue
or1
.
Responses:
200 OK
: Returns a list of teams as{ "total": "number", "items": [Team] }
.401 Unauthorized
: Game results are not public or invalid API key.404 Not Found
: Game not found.500 Internal Server Error
: Server-side error.
3. Get Media Uploaded by Teams
Endpoint: GET /results/{gameId}/media
Retrieve media files (e.g., images, videos) uploaded by teams during a game.
Parameters:
gameId
(path, required): The unique identifier of the game.scope
(query, optional): Filter by comma-separated list of scopes.ticketId
(query, optional): Filter by comma-separated list of ticket IDs.
Responses:
200 OK
: Returns a list of media files as{ "total": "number", "items": [Media] }
.401 Unauthorized
: Game results are not public or invalid API key.404 Not Found
: Game not found.500 Internal Server Error
: Server-side error.
Components
Schemas
Error
{
"error": "string",
"message": "string"
}
Game
Detailed properties for games, including settings, colors, tasks, and permissions.
{
"id": "string",
"title": "string",
"logoUrl": "string",
"primaryColor": "string",
"secondaryColor": "string",
"units": "metric | imperial",
"language": {
"id": "string",
"version": "integer"
},
"pinInfo": "order | score | intro | none",
"taskBackgroundImageUrl": "string",
"intro": "string",
"outro": "string",
"hintLimit": "integer",
"penalizeIncorrectAnswers": "boolean",
"allowChatting": "boolean",
"showShortIntroUnderPin": "boolean",
"showAllTeamScores": "boolean",
"showAllTeamLocations": "boolean",
"disableTeamTracks": "boolean",
"allowTaskFiltering": "boolean",
"hideFollowMe": "boolean",
"hideMyLocation": "boolean",
"showMyTrack": "boolean",
"allowNavigation": "boolean",
"allowAppFeedback": "boolean",
"hideScore": "boolean",
"hideScoreUntilPlayTime": "number",
"hideScoreFromPlayTime": "number",
"showCodeScanner": "boolean",
"hideGameTime": "boolean",
"showPostAnswerComment": "boolean",
"multiplePlayersPerTeam": "boolean",
"afterFinishMeetingPoint": {
"location": {
"lat": "float",
"lng": "float",
"radius": "float"
},
"pin": {
"none": "boolean",
"1x": "string",
"2x": "string",
"3x": "string",
"iconAnchor": [
"float",
"float"
],
"areaColor": "string"
},
"message": "string"
},
"mapTiles": [
{
"type": "string",
"style": "string"
}
],
"mapOverlays": [
{
"imageUrl": "string",
"alpha": "number",
"bounds": {
"top": "number",
"right": "number",
"bottom": "number",
"left": "number"
},
"rotation": "number"
}
],
"tasks": [
{
"id": "string",
"text": "string",
"answerType": "single | multiple | text | number | number:range | photo | video | none | activity",
"survey": "boolean",
"codeBox": "boolean",
"answers": [
{
"text": "string",
"correct": "boolean"
}
],
"difficulty": "number",
"timeLimit": "integer",
"comments": {
"shortIntro": "string",
"hint": "string",
"correct": "string",
"incorrect": "string"
},
"media": [
{
"type": "image | youtube | vimeo | webpage | audio",
"url": "string"
}
],
"password": "string",
"backgroundAudio": {
"url": "string",
"loop": "boolean"
},
"showAnswerCorrectness": "boolean",
"showCorrectAnswer": "boolean"
}
]
}
Team
Details about a team, including scores, members, and answers.
{
"id": "string",
"scope": "string",
"ticketId": "string",
"name": "string",
"members": ["string"],
"isFinished": "boolean",
"startTime": "number",
"finishTime": "number",
"answersScore": "number",
"bonusScore": "number",
"totalScore": "number",
"correctAnswers": "number",
"incorrectAnswers": "number",
"hints": "number",
"odometer": "number",
"answers": [
{
"id": "string",
"taskId": "string",
"answer": "string",
"correct": "boolean",
"time": "number",
"timeToAnswer": "number",
"outOfTime": "boolean",
"hintUsed": "boolean",
"score": "number"
}
],
"firstImage": {
"thumbnail": "string",
"optimized": "string",
"original": "string"
}
}
Medium
Details about uploaded media, including paths to thumbnails and original files.
{
"id": "string",
"teamId": "string",
"scope": "string",
"ticketId": "string",
"taskId": "string",
"thumbnail": "string",
"optimized": "string",
"original": "string",
"time": "number"
}
Usage Notes
Use appropriate error handling for responses, especially for 401 Unauthorized
and 404 Not Found
.
Timestamps are in seconds since the epoch (Unix time).
All responses are in JSON format.
Ensure to handle pagination for endpoints that return lists (e.g., teams, media).