Create game report
curl --request POST \
--url https://api.series.hr/tickets/create-game-report \
--header 'Content-Type: application/json' \
--header 'apikey: <api-key>' \
--data '
{
"subject": "<string>",
"category": "<string>",
"message": "<string>",
"authorUserId": 123,
"authorAvatarUrl": "<string>",
"placeId": "<string>",
"priority": "medium",
"authorUsername": "<string>",
"authorDisplayName": "<string>",
"serverId": "<string>"
}
'import requests
url = "https://api.series.hr/tickets/create-game-report"
payload = {
"subject": "<string>",
"category": "<string>",
"message": "<string>",
"authorUserId": 123,
"authorAvatarUrl": "<string>",
"placeId": "<string>",
"priority": "medium",
"authorUsername": "<string>",
"authorDisplayName": "<string>",
"serverId": "<string>"
}
headers = {
"apikey": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {apikey: '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
subject: '<string>',
category: '<string>',
message: '<string>',
authorUserId: 123,
authorAvatarUrl: '<string>',
placeId: '<string>',
priority: 'medium',
authorUsername: '<string>',
authorDisplayName: '<string>',
serverId: '<string>'
})
};
fetch('https://api.series.hr/tickets/create-game-report', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.series.hr/tickets/create-game-report",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'subject' => '<string>',
'category' => '<string>',
'message' => '<string>',
'authorUserId' => 123,
'authorAvatarUrl' => '<string>',
'placeId' => '<string>',
'priority' => 'medium',
'authorUsername' => '<string>',
'authorDisplayName' => '<string>',
'serverId' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"apikey: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.series.hr/tickets/create-game-report"
payload := strings.NewReader("{\n \"subject\": \"<string>\",\n \"category\": \"<string>\",\n \"message\": \"<string>\",\n \"authorUserId\": 123,\n \"authorAvatarUrl\": \"<string>\",\n \"placeId\": \"<string>\",\n \"priority\": \"medium\",\n \"authorUsername\": \"<string>\",\n \"authorDisplayName\": \"<string>\",\n \"serverId\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("apikey", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.series.hr/tickets/create-game-report")
.header("apikey", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"subject\": \"<string>\",\n \"category\": \"<string>\",\n \"message\": \"<string>\",\n \"authorUserId\": 123,\n \"authorAvatarUrl\": \"<string>\",\n \"placeId\": \"<string>\",\n \"priority\": \"medium\",\n \"authorUsername\": \"<string>\",\n \"authorDisplayName\": \"<string>\",\n \"serverId\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.series.hr/tickets/create-game-report")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["apikey"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"subject\": \"<string>\",\n \"category\": \"<string>\",\n \"message\": \"<string>\",\n \"authorUserId\": 123,\n \"authorAvatarUrl\": \"<string>\",\n \"placeId\": \"<string>\",\n \"priority\": \"medium\",\n \"authorUsername\": \"<string>\",\n \"authorDisplayName\": \"<string>\",\n \"serverId\": \"<string>\"\n}"
response = http.request(request)
puts response.read_bodyTickets
Create Game Report
Create a ticket from an in-game player report
POST
/
tickets
/
create-game-report
Create game report
curl --request POST \
--url https://api.series.hr/tickets/create-game-report \
--header 'Content-Type: application/json' \
--header 'apikey: <api-key>' \
--data '
{
"subject": "<string>",
"category": "<string>",
"message": "<string>",
"authorUserId": 123,
"authorAvatarUrl": "<string>",
"placeId": "<string>",
"priority": "medium",
"authorUsername": "<string>",
"authorDisplayName": "<string>",
"serverId": "<string>"
}
'import requests
url = "https://api.series.hr/tickets/create-game-report"
payload = {
"subject": "<string>",
"category": "<string>",
"message": "<string>",
"authorUserId": 123,
"authorAvatarUrl": "<string>",
"placeId": "<string>",
"priority": "medium",
"authorUsername": "<string>",
"authorDisplayName": "<string>",
"serverId": "<string>"
}
headers = {
"apikey": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {apikey: '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
subject: '<string>',
category: '<string>',
message: '<string>',
authorUserId: 123,
authorAvatarUrl: '<string>',
placeId: '<string>',
priority: 'medium',
authorUsername: '<string>',
authorDisplayName: '<string>',
serverId: '<string>'
})
};
fetch('https://api.series.hr/tickets/create-game-report', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.series.hr/tickets/create-game-report",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'subject' => '<string>',
'category' => '<string>',
'message' => '<string>',
'authorUserId' => 123,
'authorAvatarUrl' => '<string>',
'placeId' => '<string>',
'priority' => 'medium',
'authorUsername' => '<string>',
'authorDisplayName' => '<string>',
'serverId' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"apikey: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.series.hr/tickets/create-game-report"
payload := strings.NewReader("{\n \"subject\": \"<string>\",\n \"category\": \"<string>\",\n \"message\": \"<string>\",\n \"authorUserId\": 123,\n \"authorAvatarUrl\": \"<string>\",\n \"placeId\": \"<string>\",\n \"priority\": \"medium\",\n \"authorUsername\": \"<string>\",\n \"authorDisplayName\": \"<string>\",\n \"serverId\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("apikey", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.series.hr/tickets/create-game-report")
.header("apikey", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"subject\": \"<string>\",\n \"category\": \"<string>\",\n \"message\": \"<string>\",\n \"authorUserId\": 123,\n \"authorAvatarUrl\": \"<string>\",\n \"placeId\": \"<string>\",\n \"priority\": \"medium\",\n \"authorUsername\": \"<string>\",\n \"authorDisplayName\": \"<string>\",\n \"serverId\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.series.hr/tickets/create-game-report")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["apikey"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"subject\": \"<string>\",\n \"category\": \"<string>\",\n \"message\": \"<string>\",\n \"authorUserId\": 123,\n \"authorAvatarUrl\": \"<string>\",\n \"placeId\": \"<string>\",\n \"priority\": \"medium\",\n \"authorUsername\": \"<string>\",\n \"authorDisplayName\": \"<string>\",\n \"serverId\": \"<string>\"\n}"
response = http.request(request)
puts response.read_bodyRequires Premium or Enterprise subscription
Overview
Create a ticket from an in-game player report. Used by game servers to report players directly to the tickets system. Important Notes:- Game reports are marked with
GameReport: true - Includes
GameDatawith place and server information - Discord notifications include a special game report indicator
- Cannot receive staff replies (game reports are view-only)
authorAvatarUrlis required
Request Body
string
required
Report subject
string
required
Category ID
string
required
Report details
string
Priority level:
low, medium, high, urgent (default: medium)integer
required
Reporter’s UserId
string
Reporter’s username
string
Reporter’s display name
string
required
Reporter’s avatar URL
string
required
Place ID where the report originated
string
Server ID where the report originated (optional)
Response
boolean
Whether the request was successful
object
Show properties
Show properties
string
The generated ticket ID
string
MongoDB document ID
string
The workspace ID
string
Ticket subject
string
Category ID
string
Assigned department ID
string
Ticket status (always “open” for new tickets)
string
Ticket priority
object
Author information
boolean
Always true for game reports
object
PlaceId and ServerId information
string
Creation timestamp
string
Last update timestamp
Example
curl -X POST https://api.series.hr/tickets/create-game-report \
-H "apikey: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"subject": "Rule violation report",
"category": "reports",
"message": "Player was exploiting",
"priority": "high",
"authorUserId": 123456789,
"authorUsername": "reporter123",
"authorDisplayName": "Reporter Name",
"authorAvatarUrl": "https://tr.rbxcdn.com/avatar-url",
"placeId": "123456789",
"serverId": "game-server-id-123"
}'
const response = await fetch('https://api.series.hr/tickets/create-game-report', {
method: 'POST',
headers: {
'apikey': 'YOUR_API_KEY',
'Content-Type': 'application/json'
},
body: JSON.stringify({
subject: 'Rule violation report',
category: 'reports',
message: 'Player was exploiting',
priority: 'high',
authorUserId: 123456789,
authorUsername: 'reporter123',
authorDisplayName: 'Reporter Name',
authorAvatarUrl: 'https://tr.rbxcdn.com/avatar-url',
placeId: '123456789',
serverId: 'game-server-id-123'
})
});
const data = await response.json();
local HttpService = game:GetService("HttpService")
local response = HttpService:RequestAsync({
Url = "https://api.series.hr/tickets/create-game-report",
Method = "POST",
Headers = {
["apikey"] = "YOUR_API_KEY",
["Content-Type"] = "application/json"
},
Body = HttpService:JSONEncode({
subject = "Rule violation report",
category = "reports",
message = "Player was exploiting",
priority = "high",
authorUserId = 123456789,
authorUsername = "reporter123",
authorDisplayName = "Reporter Name",
authorAvatarUrl = "https://tr.rbxcdn.com/avatar-url",
placeId = "123456789",
serverId = "game-server-id-123"
})
})
local data = HttpService:JSONDecode(response.Body)
import requests
response = requests.post(
'https://api.series.hr/tickets/create-game-report',
headers={
'apikey': 'YOUR_API_KEY',
'Content-Type': 'application/json'
},
json={
'subject': 'Rule violation report',
'category': 'reports',
'message': 'Player was exploiting',
'priority': 'high',
'authorUserId': 123456789,
'authorUsername': 'reporter123',
'authorDisplayName': 'Reporter Name',
'authorAvatarUrl': 'https://tr.rbxcdn.com/avatar-url',
'placeId': '123456789',
'serverId': 'game-server-id-123'
}
)
data = response.json()
Response Example
{
"success": true,
"data": {
"TicketId": "TICKET-1234567890-ABCD",
"_id": "...",
"WorkspaceId": "a7d5339a-5531-4336-99c6-6f3249c9ac20",
"Subject": "Rule violation report",
"Category": "reports",
"Department": "moderation-dept",
"Status": "open",
"Priority": "high",
"Author": {
"UserId": 123456789,
"Username": "reporter123",
"DisplayName": "Reporter Name",
"AvatarUrl": "https://..."
},
"GameReport": true,
"GameData": {
"PlaceId": 123456789,
"ServerId": "game-server-id-123"
},
"CreatedAt": "2025-01-15T10:30:00.000Z",
"UpdatedAt": "2025-01-15T10:30:00.000Z"
}
}
Error Responses
400 - Validation Error
400 - Validation Error
{
"success": false,
"error": {
"code": 400,
"message": "Validation error: Subject is required"
}
}
403 - Premium Required
403 - Premium Required
{
"success": false,
"error": {
"code": 403,
"message": "Tickets module requires a Premium or Enterprise subscription"
}
}
403 - Module Not Enabled
403 - Module Not Enabled
{
"success": false,
"error": {
"code": 403,
"message": "Tickets module is not enabled for this workspace"
}
}
Rate Limit
25 requests per second per API keyAuthorizations
Pass your API key in the apikey header. Alternatively, the x-api-key header is also accepted.
Body
application/json
Report subject
Category ID
Report details
Reporter's UserId
Avatar URL of the reporter
Place ID where the report originated
Available options:
low, medium, high, urgent Reporter's username
Reporter's display name
Server ID where the report originated
Response
Game report ticket created successfully
⌘I

