Reply as staff
curl --request POST \
--url https://api.series.hr/tickets/{ticketId}/reply \
--header 'Content-Type: application/json' \
--header 'apikey: <api-key>' \
--data '
{
"content": "<string>",
"staffUserId": 123
}
'import requests
url = "https://api.series.hr/tickets/{ticketId}/reply"
payload = {
"content": "<string>",
"staffUserId": 123
}
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({content: '<string>', staffUserId: 123})
};
fetch('https://api.series.hr/tickets/{ticketId}/reply', 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/{ticketId}/reply",
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([
'content' => '<string>',
'staffUserId' => 123
]),
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/{ticketId}/reply"
payload := strings.NewReader("{\n \"content\": \"<string>\",\n \"staffUserId\": 123\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/{ticketId}/reply")
.header("apikey", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"content\": \"<string>\",\n \"staffUserId\": 123\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.series.hr/tickets/{ticketId}/reply")
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 \"content\": \"<string>\",\n \"staffUserId\": 123\n}"
response = http.request(request)
puts response.read_bodyTickets
Reply as Staff
Send a reply to a ticket as a staff member
POST
/
tickets
/
{ticketId}
/
reply
Reply as staff
curl --request POST \
--url https://api.series.hr/tickets/{ticketId}/reply \
--header 'Content-Type: application/json' \
--header 'apikey: <api-key>' \
--data '
{
"content": "<string>",
"staffUserId": 123
}
'import requests
url = "https://api.series.hr/tickets/{ticketId}/reply"
payload = {
"content": "<string>",
"staffUserId": 123
}
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({content: '<string>', staffUserId: 123})
};
fetch('https://api.series.hr/tickets/{ticketId}/reply', 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/{ticketId}/reply",
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([
'content' => '<string>',
'staffUserId' => 123
]),
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/{ticketId}/reply"
payload := strings.NewReader("{\n \"content\": \"<string>\",\n \"staffUserId\": 123\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/{ticketId}/reply")
.header("apikey", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"content\": \"<string>\",\n \"staffUserId\": 123\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.series.hr/tickets/{ticketId}/reply")
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 \"content\": \"<string>\",\n \"staffUserId\": 123\n}"
response = http.request(request)
puts response.read_bodyRequires Premium or Enterprise subscription
Overview
Send a reply to a ticket as a staff member. The ticket must be claimed by you before you can reply. Important Notes:- You must claim the ticket before replying
- Cannot reply to game reports
- The reply is added to the ticket’s content with type “staff_message”
Path Parameters
string
required
Ticket ID
Request Body
string
required
Reply message content
integer
required
UserId of the staff member sending the reply
Response
boolean
Whether the request was successful
Example
curl -X POST "https://api.series.hr/tickets/TICKET-1234567890-ABCD/reply" \
-H "apikey: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"content": "I'll help you with your ranking. Please join the training center.",
"staffUserId": 987654321
}'
const response = await fetch('https://api.series.hr/tickets/TICKET-1234567890-ABCD/reply', {
method: 'POST',
headers: {
'apikey': 'YOUR_API_KEY',
'Content-Type': 'application/json'
},
body: JSON.stringify({
content: "I'll help you with your ranking. Please join the training center.",
staffUserId: 987654321
})
});
const data = await response.json();
local HttpService = game:GetService("HttpService")
local response = HttpService:RequestAsync({
Url = "https://api.series.hr/tickets/TICKET-1234567890-ABCD/reply",
Method = "POST",
Headers = {
["apikey"] = "YOUR_API_KEY",
["Content-Type"] = "application/json"
},
Body = HttpService:JSONEncode({
content = "I'll help you with your ranking. Please join the training center.",
staffUserId = 987654321
})
})
local data = HttpService:JSONDecode(response.Body)
import requests
response = requests.post(
'https://api.series.hr/tickets/TICKET-1234567890-ABCD/reply',
headers={
'apikey': 'YOUR_API_KEY',
'Content-Type': 'application/json'
},
json={
'content': "I'll help you with your ranking. Please join the training center.",
'staffUserId': 987654321
}
)
data = response.json()
Response Example
{
"success": true,
"data": {
"message": "Reply sent successfully"
}
}
Error Responses
400 - Not Claimed
400 - Not Claimed
{
"success": false,
"error": {
"code": 400,
"message": "You must claim this ticket before replying"
}
}
403 - Game Report
403 - Game Report
{
"success": false,
"error": {
"code": 403,
"message": "Cannot reply to game reports"
}
}
403 - Premium Required
403 - Premium Required
{
"success": false,
"error": {
"code": 403,
"message": "Tickets module requires a Premium or Enterprise subscription"
}
}
404 - Ticket Not Found
404 - Ticket Not Found
{
"success": false,
"error": {
"code": 404,
"message": "Ticket not found"
}
}
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.
Path Parameters
Ticket ID
Body
application/json
Response
Reply sent successfully
⌘I

