MENU navbar-image

Introduction

This documentation provides all the necessary information to work with the organizer API.

The API uses API keys for authentication and supports multiple languages via the X-Language header or the lang query parameter.

You can pass your API key either via the X-API-KEY header or as an api_key query parameter.

With this API, you can fetch ticket data, track sales, and manage your events — quickly and securely.

Authenticating requests

To authenticate requests, include a X-Api-Key header with the value "{YOUR_AUTH_KEY}".

All authenticated endpoints are marked with a requires authentication badge in the documentation below.

You can retrieve your token by visiting your dashboard and clicking Generate API token.

Endpoints

Регистрация нового организатора

Example request:
curl --request POST \
    "https://tic.rs/api/organizer/v1/auth/register" \
    --header "Content-Type: application/json" \
    --data "{
    \"email\": \"[email protected]\",
    \"password\": \"+-0pBNvYgxwmi\\/#iw\",
    \"name\": \"u\",
    \"locale\": \"as_IN\",
    \"timezone\": \"Asia\\/Baku\"
}"
import requests
import json

url = 'https://tic.rs/api/organizer/v1/auth/register'
payload = {
    "email": "[email protected]",
    "password": "+-0pBNvYgxwmi\/#iw",
    "name": "u",
    "locale": "as_IN",
    "timezone": "Asia\/Baku"
}
headers = {
  'Content-Type': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://tic.rs/api/organizer/v1/auth/register';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'email' => '[email protected]',
            'password' => '+-0pBNvYgxwmi/#iw',
            'name' => 'u',
            'locale' => 'as_IN',
            'timezone' => 'Asia/Baku',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request      

POST api/organizer/v1/auth/register

Headers

Content-Type      

Example: application/json

Body Parameters

email   string   

Must be a valid email address. Must not be greater than 255 characters. Example: [email protected]

password   string   

Must be at least 6 characters. Example: +-0pBNvYgxwmi/#iw

name   string  optional  

Must not be greater than 255 characters. Example: u

locale   string  optional  

Must not be greater than 10 characters. Example: as_IN

timezone   string  optional  

Must not be greater than 64 characters. Example: Asia/Baku

Авторизация организатора через email и password

Example request:
curl --request POST \
    "https://tic.rs/api/organizer/v1/auth/login" \
    --header "Content-Type: application/json" \
    --data "{
    \"email\": \"[email protected]\",
    \"password\": \"+-0pBNvYgxwmi\\/#iw\"
}"
import requests
import json

url = 'https://tic.rs/api/organizer/v1/auth/login'
payload = {
    "email": "[email protected]",
    "password": "+-0pBNvYgxwmi\/#iw"
}
headers = {
  'Content-Type': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://tic.rs/api/organizer/v1/auth/login';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'email' => '[email protected]',
            'password' => '+-0pBNvYgxwmi/#iw',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request      

POST api/organizer/v1/auth/login

Headers

Content-Type      

Example: application/json

Body Parameters

email   string   

Must be a valid email address. Example: [email protected]

password   string   

Must be at least 6 characters. Example: +-0pBNvYgxwmi/#iw

Получение списка доступных языков

Example request:
curl --request GET \
    --get "https://tic.rs/api/organizer/v1/settings/languages"
import requests
import json

url = 'https://tic.rs/api/organizer/v1/settings/languages'
response = requests.request('GET', url, )
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://tic.rs/api/organizer/v1/settings/languages';
$response = $client->get($url);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 60
x-ratelimit-remaining: 59
access-control-allow-origin: *
 

{
    "success": true,
    "data": [
        {
            "code": "ru",
            "name": "Русский",
            "code_flag": "ru",
            "code_flag_text": "🇷🇺",
            "direction": "ltr"
        },
        {
            "code": "en",
            "name": "English",
            "code_flag": "gb",
            "code_flag_text": "🇬🇧",
            "direction": "ltr"
        },
        {
            "code": "sr",
            "name": "Srpski",
            "code_flag": "rs",
            "code_flag_text": "🇷🇸",
            "direction": "ltr"
        },
        {
            "code": "de",
            "name": "Deutsch",
            "code_flag": "de",
            "code_flag_text": "🇩🇪",
            "direction": "ltr"
        },
        {
            "code": "tr",
            "name": "Türkçe",
            "code_flag": "tr",
            "code_flag_text": "🇹🇷",
            "direction": "ltr"
        },
        {
            "code": "ka",
            "name": "ქართული",
            "code_flag": "ge",
            "code_flag_text": "🇬🇪",
            "direction": "ltr"
        },
        {
            "code": "es",
            "name": "Español",
            "code_flag": "es",
            "code_flag_text": "🇪🇸",
            "direction": "ltr"
        },
        {
            "code": "hi",
            "name": "हिन्दी",
            "code_flag": "in",
            "code_flag_text": "🇮🇳",
            "direction": "ltr"
        },
        {
            "code": "bn",
            "name": "বাংলা",
            "code_flag": "bd",
            "code_flag_text": "🇧🇩",
            "direction": "ltr"
        },
        {
            "code": "pt",
            "name": "Português",
            "code_flag": "br",
            "code_flag_text": "🇵🇹",
            "direction": "ltr"
        },
        {
            "code": "vi",
            "name": "Tiếng Việt",
            "code_flag": "vn",
            "code_flag_text": "🇻🇳",
            "direction": "ltr"
        },
        {
            "code": "fr",
            "name": "Français",
            "code_flag": "fr",
            "code_flag_text": "🇫🇷",
            "direction": "ltr"
        },
        {
            "code": "it",
            "name": "Italiano",
            "code_flag": "it",
            "code_flag_text": "🇮🇹",
            "direction": "ltr"
        },
        {
            "code": "ko",
            "name": "한국어",
            "code_flag": "kr",
            "code_flag_text": "🇰🇷",
            "direction": "ltr"
        },
        {
            "code": "ar",
            "name": "العربية",
            "code_flag": "sa",
            "code_flag_text": "🇸🇦",
            "direction": "rtl"
        },
        {
            "code": "id",
            "name": "Bahasa Indonesia",
            "code_flag": "id",
            "code_flag_text": "🇮🇩",
            "direction": "ltr"
        },
        {
            "code": "ja",
            "name": "日本語",
            "code_flag": "jp",
            "code_flag_text": "🇯🇵",
            "direction": "ltr"
        },
        {
            "code": "zh_Hans",
            "name": "中文",
            "code_flag": "cn",
            "code_flag_text": "🇨🇳",
            "direction": "ltr"
        },
        {
            "code": "am",
            "name": "አማርኛ (Amarəñña)",
            "code_flag": "et",
            "code_flag_text": "🇪🇹",
            "direction": "ltr"
        },
        {
            "code": "as",
            "name": "অসমীয়া (Ôxômiya)",
            "code_flag": "in",
            "code_flag_text": "🇮🇳",
            "direction": "ltr"
        },
        {
            "code": "az",
            "name": "Azərbaycan dili",
            "code_flag": "az",
            "code_flag_text": "🇦🇿",
            "direction": "ltr"
        },
        {
            "code": "bg",
            "name": "Български (Bǎlgarski)",
            "code_flag": "bg",
            "code_flag_text": "🇧🇬",
            "direction": "ltr"
        },
        {
            "code": "cs",
            "name": "Čeština",
            "code_flag": "cz",
            "code_flag_text": "🇨🇿",
            "direction": "ltr"
        },
        {
            "code": "el",
            "name": "Ελληνικά (Elliniká)",
            "code_flag": "gr",
            "code_flag_text": "🇬🇷",
            "direction": "ltr"
        },
        {
            "code": "et",
            "name": "Eesti keel",
            "code_flag": "ee",
            "code_flag_text": "🇪🇪",
            "direction": "ltr"
        },
        {
            "code": "fa",
            "name": "فارسی (Fārsī)",
            "code_flag": "ir",
            "code_flag_text": "🇮🇷",
            "direction": "rtl"
        },
        {
            "code": "gu",
            "name": "ગુજરાતી (Gujarātī)",
            "code_flag": "in",
            "code_flag_text": "🇮🇳",
            "direction": "ltr"
        },
        {
            "code": "hu",
            "name": "Magyar",
            "code_flag": "hu",
            "code_flag_text": "🇭🇺",
            "direction": "ltr"
        },
        {
            "code": "ig",
            "name": "Igbo",
            "code_flag": "ng",
            "code_flag_text": "🇳🇬",
            "direction": "ltr"
        },
        {
            "code": "kn",
            "name": "ಕನ್ನಡ (Kannaḍa)",
            "code_flag": "in",
            "code_flag_text": "🇮🇳",
            "direction": "ltr"
        },
        {
            "code": "lv",
            "name": "Latviešu valoda",
            "code_flag": "lv",
            "code_flag_text": "🇱🇻",
            "direction": "ltr"
        },
        {
            "code": "mg",
            "name": "Malagasy",
            "code_flag": "mg",
            "code_flag_text": "🇲🇬",
            "direction": "ltr"
        },
        {
            "code": "ms",
            "name": "Bahasa Melayu",
            "code_flag": "my",
            "code_flag_text": "🇲🇾",
            "direction": "ltr"
        },
        {
            "code": "ml",
            "name": "മലയാളം (Malayāḷam)",
            "code_flag": "in",
            "code_flag_text": "🇮🇳",
            "direction": "ltr"
        },
        {
            "code": "mr",
            "name": "मराठी (Marāṭhī)",
            "code_flag": "in",
            "code_flag_text": "🇮🇳",
            "direction": "ltr"
        },
        {
            "code": "my",
            "name": "မြန်မာဘာသာ (Myanma Bhasa)",
            "code_flag": "mm",
            "code_flag_text": "🇲🇲",
            "direction": "ltr"
        },
        {
            "code": "ne",
            "name": "नेपाली (Nepālī)",
            "code_flag": "np",
            "code_flag_text": "🇳🇵",
            "direction": "ltr"
        },
        {
            "code": "nl",
            "name": "Nederlands",
            "code_flag": "nl",
            "code_flag_text": "🇳🇱",
            "direction": "ltr"
        },
        {
            "code": "or",
            "name": "ଓଡ଼ିଆ (Oṛiā)",
            "code_flag": "in",
            "code_flag_text": "🇮🇳",
            "direction": "ltr"
        },
        {
            "code": "ps",
            "name": "پښتو (Paṣ̌to)",
            "code_flag": "af",
            "code_flag_text": "🇦🇫",
            "direction": "rtl"
        },
        {
            "code": "pl",
            "name": "Polski",
            "code_flag": "pl",
            "code_flag_text": "🇵🇱",
            "direction": "ltr"
        },
        {
            "code": "ro",
            "name": "Română",
            "code_flag": "ro",
            "code_flag_text": "🇷🇴",
            "direction": "ltr"
        },
        {
            "code": "si",
            "name": "සිංහල (Siṁhala)",
            "code_flag": "lk",
            "code_flag_text": "🇱🇰",
            "direction": "ltr"
        },
        {
            "code": "sk",
            "name": "Slovenčina",
            "code_flag": "sk",
            "code_flag_text": "🇸🇰",
            "direction": "ltr"
        },
        {
            "code": "su",
            "name": "Basa Sunda",
            "code_flag": "id",
            "code_flag_text": "🇮🇩",
            "direction": "ltr"
        },
        {
            "code": "ta",
            "name": "தமிழ் (Tamiḻ)",
            "code_flag": "in",
            "code_flag_text": "🇮🇳",
            "direction": "ltr"
        },
        {
            "code": "tl",
            "name": "Wikang Tagalog",
            "code_flag": "ph",
            "code_flag_text": "🇵🇭",
            "direction": "ltr"
        },
        {
            "code": "te",
            "name": "తెలుగు (Telugu)",
            "code_flag": "in",
            "code_flag_text": "🇮🇳",
            "direction": "ltr"
        },
        {
            "code": "th",
            "name": "ภาษาไทย (Phasa Thai)",
            "code_flag": "th",
            "code_flag_text": "🇹🇭",
            "direction": "ltr"
        },
        {
            "code": "ur",
            "name": "اردو (Urdū)",
            "code_flag": "pk",
            "code_flag_text": "🇵🇰",
            "direction": "rtl"
        },
        {
            "code": "uz",
            "name": "Oʻzbek tili",
            "code_flag": "uz",
            "code_flag_text": "🇺🇿",
            "direction": "ltr"
        },
        {
            "code": "yo",
            "name": "Yorùbá",
            "code_flag": "ng",
            "code_flag_text": "🇳🇬",
            "direction": "ltr"
        }
    ]
}
 

Request      

GET api/organizer/v1/settings/languages

Получение публичных настроек приложения (API ключи и т.д.)

Example request:
curl --request GET \
    --get "https://tic.rs/api/organizer/v1/settings/public"
import requests
import json

url = 'https://tic.rs/api/organizer/v1/settings/public'
response = requests.request('GET', url, )
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://tic.rs/api/organizer/v1/settings/public';
$response = $client->get($url);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 60
x-ratelimit-remaining: 58
access-control-allow-origin: *
 

{
    "success": true,
    "data": {
        "google_maps_api_key": "AIzaSyCSSMvsekrtj1iu-PhjVYWbUglxZi2YjbY",
        "google_maps_map_id": null
    }
}
 

Request      

GET api/organizer/v1/settings/public

Получить список доступных стран

Example request:
curl --request GET \
    --get "https://tic.rs/api/organizer/v1/settings/countries"
import requests
import json

url = 'https://tic.rs/api/organizer/v1/settings/countries'
response = requests.request('GET', url, )
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://tic.rs/api/organizer/v1/settings/countries';
$response = $client->get($url);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 60
x-ratelimit-remaining: 57
access-control-allow-origin: *
 

{
    "success": true,
    "data": [
        {
            "id": 177,
            "name": "Австралия"
        },
        {
            "id": 5,
            "name": "Австрия"
        },
        {
            "id": 46,
            "name": "Азербайджан"
        },
        {
            "id": 3,
            "name": "Албания"
        },
        {
            "id": 90,
            "name": "Алжир"
        },
        {
            "id": 91,
            "name": "Ангола"
        },
        {
            "id": 4,
            "name": "Андорра"
        },
        {
            "id": 164,
            "name": "Антигуа и Барбуда"
        },
        {
            "id": 152,
            "name": "Аргентина"
        },
        {
            "id": 45,
            "name": "Армения"
        },
        {
            "id": 165,
            "name": "Багамские Острова"
        },
        {
            "id": 47,
            "name": "Бангладеш"
        },
        {
            "id": 166,
            "name": "Барбадос"
        },
        {
            "id": 48,
            "name": "Бахрейн"
        },
        {
            "id": 145,
            "name": "Белиз"
        },
        {
            "id": 7,
            "name": "Бельгия"
        },
        {
            "id": 92,
            "name": "Бенин"
        },
        {
            "id": 9,
            "name": "Болгария"
        },
        {
            "id": 153,
            "name": "Боливия"
        },
        {
            "id": 8,
            "name": "Босния и Герцеговина"
        },
        {
            "id": 93,
            "name": "Ботсвана"
        },
        {
            "id": 154,
            "name": "Бразилия"
        },
        {
            "id": 50,
            "name": "Бруней"
        },
        {
            "id": 94,
            "name": "Буркина-Фасо"
        },
        {
            "id": 95,
            "name": "Бурунди"
        },
        {
            "id": 49,
            "name": "Бутан"
        },
        {
            "id": 190,
            "name": "Вануату"
        },
        {
            "id": 43,
            "name": "Ватикан"
        },
        {
            "id": 42,
            "name": "Великобритания"
        },
        {
            "id": 18,
            "name": "Венгрия"
        },
        {
            "id": 88,
            "name": "Вьетнам"
        },
        {
            "id": 108,
            "name": "Габон"
        },
        {
            "id": 171,
            "name": "Гаити"
        },
        {
            "id": 158,
            "name": "Гайана"
        },
        {
            "id": 109,
            "name": "Гамбия"
        },
        {
            "id": 110,
            "name": "Гана"
        },
        {
            "id": 148,
            "name": "Гватемала"
        },
        {
            "id": 112,
            "name": "Гвинея-Бисау"
        },
        {
            "id": 111,
            "name": "Гвинея"
        },
        {
            "id": 16,
            "name": "Германия"
        },
        {
            "id": 149,
            "name": "Гондурас"
        },
        {
            "id": 170,
            "name": "Гренада"
        },
        {
            "id": 17,
            "name": "Греция"
        },
        {
            "id": 54,
            "name": "Грузия"
        },
        {
            "id": 12,
            "name": "Дания"
        },
        {
            "id": 102,
            "name": "Демократическая Республика Конго"
        },
        {
            "id": 103,
            "name": "Джибути"
        },
        {
            "id": 168,
            "name": "Доминика"
        },
        {
            "id": 169,
            "name": "Доминиканская Республика"
        },
        {
            "id": 104,
            "name": "Египет"
        },
        {
            "id": 140,
            "name": "Замбия"
        },
        {
            "id": 59,
            "name": "Израиль"
        },
        {
            "id": 55,
            "name": "Индия"
        },
        {
            "id": 56,
            "name": "Индонезия"
        },
        {
            "id": 61,
            "name": "Иордания"
        },
        {
            "id": 20,
            "name": "Ирландия"
        },
        {
            "id": 19,
            "name": "Исландия"
        },
        {
            "id": 38,
            "name": "Испания"
        },
        {
            "id": 21,
            "name": "Италия"
        },
        {
            "id": 97,
            "name": "Кабо-Верде"
        },
        {
            "id": 62,
            "name": "Казахстан"
        },
        {
            "id": 51,
            "name": "Камбоджа"
        },
        {
            "id": 96,
            "name": "Камерун"
        },
        {
            "id": 142,
            "name": "Канада"
        },
        {
            "id": 75,
            "name": "Катар"
        },
        {
            "id": 113,
            "name": "Кения"
        },
        {
            "id": 53,
            "name": "Кипр"
        },
        {
            "id": 179,
            "name": "Кирибати"
        },
        {
            "id": 52,
            "name": "Китай"
        },
        {
            "id": 156,
            "name": "Колумбия"
        },
        {
            "id": 100,
            "name": "Коморские Острова"
        },
        {
            "id": 101,
            "name": "Конго"
        },
        {
            "id": 146,
            "name": "Коста-Рика"
        },
        {
            "id": 63,
            "name": "Кувейт"
        },
        {
            "id": 64,
            "name": "Кыргызыстан"
        },
        {
            "id": 65,
            "name": "Лаос"
        },
        {
            "id": 22,
            "name": "Латвия"
        },
        {
            "id": 114,
            "name": "Лесото"
        },
        {
            "id": 115,
            "name": "Либерия"
        },
        {
            "id": 66,
            "name": "Ливан"
        },
        {
            "id": 23,
            "name": "Литва"
        },
        {
            "id": 24,
            "name": "Люксембург"
        },
        {
            "id": 121,
            "name": "Маврикий"
        },
        {
            "id": 120,
            "name": "Мавритания"
        },
        {
            "id": 117,
            "name": "Мадагаскар"
        },
        {
            "id": 118,
            "name": "Малави"
        },
        {
            "id": 67,
            "name": "Малайзия"
        },
        {
            "id": 119,
            "name": "Мали"
        },
        {
            "id": 68,
            "name": "Мальдивы"
        },
        {
            "id": 25,
            "name": "Мальта"
        },
        {
            "id": 122,
            "name": "Марокко"
        },
        {
            "id": 180,
            "name": "Маршалловы Острова"
        },
        {
            "id": 143,
            "name": "Мексика"
        },
        {
            "id": 181,
            "name": "Микронезия"
        },
        {
            "id": 123,
            "name": "Мозамбик"
        },
        {
            "id": 26,
            "name": "Молдова"
        },
        {
            "id": 27,
            "name": "Монако"
        },
        {
            "id": 69,
            "name": "Монголия"
        },
        {
            "id": 124,
            "name": "Намибия"
        },
        {
            "id": 182,
            "name": "Науру"
        },
        {
            "id": 71,
            "name": "Непал"
        },
        {
            "id": 125,
            "name": "Нигер"
        },
        {
            "id": 126,
            "name": "Нигерия"
        },
        {
            "id": 28,
            "name": "Нидерланды"
        },
        {
            "id": 150,
            "name": "Никарагуа"
        },
        {
            "id": 183,
            "name": "Новая Зеландия"
        },
        {
            "id": 30,
            "name": "Норвегия"
        },
        {
            "id": 86,
            "name": "Объединенные Арабские Эмираты"
        },
        {
            "id": 72,
            "name": "Оман"
        },
        {
            "id": 73,
            "name": "Пакистан"
        },
        {
            "id": 184,
            "name": "Палау"
        },
        {
            "id": 151,
            "name": "Панама"
        },
        {
            "id": 185,
            "name": "Папуа - Новая Гвинея"
        },
        {
            "id": 159,
            "name": "Парагвай"
        },
        {
            "id": 160,
            "name": "Перу"
        },
        {
            "id": 31,
            "name": "Польша"
        },
        {
            "id": 32,
            "name": "Португалия"
        },
        {
            "id": 34,
            "name": "Россия"
        },
        {
            "id": 127,
            "name": "Руанда"
        },
        {
            "id": 33,
            "name": "Румыния"
        },
        {
            "id": 144,
            "name": "США"
        },
        {
            "id": 147,
            "name": "Сальвадор"
        },
        {
            "id": 186,
            "name": "Самоа"
        },
        {
            "id": 35,
            "name": "Сан-Марино"
        },
        {
            "id": 128,
            "name": "Сан-Томе и Принсипи"
        },
        {
            "id": 76,
            "name": "Саудовская Аравия"
        },
        {
            "id": 29,
            "name": "Северная Македония"
        },
        {
            "id": 130,
            "name": "Сейшельские Острова"
        },
        {
            "id": 129,
            "name": "Сенегал"
        },
        {
            "id": 175,
            "name": "Сент-Винсент и Гренадины"
        },
        {
            "id": 173,
            "name": "Сент-Китс и Невис"
        },
        {
            "id": 174,
            "name": "Сент-Люсия"
        },
        {
            "id": 77,
            "name": "Сингапур"
        },
        {
            "id": 36,
            "name": "Словакия"
        },
        {
            "id": 37,
            "name": "Словения"
        },
        {
            "id": 187,
            "name": "Соломоновы Острова"
        },
        {
            "id": 161,
            "name": "Суринам"
        },
        {
            "id": 131,
            "name": "Сьерра-Леоне"
        },
        {
            "id": 82,
            "name": "Таджикистан"
        },
        {
            "id": 83,
            "name": "Таиланд"
        },
        {
            "id": 81,
            "name": "Тайвань"
        },
        {
            "id": 136,
            "name": "Танзания"
        },
        {
            "id": 137,
            "name": "Того"
        },
        {
            "id": 188,
            "name": "Тонга"
        },
        {
            "id": 176,
            "name": "Тринидад и Тобаго"
        },
        {
            "id": 189,
            "name": "Тувалу"
        },
        {
            "id": 138,
            "name": "Тунис"
        },
        {
            "id": 85,
            "name": "Туркменистан"
        },
        {
            "id": 84,
            "name": "Турция"
        },
        {
            "id": 139,
            "name": "Уганда"
        },
        {
            "id": 87,
            "name": "Узбекистан"
        },
        {
            "id": 162,
            "name": "Уругвай"
        },
        {
            "id": 178,
            "name": "Фиджи"
        },
        {
            "id": 74,
            "name": "Филиппины"
        },
        {
            "id": 14,
            "name": "Финляндия"
        },
        {
            "id": 15,
            "name": "Франция"
        },
        {
            "id": 10,
            "name": "Хорватия"
        },
        {
            "id": 98,
            "name": "Центральноафриканская Республика"
        },
        {
            "id": 99,
            "name": "Чад"
        },
        {
            "id": 11,
            "name": "Чехия"
        },
        {
            "id": 155,
            "name": "Чили"
        },
        {
            "id": 40,
            "name": "Швейцария"
        },
        {
            "id": 39,
            "name": "Швеция"
        },
        {
            "id": 79,
            "name": "Шри-Ланка"
        },
        {
            "id": 157,
            "name": "Эквадор"
        },
        {
            "id": 105,
            "name": "Экваториальная Гвинея"
        },
        {
            "id": 106,
            "name": "Эритрея"
        },
        {
            "id": 13,
            "name": "Эстония"
        },
        {
            "id": 107,
            "name": "Эфиопия"
        },
        {
            "id": 133,
            "name": "Южная Африка"
        },
        {
            "id": 78,
            "name": "Южная Корея"
        },
        {
            "id": 172,
            "name": "Ямайка"
        },
        {
            "id": 60,
            "name": "Япония"
        },
        {
            "id": 1,
            "name": "Сербия"
        },
        {
            "id": 2,
            "name": "Черногория"
        }
    ]
}
 

Request      

GET api/organizer/v1/settings/countries

Получить список доступных валют

Example request:
curl --request GET \
    --get "https://tic.rs/api/organizer/v1/settings/currencies"
import requests
import json

url = 'https://tic.rs/api/organizer/v1/settings/currencies'
response = requests.request('GET', url, )
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://tic.rs/api/organizer/v1/settings/currencies';
$response = $client->get($url);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 60
x-ratelimit-remaining: 56
access-control-allow-origin: *
 

{
    "success": true,
    "data": [
        {
            "id": 6,
            "name": "AMD",
            "code": "AMD"
        },
        {
            "id": 1,
            "name": "Dinar",
            "code": "RSD"
        },
        {
            "id": 2,
            "name": "Euro",
            "code": "EUR"
        },
        {
            "id": 5,
            "name": "GEL",
            "code": "GEL"
        },
        {
            "id": 3,
            "name": "Turkish Lire",
            "code": "TRY"
        },
        {
            "id": 4,
            "name": "U.S. dollar",
            "code": "USD"
        }
    ]
}
 

Request      

GET api/organizer/v1/settings/currencies

Список идентификаторов таймзон (IANA) для выбора в кабинете.

Example request:
curl --request GET \
    --get "https://tic.rs/api/organizer/v1/settings/timezones"
import requests
import json

url = 'https://tic.rs/api/organizer/v1/settings/timezones'
response = requests.request('GET', url, )
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://tic.rs/api/organizer/v1/settings/timezones';
$response = $client->get($url);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 60
x-ratelimit-remaining: 55
access-control-allow-origin: *
 

{
    "success": true,
    "data": [
        "Africa/Abidjan",
        "Africa/Accra",
        "Africa/Addis_Ababa",
        "Africa/Algiers",
        "Africa/Asmara",
        "Africa/Bamako",
        "Africa/Bangui",
        "Africa/Banjul",
        "Africa/Bissau",
        "Africa/Blantyre",
        "Africa/Brazzaville",
        "Africa/Bujumbura",
        "Africa/Cairo",
        "Africa/Casablanca",
        "Africa/Ceuta",
        "Africa/Conakry",
        "Africa/Dakar",
        "Africa/Dar_es_Salaam",
        "Africa/Djibouti",
        "Africa/Douala",
        "Africa/El_Aaiun",
        "Africa/Freetown",
        "Africa/Gaborone",
        "Africa/Harare",
        "Africa/Johannesburg",
        "Africa/Juba",
        "Africa/Kampala",
        "Africa/Khartoum",
        "Africa/Kigali",
        "Africa/Kinshasa",
        "Africa/Lagos",
        "Africa/Libreville",
        "Africa/Lome",
        "Africa/Luanda",
        "Africa/Lubumbashi",
        "Africa/Lusaka",
        "Africa/Malabo",
        "Africa/Maputo",
        "Africa/Maseru",
        "Africa/Mbabane",
        "Africa/Mogadishu",
        "Africa/Monrovia",
        "Africa/Nairobi",
        "Africa/Ndjamena",
        "Africa/Niamey",
        "Africa/Nouakchott",
        "Africa/Ouagadougou",
        "Africa/Porto-Novo",
        "Africa/Sao_Tome",
        "Africa/Tripoli",
        "Africa/Tunis",
        "Africa/Windhoek",
        "America/Adak",
        "America/Anchorage",
        "America/Anguilla",
        "America/Antigua",
        "America/Araguaina",
        "America/Argentina/Buenos_Aires",
        "America/Argentina/Catamarca",
        "America/Argentina/Cordoba",
        "America/Argentina/Jujuy",
        "America/Argentina/La_Rioja",
        "America/Argentina/Mendoza",
        "America/Argentina/Rio_Gallegos",
        "America/Argentina/Salta",
        "America/Argentina/San_Juan",
        "America/Argentina/San_Luis",
        "America/Argentina/Tucuman",
        "America/Argentina/Ushuaia",
        "America/Aruba",
        "America/Asuncion",
        "America/Atikokan",
        "America/Bahia",
        "America/Bahia_Banderas",
        "America/Barbados",
        "America/Belem",
        "America/Belize",
        "America/Blanc-Sablon",
        "America/Boa_Vista",
        "America/Bogota",
        "America/Boise",
        "America/Cambridge_Bay",
        "America/Campo_Grande",
        "America/Cancun",
        "America/Caracas",
        "America/Cayenne",
        "America/Cayman",
        "America/Chicago",
        "America/Chihuahua",
        "America/Ciudad_Juarez",
        "America/Costa_Rica",
        "America/Coyhaique",
        "America/Creston",
        "America/Cuiaba",
        "America/Curacao",
        "America/Danmarkshavn",
        "America/Dawson",
        "America/Dawson_Creek",
        "America/Denver",
        "America/Detroit",
        "America/Dominica",
        "America/Edmonton",
        "America/Eirunepe",
        "America/El_Salvador",
        "America/Fort_Nelson",
        "America/Fortaleza",
        "America/Glace_Bay",
        "America/Goose_Bay",
        "America/Grand_Turk",
        "America/Grenada",
        "America/Guadeloupe",
        "America/Guatemala",
        "America/Guayaquil",
        "America/Guyana",
        "America/Halifax",
        "America/Havana",
        "America/Hermosillo",
        "America/Indiana/Indianapolis",
        "America/Indiana/Knox",
        "America/Indiana/Marengo",
        "America/Indiana/Petersburg",
        "America/Indiana/Tell_City",
        "America/Indiana/Vevay",
        "America/Indiana/Vincennes",
        "America/Indiana/Winamac",
        "America/Inuvik",
        "America/Iqaluit",
        "America/Jamaica",
        "America/Juneau",
        "America/Kentucky/Louisville",
        "America/Kentucky/Monticello",
        "America/Kralendijk",
        "America/La_Paz",
        "America/Lima",
        "America/Los_Angeles",
        "America/Lower_Princes",
        "America/Maceio",
        "America/Managua",
        "America/Manaus",
        "America/Marigot",
        "America/Martinique",
        "America/Matamoros",
        "America/Mazatlan",
        "America/Menominee",
        "America/Merida",
        "America/Metlakatla",
        "America/Mexico_City",
        "America/Miquelon",
        "America/Moncton",
        "America/Monterrey",
        "America/Montevideo",
        "America/Montserrat",
        "America/Nassau",
        "America/New_York",
        "America/Nome",
        "America/Noronha",
        "America/North_Dakota/Beulah",
        "America/North_Dakota/Center",
        "America/North_Dakota/New_Salem",
        "America/Nuuk",
        "America/Ojinaga",
        "America/Panama",
        "America/Paramaribo",
        "America/Phoenix",
        "America/Port-au-Prince",
        "America/Port_of_Spain",
        "America/Porto_Velho",
        "America/Puerto_Rico",
        "America/Punta_Arenas",
        "America/Rankin_Inlet",
        "America/Recife",
        "America/Regina",
        "America/Resolute",
        "America/Rio_Branco",
        "America/Santarem",
        "America/Santiago",
        "America/Santo_Domingo",
        "America/Sao_Paulo",
        "America/Scoresbysund",
        "America/Sitka",
        "America/St_Barthelemy",
        "America/St_Johns",
        "America/St_Kitts",
        "America/St_Lucia",
        "America/St_Thomas",
        "America/St_Vincent",
        "America/Swift_Current",
        "America/Tegucigalpa",
        "America/Thule",
        "America/Tijuana",
        "America/Toronto",
        "America/Tortola",
        "America/Vancouver",
        "America/Whitehorse",
        "America/Winnipeg",
        "America/Yakutat",
        "Antarctica/Casey",
        "Antarctica/Davis",
        "Antarctica/DumontDUrville",
        "Antarctica/Macquarie",
        "Antarctica/Mawson",
        "Antarctica/McMurdo",
        "Antarctica/Palmer",
        "Antarctica/Rothera",
        "Antarctica/Syowa",
        "Antarctica/Troll",
        "Antarctica/Vostok",
        "Arctic/Longyearbyen",
        "Asia/Aden",
        "Asia/Almaty",
        "Asia/Amman",
        "Asia/Anadyr",
        "Asia/Aqtau",
        "Asia/Aqtobe",
        "Asia/Ashgabat",
        "Asia/Atyrau",
        "Asia/Baghdad",
        "Asia/Bahrain",
        "Asia/Baku",
        "Asia/Bangkok",
        "Asia/Barnaul",
        "Asia/Beirut",
        "Asia/Bishkek",
        "Asia/Brunei",
        "Asia/Chita",
        "Asia/Colombo",
        "Asia/Damascus",
        "Asia/Dhaka",
        "Asia/Dili",
        "Asia/Dubai",
        "Asia/Dushanbe",
        "Asia/Famagusta",
        "Asia/Gaza",
        "Asia/Hebron",
        "Asia/Ho_Chi_Minh",
        "Asia/Hong_Kong",
        "Asia/Hovd",
        "Asia/Irkutsk",
        "Asia/Jakarta",
        "Asia/Jayapura",
        "Asia/Jerusalem",
        "Asia/Kabul",
        "Asia/Kamchatka",
        "Asia/Karachi",
        "Asia/Kathmandu",
        "Asia/Khandyga",
        "Asia/Kolkata",
        "Asia/Krasnoyarsk",
        "Asia/Kuala_Lumpur",
        "Asia/Kuching",
        "Asia/Kuwait",
        "Asia/Macau",
        "Asia/Magadan",
        "Asia/Makassar",
        "Asia/Manila",
        "Asia/Muscat",
        "Asia/Nicosia",
        "Asia/Novokuznetsk",
        "Asia/Novosibirsk",
        "Asia/Omsk",
        "Asia/Oral",
        "Asia/Phnom_Penh",
        "Asia/Pontianak",
        "Asia/Pyongyang",
        "Asia/Qatar",
        "Asia/Qostanay",
        "Asia/Qyzylorda",
        "Asia/Riyadh",
        "Asia/Sakhalin",
        "Asia/Samarkand",
        "Asia/Seoul",
        "Asia/Shanghai",
        "Asia/Singapore",
        "Asia/Srednekolymsk",
        "Asia/Taipei",
        "Asia/Tashkent",
        "Asia/Tbilisi",
        "Asia/Tehran",
        "Asia/Thimphu",
        "Asia/Tokyo",
        "Asia/Tomsk",
        "Asia/Ulaanbaatar",
        "Asia/Urumqi",
        "Asia/Ust-Nera",
        "Asia/Vientiane",
        "Asia/Vladivostok",
        "Asia/Yakutsk",
        "Asia/Yangon",
        "Asia/Yekaterinburg",
        "Asia/Yerevan",
        "Atlantic/Azores",
        "Atlantic/Bermuda",
        "Atlantic/Canary",
        "Atlantic/Cape_Verde",
        "Atlantic/Faroe",
        "Atlantic/Madeira",
        "Atlantic/Reykjavik",
        "Atlantic/South_Georgia",
        "Atlantic/St_Helena",
        "Atlantic/Stanley",
        "Australia/Adelaide",
        "Australia/Brisbane",
        "Australia/Broken_Hill",
        "Australia/Darwin",
        "Australia/Eucla",
        "Australia/Hobart",
        "Australia/Lindeman",
        "Australia/Lord_Howe",
        "Australia/Melbourne",
        "Australia/Perth",
        "Australia/Sydney",
        "Europe/Amsterdam",
        "Europe/Andorra",
        "Europe/Astrakhan",
        "Europe/Athens",
        "Europe/Belgrade",
        "Europe/Berlin",
        "Europe/Bratislava",
        "Europe/Brussels",
        "Europe/Bucharest",
        "Europe/Budapest",
        "Europe/Busingen",
        "Europe/Chisinau",
        "Europe/Copenhagen",
        "Europe/Dublin",
        "Europe/Gibraltar",
        "Europe/Guernsey",
        "Europe/Helsinki",
        "Europe/Isle_of_Man",
        "Europe/Istanbul",
        "Europe/Jersey",
        "Europe/Kaliningrad",
        "Europe/Kirov",
        "Europe/Kyiv",
        "Europe/Lisbon",
        "Europe/Ljubljana",
        "Europe/London",
        "Europe/Luxembourg",
        "Europe/Madrid",
        "Europe/Malta",
        "Europe/Mariehamn",
        "Europe/Minsk",
        "Europe/Monaco",
        "Europe/Moscow",
        "Europe/Oslo",
        "Europe/Paris",
        "Europe/Podgorica",
        "Europe/Prague",
        "Europe/Riga",
        "Europe/Rome",
        "Europe/Samara",
        "Europe/San_Marino",
        "Europe/Sarajevo",
        "Europe/Saratov",
        "Europe/Simferopol",
        "Europe/Skopje",
        "Europe/Sofia",
        "Europe/Stockholm",
        "Europe/Tallinn",
        "Europe/Tirane",
        "Europe/Ulyanovsk",
        "Europe/Vaduz",
        "Europe/Vatican",
        "Europe/Vienna",
        "Europe/Vilnius",
        "Europe/Volgograd",
        "Europe/Warsaw",
        "Europe/Zagreb",
        "Europe/Zurich",
        "Indian/Antananarivo",
        "Indian/Chagos",
        "Indian/Christmas",
        "Indian/Cocos",
        "Indian/Comoro",
        "Indian/Kerguelen",
        "Indian/Mahe",
        "Indian/Maldives",
        "Indian/Mauritius",
        "Indian/Mayotte",
        "Indian/Reunion",
        "Pacific/Apia",
        "Pacific/Auckland",
        "Pacific/Bougainville",
        "Pacific/Chatham",
        "Pacific/Chuuk",
        "Pacific/Easter",
        "Pacific/Efate",
        "Pacific/Fakaofo",
        "Pacific/Fiji",
        "Pacific/Funafuti",
        "Pacific/Galapagos",
        "Pacific/Gambier",
        "Pacific/Guadalcanal",
        "Pacific/Guam",
        "Pacific/Honolulu",
        "Pacific/Kanton",
        "Pacific/Kiritimati",
        "Pacific/Kosrae",
        "Pacific/Kwajalein",
        "Pacific/Majuro",
        "Pacific/Marquesas",
        "Pacific/Midway",
        "Pacific/Nauru",
        "Pacific/Niue",
        "Pacific/Norfolk",
        "Pacific/Noumea",
        "Pacific/Pago_Pago",
        "Pacific/Palau",
        "Pacific/Pitcairn",
        "Pacific/Pohnpei",
        "Pacific/Port_Moresby",
        "Pacific/Rarotonga",
        "Pacific/Saipan",
        "Pacific/Tahiti",
        "Pacific/Tarawa",
        "Pacific/Tongatapu",
        "Pacific/Wake",
        "Pacific/Wallis",
        "UTC"
    ]
}
 

Request      

GET api/organizer/v1/settings/timezones

Получение информации о текущем пользователе

Example request:
curl --request GET \
    --get "https://tic.rs/api/organizer/v1/auth/me"
import requests
import json

url = 'https://tic.rs/api/organizer/v1/auth/me'
response = requests.request('GET', url, )
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://tic.rs/api/organizer/v1/auth/me';
$response = $client->get($url);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (500):

Show headers
cache-control: no-cache, private
content-type: text/html; charset=UTF-8
x-ratelimit-limit: 60
x-ratelimit-remaining: 54
access-control-allow-origin: *
 


 

Request      

GET api/organizer/v1/auth/me

Выход из системы (инвалидация токена)

Example request:
curl --request POST \
    "https://tic.rs/api/organizer/v1/auth/logout"
import requests
import json

url = 'https://tic.rs/api/organizer/v1/auth/logout'
response = requests.request('POST', url, )
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://tic.rs/api/organizer/v1/auth/logout';
$response = $client->post($url);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request      

POST api/organizer/v1/auth/logout

Обновление токена

Example request:
curl --request POST \
    "https://tic.rs/api/organizer/v1/auth/refresh"
import requests
import json

url = 'https://tic.rs/api/organizer/v1/auth/refresh'
response = requests.request('POST', url, )
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://tic.rs/api/organizer/v1/auth/refresh';
$response = $client->post($url);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request      

POST api/organizer/v1/auth/refresh

Смена пароля авторизованного пользователя

Example request:
curl --request POST \
    "https://tic.rs/api/organizer/v1/auth/change-password" \
    --header "Content-Type: application/json" \
    --data "{
    \"current_password\": \"architecto\",
    \"new_password\": \"ngzmiyvdljnikhwaykcmyuwpwlvqwrsitcpscqldzsnrwt\"
}"
import requests
import json

url = 'https://tic.rs/api/organizer/v1/auth/change-password'
payload = {
    "current_password": "architecto",
    "new_password": "ngzmiyvdljnikhwaykcmyuwpwlvqwrsitcpscqldzsnrwt"
}
headers = {
  'Content-Type': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://tic.rs/api/organizer/v1/auth/change-password';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'current_password' => 'architecto',
            'new_password' => 'ngzmiyvdljnikhwaykcmyuwpwlvqwrsitcpscqldzsnrwt',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request      

POST api/organizer/v1/auth/change-password

Headers

Content-Type      

Example: application/json

Body Parameters

current_password   string   

Example: architecto

new_password   string   

Must be at least 6 characters. Example: ngzmiyvdljnikhwaykcmyuwpwlvqwrsitcpscqldzsnrwt

POST api/organizer/v1/events/{uuid}/card-videos

Example request:
curl --request POST \
    "https://tic.rs/api/organizer/v1/events/2/card-videos" \
    --header "Content-Type: multipart/form-data" \
    --form "video=@/tmp/phpBGfFhg" 
import requests
import json

url = 'https://tic.rs/api/organizer/v1/events/2/card-videos'
files = {
  'video': open('/tmp/phpBGfFhg', 'rb')}
headers = {
  'Content-Type': 'multipart/form-data'
}

response = requests.request('POST', url, headers=headers, files=files)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://tic.rs/api/organizer/v1/events/2/card-videos';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Content-Type' => 'multipart/form-data',
        ],
        'multipart' => [
            [
                'name' => 'video',
                'contents' => fopen('/tmp/phpBGfFhg', 'r')
            ],
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request      

POST api/organizer/v1/events/{uuid}/card-videos

Headers

Content-Type      

Example: multipart/form-data

URL Parameters

uuid   integer   

Example: 2

Body Parameters

video   file   

Must be a file. Polje value ne sme biti veće od 153600 kilobajta. Example: /tmp/phpBGfFhg

PUT api/organizer/v1/events/{uuid}/card-videos/reorder

Example request:
curl --request PUT \
    "https://tic.rs/api/organizer/v1/events/2/card-videos/reorder" \
    --header "Content-Type: application/json" \
    --data "{
    \"ids\": [
        16
    ]
}"
import requests
import json

url = 'https://tic.rs/api/organizer/v1/events/2/card-videos/reorder'
payload = {
    "ids": [
        16
    ]
}
headers = {
  'Content-Type': 'application/json'
}

response = requests.request('PUT', url, headers=headers, json=payload)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://tic.rs/api/organizer/v1/events/2/card-videos/reorder';
$response = $client->put(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'ids' => [
                16,
            ],
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request      

PUT api/organizer/v1/events/{uuid}/card-videos/reorder

Headers

Content-Type      

Example: application/json

URL Parameters

uuid   integer   

Example: 2

Body Parameters

ids   integer[]  optional  

Polje value mora biti najmanje 1.

DELETE api/organizer/v1/events/{uuid}/card-videos/{videoId}

Example request:
curl --request DELETE \
    "https://tic.rs/api/organizer/v1/events/2/card-videos/architecto"
import requests
import json

url = 'https://tic.rs/api/organizer/v1/events/2/card-videos/architecto'
response = requests.request('DELETE', url, )
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://tic.rs/api/organizer/v1/events/2/card-videos/architecto';
$response = $client->delete($url);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request      

DELETE api/organizer/v1/events/{uuid}/card-videos/{videoId}

URL Parameters

uuid   integer   

Example: 2

videoId   string   

Example: architecto

GET /api/organizer/v1/events/{uuid}/custom-fields

Example request:
curl --request GET \
    --get "https://tic.rs/api/organizer/v1/events/2/custom-fields"
import requests
import json

url = 'https://tic.rs/api/organizer/v1/events/2/custom-fields'
response = requests.request('GET', url, )
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://tic.rs/api/organizer/v1/events/2/custom-fields';
$response = $client->get($url);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 60
x-ratelimit-remaining: 52
access-control-allow-origin: *
 

{
    "message": "Authentication required. Provide either JWT token (Authorization header) or API key (X-API-KEY header or api_key parameter)"
}
 

Request      

GET api/organizer/v1/events/{uuid}/custom-fields

URL Parameters

uuid   integer   

Example: 2

POST /api/organizer/v1/events/{uuid}/custom-fields

Example request:
curl --request POST \
    "https://tic.rs/api/organizer/v1/events/2/custom-fields" \
    --header "Content-Type: application/json" \
    --data "{
    \"label\": \"b\",
    \"type\": \"multiple_choice\",
    \"required\": true,
    \"options\": [
        \"z\"
    ],
    \"is_active\": true
}"
import requests
import json

url = 'https://tic.rs/api/organizer/v1/events/2/custom-fields'
payload = {
    "label": "b",
    "type": "multiple_choice",
    "required": true,
    "options": [
        "z"
    ],
    "is_active": true
}
headers = {
  'Content-Type': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://tic.rs/api/organizer/v1/events/2/custom-fields';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'label' => 'b',
            'type' => 'multiple_choice',
            'required' => true,
            'options' => [
                'z',
            ],
            'is_active' => true,
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request      

POST api/organizer/v1/events/{uuid}/custom-fields

Headers

Content-Type      

Example: application/json

URL Parameters

uuid   integer   

Example: 2

Body Parameters

label   string   

Polje value ne sme biti veće od 120 karaktera. Example: b

type   string   

Example: multiple_choice

Must be one of:
  • short_text
  • long_text
  • single_choice
  • multiple_choice
required   boolean  optional  

Example: true

options   string[]  optional  

Polje value ne sme biti veće od 80 karaktera.

is_active   boolean  optional  

Example: true

PATCH /api/organizer/v1/events/{uuid}/custom-fields/{fieldId}

Example request:
curl --request PATCH \
    "https://tic.rs/api/organizer/v1/events/2/custom-fields/architecto" \
    --header "Content-Type: application/json" \
    --data "{
    \"label\": \"b\",
    \"type\": \"multiple_choice\",
    \"required\": true,
    \"options\": [
        \"z\"
    ],
    \"is_active\": true
}"
import requests
import json

url = 'https://tic.rs/api/organizer/v1/events/2/custom-fields/architecto'
payload = {
    "label": "b",
    "type": "multiple_choice",
    "required": true,
    "options": [
        "z"
    ],
    "is_active": true
}
headers = {
  'Content-Type': 'application/json'
}

response = requests.request('PATCH', url, headers=headers, json=payload)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://tic.rs/api/organizer/v1/events/2/custom-fields/architecto';
$response = $client->patch(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'label' => 'b',
            'type' => 'multiple_choice',
            'required' => true,
            'options' => [
                'z',
            ],
            'is_active' => true,
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request      

PATCH api/organizer/v1/events/{uuid}/custom-fields/{fieldId}

Headers

Content-Type      

Example: application/json

URL Parameters

uuid   integer   

Example: 2

fieldId   string   

Example: architecto

Body Parameters

label   string   

Polje value ne sme biti veće od 120 karaktera. Example: b

type   string   

Example: multiple_choice

Must be one of:
  • short_text
  • long_text
  • single_choice
  • multiple_choice
required   boolean  optional  

Example: true

options   string[]  optional  

Polje value ne sme biti veće od 80 karaktera.

is_active   boolean  optional  

Example: true

DELETE /api/organizer/v1/events/{uuid}/custom-fields/{fieldId}

Example request:
curl --request DELETE \
    "https://tic.rs/api/organizer/v1/events/2/custom-fields/architecto"
import requests
import json

url = 'https://tic.rs/api/organizer/v1/events/2/custom-fields/architecto'
response = requests.request('DELETE', url, )
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://tic.rs/api/organizer/v1/events/2/custom-fields/architecto';
$response = $client->delete($url);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request      

DELETE api/organizer/v1/events/{uuid}/custom-fields/{fieldId}

URL Parameters

uuid   integer   

Example: 2

fieldId   string   

Example: architecto

POST /api/organizer/v1/events/{uuid}/custom-fields/reorder

Example request:
curl --request POST \
    "https://tic.rs/api/organizer/v1/events/2/custom-fields/reorder" \
    --header "Content-Type: application/json" \
    --data "{
    \"order\": [
        16
    ]
}"
import requests
import json

url = 'https://tic.rs/api/organizer/v1/events/2/custom-fields/reorder'
payload = {
    "order": [
        16
    ]
}
headers = {
  'Content-Type': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://tic.rs/api/organizer/v1/events/2/custom-fields/reorder';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'order' => [
                16,
            ],
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request      

POST api/organizer/v1/events/{uuid}/custom-fields/reorder

Headers

Content-Type      

Example: application/json

URL Parameters

uuid   integer   

Example: 2

Body Parameters

order   integer[]  optional  

The id of an existing record in the event_custom_fields table.

Get list of payment profiles

requires authentication

Returns paginated list of payment profiles with computed statuses.

Example request:
curl --request GET \
    --get "https://tic.rs/api/organizer/v1/payment-profiles?page=1&per_page=20&search=Company&country_id=1&currency_id=1&status=active&sort=name&order=asc" \
    --header "X-Api-Key: {YOUR_AUTH_KEY}" \
    --header "X-Language: sr"
import requests
import json

url = 'https://tic.rs/api/organizer/v1/payment-profiles'
params = {
  'page': '1',
  'per_page': '20',
  'search': 'Company',
  'country_id': '1',
  'currency_id': '1',
  'status': 'active',
  'sort': 'name',
  'order': 'asc',
}
headers = {
  'X-Api-Key': '{YOUR_AUTH_KEY}',
  'X-Language': 'sr'
}

response = requests.request('GET', url, headers=headers, params=params)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://tic.rs/api/organizer/v1/payment-profiles';
$response = $client->get(
    $url,
    [
        'headers' => [
            'X-Api-Key' => '{YOUR_AUTH_KEY}',
            'X-Language' => 'sr',
        ],
        'query' => [
            'page' => '1',
            'per_page' => '20',
            'search' => 'Company',
            'country_id' => '1',
            'currency_id' => '1',
            'status' => 'active',
            'sort' => 'name',
            'order' => 'asc',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{"success": true, "data": [...], "meta": {...}}
 

Request      

GET api/organizer/v1/payment-profiles

Headers

X-Api-Key      

Example: {YOUR_AUTH_KEY}

X-Language      

Example: sr

Query Parameters

page   integer  optional  

Page number. Example: 1

per_page   integer  optional  

Items per page. Example: 20

search   string  optional  

Search by name. Example: Company

country_id   integer  optional  

Filter by country. Example: 1

currency_id   integer  optional  

Filter by currency. Example: 1

status   string  optional  

Filter by status (draft, needs_docs, needs_methods, active, restricted, disabled). Example: active

sort   string  optional  

Sort field. Example: name

order   string  optional  

Sort order (asc, desc). Example: asc

Response

Response Fields

success   boolean   

Whether the operation was successful.

data[]   string[]   

List of payment profiles.

meta   object   

Pagination metadata.

Get list of payment profiles for select (simplified)

requires authentication

Returns simplified list of payment profiles for use in select dropdowns. Only returns profiles that are not disabled or restricted.

Example request:
curl --request GET \
    --get "https://tic.rs/api/organizer/v1/payment-profiles/list-for-select" \
    --header "X-Api-Key: {YOUR_AUTH_KEY}" \
    --header "X-Language: sr"
import requests
import json

url = 'https://tic.rs/api/organizer/v1/payment-profiles/list-for-select'
headers = {
  'X-Api-Key': '{YOUR_AUTH_KEY}',
  'X-Language': 'sr'
}

response = requests.request('GET', url, headers=headers)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://tic.rs/api/organizer/v1/payment-profiles/list-for-select';
$response = $client->get(
    $url,
    [
        'headers' => [
            'X-Api-Key' => '{YOUR_AUTH_KEY}',
            'X-Language' => 'sr',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{"success": true, "data": [...]}
 

Request      

GET api/organizer/v1/payment-profiles/list-for-select

Headers

X-Api-Key      

Example: {YOUR_AUTH_KEY}

X-Language      

Example: sr

Response

Response Fields

success   boolean   

Whether the operation was successful.

data[]   string[]   

List of payment profiles.

Create payment profile

requires authentication

Creates a new payment profile.

Example request:
curl --request POST \
    "https://tic.rs/api/organizer/v1/payment-profiles" \
    --header "X-Api-Key: {YOUR_AUTH_KEY}" \
    --header "X-Language: sr" \
    --header "Content-Type: application/json" \
    --data "{
    \"legal_name\": \"ООО \\\"Компания\\\"\",
    \"country_id\": 1,
    \"default_currency_id\": 1,
    \"contact_email\": \"[email protected]\",
    \"support_phone\": \"+1234567890\",
    \"tax_number\": \"123456789\",
    \"registration_number\": \"987654321\",
    \"registration_date\": \"2024-01-01\",
    \"legal_address\": \"ул. Примерная, д. 1\",
    \"vat_applicable\": false,
    \"vat_payer\": true,
    \"vat_rate\": 16,
    \"vat_reason_code\": \"STANDARD\",
    \"vat_display_text\": \"i\"
}"
import requests
import json

url = 'https://tic.rs/api/organizer/v1/payment-profiles'
payload = {
    "legal_name": "ООО \"Компания\"",
    "country_id": 1,
    "default_currency_id": 1,
    "contact_email": "[email protected]",
    "support_phone": "+1234567890",
    "tax_number": "123456789",
    "registration_number": "987654321",
    "registration_date": "2024-01-01",
    "legal_address": "ул. Примерная, д. 1",
    "vat_applicable": false,
    "vat_payer": true,
    "vat_rate": 16,
    "vat_reason_code": "STANDARD",
    "vat_display_text": "i"
}
headers = {
  'X-Api-Key': '{YOUR_AUTH_KEY}',
  'X-Language': 'sr',
  'Content-Type': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://tic.rs/api/organizer/v1/payment-profiles';
$response = $client->post(
    $url,
    [
        'headers' => [
            'X-Api-Key' => '{YOUR_AUTH_KEY}',
            'X-Language' => 'sr',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'legal_name' => 'ООО "Компания"',
            'country_id' => 1,
            'default_currency_id' => 1,
            'contact_email' => '[email protected]',
            'support_phone' => '+1234567890',
            'tax_number' => '123456789',
            'registration_number' => '987654321',
            'registration_date' => '2024-01-01',
            'legal_address' => 'ул. Примерная, д. 1',
            'vat_applicable' => false,
            'vat_payer' => true,
            'vat_rate' => 16,
            'vat_reason_code' => 'STANDARD',
            'vat_display_text' => 'i',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (201):


{"success": true, "data": {...}}
 

Example response (422):


{"success": false, "message": "Validation error", "errors": {...}}
 

Request      

POST api/organizer/v1/payment-profiles

Headers

X-Api-Key      

Example: {YOUR_AUTH_KEY}

X-Language      

Example: sr

Content-Type      

Example: application/json

Body Parameters

legal_name   string   

Legal name. Example: ООО "Компания"

country_id   integer  optional  

optional Country ID. Example: 1

default_currency_id   integer  optional  

optional Currency ID. Example: 1

contact_email   string  optional  

optional Contact email. Example: [email protected]

support_phone   string  optional  

optional Support phone. Example: +1234567890

tax_number   string  optional  

optional Tax number. Example: 123456789

registration_number   string  optional  

optional Registration number. Example: 987654321

registration_date   string  optional  

optional Registration date (Y-m-d). Example: 2024-01-01

legal_address   string  optional  

optional Legal address. Example: ул. Примерная, д. 1

vat_applicable   boolean  optional  

Example: false

vat_payer   boolean  optional  

Example: true

vat_rate   number  optional  

Polje value mora biti najmanje 0. Polje value ne sme biti veće od 100. Example: 16

vat_reason_code   string  optional  

Example: STANDARD

Must be one of:
  • STANDARD
  • NOT_APPLICABLE
  • EXEMPT
  • ZERO_RATE
vat_display_text   string  optional  

Polje value ne sme biti veće od 255 karaktera. Example: i

Response

Response Fields

success   boolean   

Whether the operation was successful.

data   object   

Created payment profile.

Get single payment profile

requires authentication

Returns detailed information about a payment profile.

Example request:
curl --request GET \
    --get "https://tic.rs/api/organizer/v1/payment-profiles/1" \
    --header "X-Api-Key: {YOUR_AUTH_KEY}" \
    --header "X-Language: sr"
import requests
import json

url = 'https://tic.rs/api/organizer/v1/payment-profiles/1'
headers = {
  'X-Api-Key': '{YOUR_AUTH_KEY}',
  'X-Language': 'sr'
}

response = requests.request('GET', url, headers=headers)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://tic.rs/api/organizer/v1/payment-profiles/1';
$response = $client->get(
    $url,
    [
        'headers' => [
            'X-Api-Key' => '{YOUR_AUTH_KEY}',
            'X-Language' => 'sr',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{"success": true, "data": {...}}
 

Example response (404):


{
    "success": false,
    "message": "Payment profile not found"
}
 

Request      

GET api/organizer/v1/payment-profiles/{id}

Headers

X-Api-Key      

Example: {YOUR_AUTH_KEY}

X-Language      

Example: sr

URL Parameters

id   integer   

Profile ID. Example: 1

Response

Response Fields

success   boolean   

Whether the operation was successful.

data   object   

Payment profile data.

Update payment profile

requires authentication

Updates payment profile data.

Example request:
curl --request PUT \
    "https://tic.rs/api/organizer/v1/payment-profiles/1" \
    --header "X-Api-Key: {YOUR_AUTH_KEY}" \
    --header "X-Language: sr" \
    --header "Content-Type: application/json" \
    --data "{
    \"legal_name\": \"ООО \\\"Компания\\\"\",
    \"country_id\": 1,
    \"default_currency_id\": 1,
    \"contact_email\": \"[email protected]\",
    \"support_phone\": \"+1234567890\",
    \"tax_number\": \"y\",
    \"registration_number\": \"v\",
    \"registration_date\": \"2026-04-14T12:20:26\",
    \"legal_address\": \"architecto\",
    \"vat_applicable\": false,
    \"vat_payer\": true,
    \"vat_rate\": 16,
    \"vat_reason_code\": \"STANDARD\",
    \"vat_display_text\": \"i\"
}"
import requests
import json

url = 'https://tic.rs/api/organizer/v1/payment-profiles/1'
payload = {
    "legal_name": "ООО \"Компания\"",
    "country_id": 1,
    "default_currency_id": 1,
    "contact_email": "[email protected]",
    "support_phone": "+1234567890",
    "tax_number": "y",
    "registration_number": "v",
    "registration_date": "2026-04-14T12:20:26",
    "legal_address": "architecto",
    "vat_applicable": false,
    "vat_payer": true,
    "vat_rate": 16,
    "vat_reason_code": "STANDARD",
    "vat_display_text": "i"
}
headers = {
  'X-Api-Key': '{YOUR_AUTH_KEY}',
  'X-Language': 'sr',
  'Content-Type': 'application/json'
}

response = requests.request('PUT', url, headers=headers, json=payload)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://tic.rs/api/organizer/v1/payment-profiles/1';
$response = $client->put(
    $url,
    [
        'headers' => [
            'X-Api-Key' => '{YOUR_AUTH_KEY}',
            'X-Language' => 'sr',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'legal_name' => 'ООО "Компания"',
            'country_id' => 1,
            'default_currency_id' => 1,
            'contact_email' => '[email protected]',
            'support_phone' => '+1234567890',
            'tax_number' => 'y',
            'registration_number' => 'v',
            'registration_date' => '2026-04-14T12:20:26',
            'legal_address' => 'architecto',
            'vat_applicable' => false,
            'vat_payer' => true,
            'vat_rate' => 16,
            'vat_reason_code' => 'STANDARD',
            'vat_display_text' => 'i',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{"success": true, "data": {...}}
 

Example response (404):


{
    "success": false,
    "message": "Payment profile not found"
}
 

Example response (422):


{"success": false, "message": "Validation error", "errors": {...}}
 

Request      

PUT api/organizer/v1/payment-profiles/{id}

Headers

X-Api-Key      

Example: {YOUR_AUTH_KEY}

X-Language      

Example: sr

Content-Type      

Example: application/json

URL Parameters

id   integer   

Profile ID. Example: 1

Body Parameters

legal_name   string  optional  

optional Legal name. Example: ООО "Компания"

country_id   integer  optional  

optional Country ID. Example: 1

default_currency_id   integer  optional  

optional Currency ID. Example: 1

contact_email   string  optional  

optional Contact email. Example: [email protected]

support_phone   string  optional  

optional Support phone. Example: +1234567890

tax_number   string  optional  

Polje value ne sme biti veće od 255 karaktera. Example: y

registration_number   string  optional  

Polje value ne sme biti veće od 255 karaktera. Example: v

registration_date   string  optional  

Polje value mora biti važeći datum. Example: 2026-04-14T12:20:26

legal_address   string  optional  

Example: architecto

vat_applicable   boolean  optional  

Example: false

vat_payer   boolean  optional  

Example: true

vat_rate   number  optional  

Polje value mora biti najmanje 0. Polje value ne sme biti veće od 100. Example: 16

vat_reason_code   string  optional  

Example: STANDARD

Must be one of:
  • STANDARD
  • NOT_APPLICABLE
  • EXEMPT
  • ZERO_RATE
vat_display_text   string  optional  

Polje value ne sme biti veće od 255 karaktera. Example: i

Response

Response Fields

success   boolean   

Whether the operation was successful.

data   object   

Updated payment profile.

Delete payment profile

requires authentication

Soft deletes a payment profile.

Example request:
curl --request DELETE \
    "https://tic.rs/api/organizer/v1/payment-profiles/1" \
    --header "X-Api-Key: {YOUR_AUTH_KEY}" \
    --header "X-Language: sr"
import requests
import json

url = 'https://tic.rs/api/organizer/v1/payment-profiles/1'
headers = {
  'X-Api-Key': '{YOUR_AUTH_KEY}',
  'X-Language': 'sr'
}

response = requests.request('DELETE', url, headers=headers)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://tic.rs/api/organizer/v1/payment-profiles/1';
$response = $client->delete(
    $url,
    [
        'headers' => [
            'X-Api-Key' => '{YOUR_AUTH_KEY}',
            'X-Language' => 'sr',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "message": "Payment profile deleted"
}
 

Example response (404):


{
    "success": false,
    "message": "Payment profile not found"
}
 

Request      

DELETE api/organizer/v1/payment-profiles/{id}

Headers

X-Api-Key      

Example: {YOUR_AUTH_KEY}

X-Language      

Example: sr

URL Parameters

id   integer   

Profile ID. Example: 1

Response

Response Fields

success   boolean   

Whether the operation was successful.

message   string   

Response message.

Get pages for a payment profile

requires authentication

Example request:
curl --request GET \
    --get "https://tic.rs/api/organizer/v1/payment-profiles/1/pages" \
    --header "X-Api-Key: {YOUR_AUTH_KEY}"
import requests
import json

url = 'https://tic.rs/api/organizer/v1/payment-profiles/1/pages'
headers = {
  'X-Api-Key': '{YOUR_AUTH_KEY}'
}

response = requests.request('GET', url, headers=headers)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://tic.rs/api/organizer/v1/payment-profiles/1/pages';
$response = $client->get(
    $url,
    [
        'headers' => [
            'X-Api-Key' => '{YOUR_AUTH_KEY}',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{"success": true, "data": [...]}
 

Request      

GET api/organizer/v1/payment-profiles/{profileId}/pages

Headers

X-Api-Key      

Example: {YOUR_AUTH_KEY}

URL Parameters

profileId   integer   

Profile ID. Example: 1

Get single page

requires authentication

Example request:
curl --request GET \
    --get "https://tic.rs/api/organizer/v1/payment-profiles/1/pages/offer" \
    --header "X-Api-Key: {YOUR_AUTH_KEY}"
import requests
import json

url = 'https://tic.rs/api/organizer/v1/payment-profiles/1/pages/offer'
headers = {
  'X-Api-Key': '{YOUR_AUTH_KEY}'
}

response = requests.request('GET', url, headers=headers)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://tic.rs/api/organizer/v1/payment-profiles/1/pages/offer';
$response = $client->get(
    $url,
    [
        'headers' => [
            'X-Api-Key' => '{YOUR_AUTH_KEY}',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{"success": true, "data": {...}}
 

Request      

GET api/organizer/v1/payment-profiles/{profileId}/pages/{pageType}

Headers

X-Api-Key      

Example: {YOUR_AUTH_KEY}

URL Parameters

profileId   integer   

Profile ID. Example: 1

pageType   string   

Page type (offer, refund, privacy). Example: offer

Create or update page

requires authentication

Example request:
curl --request POST \
    "https://tic.rs/api/organizer/v1/payment-profiles/1/pages/offer" \
    --header "X-Api-Key: {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --data "{
    \"title\": \"Договор оферты\",
    \"content\": null
}"
import requests
import json

url = 'https://tic.rs/api/organizer/v1/payment-profiles/1/pages/offer'
payload = {
    "title": "Договор оферты",
    "content": null
}
headers = {
  'X-Api-Key': '{YOUR_AUTH_KEY}',
  'Content-Type': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://tic.rs/api/organizer/v1/payment-profiles/1/pages/offer';
$response = $client->post(
    $url,
    [
        'headers' => [
            'X-Api-Key' => '{YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'title' => 'Договор оферты',
            'content' => null,
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{"success": true, "data": {...}}
 

Request      

POST api/organizer/v1/payment-profiles/{profileId}/pages/{pageType}

Headers

X-Api-Key      

Example: {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

URL Parameters

profileId   integer   

Profile ID. Example: 1

pageType   string   

Page type (offer, refund, privacy). Example: offer

Body Parameters

title   string   

Page title. Example: Договор оферты

content   object   

Editor.js content (JSON).

Create or update page

requires authentication

Example request:
curl --request PUT \
    "https://tic.rs/api/organizer/v1/payment-profiles/1/pages/offer" \
    --header "X-Api-Key: {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --data "{
    \"title\": \"Договор оферты\",
    \"content\": null
}"
import requests
import json

url = 'https://tic.rs/api/organizer/v1/payment-profiles/1/pages/offer'
payload = {
    "title": "Договор оферты",
    "content": null
}
headers = {
  'X-Api-Key': '{YOUR_AUTH_KEY}',
  'Content-Type': 'application/json'
}

response = requests.request('PUT', url, headers=headers, json=payload)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://tic.rs/api/organizer/v1/payment-profiles/1/pages/offer';
$response = $client->put(
    $url,
    [
        'headers' => [
            'X-Api-Key' => '{YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'title' => 'Договор оферты',
            'content' => null,
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{"success": true, "data": {...}}
 

Request      

PUT api/organizer/v1/payment-profiles/{profileId}/pages/{pageType}

Headers

X-Api-Key      

Example: {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

URL Parameters

profileId   integer   

Profile ID. Example: 1

pageType   string   

Page type (offer, refund, privacy). Example: offer

Body Parameters

title   string   

Page title. Example: Договор оферты

content   object   

Editor.js content (JSON).

Delete page

requires authentication

Example request:
curl --request DELETE \
    "https://tic.rs/api/organizer/v1/payment-profiles/1/pages/offer" \
    --header "X-Api-Key: {YOUR_AUTH_KEY}"
import requests
import json

url = 'https://tic.rs/api/organizer/v1/payment-profiles/1/pages/offer'
headers = {
  'X-Api-Key': '{YOUR_AUTH_KEY}'
}

response = requests.request('DELETE', url, headers=headers)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://tic.rs/api/organizer/v1/payment-profiles/1/pages/offer';
$response = $client->delete(
    $url,
    [
        'headers' => [
            'X-Api-Key' => '{YOUR_AUTH_KEY}',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "message": "Page deleted"
}
 

Request      

DELETE api/organizer/v1/payment-profiles/{profileId}/pages/{pageType}

Headers

X-Api-Key      

Example: {YOUR_AUTH_KEY}

URL Parameters

profileId   integer   

Profile ID. Example: 1

pageType   string   

Page type (offer, refund, privacy). Example: offer

Get available payment methods for a profile

requires authentication

Returns list of payment methods available for the profile's country/currency, along with connection status.

Example request:
curl --request GET \
    --get "https://tic.rs/api/organizer/v1/payment-profiles/1/methods" \
    --header "X-Api-Key: {YOUR_AUTH_KEY}"
import requests
import json

url = 'https://tic.rs/api/organizer/v1/payment-profiles/1/methods'
headers = {
  'X-Api-Key': '{YOUR_AUTH_KEY}'
}

response = requests.request('GET', url, headers=headers)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://tic.rs/api/organizer/v1/payment-profiles/1/methods';
$response = $client->get(
    $url,
    [
        'headers' => [
            'X-Api-Key' => '{YOUR_AUTH_KEY}',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{"success": true, "data": [...]}
 

Request      

GET api/organizer/v1/payment-profiles/{profileId}/methods

Headers

X-Api-Key      

Example: {YOUR_AUTH_KEY}

URL Parameters

profileId   integer   

Profile ID. Example: 1

Connect payment method to profile

requires authentication

Creates or updates a payment connection for the profile.

Example request:
curl --request POST \
    "https://tic.rs/api/organizer/v1/payment-profiles/1/methods/1" \
    --header "X-Api-Key: {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --data "{
    \"connection_data\": {
        \"api_key\": \"...\"
    },
    \"is_active\": true
}"
import requests
import json

url = 'https://tic.rs/api/organizer/v1/payment-profiles/1/methods/1'
payload = {
    "connection_data": {
        "api_key": "..."
    },
    "is_active": true
}
headers = {
  'X-Api-Key': '{YOUR_AUTH_KEY}',
  'Content-Type': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://tic.rs/api/organizer/v1/payment-profiles/1/methods/1';
$response = $client->post(
    $url,
    [
        'headers' => [
            'X-Api-Key' => '{YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'connection_data' => [
                'api_key' => '...',
            ],
            'is_active' => true,
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{"success": true, "data": {...}}
 

Request      

POST api/organizer/v1/payment-profiles/{profileId}/methods/{methodId}

Headers

X-Api-Key      

Example: {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

URL Parameters

profileId   integer   

Profile ID. Example: 1

methodId   integer   

Payment method ID. Example: 1

Body Parameters

connection_data   object   

Connection data (encrypted).

is_active   boolean  optional  

optional Active status. Example: true

Update payment connection

requires authentication

Updates an existing payment connection.

Example request:
curl --request PUT \
    "https://tic.rs/api/organizer/v1/payment-profiles/1/methods/1" \
    --header "X-Api-Key: {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --data "{
    \"connection_data\": {
        \"api_key\": \"...\"
    },
    \"is_active\": true
}"
import requests
import json

url = 'https://tic.rs/api/organizer/v1/payment-profiles/1/methods/1'
payload = {
    "connection_data": {
        "api_key": "..."
    },
    "is_active": true
}
headers = {
  'X-Api-Key': '{YOUR_AUTH_KEY}',
  'Content-Type': 'application/json'
}

response = requests.request('PUT', url, headers=headers, json=payload)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://tic.rs/api/organizer/v1/payment-profiles/1/methods/1';
$response = $client->put(
    $url,
    [
        'headers' => [
            'X-Api-Key' => '{YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'connection_data' => [
                'api_key' => '...',
            ],
            'is_active' => true,
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{"success": true, "data": {...}}
 

Request      

PUT api/organizer/v1/payment-profiles/{profileId}/methods/{methodId}

Headers

X-Api-Key      

Example: {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

URL Parameters

profileId   integer   

Profile ID. Example: 1

methodId   integer   

Payment method ID. Example: 1

Body Parameters

connection_data   object  optional  

optional Connection data.

is_active   boolean  optional  

optional Active status. Example: true

Disconnect payment method

requires authentication

Deletes a payment connection (soft delete).

Example request:
curl --request DELETE \
    "https://tic.rs/api/organizer/v1/payment-profiles/1/methods/1" \
    --header "X-Api-Key: {YOUR_AUTH_KEY}"
import requests
import json

url = 'https://tic.rs/api/organizer/v1/payment-profiles/1/methods/1'
headers = {
  'X-Api-Key': '{YOUR_AUTH_KEY}'
}

response = requests.request('DELETE', url, headers=headers)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://tic.rs/api/organizer/v1/payment-profiles/1/methods/1';
$response = $client->delete(
    $url,
    [
        'headers' => [
            'X-Api-Key' => '{YOUR_AUTH_KEY}',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "message": "Payment method disconnected"
}
 

Request      

DELETE api/organizer/v1/payment-profiles/{profileId}/methods/{methodId}

Headers

X-Api-Key      

Example: {YOUR_AUTH_KEY}

URL Parameters

profileId   integer   

Profile ID. Example: 1

methodId   integer   

Payment method ID. Example: 1

Список профилей контактов организатора.

Example request:
curl --request GET \
    --get "https://tic.rs/api/organizer/v1/contact-profiles"
import requests
import json

url = 'https://tic.rs/api/organizer/v1/contact-profiles'
response = requests.request('GET', url, )
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://tic.rs/api/organizer/v1/contact-profiles';
$response = $client->get($url);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 60
x-ratelimit-remaining: 50
access-control-allow-origin: *
 

{
    "message": "Authentication required. Provide either JWT token (Authorization header) or API key (X-API-KEY header or api_key parameter)"
}
 

Request      

GET api/organizer/v1/contact-profiles

Создать профиль контактов.

Example request:
curl --request POST \
    "https://tic.rs/api/organizer/v1/contact-profiles" \
    --header "Content-Type: application/json" \
    --data "{
    \"name\": \"b\",
    \"phone\": \"n\",
    \"phone_viber\": true,
    \"phone_whatsapp\": false,
    \"email\": \"[email protected]\",
    \"website\": \"l\",
    \"instagram\": \"j\",
    \"telegram\": \"n\"
}"
import requests
import json

url = 'https://tic.rs/api/organizer/v1/contact-profiles'
payload = {
    "name": "b",
    "phone": "n",
    "phone_viber": true,
    "phone_whatsapp": false,
    "email": "[email protected]",
    "website": "l",
    "instagram": "j",
    "telegram": "n"
}
headers = {
  'Content-Type': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://tic.rs/api/organizer/v1/contact-profiles';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'name' => 'b',
            'phone' => 'n',
            'phone_viber' => true,
            'phone_whatsapp' => false,
            'email' => '[email protected]',
            'website' => 'l',
            'instagram' => 'j',
            'telegram' => 'n',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request      

POST api/organizer/v1/contact-profiles

Headers

Content-Type      

Example: application/json

Body Parameters

name   string  optional  

Polje value ne sme biti veće od 255 karaktera. Example: b

phone   string  optional  

Polje value ne sme biti veće od 50 karaktera. Example: n

phone_viber   boolean  optional  

Example: true

phone_whatsapp   boolean  optional  

Example: false

email   string  optional  

Polje value mora biti važeća adresa e-pošte. Polje value ne sme biti veće od 255 karaktera. Example: [email protected]

website   string  optional  

Polje value ne sme biti veće od 500 karaktera. Example: l

instagram   string  optional  

Polje value ne sme biti veće od 255 karaktera. Example: j

telegram   string  optional  

Polje value ne sme biti veće od 255 karaktera. Example: n

Обновить профиль контактов.

Example request:
curl --request PUT \
    "https://tic.rs/api/organizer/v1/contact-profiles/architecto" \
    --header "Content-Type: application/json" \
    --data "{
    \"name\": \"b\",
    \"phone\": \"n\",
    \"phone_viber\": true,
    \"phone_whatsapp\": false,
    \"email\": \"[email protected]\",
    \"website\": \"l\",
    \"instagram\": \"j\",
    \"telegram\": \"n\"
}"
import requests
import json

url = 'https://tic.rs/api/organizer/v1/contact-profiles/architecto'
payload = {
    "name": "b",
    "phone": "n",
    "phone_viber": true,
    "phone_whatsapp": false,
    "email": "[email protected]",
    "website": "l",
    "instagram": "j",
    "telegram": "n"
}
headers = {
  'Content-Type': 'application/json'
}

response = requests.request('PUT', url, headers=headers, json=payload)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://tic.rs/api/organizer/v1/contact-profiles/architecto';
$response = $client->put(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'name' => 'b',
            'phone' => 'n',
            'phone_viber' => true,
            'phone_whatsapp' => false,
            'email' => '[email protected]',
            'website' => 'l',
            'instagram' => 'j',
            'telegram' => 'n',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request      

PUT api/organizer/v1/contact-profiles/{id}

Headers

Content-Type      

Example: application/json

URL Parameters

id   string   

The ID of the contact profile. Example: architecto

Body Parameters

name   string  optional  

Polje value ne sme biti veće od 255 karaktera. Example: b

phone   string  optional  

Polje value ne sme biti veće od 50 karaktera. Example: n

phone_viber   boolean  optional  

Example: true

phone_whatsapp   boolean  optional  

Example: false

email   string  optional  

Polje value mora biti važeća adresa e-pošte. Polje value ne sme biti veće od 255 karaktera. Example: [email protected]

website   string  optional  

Polje value ne sme biti veće od 500 karaktera. Example: l

instagram   string  optional  

Polje value ne sme biti veće od 255 karaktera. Example: j

telegram   string  optional  

Polje value ne sme biti veće od 255 karaktera. Example: n

Удалить профиль контактов.

Example request:
curl --request DELETE \
    "https://tic.rs/api/organizer/v1/contact-profiles/architecto"
import requests
import json

url = 'https://tic.rs/api/organizer/v1/contact-profiles/architecto'
response = requests.request('DELETE', url, )
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://tic.rs/api/organizer/v1/contact-profiles/architecto';
$response = $client->delete($url);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request      

DELETE api/organizer/v1/contact-profiles/{id}

URL Parameters

id   string   

The ID of the contact profile. Example: architecto

Язык / валюта / таймзона кабинета (event_organizers), а не пользователя.

Example request:
curl --request GET \
    --get "https://tic.rs/api/organizer/v1/settings/cabinet-preferences"
import requests
import json

url = 'https://tic.rs/api/organizer/v1/settings/cabinet-preferences'
response = requests.request('GET', url, )
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://tic.rs/api/organizer/v1/settings/cabinet-preferences';
$response = $client->get($url);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 60
x-ratelimit-remaining: 49
access-control-allow-origin: *
 

{
    "message": "Authentication required. Provide either JWT token (Authorization header) or API key (X-API-KEY header or api_key parameter)"
}
 

Request      

GET api/organizer/v1/settings/cabinet-preferences

Сохранить язык / валюту / таймзону кабинета организатора.

Example request:
curl --request PUT \
    "https://tic.rs/api/organizer/v1/settings/cabinet-preferences" \
    --header "Content-Type: application/json" \
    --data "{
    \"locale\": \"sr_BA\",
    \"timezone\": \"Asia\\/Ulaanbaatar\",
    \"currency_id\": 16,
    \"customer_locales\": [
        \"ngzm\"
    ]
}"
import requests
import json

url = 'https://tic.rs/api/organizer/v1/settings/cabinet-preferences'
payload = {
    "locale": "sr_BA",
    "timezone": "Asia\/Ulaanbaatar",
    "currency_id": 16,
    "customer_locales": [
        "ngzm"
    ]
}
headers = {
  'Content-Type': 'application/json'
}

response = requests.request('PUT', url, headers=headers, json=payload)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://tic.rs/api/organizer/v1/settings/cabinet-preferences';
$response = $client->put(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'locale' => 'sr_BA',
            'timezone' => 'Asia/Ulaanbaatar',
            'currency_id' => 16,
            'customer_locales' => [
                'ngzm',
            ],
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request      

PUT api/organizer/v1/settings/cabinet-preferences

Headers

Content-Type      

Example: application/json

Body Parameters

locale   string   

Polje value ne sme biti veće od 12 karaktera. Example: sr_BA

timezone   string   

Polje value ne sme biti veće od 64 karaktera. Example: Asia/Ulaanbaatar

currency_id   integer  optional  

Example: 16

customer_locales   string[]  optional  

Polje value ne sme biti veće od 12 karaktera.

GET api/organizer/v1/settings/profile

Example request:
curl --request GET \
    --get "https://tic.rs/api/organizer/v1/settings/profile"
import requests
import json

url = 'https://tic.rs/api/organizer/v1/settings/profile'
response = requests.request('GET', url, )
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://tic.rs/api/organizer/v1/settings/profile';
$response = $client->get($url);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 60
x-ratelimit-remaining: 48
access-control-allow-origin: *
 

{
    "message": "Authentication required. Provide either JWT token (Authorization header) or API key (X-API-KEY header or api_key parameter)"
}
 

Request      

GET api/organizer/v1/settings/profile

PUT api/organizer/v1/settings/profile

Example request:
curl --request PUT \
    "https://tic.rs/api/organizer/v1/settings/profile"
import requests
import json

url = 'https://tic.rs/api/organizer/v1/settings/profile'
response = requests.request('PUT', url, )
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://tic.rs/api/organizer/v1/settings/profile';
$response = $client->put($url);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request      

PUT api/organizer/v1/settings/profile

GET api/organizer/v1/settings/custom-domain

Example request:
curl --request GET \
    --get "https://tic.rs/api/organizer/v1/settings/custom-domain"
import requests
import json

url = 'https://tic.rs/api/organizer/v1/settings/custom-domain'
response = requests.request('GET', url, )
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://tic.rs/api/organizer/v1/settings/custom-domain';
$response = $client->get($url);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 60
x-ratelimit-remaining: 47
access-control-allow-origin: *
 

{
    "message": "Authentication required. Provide either JWT token (Authorization header) or API key (X-API-KEY header or api_key parameter)"
}
 

Request      

GET api/organizer/v1/settings/custom-domain

POST api/organizer/v1/settings/custom-domain

Example request:
curl --request POST \
    "https://tic.rs/api/organizer/v1/settings/custom-domain" \
    --header "Content-Type: application/json" \
    --data "{
    \"domain\": \"b\"
}"
import requests
import json

url = 'https://tic.rs/api/organizer/v1/settings/custom-domain'
payload = {
    "domain": "b"
}
headers = {
  'Content-Type': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://tic.rs/api/organizer/v1/settings/custom-domain';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'domain' => 'b',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request      

POST api/organizer/v1/settings/custom-domain

Headers

Content-Type      

Example: application/json

Body Parameters

domain   string   

Polje value ne sme biti veće od 253 karaktera. Example: b

PUT api/organizer/v1/settings/custom-domain

Example request:
curl --request PUT \
    "https://tic.rs/api/organizer/v1/settings/custom-domain" \
    --header "Content-Type: application/json" \
    --data "{
    \"domain\": \"b\"
}"
import requests
import json

url = 'https://tic.rs/api/organizer/v1/settings/custom-domain'
payload = {
    "domain": "b"
}
headers = {
  'Content-Type': 'application/json'
}

response = requests.request('PUT', url, headers=headers, json=payload)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://tic.rs/api/organizer/v1/settings/custom-domain';
$response = $client->put(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'domain' => 'b',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request      

PUT api/organizer/v1/settings/custom-domain

Headers

Content-Type      

Example: application/json

Body Parameters

domain   string   

Polje value ne sme biti veće od 253 karaktera. Example: b

POST api/organizer/v1/settings/custom-domain/verify

Example request:
curl --request POST \
    "https://tic.rs/api/organizer/v1/settings/custom-domain/verify"
import requests
import json

url = 'https://tic.rs/api/organizer/v1/settings/custom-domain/verify'
response = requests.request('POST', url, )
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://tic.rs/api/organizer/v1/settings/custom-domain/verify';
$response = $client->post($url);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request      

POST api/organizer/v1/settings/custom-domain/verify

DELETE api/organizer/v1/settings/custom-domain

Example request:
curl --request DELETE \
    "https://tic.rs/api/organizer/v1/settings/custom-domain"
import requests
import json

url = 'https://tic.rs/api/organizer/v1/settings/custom-domain'
response = requests.request('DELETE', url, )
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://tic.rs/api/organizer/v1/settings/custom-domain';
$response = $client->delete($url);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request      

DELETE api/organizer/v1/settings/custom-domain

Текущий субдомен на evenda.io (event_organizers.subdomain) и флаг однократной смены.

Example request:
curl --request GET \
    --get "https://tic.rs/api/organizer/v1/settings/evenda-subdomain"
import requests
import json

url = 'https://tic.rs/api/organizer/v1/settings/evenda-subdomain'
response = requests.request('GET', url, )
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://tic.rs/api/organizer/v1/settings/evenda-subdomain';
$response = $client->get($url);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 60
x-ratelimit-remaining: 46
access-control-allow-origin: *
 

{
    "message": "Authentication required. Provide either JWT token (Authorization header) or API key (X-API-KEY header or api_key parameter)"
}
 

Request      

GET api/organizer/v1/settings/evenda-subdomain

Установка или однократная смена субдомена (как в админке: subdomain_changed).

Example request:
curl --request PUT \
    "https://tic.rs/api/organizer/v1/settings/evenda-subdomain"
import requests
import json

url = 'https://tic.rs/api/organizer/v1/settings/evenda-subdomain'
response = requests.request('PUT', url, )
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://tic.rs/api/organizer/v1/settings/evenda-subdomain';
$response = $client->put($url);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request      

PUT api/organizer/v1/settings/evenda-subdomain

GET api/organizer/v1/settings/notification-subscriptions

Example request:
curl --request GET \
    --get "https://tic.rs/api/organizer/v1/settings/notification-subscriptions"
import requests
import json

url = 'https://tic.rs/api/organizer/v1/settings/notification-subscriptions'
response = requests.request('GET', url, )
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://tic.rs/api/organizer/v1/settings/notification-subscriptions';
$response = $client->get($url);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 60
x-ratelimit-remaining: 45
access-control-allow-origin: *
 

{
    "message": "Authentication required. Provide either JWT token (Authorization header) or API key (X-API-KEY header or api_key parameter)"
}
 

Request      

GET api/organizer/v1/settings/notification-subscriptions

PUT api/organizer/v1/settings/notification-subscriptions

Example request:
curl --request PUT \
    "https://tic.rs/api/organizer/v1/settings/notification-subscriptions" \
    --header "Content-Type: application/json" \
    --data "{
    \"subscriptions\": [
        {
            \"event_type\": \"b\",
            \"in_app_enabled\": false,
            \"email_enabled\": true,
            \"telegram_enabled\": false
        }
    ]
}"
import requests
import json

url = 'https://tic.rs/api/organizer/v1/settings/notification-subscriptions'
payload = {
    "subscriptions": [
        {
            "event_type": "b",
            "in_app_enabled": false,
            "email_enabled": true,
            "telegram_enabled": false
        }
    ]
}
headers = {
  'Content-Type': 'application/json'
}

response = requests.request('PUT', url, headers=headers, json=payload)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://tic.rs/api/organizer/v1/settings/notification-subscriptions';
$response = $client->put(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'subscriptions' => [
                [
                    'event_type' => 'b',
                    'in_app_enabled' => false,
                    'email_enabled' => true,
                    'telegram_enabled' => false,
                ],
            ],
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request      

PUT api/organizer/v1/settings/notification-subscriptions

Headers

Content-Type      

Example: application/json

Body Parameters

subscriptions   object[]   

Polje value mora imati najmanje 1 stavki.

event_type   string   

Polje value ne sme biti veće od 128 karaktera. Example: b

in_app_enabled   boolean   

Example: false

email_enabled   boolean   

Example: true

telegram_enabled   boolean   

Example: false

Список участников команды организатора (владелец + приглашённые).

Example request:
curl --request GET \
    --get "https://tic.rs/api/organizer/v1/team/members"
import requests
import json

url = 'https://tic.rs/api/organizer/v1/team/members'
response = requests.request('GET', url, )
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://tic.rs/api/organizer/v1/team/members';
$response = $client->get($url);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 60
x-ratelimit-remaining: 44
access-control-allow-origin: *
 

{
    "message": "Authentication required. Provide either JWT token (Authorization header) or API key (X-API-KEY header or api_key parameter)"
}
 

Request      

GET api/organizer/v1/team/members

Добавить пользователя в команду по email. Если записи в users нет — создаём пользователя и пароль (сброс через «Забыли пароль»).

Example request:
curl --request POST \
    "https://tic.rs/api/organizer/v1/team/members" \
    --header "Content-Type: application/json" \
    --data "{
    \"email\": \"[email protected]\",
    \"role\": \"admin\",
    \"name\": \"i\"
}"
import requests
import json

url = 'https://tic.rs/api/organizer/v1/team/members'
payload = {
    "email": "[email protected]",
    "role": "admin",
    "name": "i"
}
headers = {
  'Content-Type': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://tic.rs/api/organizer/v1/team/members';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'email' => '[email protected]',
            'role' => 'admin',
            'name' => 'i',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request      

POST api/organizer/v1/team/members

Headers

Content-Type      

Example: application/json

Body Parameters

email   string   

Polje value mora biti važeća adresa e-pošte. Example: [email protected]

role   string   

Example: admin

Must be one of:
  • admin
  • member
name   string  optional  

Polje value ne sme biti veće od 255 karaktera. Example: i

Убрать участника команды (не владельца).

Example request:
curl --request DELETE \
    "https://tic.rs/api/organizer/v1/team/members/architecto"
import requests
import json

url = 'https://tic.rs/api/organizer/v1/team/members/architecto'
response = requests.request('DELETE', url, )
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://tic.rs/api/organizer/v1/team/members/architecto';
$response = $client->delete($url);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request      

DELETE api/organizer/v1/team/members/{userId}

URL Parameters

userId   string   

Example: architecto

GET api/organizer/v1/team/check-controllers

Example request:
curl --request GET \
    --get "https://tic.rs/api/organizer/v1/team/check-controllers"
import requests
import json

url = 'https://tic.rs/api/organizer/v1/team/check-controllers'
response = requests.request('GET', url, )
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://tic.rs/api/organizer/v1/team/check-controllers';
$response = $client->get($url);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 60
x-ratelimit-remaining: 43
access-control-allow-origin: *
 

{
    "message": "Authentication required. Provide either JWT token (Authorization header) or API key (X-API-KEY header or api_key parameter)"
}
 

Request      

GET api/organizer/v1/team/check-controllers

POST api/organizer/v1/team/check-controllers

Example request:
curl --request POST \
    "https://tic.rs/api/organizer/v1/team/check-controllers" \
    --header "Content-Type: application/json" \
    --data "{
    \"signature\": \"b\"
}"
import requests
import json

url = 'https://tic.rs/api/organizer/v1/team/check-controllers'
payload = {
    "signature": "b"
}
headers = {
  'Content-Type': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://tic.rs/api/organizer/v1/team/check-controllers';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'signature' => 'b',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request      

POST api/organizer/v1/team/check-controllers

Headers

Content-Type      

Example: application/json

Body Parameters

signature   string   

Polje value ne sme biti veće od 512 karaktera. Example: b

PATCH api/organizer/v1/team/check-controllers/{id}

Example request:
curl --request PATCH \
    "https://tic.rs/api/organizer/v1/team/check-controllers/architecto" \
    --header "Content-Type: application/json" \
    --data "{
    \"note\": \"b\"
}"
import requests
import json

url = 'https://tic.rs/api/organizer/v1/team/check-controllers/architecto'
payload = {
    "note": "b"
}
headers = {
  'Content-Type': 'application/json'
}

response = requests.request('PATCH', url, headers=headers, json=payload)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://tic.rs/api/organizer/v1/team/check-controllers/architecto';
$response = $client->patch(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'note' => 'b',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request      

PATCH api/organizer/v1/team/check-controllers/{id}

Headers

Content-Type      

Example: application/json

URL Parameters

id   string   

The ID of the check controller. Example: architecto

Body Parameters

note   string  optional  

Polje value ne sme biti veće od 2000 karaktera. Example: b

DELETE api/organizer/v1/team/check-controllers/{id}

Example request:
curl --request DELETE \
    "https://tic.rs/api/organizer/v1/team/check-controllers/architecto"
import requests
import json

url = 'https://tic.rs/api/organizer/v1/team/check-controllers/architecto'
response = requests.request('DELETE', url, )
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://tic.rs/api/organizer/v1/team/check-controllers/architecto';
$response = $client->delete($url);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request      

DELETE api/organizer/v1/team/check-controllers/{id}

URL Parameters

id   string   

The ID of the check controller. Example: architecto

GET api/organizer/v1/promo-codes

Example request:
curl --request GET \
    --get "https://tic.rs/api/organizer/v1/promo-codes"
import requests
import json

url = 'https://tic.rs/api/organizer/v1/promo-codes'
response = requests.request('GET', url, )
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://tic.rs/api/organizer/v1/promo-codes';
$response = $client->get($url);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 60
x-ratelimit-remaining: 42
access-control-allow-origin: *
 

{
    "message": "Authentication required. Provide either JWT token (Authorization header) or API key (X-API-KEY header or api_key parameter)"
}
 

Request      

GET api/organizer/v1/promo-codes

POST api/organizer/v1/promo-codes

Example request:
curl --request POST \
    "https://tic.rs/api/organizer/v1/promo-codes"
import requests
import json

url = 'https://tic.rs/api/organizer/v1/promo-codes'
response = requests.request('POST', url, )
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://tic.rs/api/organizer/v1/promo-codes';
$response = $client->post($url);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request      

POST api/organizer/v1/promo-codes

PUT api/organizer/v1/promo-codes/{id}

Example request:
curl --request PUT \
    "https://tic.rs/api/organizer/v1/promo-codes/1"
import requests
import json

url = 'https://tic.rs/api/organizer/v1/promo-codes/1'
response = requests.request('PUT', url, )
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://tic.rs/api/organizer/v1/promo-codes/1';
$response = $client->put($url);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request      

PUT api/organizer/v1/promo-codes/{id}

URL Parameters

id   integer   

The ID of the promo code. Example: 1

DELETE api/organizer/v1/promo-codes/{id}

Example request:
curl --request DELETE \
    "https://tic.rs/api/organizer/v1/promo-codes/1"
import requests
import json

url = 'https://tic.rs/api/organizer/v1/promo-codes/1'
response = requests.request('DELETE', url, )
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://tic.rs/api/organizer/v1/promo-codes/1';
$response = $client->delete($url);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request      

DELETE api/organizer/v1/promo-codes/{id}

URL Parameters

id   integer   

The ID of the promo code. Example: 1

GET api/organizer/v1/support/unread-count

Example request:
curl --request GET \
    --get "https://tic.rs/api/organizer/v1/support/unread-count"
import requests
import json

url = 'https://tic.rs/api/organizer/v1/support/unread-count'
response = requests.request('GET', url, )
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://tic.rs/api/organizer/v1/support/unread-count';
$response = $client->get($url);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 60
x-ratelimit-remaining: 41
access-control-allow-origin: *
 

{
    "message": "Authentication required. Provide either JWT token (Authorization header) or API key (X-API-KEY header or api_key parameter)"
}
 

Request      

GET api/organizer/v1/support/unread-count

GET api/organizer/v1/support/tickets

Example request:
curl --request GET \
    --get "https://tic.rs/api/organizer/v1/support/tickets"
import requests
import json

url = 'https://tic.rs/api/organizer/v1/support/tickets'
response = requests.request('GET', url, )
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://tic.rs/api/organizer/v1/support/tickets';
$response = $client->get($url);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 60
x-ratelimit-remaining: 40
access-control-allow-origin: *
 

{
    "message": "Authentication required. Provide either JWT token (Authorization header) or API key (X-API-KEY header or api_key parameter)"
}
 

Request      

GET api/organizer/v1/support/tickets

POST api/organizer/v1/support/tickets

Example request:
curl --request POST \
    "https://tic.rs/api/organizer/v1/support/tickets" \
    --header "Content-Type: application/json" \
    --data "{
    \"subject\": \"b\",
    \"body\": \"n\"
}"
import requests
import json

url = 'https://tic.rs/api/organizer/v1/support/tickets'
payload = {
    "subject": "b",
    "body": "n"
}
headers = {
  'Content-Type': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://tic.rs/api/organizer/v1/support/tickets';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'subject' => 'b',
            'body' => 'n',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request      

POST api/organizer/v1/support/tickets

Headers

Content-Type      

Example: application/json

Body Parameters

subject   string   

Polje value ne sme biti veće od 255 karaktera. Example: b

body   string   

Polje value ne sme biti veće od 20000 karaktera. Example: n

GET api/organizer/v1/support/tickets/{uuid}

Example request:
curl --request GET \
    --get "https://tic.rs/api/organizer/v1/support/tickets/6ff8f7f6-1eb3-3525-be4a-3932c805afed"
import requests
import json

url = 'https://tic.rs/api/organizer/v1/support/tickets/6ff8f7f6-1eb3-3525-be4a-3932c805afed'
response = requests.request('GET', url, )
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://tic.rs/api/organizer/v1/support/tickets/6ff8f7f6-1eb3-3525-be4a-3932c805afed';
$response = $client->get($url);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 60
x-ratelimit-remaining: 39
access-control-allow-origin: *
 

{
    "message": "Authentication required. Provide either JWT token (Authorization header) or API key (X-API-KEY header or api_key parameter)"
}
 

Request      

GET api/organizer/v1/support/tickets/{uuid}

URL Parameters

uuid   string   

Example: 6ff8f7f6-1eb3-3525-be4a-3932c805afed

POST api/organizer/v1/support/tickets/{uuid}/messages

Example request:
curl --request POST \
    "https://tic.rs/api/organizer/v1/support/tickets/6ff8f7f6-1eb3-3525-be4a-3932c805afed/messages" \
    --header "Content-Type: application/json" \
    --data "{
    \"body\": \"b\"
}"
import requests
import json

url = 'https://tic.rs/api/organizer/v1/support/tickets/6ff8f7f6-1eb3-3525-be4a-3932c805afed/messages'
payload = {
    "body": "b"
}
headers = {
  'Content-Type': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://tic.rs/api/organizer/v1/support/tickets/6ff8f7f6-1eb3-3525-be4a-3932c805afed/messages';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'body' => 'b',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request      

POST api/organizer/v1/support/tickets/{uuid}/messages

Headers

Content-Type      

Example: application/json

URL Parameters

uuid   string   

Example: 6ff8f7f6-1eb3-3525-be4a-3932c805afed

Body Parameters

body   string   

Polje value ne sme biti veće od 20000 karaktera. Example: b

Аналитика продаж по заказам (позиции EventCalendar), без таблицы проводок.

Example request:
curl --request GET \
    --get "https://tic.rs/api/organizer/v1/analytics/sales?start_date=2026-01-01&end_date=architecto&event_uuid=6ff8f7f6-1eb3-3525-be4a-3932c805afed&ticket_calendar_id=16&payment_method=architecto&status_id=16" \
    --header "Content-Type: application/json" \
    --data "{
    \"start_date\": \"2026-04-14T12:20:26\",
    \"end_date\": \"2052-05-07\",
    \"event_uuid\": \"a4855dc5-0acb-33c3-b921-f4291f719ca0\",
    \"ticket_calendar_id\": 66,
    \"payment_method\": \"m\",
    \"status_id\": 16
}"
import requests
import json

url = 'https://tic.rs/api/organizer/v1/analytics/sales'
payload = {
    "start_date": "2026-04-14T12:20:26",
    "end_date": "2052-05-07",
    "event_uuid": "a4855dc5-0acb-33c3-b921-f4291f719ca0",
    "ticket_calendar_id": 66,
    "payment_method": "m",
    "status_id": 16
}
params = {
  'start_date': '2026-01-01',
  'end_date': 'architecto',
  'event_uuid': '6ff8f7f6-1eb3-3525-be4a-3932c805afed',
  'ticket_calendar_id': '16',
  'payment_method': 'architecto',
  'status_id': '16',
}
headers = {
  'Content-Type': 'application/json'
}

response = requests.request('GET', url, headers=headers, json=payload, params=params)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://tic.rs/api/organizer/v1/analytics/sales';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
        ],
        'query' => [
            'start_date' => '2026-01-01',
            'end_date' => 'architecto',
            'event_uuid' => '6ff8f7f6-1eb3-3525-be4a-3932c805afed',
            'ticket_calendar_id' => '16',
            'payment_method' => 'architecto',
            'status_id' => '16',
        ],
        'json' => [
            'start_date' => '2026-04-14T12:20:26',
            'end_date' => '2052-05-07',
            'event_uuid' => 'a4855dc5-0acb-33c3-b921-f4291f719ca0',
            'ticket_calendar_id' => 66,
            'payment_method' => 'm',
            'status_id' => 16,
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 60
x-ratelimit-remaining: 38
access-control-allow-origin: *
 

{
    "message": "Authentication required. Provide either JWT token (Authorization header) or API key (X-API-KEY header or api_key parameter)"
}
 

Request      

GET api/organizer/v1/analytics/sales

Headers

Content-Type      

Example: application/json

Query Parameters

start_date   string  optional  

Y-m-d. Example: 2026-01-01

end_date   string  optional  

Y-m-d Example: architecto

event_uuid   string  optional  

UUID события (signature) Example: 6ff8f7f6-1eb3-3525-be4a-3932c805afed

ticket_calendar_id   integer  optional  

ID записи event_calendars (категория / слот) Example: 16

payment_method   string  optional  

Как в списке заказов (id метода, custom, custom-{id}) Example: architecto

status_id   integer  optional  

ID статуса заказа Example: 16

Body Parameters

start_date   string  optional  

Polje value mora biti važeći datum. Example: 2026-04-14T12:20:26

end_date   string  optional  

Polje value mora biti važeći datum. Polje value mora biti datum posle ili jednak start_date. Example: 2052-05-07

event_uuid   string  optional  

Polje value ne sme biti veće od 64 karaktera. Example: a4855dc5-0acb-33c3-b921-f4291f719ca0

ticket_calendar_id   integer  optional  

Polje value mora biti najmanje 1. Example: 66

payment_method   string  optional  

Polje value ne sme biti veće od 64 karaktera. Example: m

status_id   integer  optional  

Example: 16

Источники трафика (UTM) и неатрибутированные заходы.

Example request:
curl --request GET \
    --get "https://tic.rs/api/organizer/v1/analytics/utm?start_date=architecto&end_date=architecto&event_uuid=6ff8f7f6-1eb3-3525-be4a-3932c805afed&group_by=architecto&utm_source=architecto&utm_medium=architecto&utm_campaign=architecto" \
    --header "Content-Type: application/json" \
    --data "{
    \"start_date\": \"2026-04-14T12:20:26\",
    \"end_date\": \"2052-05-07\",
    \"event_uuid\": \"a4855dc5-0acb-33c3-b921-f4291f719ca0\",
    \"group_by\": \"z\",
    \"utm_source\": \"m\",
    \"utm_medium\": \"i\",
    \"utm_campaign\": \"y\"
}"
import requests
import json

url = 'https://tic.rs/api/organizer/v1/analytics/utm'
payload = {
    "start_date": "2026-04-14T12:20:26",
    "end_date": "2052-05-07",
    "event_uuid": "a4855dc5-0acb-33c3-b921-f4291f719ca0",
    "group_by": "z",
    "utm_source": "m",
    "utm_medium": "i",
    "utm_campaign": "y"
}
params = {
  'start_date': 'architecto',
  'end_date': 'architecto',
  'event_uuid': '6ff8f7f6-1eb3-3525-be4a-3932c805afed',
  'group_by': 'architecto',
  'utm_source': 'architecto',
  'utm_medium': 'architecto',
  'utm_campaign': 'architecto',
}
headers = {
  'Content-Type': 'application/json'
}

response = requests.request('GET', url, headers=headers, json=payload, params=params)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://tic.rs/api/organizer/v1/analytics/utm';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
        ],
        'query' => [
            'start_date' => 'architecto',
            'end_date' => 'architecto',
            'event_uuid' => '6ff8f7f6-1eb3-3525-be4a-3932c805afed',
            'group_by' => 'architecto',
            'utm_source' => 'architecto',
            'utm_medium' => 'architecto',
            'utm_campaign' => 'architecto',
        ],
        'json' => [
            'start_date' => '2026-04-14T12:20:26',
            'end_date' => '2052-05-07',
            'event_uuid' => 'a4855dc5-0acb-33c3-b921-f4291f719ca0',
            'group_by' => 'z',
            'utm_source' => 'm',
            'utm_medium' => 'i',
            'utm_campaign' => 'y',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 60
x-ratelimit-remaining: 37
access-control-allow-origin: *
 

{
    "message": "Authentication required. Provide either JWT token (Authorization header) or API key (X-API-KEY header or api_key parameter)"
}
 

Request      

GET api/organizer/v1/analytics/utm

Headers

Content-Type      

Example: application/json

Query Parameters

start_date   string  optional  

Y-m-d Example: architecto

end_date   string  optional  

Y-m-d Example: architecto

event_uuid   string  optional  

UUID события Example: 6ff8f7f6-1eb3-3525-be4a-3932c805afed

group_by   string  optional  

source|source_medium|campaign|content Example: architecto

utm_source   string  optional  

подстрока (без регистра) Example: architecto

utm_medium   string  optional  

Example: architecto

utm_campaign   string  optional  

Example: architecto

Body Parameters

start_date   string  optional  

Polje value mora biti važeći datum. Example: 2026-04-14T12:20:26

end_date   string  optional  

Polje value mora biti važeći datum. Polje value mora biti datum posle ili jednak start_date. Example: 2052-05-07

event_uuid   string  optional  

Polje value ne sme biti veće od 64 karaktera. Example: a4855dc5-0acb-33c3-b921-f4291f719ca0

group_by   string  optional  

Polje value ne sme biti veće od 32 karaktera. Example: z

utm_source   string  optional  

Polje value ne sme biti veće od 255 karaktera. Example: m

utm_medium   string  optional  

Polje value ne sme biti veće od 255 karaktera. Example: i

utm_campaign   string  optional  

Polje value ne sme biti veće od 255 karaktera. Example: y

Воронка конверсии: просмотры/корзина/purchase — organizer_analytics (funnel_pair_daily), заказы и оплаты (MySQL).

Example request:
curl --request GET \
    --get "https://tic.rs/api/organizer/v1/analytics/conversion?start_date=architecto&end_date=architecto&event_uuid=6ff8f7f6-1eb3-3525-be4a-3932c805afed&device=architecto&traffic_channel=architecto&payment_method=architecto" \
    --header "Content-Type: application/json" \
    --data "{
    \"start_date\": \"2026-04-14T12:20:26\",
    \"end_date\": \"2052-05-07\",
    \"event_uuid\": \"a4855dc5-0acb-33c3-b921-f4291f719ca0\",
    \"device\": \"tablet\",
    \"traffic_channel\": \"telegram\",
    \"payment_method\": \"i\"
}"
import requests
import json

url = 'https://tic.rs/api/organizer/v1/analytics/conversion'
payload = {
    "start_date": "2026-04-14T12:20:26",
    "end_date": "2052-05-07",
    "event_uuid": "a4855dc5-0acb-33c3-b921-f4291f719ca0",
    "device": "tablet",
    "traffic_channel": "telegram",
    "payment_method": "i"
}
params = {
  'start_date': 'architecto',
  'end_date': 'architecto',
  'event_uuid': '6ff8f7f6-1eb3-3525-be4a-3932c805afed',
  'device': 'architecto',
  'traffic_channel': 'architecto',
  'payment_method': 'architecto',
}
headers = {
  'Content-Type': 'application/json'
}

response = requests.request('GET', url, headers=headers, json=payload, params=params)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://tic.rs/api/organizer/v1/analytics/conversion';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
        ],
        'query' => [
            'start_date' => 'architecto',
            'end_date' => 'architecto',
            'event_uuid' => '6ff8f7f6-1eb3-3525-be4a-3932c805afed',
            'device' => 'architecto',
            'traffic_channel' => 'architecto',
            'payment_method' => 'architecto',
        ],
        'json' => [
            'start_date' => '2026-04-14T12:20:26',
            'end_date' => '2052-05-07',
            'event_uuid' => 'a4855dc5-0acb-33c3-b921-f4291f719ca0',
            'device' => 'tablet',
            'traffic_channel' => 'telegram',
            'payment_method' => 'i',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 60
x-ratelimit-remaining: 36
access-control-allow-origin: *
 

{
    "message": "Authentication required. Provide either JWT token (Authorization header) or API key (X-API-KEY header or api_key parameter)"
}
 

Request      

GET api/organizer/v1/analytics/conversion

Headers

Content-Type      

Example: application/json

Query Parameters

start_date   string  optional  

Y-m-d Example: architecto

end_date   string  optional  

Y-m-d Example: architecto

event_uuid   string  optional  

Example: 6ff8f7f6-1eb3-3525-be4a-3932c805afed

device   string  optional  

mobile|tablet|desktop|other Example: architecto

traffic_channel   string  optional  

instagram|telegram|direct|ads|other Example: architecto

payment_method   string  optional  

как в списке заказов Example: architecto

Body Parameters

start_date   string  optional  

Polje value mora biti važeći datum. Example: 2026-04-14T12:20:26

end_date   string  optional  

Polje value mora biti važeći datum. Polje value mora biti datum posle ili jednak start_date. Example: 2052-05-07

event_uuid   string  optional  

Polje value ne sme biti veće od 64 karaktera. Example: a4855dc5-0acb-33c3-b921-f4291f719ca0

device   string  optional  

Example: tablet

Must be one of:
  • mobile
  • tablet
  • desktop
  • other
traffic_channel   string  optional  

Example: telegram

Must be one of:
  • instagram
  • telegram
  • direct
  • ads
  • other
payment_method   string  optional  

Polje value ne sme biti veće od 64 karaktera. Example: i

Example request:
curl --request GET \
    --get "https://tic.rs/api/organizer/v1/analytics/popular?start_date=architecto&end_date=architecto&lifecycle=architecto&event_type_id=16&city_id=16&sort=architecto" \
    --header "Content-Type: application/json" \
    --data "{
    \"start_date\": \"2026-04-14T12:20:26\",
    \"end_date\": \"2052-05-07\",
    \"lifecycle\": \"all\",
    \"event_type_id\": 67,
    \"city_id\": 66,
    \"sort\": \"revenue\"
}"
import requests
import json

url = 'https://tic.rs/api/organizer/v1/analytics/popular'
payload = {
    "start_date": "2026-04-14T12:20:26",
    "end_date": "2052-05-07",
    "lifecycle": "all",
    "event_type_id": 67,
    "city_id": 66,
    "sort": "revenue"
}
params = {
  'start_date': 'architecto',
  'end_date': 'architecto',
  'lifecycle': 'architecto',
  'event_type_id': '16',
  'city_id': '16',
  'sort': 'architecto',
}
headers = {
  'Content-Type': 'application/json'
}

response = requests.request('GET', url, headers=headers, json=payload, params=params)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://tic.rs/api/organizer/v1/analytics/popular';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
        ],
        'query' => [
            'start_date' => 'architecto',
            'end_date' => 'architecto',
            'lifecycle' => 'architecto',
            'event_type_id' => '16',
            'city_id' => '16',
            'sort' => 'architecto',
        ],
        'json' => [
            'start_date' => '2026-04-14T12:20:26',
            'end_date' => '2052-05-07',
            'lifecycle' => 'all',
            'event_type_id' => 67,
            'city_id' => 66,
            'sort' => 'revenue',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 60
x-ratelimit-remaining: 35
access-control-allow-origin: *
 

{
    "message": "Authentication required. Provide either JWT token (Authorization header) or API key (X-API-KEY header or api_key parameter)"
}
 

Экспорт участников в CSV (UTF-8). События и билеты только по заказам этого организатора.

Example request:
curl --request GET \
    --get "https://tic.rs/api/organizer/v1/visitors/export?search=architecto"
import requests
import json

url = 'https://tic.rs/api/organizer/v1/visitors/export'
params = {
  'search': 'architecto',
}
response = requests.request('GET', url, params=params)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://tic.rs/api/organizer/v1/visitors/export';
$response = $client->get(
    $url,
    [
        'query' => [
            'search' => 'architecto',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 60
x-ratelimit-remaining: 34
access-control-allow-origin: *
 

{
    "message": "Authentication required. Provide either JWT token (Authorization header) or API key (X-API-KEY header or api_key parameter)"
}
 

Request      

GET api/organizer/v1/visitors/export

Query Parameters

search   string  optional  

тот же фильтр, что у списка Example: architecto

Список уникальных покупателей, оформлявших заказы у данного организатора.

Example request:
curl --request GET \
    --get "https://tic.rs/api/organizer/v1/visitors?page=16&per_page=16&search=architecto"
import requests
import json

url = 'https://tic.rs/api/organizer/v1/visitors'
params = {
  'page': '16',
  'per_page': '16',
  'search': 'architecto',
}
response = requests.request('GET', url, params=params)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://tic.rs/api/organizer/v1/visitors';
$response = $client->get(
    $url,
    [
        'query' => [
            'page' => '16',
            'per_page' => '16',
            'search' => 'architecto',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 60
x-ratelimit-remaining: 33
access-control-allow-origin: *
 

{
    "message": "Authentication required. Provide either JWT token (Authorization header) or API key (X-API-KEY header or api_key parameter)"
}
 

Request      

GET api/organizer/v1/visitors

Query Parameters

page   integer  optional  

Example: 16

per_page   integer  optional  

max 100 Example: 16

search   string  optional  

поиск по имени, email, телефону (профиль покупателя) Example: architecto

Карточка участника: контакты, статистика по заказам, история заказов и билетов (только этот организатор).

Example request:
curl --request GET \
    --get "https://tic.rs/api/organizer/v1/visitors/|{+?orders_page=16&tickets_page=16&per_page=16"
import requests
import json

url = 'https://tic.rs/api/organizer/v1/visitors/|{+'
params = {
  'orders_page': '16',
  'tickets_page': '16',
  'per_page': '16',
}
response = requests.request('GET', url, params=params)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://tic.rs/api/organizer/v1/visitors/|{+';
$response = $client->get(
    $url,
    [
        'query' => [
            'orders_page' => '16',
            'tickets_page' => '16',
            'per_page' => '16',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 60
x-ratelimit-remaining: 32
access-control-allow-origin: *
 

{
    "message": "Authentication required. Provide either JWT token (Authorization header) or API key (X-API-KEY header or api_key parameter)"
}
 

Request      

GET api/organizer/v1/visitors/{participantKey}

URL Parameters

participantKey   string   

Example: |{+

Query Parameters

orders_page   integer  optional  

Example: 16

tickets_page   integer  optional  

Example: 16

per_page   integer  optional  

max 50 Example: 16

Список заказов организатора

requires authentication

Example request:
curl --request GET \
    --get "https://tic.rs/api/organizer/v1/orders?page=1&per_page=20&search=ACM&status=2&date=2024-01-15" \
    --header "X-Api-Key: {YOUR_AUTH_KEY}"
import requests
import json

url = 'https://tic.rs/api/organizer/v1/orders'
params = {
  'page': '1',
  'per_page': '20',
  'search': 'ACM',
  'status': '2',
  'date': '2024-01-15',
}
headers = {
  'X-Api-Key': '{YOUR_AUTH_KEY}'
}

response = requests.request('GET', url, headers=headers, params=params)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://tic.rs/api/organizer/v1/orders';
$response = $client->get(
    $url,
    [
        'headers' => [
            'X-Api-Key' => '{YOUR_AUTH_KEY}',
        ],
        'query' => [
            'page' => '1',
            'per_page' => '20',
            'search' => 'ACM',
            'status' => '2',
            'date' => '2024-01-15',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 60
x-ratelimit-remaining: 31
access-control-allow-origin: *
 

{
    "success": true,
    "data": [],
    "meta": {
        "current_page": 1,
        "per_page": 20,
        "total": 0,
        "last_page": 1
    }
}
 

Request      

GET api/organizer/v1/orders

Headers

X-Api-Key      

Example: {YOUR_AUTH_KEY}

Query Parameters

page   integer  optional  

Страница. Example: 1

per_page   integer  optional  

Записей на странице. Example: 20

search   string  optional  

Поиск по номеру, email, имени, телефону. Example: ACM

status   integer  optional  

ID статуса заказа. Example: 2

date   string  optional  

Дата заказа (YYYY-MM-DD). Example: 2024-01-15

Статусы заказов (для фильтра)

Example request:
curl --request GET \
    --get "https://tic.rs/api/organizer/v1/orders/statuses"
import requests
import json

url = 'https://tic.rs/api/organizer/v1/orders/statuses'
response = requests.request('GET', url, )
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://tic.rs/api/organizer/v1/orders/statuses';
$response = $client->get($url);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 60
x-ratelimit-remaining: 30
access-control-allow-origin: *
 

{
    "message": "Authentication required. Provide either JWT token (Authorization header) or API key (X-API-KEY header or api_key parameter)"
}
 

Request      

GET api/organizer/v1/orders/statuses

Уникальные методы оплаты из заказов организатора (для фильтра)

Example request:
curl --request GET \
    --get "https://tic.rs/api/organizer/v1/orders/payment-methods"
import requests
import json

url = 'https://tic.rs/api/organizer/v1/orders/payment-methods'
response = requests.request('GET', url, )
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://tic.rs/api/organizer/v1/orders/payment-methods';
$response = $client->get($url);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 60
x-ratelimit-remaining: 29
access-control-allow-origin: *
 

{
    "message": "Authentication required. Provide either JWT token (Authorization header) or API key (X-API-KEY header or api_key parameter)"
}
 

Request      

GET api/organizer/v1/orders/payment-methods

Отправить PDF билета по позиции заказа на email (по умолчанию — email покупателя).

Example request:
curl --request POST \
    "https://tic.rs/api/organizer/v1/orders/1/order-items/1/send-ticket-email" \
    --header "Content-Type: application/json" \
    --data "{
    \"email\": \"[email protected]\",
    \"recipient_name\": \"m\"
}"
import requests
import json

url = 'https://tic.rs/api/organizer/v1/orders/1/order-items/1/send-ticket-email'
payload = {
    "email": "[email protected]",
    "recipient_name": "m"
}
headers = {
  'Content-Type': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://tic.rs/api/organizer/v1/orders/1/order-items/1/send-ticket-email';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'email' => '[email protected]',
            'recipient_name' => 'm',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request      

POST api/organizer/v1/orders/{signature}/order-items/{orderItemId}/send-ticket-email

Headers

Content-Type      

Example: application/json

URL Parameters

signature   integer   

Example: 1

orderItemId   integer   

Example: 1

Body Parameters

email   string  optional  

Email получателя. Если не указан — используется email заказа. Example: [email protected]

recipient_name   string  optional  

Must not be greater than 255 characters. Example: m

Скачать PDF билета (Content-Disposition: attachment).

Example request:
curl --request GET \
    --get "https://tic.rs/api/organizer/v1/orders/1/order-items/1/ticket-pdf"
import requests
import json

url = 'https://tic.rs/api/organizer/v1/orders/1/order-items/1/ticket-pdf'
response = requests.request('GET', url, )
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://tic.rs/api/organizer/v1/orders/1/order-items/1/ticket-pdf';
$response = $client->get($url);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 60
x-ratelimit-remaining: 28
access-control-allow-origin: *
 

{
    "message": "Authentication required. Provide either JWT token (Authorization header) or API key (X-API-KEY header or api_key parameter)"
}
 

Request      

GET api/organizer/v1/orders/{signature}/order-items/{orderItemId}/ticket-pdf

URL Parameters

signature   integer   

Example: 1

orderItemId   integer   

Example: 1

Детали заказа

requires authentication

Example request:
curl --request GET \
    --get "https://tic.rs/api/organizer/v1/orders/1" \
    --header "X-Api-Key: {YOUR_AUTH_KEY}"
import requests
import json

url = 'https://tic.rs/api/organizer/v1/orders/1'
headers = {
  'X-Api-Key': '{YOUR_AUTH_KEY}'
}

response = requests.request('GET', url, headers=headers)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://tic.rs/api/organizer/v1/orders/1';
$response = $client->get(
    $url,
    [
        'headers' => [
            'X-Api-Key' => '{YOUR_AUTH_KEY}',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (404):

Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 60
x-ratelimit-remaining: 27
access-control-allow-origin: *
 

{
    "success": false,
    "message": "Order not found"
}
 

Request      

GET api/organizer/v1/orders/{signature}

Headers

X-Api-Key      

Example: {YOUR_AUTH_KEY}

URL Parameters

signature   integer   

Example: 1

Обновить статус заказа

requires authentication

Example request:
curl --request PATCH \
    "https://tic.rs/api/organizer/v1/orders/1/status" \
    --header "X-Api-Key: {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --data "{
    \"status_id\": 2
}"
import requests
import json

url = 'https://tic.rs/api/organizer/v1/orders/1/status'
payload = {
    "status_id": 2
}
headers = {
  'X-Api-Key': '{YOUR_AUTH_KEY}',
  'Content-Type': 'application/json'
}

response = requests.request('PATCH', url, headers=headers, json=payload)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://tic.rs/api/organizer/v1/orders/1/status';
$response = $client->patch(
    $url,
    [
        'headers' => [
            'X-Api-Key' => '{YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'status_id' => 2,
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request      

PATCH api/organizer/v1/orders/{signature}/status

Headers

X-Api-Key      

Example: {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

URL Parameters

signature   integer   

Example: 1

Body Parameters

status_id   integer   

ID статуса заказа. Example: 2

Get list of custom payment methods

requires authentication

Returns paginated list of custom payment methods for the organizer.

Example request:
curl --request GET \
    --get "https://tic.rs/api/organizer/v1/custom-payment-methods?page=1&per_page=20&search=Card&is_active=1&sort=sort_order&order=asc" \
    --header "X-Api-Key: {YOUR_AUTH_KEY}" \
    --header "X-Language: sr"
import requests
import json

url = 'https://tic.rs/api/organizer/v1/custom-payment-methods'
params = {
  'page': '1',
  'per_page': '20',
  'search': 'Card',
  'is_active': '1',
  'sort': 'sort_order',
  'order': 'asc',
}
headers = {
  'X-Api-Key': '{YOUR_AUTH_KEY}',
  'X-Language': 'sr'
}

response = requests.request('GET', url, headers=headers, params=params)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://tic.rs/api/organizer/v1/custom-payment-methods';
$response = $client->get(
    $url,
    [
        'headers' => [
            'X-Api-Key' => '{YOUR_AUTH_KEY}',
            'X-Language' => 'sr',
        ],
        'query' => [
            'page' => '1',
            'per_page' => '20',
            'search' => 'Card',
            'is_active' => '1',
            'sort' => 'sort_order',
            'order' => 'asc',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{"success": true, "data": [...], "meta": {...}}
 

Request      

GET api/organizer/v1/custom-payment-methods

Headers

X-Api-Key      

Example: {YOUR_AUTH_KEY}

X-Language      

Example: sr

Query Parameters

page   integer  optional  

Page number. Example: 1

per_page   integer  optional  

Items per page. Example: 20

search   string  optional  

Search by title. Example: Card

is_active   boolean  optional  

Filter by active status. Example: true

sort   string  optional  

Sort field. Example: sort_order

order   string  optional  

Sort order (asc, desc). Example: asc

Response

Response Fields

success   boolean   

Whether the operation was successful.

data[]   string[]   

List of custom payment methods.

meta   object   

Pagination metadata.

Create custom payment method

requires authentication

Creates a new custom payment method.

Example request:
curl --request POST \
    "https://tic.rs/api/organizer/v1/custom-payment-methods" \
    --header "X-Api-Key: {YOUR_AUTH_KEY}" \
    --header "X-Language: sr" \
    --header "Content-Type: application/json" \
    --data "{
    \"title\": \"Оплата переводом на карту\",
    \"instructions_text\": {
        \"time\": 1234567890,
        \"blocks\": [
            {
                \"id\": \"abc\",
                \"type\": \"paragraph\",
                \"data\": {
                    \"text\": \"Переведите деньги на карту...\"
                }
            }
        ]
    },
    \"image_url\": \"https:\\/\\/example.com\\/qr.png\",
    \"is_active\": true,
    \"sort_order\": 0
}"
import requests
import json

url = 'https://tic.rs/api/organizer/v1/custom-payment-methods'
payload = {
    "title": "Оплата переводом на карту",
    "instructions_text": {
        "time": 1234567890,
        "blocks": [
            {
                "id": "abc",
                "type": "paragraph",
                "data": {
                    "text": "Переведите деньги на карту..."
                }
            }
        ]
    },
    "image_url": "https:\/\/example.com\/qr.png",
    "is_active": true,
    "sort_order": 0
}
headers = {
  'X-Api-Key': '{YOUR_AUTH_KEY}',
  'X-Language': 'sr',
  'Content-Type': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://tic.rs/api/organizer/v1/custom-payment-methods';
$response = $client->post(
    $url,
    [
        'headers' => [
            'X-Api-Key' => '{YOUR_AUTH_KEY}',
            'X-Language' => 'sr',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'title' => 'Оплата переводом на карту',
            'instructions_text' => [
                'time' => 1234567890,
                'blocks' => [
                    [
                        'id' => 'abc',
                        'type' => 'paragraph',
                        'data' => [
                            'text' => 'Переведите деньги на карту...',
                        ],
                    ],
                ],
            ],
            'image_url' => 'https://example.com/qr.png',
            'is_active' => true,
            'sort_order' => 0,
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (201):


{"success": true, "data": {...}}
 

Example response (422):


{"success": false, "message": "Validation error", "errors": {...}}
 

Request      

POST api/organizer/v1/custom-payment-methods

Headers

X-Api-Key      

Example: {YOUR_AUTH_KEY}

X-Language      

Example: sr

Content-Type      

Example: application/json

Body Parameters

title   string   

Method title. Example: Оплата переводом на карту

instructions_text   object   

Payment instructions (Editor.js JSON format).

time   integer   

Editor.js JSON format. Example: 16

blocks   object[]   
id   string   

Example: architecto

type   string   

Example: architecto

data   object   
image_url   string  optional  

optional Image URL. Example: https://example.com/qr.png

is_active   boolean  optional  

optional Active status. Example: true

sort_order   integer  optional  

optional Sort order. Example: 0

Response

Response Fields

success   boolean   

Whether the operation was successful.

data   object   

Created custom payment method.

Get single custom payment method

requires authentication

Returns detailed information about a custom payment method.

Example request:
curl --request GET \
    --get "https://tic.rs/api/organizer/v1/custom-payment-methods/1" \
    --header "X-Api-Key: {YOUR_AUTH_KEY}" \
    --header "X-Language: sr"
import requests
import json

url = 'https://tic.rs/api/organizer/v1/custom-payment-methods/1'
headers = {
  'X-Api-Key': '{YOUR_AUTH_KEY}',
  'X-Language': 'sr'
}

response = requests.request('GET', url, headers=headers)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://tic.rs/api/organizer/v1/custom-payment-methods/1';
$response = $client->get(
    $url,
    [
        'headers' => [
            'X-Api-Key' => '{YOUR_AUTH_KEY}',
            'X-Language' => 'sr',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{"success": true, "data": {...}}
 

Example response (404):


{
    "success": false,
    "message": "Custom payment method not found"
}
 

Request      

GET api/organizer/v1/custom-payment-methods/{id}

Headers

X-Api-Key      

Example: {YOUR_AUTH_KEY}

X-Language      

Example: sr

URL Parameters

id   integer   

Method ID. Example: 1

Response

Response Fields

success   boolean   

Whether the operation was successful.

data   object   

Custom payment method data.

Update custom payment method

requires authentication

Updates custom payment method data.

Example request:
curl --request PUT \
    "https://tic.rs/api/organizer/v1/custom-payment-methods/1" \
    --header "X-Api-Key: {YOUR_AUTH_KEY}" \
    --header "X-Language: sr" \
    --header "Content-Type: application/json" \
    --data "{
    \"title\": \"Оплата переводом на карту\",
    \"instructions_text\": {
        \"time\": 1234567890,
        \"blocks\": [
            {
                \"id\": \"abc\",
                \"type\": \"paragraph\",
                \"data\": {
                    \"text\": \"Переведите деньги на карту...\"
                }
            }
        ]
    },
    \"image_url\": \"https:\\/\\/example.com\\/qr.png\",
    \"is_active\": true,
    \"sort_order\": 0
}"
import requests
import json

url = 'https://tic.rs/api/organizer/v1/custom-payment-methods/1'
payload = {
    "title": "Оплата переводом на карту",
    "instructions_text": {
        "time": 1234567890,
        "blocks": [
            {
                "id": "abc",
                "type": "paragraph",
                "data": {
                    "text": "Переведите деньги на карту..."
                }
            }
        ]
    },
    "image_url": "https:\/\/example.com\/qr.png",
    "is_active": true,
    "sort_order": 0
}
headers = {
  'X-Api-Key': '{YOUR_AUTH_KEY}',
  'X-Language': 'sr',
  'Content-Type': 'application/json'
}

response = requests.request('PUT', url, headers=headers, json=payload)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://tic.rs/api/organizer/v1/custom-payment-methods/1';
$response = $client->put(
    $url,
    [
        'headers' => [
            'X-Api-Key' => '{YOUR_AUTH_KEY}',
            'X-Language' => 'sr',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'title' => 'Оплата переводом на карту',
            'instructions_text' => [
                'time' => 1234567890,
                'blocks' => [
                    [
                        'id' => 'abc',
                        'type' => 'paragraph',
                        'data' => [
                            'text' => 'Переведите деньги на карту...',
                        ],
                    ],
                ],
            ],
            'image_url' => 'https://example.com/qr.png',
            'is_active' => true,
            'sort_order' => 0,
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{"success": true, "data": {...}}
 

Example response (404):


{
    "success": false,
    "message": "Custom payment method not found"
}
 

Example response (422):


{"success": false, "message": "Validation error", "errors": {...}}
 

Request      

PUT api/organizer/v1/custom-payment-methods/{id}

Headers

X-Api-Key      

Example: {YOUR_AUTH_KEY}

X-Language      

Example: sr

Content-Type      

Example: application/json

URL Parameters

id   integer   

Method ID. Example: 1

Body Parameters

title   string  optional  

optional Method title. Example: Оплата переводом на карту

instructions_text   object  optional  

optional Payment instructions (Editor.js JSON format).

time   integer  optional  

Editor.js JSON format. This field is required when instructions_text is present. Example: 16

blocks   object[]  optional  

This field is required when instructions_text is present.

id   string  optional  

This field is required when instructions_text is present. Example: architecto

type   string  optional  

This field is required when instructions_text is present. Example: architecto

data   object  optional  

This field is required when instructions_text is present.

image_url   string  optional  

optional Image URL. Example: https://example.com/qr.png

is_active   boolean  optional  

optional Active status. Example: true

sort_order   integer  optional  

optional Sort order. Example: 0

Response

Response Fields

success   boolean   

Whether the operation was successful.

data   object   

Updated custom payment method.

Delete custom payment method

requires authentication

Soft deletes a custom payment method.

Example request:
curl --request DELETE \
    "https://tic.rs/api/organizer/v1/custom-payment-methods/1" \
    --header "X-Api-Key: {YOUR_AUTH_KEY}" \
    --header "X-Language: sr"
import requests
import json

url = 'https://tic.rs/api/organizer/v1/custom-payment-methods/1'
headers = {
  'X-Api-Key': '{YOUR_AUTH_KEY}',
  'X-Language': 'sr'
}

response = requests.request('DELETE', url, headers=headers)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://tic.rs/api/organizer/v1/custom-payment-methods/1';
$response = $client->delete(
    $url,
    [
        'headers' => [
            'X-Api-Key' => '{YOUR_AUTH_KEY}',
            'X-Language' => 'sr',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "message": "Custom payment method deleted"
}
 

Example response (404):


{
    "success": false,
    "message": "Custom payment method not found"
}
 

Request      

DELETE api/organizer/v1/custom-payment-methods/{id}

Headers

X-Api-Key      

Example: {YOUR_AUTH_KEY}

X-Language      

Example: sr

URL Parameters

id   integer   

Method ID. Example: 1

Response

Response Fields

success   boolean   

Whether the operation was successful.

message   string   

Response message.

Update sort order for multiple methods

requires authentication

Updates sort order for multiple custom payment methods at once.

Example request:
curl --request POST \
    "https://tic.rs/api/organizer/v1/custom-payment-methods/update-sort-order" \
    --header "X-Api-Key: {YOUR_AUTH_KEY}" \
    --header "X-Language: sr" \
    --header "Content-Type: application/json" \
    --data "{
    \"methods\": [
        {
            \"id\": 1,
            \"sort_order\": 0
        },
        {
            \"id\": 2,
            \"sort_order\": 1
        }
    ]
}"
import requests
import json

url = 'https://tic.rs/api/organizer/v1/custom-payment-methods/update-sort-order'
payload = {
    "methods": [
        {
            "id": 1,
            "sort_order": 0
        },
        {
            "id": 2,
            "sort_order": 1
        }
    ]
}
headers = {
  'X-Api-Key': '{YOUR_AUTH_KEY}',
  'X-Language': 'sr',
  'Content-Type': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://tic.rs/api/organizer/v1/custom-payment-methods/update-sort-order';
$response = $client->post(
    $url,
    [
        'headers' => [
            'X-Api-Key' => '{YOUR_AUTH_KEY}',
            'X-Language' => 'sr',
            'Content-Type' => 'application/json',
        ],
        'json' => \Symfony\Component\VarExporter\Internal\Hydrator::hydrate(
            $o = [
                clone (($p = &\Symfony\Component\VarExporter\Internal\Registry::$prototypes)['stdClass'] ?? \Symfony\Component\VarExporter\Internal\Registry::p('stdClass')),
                clone $p['stdClass'],
            ],
            null,
            [
                'stdClass' => [
                    'id' => [
                        1,
                        2,
                    ],
                    'sort_order' => [
                        0,
                        1,
                    ],
                ],
            ],
            [
                'methods' => [
                    $o[0],
                    $o[1],
                ],
            ],
            []
        ),
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "message": "Sort order updated"
}
 

Example response (422):


{"success": false, "message": "Validation error", "errors": {...}}
 

Request      

POST api/organizer/v1/custom-payment-methods/update-sort-order

Headers

X-Api-Key      

Example: {YOUR_AUTH_KEY}

X-Language      

Example: sr

Content-Type      

Example: application/json

Body Parameters

methods   string[]   

Array of objects with id and sort_order.

id   integer   

The id of an existing record in the organizer_custom_payment_methods table. Example: 16

sort_order   integer   

Must be at least 0. Example: 39

Response

Response Fields

success   boolean   

Whether the operation was successful.

message   string   

Response message.

MediaPartner API

Endpoints for media partners.

Rate limit: 60 requests/minute.

Events

requires authentication

Returns a paginated list of all published events with ticket sales (booking_type_id = 4). Each event object includes basic information, publication status, city, event type, venue, currency, categories, languages, and statistics (number of dates and bookings).

Example request:
curl --request GET \
    --get "https://tic.rs/api/mediapartner/v1/events?page=1&per_page=10&city_id=1&country_code=RS&date_from=2024-01-01&date_to=2024-12-31" \
    --header "X-Api-Key: {YOUR_AUTH_KEY}" \
    --header "X-Language: sr"
import requests
import json

url = 'https://tic.rs/api/mediapartner/v1/events'
params = {
  'page': '1',
  'per_page': '10',
  'city_id': '1',
  'country_code': 'RS',
  'date_from': '2024-01-01',
  'date_to': '2024-12-31',
}
headers = {
  'X-Api-Key': '{YOUR_AUTH_KEY}',
  'X-Language': 'sr'
}

response = requests.request('GET', url, headers=headers, params=params)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://tic.rs/api/mediapartner/v1/events';
$response = $client->get(
    $url,
    [
        'headers' => [
            'X-Api-Key' => '{YOUR_AUTH_KEY}',
            'X-Language' => 'sr',
        ],
        'query' => [
            'page' => '1',
            'per_page' => '10',
            'city_id' => '1',
            'country_code' => 'RS',
            'date_from' => '2024-01-01',
            'date_to' => '2024-12-31',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 60
x-ratelimit-remaining: 26
access-control-allow-origin: *
 

{
    "data": [
        {
            "uuid": "qJrNencO",
            "name": "Ruslan Muhtarov. Snimanje stand-up koncerta",
            "description": "Ruslan Muhtarov. Snimanje stand-up koncerta",
            "created_at": "2024-11-08T22:03:37+01:00",
            "updated_at": "2025-05-18T17:47:31+02:00",
            "geo": {
                "city": {
                    "id": 1,
                    "name": "Beograd"
                },
                "country": {
                    "id": 1,
                    "code": "rs",
                    "name": "Srbija"
                },
                "place": {
                    "id": 89,
                    "name": "Prostor Miljenko Dereta",
                    "address": "Добрачина 55, Београд 11000, Сербия",
                    "city_id": 1
                }
            },
            "event_type": {
                "id": null,
                "name": null
            },
            "currency": {
                "id": 1,
                "code": "RSD"
            },
            "is_published": true,
            "organizer_publish_status": true,
            "has_future_dates": false,
            "calendars_count": 2,
            "reservations_count": 52,
            "is_available": true,
            "categories": [
                {
                    "id": 13,
                    "name": "Stand-up"
                },
                {
                    "id": 18,
                    "name": "Koncerti"
                },
                {
                    "id": 29,
                    "name": "Za odrasle"
                },
                {
                    "id": 33,
                    "name": "Zabava"
                }
            ],
            "languages": [
                {
                    "id": 1,
                    "name": "Русский",
                    "code": "ru"
                }
            ],
            "calendar": [
                {
                    "date_start": "2024-12-07T21:00:28+01:00",
                    "date_end": "2024-12-07T22:30:49+01:00",
                    "is_available": true,
                    "tickets": [
                        {
                            "name": " ",
                            "price": 1800,
                            "currency_code": "RSD",
                            "is_available": true
                        }
                    ]
                },
                {
                    "date_start": "2024-12-07T18:30:00+01:00",
                    "date_end": "2024-12-07T20:00:00+01:00",
                    "is_available": false,
                    "tickets": [
                        {
                            "name": " ",
                            "price": 1800,
                            "currency_code": "RSD",
                            "is_available": false
                        }
                    ]
                }
            ],
            "url": {
                "lite": "https://qqxyvuln.tic.rs/sr/qJrNencO?utm_source=mediapartner&utm_medium=api&utm_campaign=event&utm_content=subdomain&utm_term=AbXPw3fr",
                "public": "https://tic.rs/sr/beograd/events/stendap-13/ruslan-mukhtarov-filming-of-a-stand-up-concert-233?utm_source=mediapartner&utm_medium=api&utm_campaign=event&utm_content=public&utm_term=AbXPw3fr"
            }
        }
    ],
    "links": {
        "first": "https://tic.rs/api/mediapartner/v1/events?page=1",
        "last": "https://tic.rs/api/mediapartner/v1/events?page=1",
        "prev": null,
        "next": null
    },
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 1,
        "links": [
            {
                "url": null,
                "label": "« Prethodni",
                "active": false
            },
            {
                "url": "https://tic.rs/api/mediapartner/v1/events?page=1",
                "label": "1",
                "active": true
            },
            {
                "url": null,
                "label": "Sledeći »",
                "active": false
            }
        ],
        "path": "https://tic.rs/api/mediapartner/v1/events",
        "per_page": 10,
        "to": 1,
        "total": 1
    }
}
 

Example response (401, Authentication failed):


{
    "message": "Invalid or inactive API key"
}
 

Request      

GET api/mediapartner/v1/events

Headers

X-Api-Key      

Example: {YOUR_AUTH_KEY}

X-Language      

Example: sr

Query Parameters

page   integer  optional  

The page number. Example: 1

per_page   integer  optional  

Number of results per page. Maximum: 50. Example: 10

city_id   integer  optional  

Filter events by city ID. Example: 1

country_code   string  optional  

Filter events by country code (e.g. RS, US, RU). Example: RS

date_from   string  optional  

Filter events by start date (YYYY-MM-DD format). Default: today. Example: 2024-01-01

date_to   string  optional  

Filter events by end date (YYYY-MM-DD format). Default: no limit. Example: 2024-12-31

Response

Response Fields

data   object   
uuid   string   

Unique identifier (UUID) of the event.

name   string   

Name of the event.

description   string   

Description of the event.

created_at   string   

Event creation timestamp (ISO 8601 format).

updated_at   string   

Event last update timestamp (ISO 8601 format).

geo   object   

Geographical information about the event.

city   object   

City where the event takes place.

id   integer   

City ID.

name   string   

City name.

country   object   

Country where the event takes place.

id   integer   

Country ID.

code   string   

Country code (e.g. RS, US, RU).

name   string   

Country name.

place   object   

Venue where the event is held.

id   integer   

Place ID.

name   string   

Place name.

address   string   

Full address of the place.

city_id   integer   

City ID where the place is located.

event_type   object   

Type of the event.

id   integer   

Event type ID.

name   string   

Event type name.

currency   object   

Currency used for ticket sales.

id   integer   

Currency ID.

code   string   

Currency code (e.g. RSD, EUR).

is_published   boolean   

Whether the event is publicly published.

organizer_publish_status   boolean   

Whether the organizer enabled publishing.

has_future_dates   boolean   

Whether the event has any future scheduled dates.

calendars_count   integer   

Number of scheduled dates for the event.

reservations_count   integer   

Number of reservations made for this event.

categories[]   object   

List of categories associated with the event.

categories   object   
id   integer   

Category ID.

name   string   

Category name.

languages[]   object   

List of supported languages for the event.

languages   object   
id   integer   

Language ID.

name   string   

Language name.

code   string   

Language code (e.g. sr, en, ru).

is_available   boolean   

Whether the event has any available tickets.

calendar[]   object   

List of event dates and tickets.

calendar   object   
date_start   string   

Start date and time of the event (ISO 8601 format).

date_end   string   

End date and time of the event (ISO 8601 format).

is_available   boolean   

Whether this date has any available tickets.

tickets[]   object   

List of available tickets for this date.

tickets   object   
name   string   

Ticket category name.

price   integer   

Ticket price in euro cents.

currency_code   string   

Currency code for the ticket price (e.g. RSD, EUR).

is_available   boolean   

Whether this ticket type is available for purchase.

url   object   

URLs for event pages with partner tracking.

subdomain   string   

URL to event page on organizer's subdomain with UTM parameters.

tic_rs   string   

URL to event page on tic.rs with UTM parameters.

Statistics

requires authentication

Returns statistics including unique users, event views, ticket clicks, purchases, and purchase amounts with breakdown by days and events.

Rate limit: 1 request per minute per organizer.

Example request:
curl --request GET \
    --get "https://tic.rs/api/mediapartner/v1/statistics?start_date=2024-01-01&end_date=2024-01-31&event_signature=ABC123&utm_filter=mediapartner" \
    --header "X-Api-Key: {YOUR_AUTH_KEY}" \
    --header "X-Language: sr"
import requests
import json

url = 'https://tic.rs/api/mediapartner/v1/statistics'
params = {
  'start_date': '2024-01-01',
  'end_date': '2024-01-31',
  'event_signature': 'ABC123',
  'utm_filter': 'mediapartner',
}
headers = {
  'X-Api-Key': '{YOUR_AUTH_KEY}',
  'X-Language': 'sr'
}

response = requests.request('GET', url, headers=headers, params=params)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://tic.rs/api/mediapartner/v1/statistics';
$response = $client->get(
    $url,
    [
        'headers' => [
            'X-Api-Key' => '{YOUR_AUTH_KEY}',
            'X-Language' => 'sr',
        ],
        'query' => [
            'start_date' => '2024-01-01',
            'end_date' => '2024-01-31',
            'event_signature' => 'ABC123',
            'utm_filter' => 'mediapartner',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 1
x-ratelimit-remaining: 0
x-ratelimit-reset: 1776162086
access-control-allow-origin: *
 

{
    "views": 0,
    "clicks_buy": 0,
    "orders": 0,
    "order_sum": 0,
    "unique_events": 0,
    "daily_breakdown": [],
    "event_breakdown": []
}
 

Example response (401, Authentication failed):


{
    "message": "Invalid or inactive API key"
}
 

Request      

GET api/mediapartner/v1/statistics

Headers

X-Api-Key      

Example: {YOUR_AUTH_KEY}

X-Language      

Example: sr

Query Parameters

start_date   string  optional  

Start date for statistics (YYYY-MM-DD format). Example: 2024-01-01

end_date   string  optional  

End date for statistics (YYYY-MM-DD format). Example: 2024-01-31

event_signature   string  optional  

Filter by specific event signature. Example: ABC123

utm_filter   string  optional  

Filter by UTM parameter value. Example: mediapartner

Response

Response Fields

data   object   

Statistics data.

views   integer   

Number of unique users who viewed events.

clicks   integer   

Number of unique users who clicked "buy ticket".

orders   integer   

Number of unique users who made purchases.

order_sum   number   

Total sum of purchases.

unique_events   integer   

Number of unique events with activity.

daily_breakdown[]   object   

Daily statistics breakdown.

daily_breakdown   object   
date   string   

Date in YYYY-MM-DD format.

views   integer   

Views for this date.

clicks   integer   

Clicks for this date.

orders   integer   

Orders for this date.

order_sum   number   

Order sum for this date.

event_breakdown[]   object   

Event statistics breakdown.

event_breakdown   object   
event_signature   string   

Event signature.

event_name   string   

Event name.

views   integer   

Views for this event.

clicks   integer   

Clicks for this event.

orders   integer   

Orders for this event.

order_sum   number   

Order sum for this event.

Organizer API

Endpoints for organizers.

Rate limit: 60 requests/minute.

Get metadata for event creation form

requires authentication

Returns reference data needed for creating events: cities, event types, categories, languages, currencies.

Example request:
curl --request GET \
    --get "https://tic.rs/api/organizer/v1/events/metadata" \
    --header "X-Api-Key: {YOUR_AUTH_KEY}" \
    --header "X-Language: sr"
import requests
import json

url = 'https://tic.rs/api/organizer/v1/events/metadata'
headers = {
  'X-Api-Key': '{YOUR_AUTH_KEY}',
  'X-Language': 'sr'
}

response = requests.request('GET', url, headers=headers)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://tic.rs/api/organizer/v1/events/metadata';
$response = $client->get(
    $url,
    [
        'headers' => [
            'X-Api-Key' => '{YOUR_AUTH_KEY}',
            'X-Language' => 'sr',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{"success": true, "data": {...}}
 

Request      

GET api/organizer/v1/events/metadata

Headers

X-Api-Key      

Example: {YOUR_AUTH_KEY}

X-Language      

Example: sr

Response

Response Fields

cities[]   object   

List of available cities.

cities   object   
id   integer   

City ID.

name   string   

City name.

event_types[]   object   

List of event types grouped by categories.

categories[]   object   

List of event categories grouped by parent categories.

languages[]   object   

List of available languages.

languages   object   
id   integer   

Language ID.

name   string   

Language name.

currencies[]   object   

List of available currencies.

currencies   object   
id   integer   

Currency ID.

code   string   

Currency code (e.g. RSD, EUR).

Get places for a city

requires authentication

Returns list of places (venues) for a specific city.

Example request:
curl --request GET \
    --get "https://tic.rs/api/organizer/v1/events/places?city_id=1" \
    --header "X-Api-Key: {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --data "{
    \"city_id\": 16
}"
import requests
import json

url = 'https://tic.rs/api/organizer/v1/events/places'
payload = {
    "city_id": 16
}
params = {
  'city_id': '1',
}
headers = {
  'X-Api-Key': '{YOUR_AUTH_KEY}',
  'Content-Type': 'application/json'
}

response = requests.request('GET', url, headers=headers, json=payload, params=params)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://tic.rs/api/organizer/v1/events/places';
$response = $client->get(
    $url,
    [
        'headers' => [
            'X-Api-Key' => '{YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
        ],
        'query' => [
            'city_id' => '1',
        ],
        'json' => [
            'city_id' => 16,
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{"success": true, "data": [...]}
 

Request      

GET api/organizer/v1/events/places

Headers

X-Api-Key      

Example: {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Query Parameters

city_id   integer   

City ID. Example: 1

Body Parameters

city_id   integer   

The id of an existing record in the cities table. Example: 16

Response

Response Fields

data[]   object   

List of places.

data   object   
id   integer   

Place ID.

name   string   

Place name.

address   string   

Place address.

Search places using Google Places Autocomplete

requires authentication

Returns list of places from Google Places API based on search query.

Example request:
curl --request GET \
    --get "https://tic.rs/api/organizer/v1/events/search-places?query=%22Belgrade%22&language=%22sr%22" \
    --header "X-Api-Key: {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --data "{
    \"query\": \"b\",
    \"language\": \"ng\"
}"
import requests
import json

url = 'https://tic.rs/api/organizer/v1/events/search-places'
payload = {
    "query": "b",
    "language": "ng"
}
params = {
  'query': '"Belgrade"',
  'language': '"sr"',
}
headers = {
  'X-Api-Key': '{YOUR_AUTH_KEY}',
  'Content-Type': 'application/json'
}

response = requests.request('GET', url, headers=headers, json=payload, params=params)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://tic.rs/api/organizer/v1/events/search-places';
$response = $client->get(
    $url,
    [
        'headers' => [
            'X-Api-Key' => '{YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
        ],
        'query' => [
            'query' => '"Belgrade"',
            'language' => '"sr"',
        ],
        'json' => [
            'query' => 'b',
            'language' => 'ng',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{"success": true, "data": [...]}
 

Request      

GET api/organizer/v1/events/search-places

Headers

X-Api-Key      

Example: {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Query Parameters

query   string   

Search query. Example: "Belgrade"

language   string  optional  

optional Language code for results. Example: "sr"

Body Parameters

query   string   

Must be at least 2 characters. Must not be greater than 255 characters. Example: b

language   string  optional  

Must be 2 characters. Example: ng

Response

Response Fields

success   boolean   

Whether the operation was successful.

data[]   object   

List of place predictions.

data   object   
place_id   string   

Google Place ID.

description   string   

Place description (formatted address).

structured_formatting   object   

Structured formatting.

Get place details by Google Place ID

requires authentication

Returns detailed information about a place from Google Places API.

Example request:
curl --request GET \
    --get "https://tic.rs/api/organizer/v1/events/place-details?place_id=%22ChIJ...%22&language=%22sr%22" \
    --header "X-Api-Key: {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --data "{
    \"place_id\": \"architecto\",
    \"language\": \"ng\"
}"
import requests
import json

url = 'https://tic.rs/api/organizer/v1/events/place-details'
payload = {
    "place_id": "architecto",
    "language": "ng"
}
params = {
  'place_id': '"ChIJ..."',
  'language': '"sr"',
}
headers = {
  'X-Api-Key': '{YOUR_AUTH_KEY}',
  'Content-Type': 'application/json'
}

response = requests.request('GET', url, headers=headers, json=payload, params=params)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://tic.rs/api/organizer/v1/events/place-details';
$response = $client->get(
    $url,
    [
        'headers' => [
            'X-Api-Key' => '{YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
        ],
        'query' => [
            'place_id' => '"ChIJ..."',
            'language' => '"sr"',
        ],
        'json' => [
            'place_id' => 'architecto',
            'language' => 'ng',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{"success": true, "data": {...}}
 

Request      

GET api/organizer/v1/events/place-details

Headers

X-Api-Key      

Example: {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Query Parameters

place_id   string   

Google Place ID. Example: "ChIJ..."

language   string  optional  

optional Language code for results. Example: "sr"

Body Parameters

place_id   string   

Example: architecto

language   string  optional  

Must be 2 characters. Example: ng

Response

Response Fields

success   boolean   

Whether the operation was successful.

data   object   

Place details.

place_id   string   

Google Place ID.

name   string   

Place name.

formatted_address   string   

Formatted address.

geometry   object   

Geometry data with location.

address_components   string[]   

Address components.

Events

requires authentication

Returns a paginated list of events created by the organizer. Each event object includes basic information, publication status, city, event type, venue, currency, categories, languages, and statistics (number of dates and bookings).

Example request:
curl --request GET \
    --get "https://tic.rs/api/organizer/v1/events?page=1&per_page=10&city_id=1" \
    --header "X-Api-Key: {YOUR_AUTH_KEY}" \
    --header "X-Language: sr"
import requests
import json

url = 'https://tic.rs/api/organizer/v1/events'
params = {
  'page': '1',
  'per_page': '10',
  'city_id': '1',
}
headers = {
  'X-Api-Key': '{YOUR_AUTH_KEY}',
  'X-Language': 'sr'
}

response = requests.request('GET', url, headers=headers, params=params)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://tic.rs/api/organizer/v1/events';
$response = $client->get(
    $url,
    [
        'headers' => [
            'X-Api-Key' => '{YOUR_AUTH_KEY}',
            'X-Language' => 'sr',
        ],
        'query' => [
            'page' => '1',
            'per_page' => '10',
            'city_id' => '1',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 60
x-ratelimit-remaining: 53
access-control-allow-origin: *
 

{
    "data": [
        {
            "id": 2617,
            "uuid": "WPWLVQ",
            "name": "Odit et.",
            "created_at": "2025-12-29T12:13:28+01:00",
            "updated_at": "2026-01-29T02:36:55+01:00",
            "city": {
                "id": 1,
                "name": "Beograd"
            },
            "event_type": {
                "id": 22,
                "name": "Vebinar"
            },
            "currency": {
                "id": 1,
                "code": "RSD"
            },
            "place": {
                "id": 2,
                "name": "Ben Akiba",
                "address": "Браће Крсмановић 6, Београд 11000, Сербия"
            },
            "organizer_legal_entity": null,
            "organizer_legal_entities": [],
            "is_published": false,
            "organizer_publish_status": false,
            "has_future_dates": true,
            "calendars_count": 9,
            "reservations_count": 1,
            "categories": [
                {
                    "id": 35,
                    "name": "Obrazovanje"
                }
            ],
            "languages": [
                {
                    "id": 3,
                    "name": "Srpski"
                }
            ],
            "event_url": "oblak.evenda.io/WPWLVQ"
        },
        {
            "id": 2577,
            "uuid": "TCPSCQLD",
            "name": "Enim non facere tempora.",
            "created_at": "2025-12-05T11:53:07+01:00",
            "updated_at": "2026-01-29T02:36:50+01:00",
            "city": {
                "id": 1,
                "name": "Beograd"
            },
            "event_type": {
                "id": 165,
                "name": "Banja"
            },
            "currency": {
                "id": 1,
                "code": "RSD"
            },
            "place": {
                "id": 2,
                "name": "Ben Akiba",
                "address": "Браће Крсмановић 6, Београд 11000, Сербия"
            },
            "organizer_legal_entity": null,
            "organizer_legal_entities": [],
            "is_published": false,
            "organizer_publish_status": false,
            "has_future_dates": true,
            "calendars_count": 1,
            "reservations_count": 7,
            "categories": [
                {
                    "id": 39,
                    "name": "Sastanci"
                }
            ],
            "languages": [
                {
                    "id": 1,
                    "name": "Русский"
                }
            ],
            "event_url": "oblak.evenda.io/TCPSCQLD"
        },
        {
            "id": 2538,
            "uuid": "UJWVLXJ",
            "name": "Distinctio eum doloremque id aut.",
            "created_at": "2025-11-13T23:25:05+01:00",
            "updated_at": "2025-11-13T23:25:17+01:00",
            "city": {
                "id": 1,
                "name": "Beograd"
            },
            "event_type": {
                "id": 2,
                "name": "Koncert"
            },
            "currency": {
                "id": 1,
                "code": "RSD"
            },
            "place": {
                "id": 58,
                "name": "Фонтан у гостиницы Москва",
                "address": "Теразијска чесма, Теразије, Београд 11000, Сербия"
            },
            "organizer_legal_entity": null,
            "organizer_legal_entities": [],
            "is_published": false,
            "organizer_publish_status": false,
            "has_future_dates": false,
            "calendars_count": 0,
            "reservations_count": 0,
            "categories": [
                {
                    "id": 18,
                    "name": "Koncerti"
                }
            ],
            "languages": [
                {
                    "id": 5,
                    "name": "Türkçe"
                }
            ],
            "event_url": "oblak.evenda.io/UJWVLXJ"
        },
        {
            "id": 2537,
            "uuid": "BEWTNNO",
            "name": "Quia officia est.",
            "created_at": "2025-11-13T22:32:19+01:00",
            "updated_at": "2025-11-13T22:32:30+01:00",
            "city": {
                "id": 1,
                "name": "Beograd"
            },
            "event_type": {
                "id": 2,
                "name": "Koncert"
            },
            "currency": {
                "id": 1,
                "code": "RSD"
            },
            "place": {
                "id": 58,
                "name": "Фонтан у гостиницы Москва",
                "address": "Теразијска чесма, Теразије, Београд 11000, Сербия"
            },
            "organizer_legal_entity": null,
            "organizer_legal_entities": [],
            "is_published": false,
            "organizer_publish_status": false,
            "has_future_dates": false,
            "calendars_count": 0,
            "reservations_count": 0,
            "categories": [
                {
                    "id": 18,
                    "name": "Koncerti"
                }
            ],
            "languages": [
                {
                    "id": 5,
                    "name": "Türkçe"
                }
            ],
            "event_url": "oblak.evenda.io/BEWTNNO"
        },
        {
            "id": 2536,
            "uuid": "NTLTCVIP",
            "name": "Repudiandae laboriosam est.",
            "created_at": "2025-11-13T22:32:00+01:00",
            "updated_at": "2025-11-13T22:32:12+01:00",
            "city": {
                "id": 1,
                "name": "Beograd"
            },
            "event_type": {
                "id": 2,
                "name": "Koncert"
            },
            "currency": {
                "id": 1,
                "code": "RSD"
            },
            "place": {
                "id": 58,
                "name": "Фонтан у гостиницы Москва",
                "address": "Теразијска чесма, Теразије, Београд 11000, Сербия"
            },
            "organizer_legal_entity": null,
            "organizer_legal_entities": [],
            "is_published": false,
            "organizer_publish_status": false,
            "has_future_dates": false,
            "calendars_count": 0,
            "reservations_count": 0,
            "categories": [
                {
                    "id": 18,
                    "name": "Koncerti"
                }
            ],
            "languages": [
                {
                    "id": 5,
                    "name": "Türkçe"
                }
            ],
            "event_url": "oblak.evenda.io/NTLTCVIP"
        },
        {
            "id": 2535,
            "uuid": "SGIOGL",
            "name": "Recusandae modi rerum ex.",
            "created_at": "2025-11-13T22:30:05+01:00",
            "updated_at": "2025-11-13T22:30:26+01:00",
            "city": {
                "id": 1,
                "name": "Beograd"
            },
            "event_type": {
                "id": 2,
                "name": "Koncert"
            },
            "currency": {
                "id": 1,
                "code": "RSD"
            },
            "place": {
                "id": 58,
                "name": "Фонтан у гостиницы Москва",
                "address": "Теразијска чесма, Теразије, Београд 11000, Сербия"
            },
            "organizer_legal_entity": null,
            "organizer_legal_entities": [],
            "is_published": false,
            "organizer_publish_status": false,
            "has_future_dates": false,
            "calendars_count": 0,
            "reservations_count": 0,
            "categories": [
                {
                    "id": 18,
                    "name": "Koncerti"
                }
            ],
            "languages": [
                {
                    "id": 5,
                    "name": "Türkçe"
                }
            ],
            "event_url": "oblak.evenda.io/SGIOGL"
        },
        {
            "id": 2534,
            "uuid": "RZYHCT",
            "name": "Deserunt ducimus corrupti et.",
            "created_at": "2025-11-13T22:24:03+01:00",
            "updated_at": "2025-12-16T14:56:09+01:00",
            "city": {
                "id": 1,
                "name": "Beograd"
            },
            "event_type": {
                "id": 2,
                "name": "Koncert"
            },
            "currency": {
                "id": 1,
                "code": "RSD"
            },
            "place": {
                "id": 58,
                "name": "Фонтан у гостиницы Москва",
                "address": "Теразијска чесма, Теразије, Београд 11000, Сербия"
            },
            "organizer_legal_entity": null,
            "organizer_legal_entities": [],
            "is_published": false,
            "organizer_publish_status": false,
            "has_future_dates": false,
            "calendars_count": 0,
            "reservations_count": 0,
            "categories": [
                {
                    "id": 18,
                    "name": "Koncerti"
                }
            ],
            "languages": [
                {
                    "id": 5,
                    "name": "Türkçe"
                }
            ],
            "event_url": "oblak.evenda.io/RZYHCT"
        },
        {
            "id": 2530,
            "uuid": "FTMGOS",
            "name": "Corporis nesciunt ut ratione.",
            "created_at": "2025-11-13T22:13:25+01:00",
            "updated_at": "2025-11-14T17:08:27+01:00",
            "city": {
                "id": 1,
                "name": "Beograd"
            },
            "event_type": {
                "id": 2,
                "name": "Koncert"
            },
            "currency": {
                "id": 1,
                "code": "RSD"
            },
            "place": {
                "id": 565,
                "name": "Парк републике Српске",
                "address": "Парк републике Српске, Бродарска 28, Београд, Сербия"
            },
            "organizer_legal_entity": null,
            "organizer_legal_entities": [],
            "is_published": false,
            "organizer_publish_status": false,
            "has_future_dates": false,
            "calendars_count": 2,
            "reservations_count": 0,
            "categories": [
                {
                    "id": 18,
                    "name": "Koncerti"
                }
            ],
            "languages": [
                {
                    "id": 5,
                    "name": "Türkçe"
                }
            ],
            "event_url": "oblak.evenda.io/FTMGOS"
        },
        {
            "id": 2412,
            "uuid": "BMZEZC",
            "name": "Aut molestiae sunt.",
            "created_at": "2025-09-08T22:24:53+02:00",
            "updated_at": "2025-11-17T22:39:19+01:00",
            "city": {
                "id": 1,
                "name": "Beograd"
            },
            "event_type": {
                "id": 2,
                "name": "Koncert"
            },
            "currency": {
                "id": 1,
                "code": "RSD"
            },
            "place": {
                "id": 577,
                "name": "Точка",
                "address": "Q9QW+G8 Белград, Сербия"
            },
            "organizer_legal_entity": null,
            "organizer_legal_entities": [],
            "is_published": false,
            "organizer_publish_status": false,
            "has_future_dates": false,
            "calendars_count": 2,
            "reservations_count": 5,
            "categories": [
                {
                    "id": 18,
                    "name": "Koncerti"
                }
            ],
            "languages": [
                {
                    "id": 4,
                    "name": "Deutsch"
                }
            ],
            "event_url": "oblak.evenda.io/BMZEZC"
        },
        {
            "id": 2358,
            "uuid": "EXQZTPPI",
            "name": "Et ipsam dolorem et.",
            "created_at": "2025-08-07T02:43:03+02:00",
            "updated_at": "2025-08-07T02:50:31+02:00",
            "city": {
                "id": 1,
                "name": "Beograd"
            },
            "event_type": {
                "id": 2,
                "name": "Koncert"
            },
            "currency": {
                "id": 1,
                "code": "RSD"
            },
            "place": {
                "id": 58,
                "name": "Фонтан у гостиницы Москва",
                "address": "Теразијска чесма, Теразије, Београд 11000, Сербия"
            },
            "organizer_legal_entity": null,
            "organizer_legal_entities": [],
            "is_published": false,
            "organizer_publish_status": false,
            "has_future_dates": false,
            "calendars_count": 3,
            "reservations_count": 0,
            "categories": [
                {
                    "id": 18,
                    "name": "Koncerti"
                }
            ],
            "languages": [
                {
                    "id": 5,
                    "name": "Türkçe"
                }
            ],
            "event_url": "oblak.evenda.io/EXQZTPPI"
        }
    ],
    "links": {
        "first": "https://tic.rs/api/organizer/v1/events?page=1",
        "last": "https://tic.rs/api/organizer/v1/events?page=2",
        "prev": null,
        "next": "https://tic.rs/api/organizer/v1/events?page=2"
    },
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 2,
        "links": [
            {
                "url": null,
                "label": "« Prethodni",
                "active": false
            },
            {
                "url": "https://tic.rs/api/organizer/v1/events?page=1",
                "label": "1",
                "active": true
            },
            {
                "url": "https://tic.rs/api/organizer/v1/events?page=2",
                "label": "2",
                "active": false
            },
            {
                "url": "https://tic.rs/api/organizer/v1/events?page=2",
                "label": "Sledeći »",
                "active": false
            }
        ],
        "path": "https://tic.rs/api/organizer/v1/events",
        "per_page": 10,
        "to": 10,
        "total": 16
    }
}
 

Example response (401, Authentication failed):


{
    "message": "Invalid or inactive API key"
}
 

Request      

GET api/organizer/v1/events

Headers

X-Api-Key      

Example: {YOUR_AUTH_KEY}

X-Language      

Example: sr

Query Parameters

page   integer  optional  

The page number. Example: 1

per_page   integer  optional  

Number of results per page. Maximum: 50. Example: 10

city_id   integer  optional  

Filter events by city ID. Example: 1

Response

Response Fields

data   object   
uuid   string   

Unique identifier (UUID) of the event.

name   string   

Name of the event.

created_at   string   

Event creation timestamp (ISO 8601 format).

updated_at   string   

Event last update timestamp (ISO 8601 format).

city   object   

City where the event takes place.

id   integer   

City ID.

name   string   

City name.

event_type   object   

Type of the event.

id   integer   

Event type ID.

name   string   

Event type name.

currency   object   

Currency used for ticket sales.

id   integer   

Currency ID.

code   string   

Currency code (e.g. RSD, EUR).

place   object   

Venue where the event is held.

id   integer   

Place ID.

name   string   

Place name.

address   string   

Full address of the place.

is_published   boolean   

Whether the event is publicly published.

organizer_publish_status   boolean   

Whether the organizer enabled publishing.

has_future_dates   boolean   

Whether the event has any future scheduled dates.

calendars_count   integer   

Number of scheduled dates for the event.

reservations_count   integer   

Number of reservations made for this event.

categories[]   object   

List of categories associated with the event.

categories   object   
id   integer   

Category ID.

name   string   

Category name.

languages[]   object   

List of supported languages for the event.

languages   object   
id   integer   

Language ID.

name   string   

Language name.

Get events statistics

requires authentication

Returns counts of events by status: all, drafts, published, archive.

Example request:
curl --request GET \
    --get "https://tic.rs/api/organizer/v1/events/stats" \
    --header "X-Api-Key: {YOUR_AUTH_KEY}" \
    --header "X-Language: sr"
import requests
import json

url = 'https://tic.rs/api/organizer/v1/events/stats'
headers = {
  'X-Api-Key': '{YOUR_AUTH_KEY}',
  'X-Language': 'sr'
}

response = requests.request('GET', url, headers=headers)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://tic.rs/api/organizer/v1/events/stats';
$response = $client->get(
    $url,
    [
        'headers' => [
            'X-Api-Key' => '{YOUR_AUTH_KEY}',
            'X-Language' => 'sr',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "data": {
        "all": 10,
        "drafts": 3,
        "published": 7,
        "archive": 2
    }
}
 

Request      

GET api/organizer/v1/events/stats

Headers

X-Api-Key      

Example: {YOUR_AUTH_KEY}

X-Language      

Example: sr

Response

Response Fields

all   integer   

Count of all non-archived events.

drafts   integer   

Count of draft events.

published   integer   

Count of published events.

archive   integer   

Count of archived events.

Get single event

requires authentication

Returns detailed information about a specific event.

Example request:
curl --request GET \
    --get "https://tic.rs/api/organizer/v1/events/abc123" \
    --header "X-Api-Key: {YOUR_AUTH_KEY}" \
    --header "X-Language: sr"
import requests
import json

url = 'https://tic.rs/api/organizer/v1/events/abc123'
headers = {
  'X-Api-Key': '{YOUR_AUTH_KEY}',
  'X-Language': 'sr'
}

response = requests.request('GET', url, headers=headers)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://tic.rs/api/organizer/v1/events/abc123';
$response = $client->get(
    $url,
    [
        'headers' => [
            'X-Api-Key' => '{YOUR_AUTH_KEY}',
            'X-Language' => 'sr',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{"success": true, "data": {...}}
 

Example response (404):


{
    "success": false,
    "message": "Event not found"
}
 

Request      

GET api/organizer/v1/events/{uuid}

Headers

X-Api-Key      

Example: {YOUR_AUTH_KEY}

X-Language      

Example: sr

URL Parameters

uuid   string   

Event UUID. Example: abc123

Response

Response Fields

success   boolean   

Whether the operation was successful.

data   object   

Event data.

Create a new event

requires authentication

Creates a new event for the authenticated organizer.

Example request:
curl --request POST \
    "https://tic.rs/api/organizer/v1/events" \
    --header "X-Api-Key: {YOUR_AUTH_KEY}" \
    --header "X-Language: sr" \
    --header "Content-Type: application/json" \
    --data "{
    \"name\": \"\\\"Концерт в Белграде\\\"\",
    \"event_type_id\": 1,
    \"city_id\": 1,
    \"place_id\": 1,
    \"venue\": {
        \"place_id\": \"architecto\",
        \"name\": \"n\",
        \"formatted_address\": \"g\",
        \"city\": \"z\",
        \"region\": \"m\",
        \"postal_code\": \"iyvdljnikhwaykcm\",
        \"country\": \"y\",
        \"country_code\": \"uw\",
        \"lat\": -89,
        \"lng\": -180,
        \"map_provider\": \"mapbox\",
        \"meeting_point_note\": \"v\"
    },
    \"currency_id\": 1,
    \"event_categories\": [
        1,
        2
    ],
    \"event_languages\": [
        1,
        2
    ],
    \"description\": \"Eius et animi quos velit et.\",
    \"age_limit\": 18,
    \"dog_friendly\": false,
    \"is_international\": false,
    \"organizer_legal_entity_id\": 16,
    \"contacts\": {
        \"phone\": \"n\",
        \"phone_viber\": true,
        \"phone_whatsapp\": false,
        \"email\": \"[email protected]\",
        \"website\": \"l\",
        \"instagram\": \"j\",
        \"telegram\": \"n\"
    },
    \"checkout_contact_fields\": {
        \"full_name\": \"optional\",
        \"phone\": \"optional\",
        \"telegram_username\": \"off\"
    },
    \"require_auth_before_purchase\": true,
    \"payment_options\": [
        {
            \"type\": \"integrated\",
            \"ref_id\": 16,
            \"is_enabled\": false
        }
    ]
}"
import requests
import json

url = 'https://tic.rs/api/organizer/v1/events'
payload = {
    "name": "\"Концерт в Белграде\"",
    "event_type_id": 1,
    "city_id": 1,
    "place_id": 1,
    "venue": {
        "place_id": "architecto",
        "name": "n",
        "formatted_address": "g",
        "city": "z",
        "region": "m",
        "postal_code": "iyvdljnikhwaykcm",
        "country": "y",
        "country_code": "uw",
        "lat": -89,
        "lng": -180,
        "map_provider": "mapbox",
        "meeting_point_note": "v"
    },
    "currency_id": 1,
    "event_categories": [
        1,
        2
    ],
    "event_languages": [
        1,
        2
    ],
    "description": "Eius et animi quos velit et.",
    "age_limit": 18,
    "dog_friendly": false,
    "is_international": false,
    "organizer_legal_entity_id": 16,
    "contacts": {
        "phone": "n",
        "phone_viber": true,
        "phone_whatsapp": false,
        "email": "[email protected]",
        "website": "l",
        "instagram": "j",
        "telegram": "n"
    },
    "checkout_contact_fields": {
        "full_name": "optional",
        "phone": "optional",
        "telegram_username": "off"
    },
    "require_auth_before_purchase": true,
    "payment_options": [
        {
            "type": "integrated",
            "ref_id": 16,
            "is_enabled": false
        }
    ]
}
headers = {
  'X-Api-Key': '{YOUR_AUTH_KEY}',
  'X-Language': 'sr',
  'Content-Type': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://tic.rs/api/organizer/v1/events';
$response = $client->post(
    $url,
    [
        'headers' => [
            'X-Api-Key' => '{YOUR_AUTH_KEY}',
            'X-Language' => 'sr',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'name' => '"Концерт в Белграде"',
            'event_type_id' => 1,
            'city_id' => 1,
            'place_id' => 1,
            'venue' => [
                'place_id' => 'architecto',
                'name' => 'n',
                'formatted_address' => 'g',
                'city' => 'z',
                'region' => 'm',
                'postal_code' => 'iyvdljnikhwaykcm',
                'country' => 'y',
                'country_code' => 'uw',
                'lat' => -89,
                'lng' => -180,
                'map_provider' => 'mapbox',
                'meeting_point_note' => 'v',
            ],
            'currency_id' => 1,
            'event_categories' => [
                1,
                2,
            ],
            'event_languages' => [
                1,
                2,
            ],
            'description' => 'Eius et animi quos velit et.',
            'age_limit' => 18,
            'dog_friendly' => false,
            'is_international' => false,
            'organizer_legal_entity_id' => 16,
            'contacts' => [
                'phone' => 'n',
                'phone_viber' => true,
                'phone_whatsapp' => false,
                'email' => '[email protected]',
                'website' => 'l',
                'instagram' => 'j',
                'telegram' => 'n',
            ],
            'checkout_contact_fields' => [
                'full_name' => 'optional',
                'phone' => 'optional',
                'telegram_username' => 'off',
            ],
            'require_auth_before_purchase' => true,
            'payment_options' => [
                [
                    'type' => 'integrated',
                    'ref_id' => 16,
                    'is_enabled' => false,
                ],
            ],
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (201):


{
    "success": true,
    "data": {
        "uuid": "..."
    }
}
 

Example response (422):


{"success": false, "message": "Validation error", "errors": {...}}
 

Request      

POST api/organizer/v1/events

Headers

X-Api-Key      

Example: {YOUR_AUTH_KEY}

X-Language      

Example: sr

Content-Type      

Example: application/json

Body Parameters

name   string   

Event name. Example: "Концерт в Белграде"

event_type_id   integer   

Event type ID. Example: 1

city_id   integer   

City ID. Example: 1

place_id   integer   

Place ID. Example: 1

venue   object  optional  

Новые поля места (venue).

place_id   string  optional  

Example: architecto

name   string  optional  

Google Place ID. Polje value ne sme biti veće od 255 karaktera. Example: n

formatted_address   string  optional  

venue_name. Polje value ne sme biti veće od 500 karaktera. Example: g

city   string  optional  

address_line. Polje value ne sme biti veće od 100 karaktera. Example: z

region   string  optional  

Polje value ne sme biti veće od 100 karaktera. Example: m

postal_code   string  optional  

Polje value ne sme biti veće od 20 karaktera. Example: iyvdljnikhwaykcm

country   string  optional  

Polje value ne sme biti veće od 100 karaktera. Example: y

country_code   string  optional  

Polje value mora imati 2 karaktera. Example: uw

lat   number  optional  

Polje value mora biti između -90 i 90. Example: -89

lng   number  optional  

Polje value mora biti između -180 i 180. Example: -180

map_provider   string  optional  

Example: mapbox

Must be one of:
  • google
  • mapbox
  • osm
  • none
meeting_point_note   string  optional  

Polje value ne sme biti veće od 500 karaktera. Example: v

currency_id   integer   

Currency ID. Example: 1

event_categories   string[]   

Array of category IDs.

event_languages   string[]   

Array of language IDs.

payment_options   object[]  optional  
type   string   

Example: integrated

Must be one of:
  • integrated
  • custom
ref_id   integer   

Example: 16

is_enabled   boolean  optional  

Example: false

description   string  optional  

optional Event description. Example: Eius et animi quos velit et.

age_limit   integer  optional  

optional Age limit. Example: 18

dog_friendly   boolean  optional  

optional Whether dogs are allowed. Example: false

is_international   boolean  optional  

optional Whether event is international. Example: false

organizer_legal_entity_id   integer  optional  

The id of an existing record in the organizer_legal_entities table. Example: 16

contacts   object  optional  
phone   string  optional  

Polje value ne sme biti veće od 50 karaktera. Example: n

phone_viber   boolean  optional  

Example: true

phone_whatsapp   boolean  optional  

Example: false

email   string  optional  

Polje value mora biti važeća adresa e-pošte. Polje value ne sme biti veće od 255 karaktera. Example: [email protected]

website   string  optional  

Polje value ne sme biti veće od 500 karaktera. Example: l

instagram   string  optional  

Polje value ne sme biti veće od 255 karaktera. Example: j

telegram   string  optional  

Polje value ne sme biti veće od 255 karaktera. Example: n

checkout_contact_fields   object  optional  
full_name   string  optional  

Example: optional

Must be one of:
  • off
  • optional
  • required
phone   string  optional  

Example: optional

Must be one of:
  • off
  • optional
  • required
telegram_username   string  optional  

Example: off

Must be one of:
  • off
  • optional
  • required
require_auth_before_purchase   boolean  optional  

Example: true

Response

Response Fields

success   boolean   

Whether the operation was successful.

data   object   

Created event data.

uuid   string   

Event UUID.

Update event

requires authentication

Updates an existing event.

Example request:
curl --request PUT \
    "https://tic.rs/api/organizer/v1/events/abc123" \
    --header "X-Api-Key: {YOUR_AUTH_KEY}" \
    --header "X-Language: sr" \
    --header "Content-Type: application/json" \
    --data "{
    \"name\": \"\\\"Concert\\\"\",
    \"event_type_id\": 1,
    \"event_format\": \"offline\",
    \"city_id\": 1,
    \"place_id\": 1,
    \"venue\": [
        \"architecto\"
    ],
    \"currency_id\": 1,
    \"event_categories\": [
        1,
        2
    ],
    \"event_languages\": [
        1,
        2
    ],
    \"description\": \"\\\"{\\\\\\\"blocks\\\\\\\":[...]}\\\"\",
    \"age_limit\": 18,
    \"dog_friendly\": false,
    \"is_international\": false,
    \"ticket_price\": 9,
    \"ticket_type\": \"free\",
    \"publish\": true,
    \"organizer_legal_entity_id\": 16,
    \"contacts\": {
        \"phone\": \"n\",
        \"phone_viber\": true,
        \"phone_whatsapp\": false,
        \"email\": \"[email protected]\",
        \"website\": \"l\",
        \"instagram\": \"j\",
        \"telegram\": \"n\"
    },
    \"checkout_contact_fields\": {
        \"full_name\": \"optional\",
        \"phone\": \"optional\",
        \"telegram_username\": \"off\"
    },
    \"require_auth_before_purchase\": true,
    \"payment_options\": [
        {
            \"type\": \"integrated\",
            \"ref_id\": 16,
            \"is_enabled\": false
        }
    ]
}"
import requests
import json

url = 'https://tic.rs/api/organizer/v1/events/abc123'
payload = {
    "name": "\"Concert\"",
    "event_type_id": 1,
    "event_format": "offline",
    "city_id": 1,
    "place_id": 1,
    "venue": [
        "architecto"
    ],
    "currency_id": 1,
    "event_categories": [
        1,
        2
    ],
    "event_languages": [
        1,
        2
    ],
    "description": "\"{\\\"blocks\\\":[...]}\"",
    "age_limit": 18,
    "dog_friendly": false,
    "is_international": false,
    "ticket_price": 9,
    "ticket_type": "free",
    "publish": true,
    "organizer_legal_entity_id": 16,
    "contacts": {
        "phone": "n",
        "phone_viber": true,
        "phone_whatsapp": false,
        "email": "[email protected]",
        "website": "l",
        "instagram": "j",
        "telegram": "n"
    },
    "checkout_contact_fields": {
        "full_name": "optional",
        "phone": "optional",
        "telegram_username": "off"
    },
    "require_auth_before_purchase": true,
    "payment_options": [
        {
            "type": "integrated",
            "ref_id": 16,
            "is_enabled": false
        }
    ]
}
headers = {
  'X-Api-Key': '{YOUR_AUTH_KEY}',
  'X-Language': 'sr',
  'Content-Type': 'application/json'
}

response = requests.request('PUT', url, headers=headers, json=payload)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://tic.rs/api/organizer/v1/events/abc123';
$response = $client->put(
    $url,
    [
        'headers' => [
            'X-Api-Key' => '{YOUR_AUTH_KEY}',
            'X-Language' => 'sr',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'name' => '"Concert"',
            'event_type_id' => 1,
            'event_format' => 'offline',
            'city_id' => 1,
            'place_id' => 1,
            'venue' => [
                'architecto',
            ],
            'currency_id' => 1,
            'event_categories' => [
                1,
                2,
            ],
            'event_languages' => [
                1,
                2,
            ],
            'description' => '"{\\"blocks\\":[...]}"',
            'age_limit' => 18,
            'dog_friendly' => false,
            'is_international' => false,
            'ticket_price' => 9,
            'ticket_type' => 'free',
            'publish' => true,
            'organizer_legal_entity_id' => 16,
            'contacts' => [
                'phone' => 'n',
                'phone_viber' => true,
                'phone_whatsapp' => false,
                'email' => '[email protected]',
                'website' => 'l',
                'instagram' => 'j',
                'telegram' => 'n',
            ],
            'checkout_contact_fields' => [
                'full_name' => 'optional',
                'phone' => 'optional',
                'telegram_username' => 'off',
            ],
            'require_auth_before_purchase' => true,
            'payment_options' => [
                [
                    'type' => 'integrated',
                    'ref_id' => 16,
                    'is_enabled' => false,
                ],
            ],
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{"success": true, "data": {...}}
 

Example response (404):


{
    "success": false,
    "message": "Event not found"
}
 

Example response (422):


{"success": false, "message": "Validation error", "errors": {...}}
 

Request      

PUT api/organizer/v1/events/{uuid}

Headers

X-Api-Key      

Example: {YOUR_AUTH_KEY}

X-Language      

Example: sr

Content-Type      

Example: application/json

URL Parameters

uuid   string   

Event UUID. Example: abc123

Body Parameters

name   string   

Event name. Example: "Concert"

event_type_id   integer  optional  

optional Event type ID. Example: 1

event_format   string  optional  

optional Event format (online/offline). Example: offline

city_id   integer  optional  

optional City ID. Example: 1

place_id   integer  optional  

optional Place ID. Example: 1

venue   string[]  optional  

optional Venue data object.

place_id   string  optional  

Example: architecto

name   string  optional  

Polje value ne sme biti veće od 255 karaktera. Example: n

formatted_address   string  optional  

Polje value ne sme biti veće od 500 karaktera. Example: g

city   string  optional  

Polje value ne sme biti veće od 100 karaktera. Example: z

region   string  optional  

Polje value ne sme biti veće od 100 karaktera. Example: m

postal_code   string  optional  

Polje value ne sme biti veće od 20 karaktera. Example: iyvdljnikhwaykcm

country   string  optional  

Polje value ne sme biti veće od 100 karaktera. Example: y

country_code   string  optional  

Polje value mora imati 2 karaktera. Example: uw

lat   number  optional  

Polje value mora biti između -90 i 90. Example: -89

lng   number  optional  

Polje value mora biti između -180 i 180. Example: -180

map_provider   string  optional  

Example: mapbox

Must be one of:
  • google
  • mapbox
  • osm
  • none
meeting_point_note   string  optional  

Polje value ne sme biti veće od 500 karaktera. Example: v

currency_id   integer  optional  

optional Currency ID. Example: 1

event_categories   string[]  optional  

optional Array of category IDs.

event_languages   string[]  optional  

optional Array of language IDs.

payment_options   object[]  optional  
type   string   

Example: integrated

Must be one of:
  • integrated
  • custom
ref_id   integer   

Example: 16

is_enabled   boolean  optional  

Example: false

description   string  optional  

optional Event description (JSON string for Editor.js). Example: "{\"blocks\":[...]}"

age_limit   integer  optional  

optional Age limit. Example: 18

dog_friendly   boolean  optional  

optional Whether dogs are allowed. Example: false

is_international   boolean  optional  

optional Whether event is international. Example: false

ticket_price   number  optional  

Поля для продаж (быстрый старт). Polje value mora biti najmanje 0. Example: 9

ticket_type   string  optional  

Example: free

Must be one of:
  • paid
  • free
publish   boolean  optional  

Example: true

organizer_legal_entity_id   integer  optional  

The id of an existing record in the organizer_legal_entities table. Example: 16

contacts   object  optional  
phone   string  optional  

Polje value ne sme biti veće od 50 karaktera. Example: n

phone_viber   boolean  optional  

Example: true

phone_whatsapp   boolean  optional  

Example: false

email   string  optional  

Polje value mora biti važeća adresa e-pošte. Polje value ne sme biti veće od 255 karaktera. Example: [email protected]

website   string  optional  

Polje value ne sme biti veće od 500 karaktera. Example: l

instagram   string  optional  

Polje value ne sme biti veće od 255 karaktera. Example: j

telegram   string  optional  

Polje value ne sme biti veće od 255 karaktera. Example: n

checkout_contact_fields   object  optional  
full_name   string  optional  

Example: optional

Must be one of:
  • off
  • optional
  • required
phone   string  optional  

Example: optional

Must be one of:
  • off
  • optional
  • required
telegram_username   string  optional  

Example: off

Must be one of:
  • off
  • optional
  • required
require_auth_before_purchase   boolean  optional  

Example: true

Response

Response Fields

success   boolean   

Whether the operation was successful.

data   object   

Updated event data.

Archive event

requires authentication

Moves an event to archive by setting deleted = 1.

Example request:
curl --request POST \
    "https://tic.rs/api/organizer/v1/events/"ABC12345"/archive" \
    --header "X-Api-Key: {YOUR_AUTH_KEY}" \
    --header "X-Language: sr"
import requests
import json

url = 'https://tic.rs/api/organizer/v1/events/"ABC12345"/archive'
headers = {
  'X-Api-Key': '{YOUR_AUTH_KEY}',
  'X-Language': 'sr'
}

response = requests.request('POST', url, headers=headers)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://tic.rs/api/organizer/v1/events/"ABC12345"/archive';
$response = $client->post(
    $url,
    [
        'headers' => [
            'X-Api-Key' => '{YOUR_AUTH_KEY}',
            'X-Language' => 'sr',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "message": "Event archived successfully"
}
 

Example response (404):


{
    "success": false,
    "message": "Event not found"
}
 

Request      

POST api/organizer/v1/events/{uuid}/archive

Headers

X-Api-Key      

Example: {YOUR_AUTH_KEY}

X-Language      

Example: sr

URL Parameters

uuid   string   

Event UUID (signature). Example: "ABC12345"

Duplicate event

requires authentication

Creates a copy of an event with the same data but without calendars.

Example request:
curl --request POST \
    "https://tic.rs/api/organizer/v1/events/"ABC12345"/duplicate" \
    --header "X-Api-Key: {YOUR_AUTH_KEY}" \
    --header "X-Language: sr"
import requests
import json

url = 'https://tic.rs/api/organizer/v1/events/"ABC12345"/duplicate'
headers = {
  'X-Api-Key': '{YOUR_AUTH_KEY}',
  'X-Language': 'sr'
}

response = requests.request('POST', url, headers=headers)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://tic.rs/api/organizer/v1/events/"ABC12345"/duplicate';
$response = $client->post(
    $url,
    [
        'headers' => [
            'X-Api-Key' => '{YOUR_AUTH_KEY}',
            'X-Language' => 'sr',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "data": {
        "uuid": "XYZ67890",
        "name": "Event Name"
    }
}
 

Example response (404):


{
    "success": false,
    "message": "Event not found"
}
 

Request      

POST api/organizer/v1/events/{uuid}/duplicate

Headers

X-Api-Key      

Example: {YOUR_AUTH_KEY}

X-Language      

Example: sr

URL Parameters

uuid   string   

Event UUID (signature). Example: "ABC12345"

Upload image for event description (Editor.js)

requires authentication

Uploads an image file for use in event description editor.

Example request:
curl --request POST \
    "https://tic.rs/api/organizer/v1/events/upload-description-image" \
    --header "X-Api-Key: {YOUR_AUTH_KEY}" \
    --header "Content-Type: multipart/form-data" \
    --form "image=@/tmp/phpgGhiEh" 
import requests
import json

url = 'https://tic.rs/api/organizer/v1/events/upload-description-image'
files = {
  'image': open('/tmp/phpgGhiEh', 'rb')}
headers = {
  'X-Api-Key': '{YOUR_AUTH_KEY}',
  'Content-Type': 'multipart/form-data'
}

response = requests.request('POST', url, headers=headers, files=files)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://tic.rs/api/organizer/v1/events/upload-description-image';
$response = $client->post(
    $url,
    [
        'headers' => [
            'X-Api-Key' => '{YOUR_AUTH_KEY}',
            'Content-Type' => 'multipart/form-data',
        ],
        'multipart' => [
            [
                'name' => 'image',
                'contents' => fopen('/tmp/phpgGhiEh', 'r')
            ],
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "file": {
        "url": "https://..."
    }
}
 

Request      

POST api/organizer/v1/events/upload-description-image

Headers

X-Api-Key      

Example: {YOUR_AUTH_KEY}

Content-Type      

Example: multipart/form-data

Body Parameters

image   file   

Image file (jpeg, png, jpg, webp). Max size: 10MB. Example: /tmp/phpgGhiEh

Response

Response Fields

success   boolean   

Whether the operation was successful.

file   object   

Image file information.

url   string   

Public URL of the uploaded image.

Get event schedule

requires authentication

Returns list of calendar entries (schedule) for an event.

Example request:
curl --request GET \
    --get "https://tic.rs/api/organizer/v1/events/abc123/schedule" \
    --header "X-Api-Key: {YOUR_AUTH_KEY}" \
    --header "X-Language: sr"
import requests
import json

url = 'https://tic.rs/api/organizer/v1/events/abc123/schedule'
headers = {
  'X-Api-Key': '{YOUR_AUTH_KEY}',
  'X-Language': 'sr'
}

response = requests.request('GET', url, headers=headers)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://tic.rs/api/organizer/v1/events/abc123/schedule';
$response = $client->get(
    $url,
    [
        'headers' => [
            'X-Api-Key' => '{YOUR_AUTH_KEY}',
            'X-Language' => 'sr',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{"success": true, "data": [...]}
 

Example response (404):


{
    "success": false,
    "message": "Event not found"
}
 

Request      

GET api/organizer/v1/events/{uuid}/schedule

Headers

X-Api-Key      

Example: {YOUR_AUTH_KEY}

X-Language      

Example: sr

URL Parameters

uuid   string   

Event UUID. Example: abc123

Response

Response Fields

success   boolean   

Whether the operation was successful.

data[]   string[]   

List of calendar entries.

Create schedule entry

requires authentication

Creates a new calendar entry (schedule item) for an event.

Example request:
curl --request POST \
    "https://tic.rs/api/organizer/v1/events/abc123/schedule" \
    --header "X-Api-Key: {YOUR_AUTH_KEY}" \
    --header "X-Language: sr" \
    --header "Content-Type: application/json" \
    --data "{
    \"date_start\": \"\\\"2024-01-15T18:00:00Z\\\"\",
    \"date_end\": \"\\\"2024-01-15T20:00:00Z\\\"\",
    \"price_euro_cent\": 1000,
    \"capacity\": 100,
    \"name\": \"\\\"Evening Session\\\"\",
    \"visible\": true
}"
import requests
import json

url = 'https://tic.rs/api/organizer/v1/events/abc123/schedule'
payload = {
    "date_start": "\"2024-01-15T18:00:00Z\"",
    "date_end": "\"2024-01-15T20:00:00Z\"",
    "price_euro_cent": 1000,
    "capacity": 100,
    "name": "\"Evening Session\"",
    "visible": true
}
headers = {
  'X-Api-Key': '{YOUR_AUTH_KEY}',
  'X-Language': 'sr',
  'Content-Type': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://tic.rs/api/organizer/v1/events/abc123/schedule';
$response = $client->post(
    $url,
    [
        'headers' => [
            'X-Api-Key' => '{YOUR_AUTH_KEY}',
            'X-Language' => 'sr',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'date_start' => '"2024-01-15T18:00:00Z"',
            'date_end' => '"2024-01-15T20:00:00Z"',
            'price_euro_cent' => 1000.0,
            'capacity' => 100,
            'name' => '"Evening Session"',
            'visible' => true,
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (201):


{"success": true, "data": {...}}
 

Example response (404):


{
    "success": false,
    "message": "Event not found"
}
 

Example response (422):


{"success": false, "message": "Validation error", "errors": {...}}
 

Request      

POST api/organizer/v1/events/{uuid}/schedule

Headers

X-Api-Key      

Example: {YOUR_AUTH_KEY}

X-Language      

Example: sr

Content-Type      

Example: application/json

URL Parameters

uuid   string   

Event UUID. Example: abc123

Body Parameters

date_start   string   

Start date/time (ISO 8601). Example: "2024-01-15T18:00:00Z"

date_end   string  optional  

optional End date/time (ISO 8601). Example: "2024-01-15T20:00:00Z"

price_euro_cent   number  optional  

optional Price in euro cents. Example: 1000

capacity   integer  optional  

optional Capacity limit. Example: 100

name   string  optional  

optional Session name. Example: "Evening Session"

visible   boolean  optional  

optional Whether session is visible. Example: true

Response

Response Fields

success   boolean   

Whether the operation was successful.

data   object   

Created calendar entry.

Update schedule entry

requires authentication

Updates an existing calendar entry.

Example request:
curl --request PUT \
    "https://tic.rs/api/organizer/v1/events/abc123/schedule/1" \
    --header "X-Api-Key: {YOUR_AUTH_KEY}" \
    --header "X-Language: sr" \
    --header "Content-Type: application/json" \
    --data "{
    \"date_start\": \"\\\"2024-01-15T18:00:00Z\\\"\",
    \"date_end\": \"\\\"2024-01-15T20:00:00Z\\\"\",
    \"price_euro_cent\": 1000,
    \"capacity\": 100,
    \"name\": \"\\\"Evening Session\\\"\",
    \"visible\": true
}"
import requests
import json

url = 'https://tic.rs/api/organizer/v1/events/abc123/schedule/1'
payload = {
    "date_start": "\"2024-01-15T18:00:00Z\"",
    "date_end": "\"2024-01-15T20:00:00Z\"",
    "price_euro_cent": 1000,
    "capacity": 100,
    "name": "\"Evening Session\"",
    "visible": true
}
headers = {
  'X-Api-Key': '{YOUR_AUTH_KEY}',
  'X-Language': 'sr',
  'Content-Type': 'application/json'
}

response = requests.request('PUT', url, headers=headers, json=payload)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://tic.rs/api/organizer/v1/events/abc123/schedule/1';
$response = $client->put(
    $url,
    [
        'headers' => [
            'X-Api-Key' => '{YOUR_AUTH_KEY}',
            'X-Language' => 'sr',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'date_start' => '"2024-01-15T18:00:00Z"',
            'date_end' => '"2024-01-15T20:00:00Z"',
            'price_euro_cent' => 1000.0,
            'capacity' => 100,
            'name' => '"Evening Session"',
            'visible' => true,
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{"success": true, "data": {...}}
 

Example response (404):


{
    "success": false,
    "message": "Event or calendar entry not found"
}
 

Example response (422):


{"success": false, "message": "Validation error", "errors": {...}}
 

Request      

PUT api/organizer/v1/events/{uuid}/schedule/{calendarId}

Headers

X-Api-Key      

Example: {YOUR_AUTH_KEY}

X-Language      

Example: sr

Content-Type      

Example: application/json

URL Parameters

uuid   string   

Event UUID. Example: abc123

calendarId   integer   

Calendar entry ID. Example: 1

Body Parameters

date_start   string  optional  

optional Start date/time (ISO 8601). Example: "2024-01-15T18:00:00Z"

date_end   string  optional  

optional End date/time (ISO 8601). Example: "2024-01-15T20:00:00Z"

price_euro_cent   number  optional  

optional Price in euro cents. Example: 1000

capacity   integer  optional  

optional Capacity limit. Example: 100

name   string  optional  

optional Session name. Example: "Evening Session"

visible   boolean  optional  

optional Whether session is visible. Example: true

Response

Response Fields

success   boolean   

Whether the operation was successful.

data   object   

Updated calendar entry.

Delete schedule entry

requires authentication

Deletes a calendar entry. Cannot delete if there are paid orders.

Example request:
curl --request DELETE \
    "https://tic.rs/api/organizer/v1/events/abc123/schedule/1" \
    --header "X-Api-Key: {YOUR_AUTH_KEY}" \
    --header "X-Language: sr"
import requests
import json

url = 'https://tic.rs/api/organizer/v1/events/abc123/schedule/1'
headers = {
  'X-Api-Key': '{YOUR_AUTH_KEY}',
  'X-Language': 'sr'
}

response = requests.request('DELETE', url, headers=headers)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://tic.rs/api/organizer/v1/events/abc123/schedule/1';
$response = $client->delete(
    $url,
    [
        'headers' => [
            'X-Api-Key' => '{YOUR_AUTH_KEY}',
            'X-Language' => 'sr',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "message": "Schedule entry deleted"
}
 

Example response (400):


{
    "success": false,
    "message": "Cannot delete schedule entry with paid orders"
}
 

Example response (404):


{
    "success": false,
    "message": "Event or calendar entry not found"
}
 

Request      

DELETE api/organizer/v1/events/{uuid}/schedule/{calendarId}

Headers

X-Api-Key      

Example: {YOUR_AUTH_KEY}

X-Language      

Example: sr

URL Parameters

uuid   string   

Event UUID. Example: abc123

calendarId   integer   

Calendar entry ID. Example: 1

Response

Response Fields

success   boolean   

Whether the operation was successful.

message   string   

Response message.

Get ticket categories

requires authentication

Returns list of ticket categories for an event.

Example request:
curl --request GET \
    --get "https://tic.rs/api/organizer/v1/events/abc123/ticket-categories" \
    --header "X-Api-Key: {YOUR_AUTH_KEY}" \
    --header "X-Language: sr"
import requests
import json

url = 'https://tic.rs/api/organizer/v1/events/abc123/ticket-categories'
headers = {
  'X-Api-Key': '{YOUR_AUTH_KEY}',
  'X-Language': 'sr'
}

response = requests.request('GET', url, headers=headers)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://tic.rs/api/organizer/v1/events/abc123/ticket-categories';
$response = $client->get(
    $url,
    [
        'headers' => [
            'X-Api-Key' => '{YOUR_AUTH_KEY}',
            'X-Language' => 'sr',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{"success": true, "data": [...]}
 

Example response (404):


{
    "success": false,
    "message": "Event not found"
}
 

Request      

GET api/organizer/v1/events/{uuid}/ticket-categories

Headers

X-Api-Key      

Example: {YOUR_AUTH_KEY}

X-Language      

Example: sr

URL Parameters

uuid   string   

Event UUID. Example: abc123

Response

Response Fields

success   boolean   

Whether the operation was successful.

data[]   string[]   

List of ticket categories.

Create ticket category

requires authentication

Creates a new ticket category for an event.

Example request:
curl --request POST \
    "https://tic.rs/api/organizer/v1/events/abc123/ticket-categories" \
    --header "X-Api-Key: {YOUR_AUTH_KEY}" \
    --header "X-Language: sr" \
    --header "Content-Type: application/json" \
    --data "{
    \"name\": \"\\\"{\\\\\\\"ru\\\\\\\":\\\\\\\"VIP\\\\\\\",\\\\\\\"en\\\\\\\":\\\\\\\"VIP\\\\\\\",\\\\\\\"sr\\\\\\\":\\\\\\\"VIP\\\\\\\"}\\\"\",
    \"price\": 25.5,
    \"quantity\": 100,
    \"color\": \"\\\"#FF0000\\\"\"
}"
import requests
import json

url = 'https://tic.rs/api/organizer/v1/events/abc123/ticket-categories'
payload = {
    "name": "\"{\\\"ru\\\":\\\"VIP\\\",\\\"en\\\":\\\"VIP\\\",\\\"sr\\\":\\\"VIP\\\"}\"",
    "price": 25.5,
    "quantity": 100,
    "color": "\"#FF0000\""
}
headers = {
  'X-Api-Key': '{YOUR_AUTH_KEY}',
  'X-Language': 'sr',
  'Content-Type': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://tic.rs/api/organizer/v1/events/abc123/ticket-categories';
$response = $client->post(
    $url,
    [
        'headers' => [
            'X-Api-Key' => '{YOUR_AUTH_KEY}',
            'X-Language' => 'sr',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'name' => '"{\\"ru\\":\\"VIP\\",\\"en\\":\\"VIP\\",\\"sr\\":\\"VIP\\"}"',
            'price' => 25.5,
            'quantity' => 100,
            'color' => '"#FF0000"',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (201):


{"success": true, "data": {...}}
 

Example response (404):


{
    "success": false,
    "message": "Event not found"
}
 

Example response (422):


{"success": false, "message": "Validation error", "errors": {...}}
 

Request      

POST api/organizer/v1/events/{uuid}/ticket-categories

Headers

X-Api-Key      

Example: {YOUR_AUTH_KEY}

X-Language      

Example: sr

Content-Type      

Example: application/json

URL Parameters

uuid   string   

Event UUID. Example: abc123

Body Parameters

name   string   

Category name (JSON string with translations). Example: "{\"ru\":\"VIP\",\"en\":\"VIP\",\"sr\":\"VIP\"}"

price   number  optional  

optional Price in euro. Example: 25.5

quantity   integer  optional  

optional Capacity limit. Example: 100

color   string  optional  

optional Color code. Example: "#FF0000"

Response

Response Fields

success   boolean   

Whether the operation was successful.

data   object   

Created ticket category.

Update ticket category

requires authentication

Updates an existing ticket category.

Example request:
curl --request PUT \
    "https://tic.rs/api/organizer/v1/events/abc123/ticket-categories/0" \
    --header "X-Api-Key: {YOUR_AUTH_KEY}" \
    --header "X-Language: sr" \
    --header "Content-Type: application/json" \
    --data "{
    \"name\": \"architecto\",
    \"price\": 25.5,
    \"quantity\": 100,
    \"color\": \"\\\"#FF0000\\\"\"
}"
import requests
import json

url = 'https://tic.rs/api/organizer/v1/events/abc123/ticket-categories/0'
payload = {
    "name": "architecto",
    "price": 25.5,
    "quantity": 100,
    "color": "\"#FF0000\""
}
headers = {
  'X-Api-Key': '{YOUR_AUTH_KEY}',
  'X-Language': 'sr',
  'Content-Type': 'application/json'
}

response = requests.request('PUT', url, headers=headers, json=payload)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://tic.rs/api/organizer/v1/events/abc123/ticket-categories/0';
$response = $client->put(
    $url,
    [
        'headers' => [
            'X-Api-Key' => '{YOUR_AUTH_KEY}',
            'X-Language' => 'sr',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'name' => 'architecto',
            'price' => 25.5,
            'quantity' => 100,
            'color' => '"#FF0000"',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{"success": true, "data": {...}}
 

Example response (404):


{
    "success": false,
    "message": "Event or category not found"
}
 

Example response (422):


{"success": false, "message": "Validation error", "errors": {...}}
 

Request      

PUT api/organizer/v1/events/{uuid}/ticket-categories/{categoryId}

Headers

X-Api-Key      

Example: {YOUR_AUTH_KEY}

X-Language      

Example: sr

Content-Type      

Example: application/json

URL Parameters

uuid   string   

Event UUID. Example: abc123

categoryId   integer   

Category index in array. Example: 0

Body Parameters

name   string  optional  

optional Category name (JSON string with translations). Example: architecto

price   number  optional  

optional Price in euro. Example: 25.5

quantity   integer  optional  

optional Capacity limit. Example: 100

color   string  optional  

optional Color code. Example: "#FF0000"

Response

Response Fields

success   boolean   

Whether the operation was successful.

data   object   

Updated ticket category.

Delete ticket category

requires authentication

Deletes a ticket category from an event.

Example request:
curl --request DELETE \
    "https://tic.rs/api/organizer/v1/events/abc123/ticket-categories/0" \
    --header "X-Api-Key: {YOUR_AUTH_KEY}" \
    --header "X-Language: sr"
import requests
import json

url = 'https://tic.rs/api/organizer/v1/events/abc123/ticket-categories/0'
headers = {
  'X-Api-Key': '{YOUR_AUTH_KEY}',
  'X-Language': 'sr'
}

response = requests.request('DELETE', url, headers=headers)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://tic.rs/api/organizer/v1/events/abc123/ticket-categories/0';
$response = $client->delete(
    $url,
    [
        'headers' => [
            'X-Api-Key' => '{YOUR_AUTH_KEY}',
            'X-Language' => 'sr',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "message": "Ticket category deleted"
}
 

Example response (404):


{
    "success": false,
    "message": "Event or category not found"
}
 

Request      

DELETE api/organizer/v1/events/{uuid}/ticket-categories/{categoryId}

Headers

X-Api-Key      

Example: {YOUR_AUTH_KEY}

X-Language      

Example: sr

URL Parameters

uuid   string   

Event UUID. Example: abc123

categoryId   integer   

Category index in array. Example: 0

Response

Response Fields

success   boolean   

Whether the operation was successful.

message   string   

Response message.

Get payment options for event

requires authentication

Returns list of payment options (integrated and custom) for an event.

Example request:
curl --request GET \
    --get "https://tic.rs/api/organizer/v1/events/abc123/payment-options" \
    --header "X-Api-Key: {YOUR_AUTH_KEY}" \
    --header "X-Language: sr"
import requests
import json

url = 'https://tic.rs/api/organizer/v1/events/abc123/payment-options'
headers = {
  'X-Api-Key': '{YOUR_AUTH_KEY}',
  'X-Language': 'sr'
}

response = requests.request('GET', url, headers=headers)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://tic.rs/api/organizer/v1/events/abc123/payment-options';
$response = $client->get(
    $url,
    [
        'headers' => [
            'X-Api-Key' => '{YOUR_AUTH_KEY}',
            'X-Language' => 'sr',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{"success": true, "data": {"integrated": [...], "custom": [...]}}
 

Example response (404):


{
    "success": false,
    "message": "Event not found"
}
 

Request      

GET api/organizer/v1/events/{uuid}/payment-options

Headers

X-Api-Key      

Example: {YOUR_AUTH_KEY}

X-Language      

Example: sr

URL Parameters

uuid   string   

Event UUID. Example: abc123

Response

Response Fields

success   boolean   

Whether the operation was successful.

data   object   

Payment options data.

integrated   string[]   

List of integrated payment methods.

custom   string[]   

List of custom payment methods.

Tickets

requires authentication

Returns a paginated list of all tickets purchased for the organizer's events. Each ticket includes detailed buyer information (full name, email, phone), ticket type, event name and date, applied promo code, price paid, and currency.

Example request:
curl --request GET \
    --get "https://tic.rs/api/organizer/v1/tickets?page=1&per_page=10&event_uuid=" \
    --header "X-Api-Key: {YOUR_AUTH_KEY}" \
    --header "X-Language: sr"
import requests
import json

url = 'https://tic.rs/api/organizer/v1/tickets'
params = {
  'page': '1',
  'per_page': '10',
  'event_uuid': '',
}
headers = {
  'X-Api-Key': '{YOUR_AUTH_KEY}',
  'X-Language': 'sr'
}

response = requests.request('GET', url, headers=headers, params=params)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://tic.rs/api/organizer/v1/tickets';
$response = $client->get(
    $url,
    [
        'headers' => [
            'X-Api-Key' => '{YOUR_AUTH_KEY}',
            'X-Language' => 'sr',
        ],
        'query' => [
            'page' => '1',
            'per_page' => '10',
            'event_uuid' => '',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 60
x-ratelimit-remaining: 51
access-control-allow-origin: *
 

{
    "data": [
        {
            "purchase_date": "2026-04-03T05:47:11+02:00",
            "event": {
                "uuid": "WPWLVQ",
                "name": "Quis adipisci molestias fugit.",
                "date": "2028-01-17T15:00:00+01:00"
            },
            "customer": {
                "name": "Alanis McLaughlin",
                "email": "[email protected]",
                "phone": "+14303747043"
            },
            "promocode": null,
            "price_paid": {
                "amount": 867.62,
                "currency": {
                    "id": 1,
                    "code": "RSD"
                }
            },
            "utm": {
                "source": null,
                "medium": null,
                "campaign": null,
                "content": null,
                "term": null
            },
            "info": {
                "device_type": "desktop",
                "interface_language": "ru",
                "country_code": "DE"
            }
        },
        {
            "purchase_date": "2026-02-05T16:10:24+01:00",
            "event": {
                "uuid": "LQPPWQBE",
                "name": "Voluptate accusamus ut.",
                "date": "2028-01-17T15:00:00+01:00"
            },
            "customer": {
                "name": "Bridget Schaden",
                "email": "[email protected]",
                "phone": "+13806988637"
            },
            "promocode": "SAUS",
            "price_paid": {
                "amount": 837.87,
                "currency": {
                    "id": 1,
                    "code": "RSD"
                }
            },
            "utm": {
                "source": null,
                "medium": null,
                "campaign": null,
                "content": null,
                "term": null
            },
            "info": {
                "device_type": "desktop",
                "interface_language": "ru",
                "country_code": "VN"
            }
        },
        {
            "purchase_date": "2026-02-05T16:10:24+01:00",
            "event": {
                "uuid": "BCHGSRZ",
                "name": "Ratione iure impedit.",
                "date": "2028-01-17T15:00:00+01:00"
            },
            "customer": {
                "name": "Zachery Fadel",
                "email": "[email protected]",
                "phone": "+16824842226"
            },
            "promocode": null,
            "price_paid": {
                "amount": 588.09,
                "currency": {
                    "id": 1,
                    "code": "RSD"
                }
            },
            "utm": {
                "source": null,
                "medium": null,
                "campaign": null,
                "content": null,
                "term": null
            },
            "info": {
                "device_type": "desktop",
                "interface_language": "ru",
                "country_code": "VN"
            }
        },
        {
            "purchase_date": "2026-02-05T16:10:24+01:00",
            "event": {
                "uuid": "ZEZCRCVA",
                "name": "Alias ratione dolores.",
                "date": "2028-01-17T15:00:00+01:00"
            },
            "customer": {
                "name": "Dr. Lucie Bauch",
                "email": "[email protected]",
                "phone": "+19407091074"
            },
            "promocode": "QZIQ",
            "price_paid": {
                "amount": 981.34,
                "currency": {
                    "id": 1,
                    "code": "RSD"
                }
            },
            "utm": {
                "source": null,
                "medium": null,
                "campaign": null,
                "content": null,
                "term": null
            },
            "info": {
                "device_type": "desktop",
                "interface_language": "ru",
                "country_code": "VN"
            }
        },
        {
            "purchase_date": "2026-02-05T16:10:24+01:00",
            "event": {
                "uuid": "OLKGSSAA",
                "name": "Ut dolores omnis.",
                "date": "2028-01-17T15:00:00+01:00"
            },
            "customer": {
                "name": "Briana Konopelski",
                "email": "[email protected]",
                "phone": "+15418676967"
            },
            "promocode": null,
            "price_paid": {
                "amount": 15.07,
                "currency": {
                    "id": 1,
                    "code": "RSD"
                }
            },
            "utm": {
                "source": null,
                "medium": null,
                "campaign": null,
                "content": null,
                "term": null
            },
            "info": {
                "device_type": "desktop",
                "interface_language": "ru",
                "country_code": "VN"
            }
        },
        {
            "purchase_date": "2026-02-05T16:10:24+01:00",
            "event": {
                "uuid": "NADSMR",
                "name": "Odio dolorum voluptates.",
                "date": "2028-01-17T15:00:00+01:00"
            },
            "customer": {
                "name": "Christian Klocko PhD",
                "email": "[email protected]",
                "phone": "+17793152713"
            },
            "promocode": "PVFAYB",
            "price_paid": {
                "amount": 234.46,
                "currency": {
                    "id": 1,
                    "code": "RSD"
                }
            },
            "utm": {
                "source": null,
                "medium": null,
                "campaign": null,
                "content": null,
                "term": null
            },
            "info": {
                "device_type": "desktop",
                "interface_language": "ru",
                "country_code": "VN"
            }
        },
        {
            "purchase_date": "2026-02-05T16:10:24+01:00",
            "event": {
                "uuid": "QOEZONY",
                "name": "Harum minus nostrum ipsa.",
                "date": "2028-01-17T15:00:00+01:00"
            },
            "customer": {
                "name": "Zachary Zulauf",
                "email": "[email protected]",
                "phone": "+18186331713"
            },
            "promocode": "QNFSRK",
            "price_paid": {
                "amount": 352.67,
                "currency": {
                    "id": 1,
                    "code": "RSD"
                }
            },
            "utm": {
                "source": null,
                "medium": null,
                "campaign": null,
                "content": null,
                "term": null
            },
            "info": {
                "device_type": "desktop",
                "interface_language": "ru",
                "country_code": "VN"
            }
        },
        {
            "purchase_date": "2026-02-05T16:10:24+01:00",
            "event": {
                "uuid": "RKTYIIXX",
                "name": "Sequi saepe doloribus.",
                "date": "2028-01-17T15:00:00+01:00"
            },
            "customer": {
                "name": "Mrs. Corine Ledner",
                "email": "[email protected]",
                "phone": "+14139890509"
            },
            "promocode": "VCUPH",
            "price_paid": {
                "amount": 369.95,
                "currency": {
                    "id": 1,
                    "code": "RSD"
                }
            },
            "utm": {
                "source": null,
                "medium": null,
                "campaign": null,
                "content": null,
                "term": null
            },
            "info": {
                "device_type": "desktop",
                "interface_language": "ru",
                "country_code": "VN"
            }
        },
        {
            "purchase_date": "2026-02-05T16:10:24+01:00",
            "event": {
                "uuid": "UAVPADB",
                "name": "Sed sed in.",
                "date": "2028-01-17T15:00:00+01:00"
            },
            "customer": {
                "name": "Lewis Lubowitz",
                "email": "[email protected]",
                "phone": "+19546240479"
            },
            "promocode": "XHAAKFDL",
            "price_paid": {
                "amount": 37.15,
                "currency": {
                    "id": 1,
                    "code": "RSD"
                }
            },
            "utm": {
                "source": null,
                "medium": null,
                "campaign": null,
                "content": null,
                "term": null
            },
            "info": {
                "device_type": "desktop",
                "interface_language": "ru",
                "country_code": "VN"
            }
        },
        {
            "purchase_date": "2026-02-05T16:10:24+01:00",
            "event": {
                "uuid": "DHWNPB",
                "name": "Et sit doloribus.",
                "date": "2028-01-17T15:00:00+01:00"
            },
            "customer": {
                "name": "Khalid Hagenes",
                "email": "[email protected]",
                "phone": "+17254539644"
            },
            "promocode": null,
            "price_paid": {
                "amount": 288.94,
                "currency": {
                    "id": 1,
                    "code": "RSD"
                }
            },
            "utm": {
                "source": null,
                "medium": null,
                "campaign": null,
                "content": null,
                "term": null
            },
            "info": {
                "device_type": "desktop",
                "interface_language": "ru",
                "country_code": "VN"
            }
        }
    ],
    "links": {
        "first": "https://tic.rs/api/organizer/v1/tickets?page=1",
        "last": "https://tic.rs/api/organizer/v1/tickets?page=58",
        "prev": null,
        "next": "https://tic.rs/api/organizer/v1/tickets?page=2"
    },
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 58,
        "links": [
            {
                "url": null,
                "label": "« Prethodni",
                "active": false
            },
            {
                "url": "https://tic.rs/api/organizer/v1/tickets?page=1",
                "label": "1",
                "active": true
            },
            {
                "url": "https://tic.rs/api/organizer/v1/tickets?page=2",
                "label": "2",
                "active": false
            },
            {
                "url": "https://tic.rs/api/organizer/v1/tickets?page=3",
                "label": "3",
                "active": false
            },
            {
                "url": "https://tic.rs/api/organizer/v1/tickets?page=4",
                "label": "4",
                "active": false
            },
            {
                "url": "https://tic.rs/api/organizer/v1/tickets?page=5",
                "label": "5",
                "active": false
            },
            {
                "url": "https://tic.rs/api/organizer/v1/tickets?page=6",
                "label": "6",
                "active": false
            },
            {
                "url": "https://tic.rs/api/organizer/v1/tickets?page=7",
                "label": "7",
                "active": false
            },
            {
                "url": "https://tic.rs/api/organizer/v1/tickets?page=8",
                "label": "8",
                "active": false
            },
            {
                "url": "https://tic.rs/api/organizer/v1/tickets?page=9",
                "label": "9",
                "active": false
            },
            {
                "url": "https://tic.rs/api/organizer/v1/tickets?page=10",
                "label": "10",
                "active": false
            },
            {
                "url": null,
                "label": "...",
                "active": false
            },
            {
                "url": "https://tic.rs/api/organizer/v1/tickets?page=57",
                "label": "57",
                "active": false
            },
            {
                "url": "https://tic.rs/api/organizer/v1/tickets?page=58",
                "label": "58",
                "active": false
            },
            {
                "url": "https://tic.rs/api/organizer/v1/tickets?page=2",
                "label": "Sledeći »",
                "active": false
            }
        ],
        "path": "https://tic.rs/api/organizer/v1/tickets",
        "per_page": 10,
        "to": 10,
        "total": 580
    }
}
 

Example response (401, Authentication failed):


{
    "message": "Invalid or inactive API key"
}
 

Request      

GET api/organizer/v1/tickets

Headers

X-Api-Key      

Example: {YOUR_AUTH_KEY}

X-Language      

Example: sr

Query Parameters

page   integer  optional  

The page number. Example: 1

per_page   integer  optional  

Number of results per page. Maximum: 50. Example: 10

event_uuid   string  optional  

The UUID of the event, obtained from the event list response.

Response

Response Fields

data   object   
purchase_date   string   

Date and time when the ticket was purchased (ISO 8601 format).

event   object   
uuid   string   

Unique identifier (UUID) of the event.

name   string   

Name of the event.

date   string   

Date and time when the event is scheduled (ISO 8601 format).

customer   object   
name   string   

Full name of the ticket buyer.

phone   string   

Phone number of the buyer.

email   string   

Email address of the buyer.

promocode   string|null   

Applied promo code, if any.

price_paid   object   
amount   number   

Total amount paid for the ticket.

currency   object   
id   integer   

Currency ID used in the transaction.

code   string   

Currency code (e.g. RSD, EUR).

utm   object   
source   string|null   

UTM source if tracked.

medium   string|null   

UTM medium if tracked.

campaign   string|null   

UTM campaign if tracked.

content   string|null   

UTM content if tracked.

term   string|null   

UTM term if tracked.

info   object   
device_type   string   

Device type used to make the order (mobile, desktop).

interface_language   string   

Interface language of the buyer (e.g. ru, en).

country_code   string   

ISO 3166-1 alpha-2 country code (e.g. RS, RU).

links   object   
first   string   

URL to the first page of results.

last   string   

URL to the last page of results.

prev   string|null   

URL to the previous page, or null.

next   string|null   

URL to the next page, or null.

meta   object   
current_page   integer   

Current page number.

from   integer   

Index of the first item on the current page.

last_page   integer   

Total number of pages.

links   object   
url   string|null   

URL for the pagination link.

label   string   

Label for the pagination link.

active   boolean   

Whether the page is currently active.

path   string   

Base URL of the paginated resource.

per_page   integer   

Number of items per page.

to   integer   

Index of the last item on the current page.

total   integer   

Total number of items across all pages.

Organizer API - Subscription

Endpoints for managing organizer tariff subscriptions.

Rate limit: 60 requests/minute.

Get current subscription

requires authentication

Returns the current active subscription for the organizer, including trial and grace period information.

Example request:
curl --request GET \
    --get "https://tic.rs/api/organizer/v1/subscription/current" \
    --header "X-Api-Key: {YOUR_AUTH_KEY}"
import requests
import json

url = 'https://tic.rs/api/organizer/v1/subscription/current'
headers = {
  'X-Api-Key': '{YOUR_AUTH_KEY}'
}

response = requests.request('GET', url, headers=headers)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://tic.rs/api/organizer/v1/subscription/current';
$response = $client->get(
    $url,
    [
        'headers' => [
            'X-Api-Key' => '{YOUR_AUTH_KEY}',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
  "success": true,
  "data": {
    "id": 1,
    "status": "trial",
    "trial_expires_at": "2026-02-12T00:00:00+00:00",
    ...
  }
}
 

Request      

GET api/organizer/v1/subscription/current

Headers

X-Api-Key      

Example: {YOUR_AUTH_KEY}

Get available tariff plans

requires authentication

Returns a list of all available tariff plans.

Example request:
curl --request GET \
    --get "https://tic.rs/api/organizer/v1/subscription/plans" \
    --header "X-Api-Key: {YOUR_AUTH_KEY}"
import requests
import json

url = 'https://tic.rs/api/organizer/v1/subscription/plans'
headers = {
  'X-Api-Key': '{YOUR_AUTH_KEY}'
}

response = requests.request('GET', url, headers=headers)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://tic.rs/api/organizer/v1/subscription/plans';
$response = $client->get(
    $url,
    [
        'headers' => [
            'X-Api-Key' => '{YOUR_AUTH_KEY}',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
  "success": true,
  "data": [
    {
      "id": 1,
      "name": "Pro",
      "price": 39.00,
      ...
    }
  ]
}
 

Request      

GET api/organizer/v1/subscription/plans

Headers

X-Api-Key      

Example: {YOUR_AUTH_KEY}

Get subscription invoices

requires authentication

Returns a list of invoices for the organizer's subscription.

Example request:
curl --request GET \
    --get "https://tic.rs/api/organizer/v1/subscription/invoices?page=1&per_page=10" \
    --header "X-Api-Key: {YOUR_AUTH_KEY}"
import requests
import json

url = 'https://tic.rs/api/organizer/v1/subscription/invoices'
params = {
  'page': '1',
  'per_page': '10',
}
headers = {
  'X-Api-Key': '{YOUR_AUTH_KEY}'
}

response = requests.request('GET', url, headers=headers, params=params)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://tic.rs/api/organizer/v1/subscription/invoices';
$response = $client->get(
    $url,
    [
        'headers' => [
            'X-Api-Key' => '{YOUR_AUTH_KEY}',
        ],
        'query' => [
            'page' => '1',
            'per_page' => '10',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
  "success": true,
  "data": [
    {
      "id": 1,
      "invoice_number": "INV-2026-001",
      "amount": 39.00,
      "status": "paid",
      ...
    }
  ]
}
 

Request      

GET api/organizer/v1/subscription/invoices

Headers

X-Api-Key      

Example: {YOUR_AUTH_KEY}

Query Parameters

page   integer  optional  

The page number. Example: 1

per_page   integer  optional  

Number of results per page. Maximum: 50. Example: 10

Start trial subscription

requires authentication

Starts a trial period for the specified tariff plan.

Example request:
curl --request POST \
    "https://tic.rs/api/organizer/v1/subscription/trial" \
    --header "X-Api-Key: {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --data "{
    \"tariff_plan_id\": 1,
    \"trial_days\": 14
}"
import requests
import json

url = 'https://tic.rs/api/organizer/v1/subscription/trial'
payload = {
    "tariff_plan_id": 1,
    "trial_days": 14
}
headers = {
  'X-Api-Key': '{YOUR_AUTH_KEY}',
  'Content-Type': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://tic.rs/api/organizer/v1/subscription/trial';
$response = $client->post(
    $url,
    [
        'headers' => [
            'X-Api-Key' => '{YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'tariff_plan_id' => 1,
            'trial_days' => 14,
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
  "success": true,
  "data": {
    "id": 1,
    "status": "trial",
    "trial_expires_at": "2026-02-12T00:00:00+00:00",
    ...
  }
}
 

Request      

POST api/organizer/v1/subscription/trial

Headers

X-Api-Key      

Example: {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Body Parameters

tariff_plan_id   integer   

ID тарифного плана. Example: 1

trial_days   integer  optional  

Количество дней триала (по умолчанию 14, максимум 90). Example: 14

Subscribe to tariff plan

requires authentication

Creates a new subscription for the specified tariff plan.

Example request:
curl --request POST \
    "https://tic.rs/api/organizer/v1/subscription/subscribe" \
    --header "X-Api-Key: {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --data "{
    \"tariff_plan_id\": 1,
    \"auto_renew\": true,
    \"start_immediately\": true,
    \"payment_id\": 123,
    \"payment_method_type\": \"card\",
    \"payment_method_last4\": \"4242\",
    \"payment_method_brand\": \"Visa\",
    \"payment_method_data\": []
}"
import requests
import json

url = 'https://tic.rs/api/organizer/v1/subscription/subscribe'
payload = {
    "tariff_plan_id": 1,
    "auto_renew": true,
    "start_immediately": true,
    "payment_id": 123,
    "payment_method_type": "card",
    "payment_method_last4": "4242",
    "payment_method_brand": "Visa",
    "payment_method_data": []
}
headers = {
  'X-Api-Key': '{YOUR_AUTH_KEY}',
  'Content-Type': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://tic.rs/api/organizer/v1/subscription/subscribe';
$response = $client->post(
    $url,
    [
        'headers' => [
            'X-Api-Key' => '{YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'tariff_plan_id' => 1,
            'auto_renew' => true,
            'start_immediately' => true,
            'payment_id' => 123,
            'payment_method_type' => 'card',
            'payment_method_last4' => '4242',
            'payment_method_brand' => 'Visa',
            'payment_method_data' => [],
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
  "success": true,
  "data": {
    "id": 1,
    "status": "active",
    "expires_at": "2026-02-12T00:00:00+00:00",
    ...
  }
}
 

Request      

POST api/organizer/v1/subscription/subscribe

Headers

X-Api-Key      

Example: {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Body Parameters

tariff_plan_id   integer   

ID тарифного плана. Example: 1

auto_renew   boolean  optional  

Автопродление (по умолчанию true). Example: true

start_immediately   boolean  optional  

Начать сразу или после окончания текущей подписки (по умолчанию true). Example: true

payment_id   integer  optional  

ID платежа. Example: 123

payment_method_type   string  optional  

Тип способа оплаты. Example: card

payment_method_last4   string  optional  

Последние 4 цифры карты. Example: 4242

payment_method_brand   string  optional  

Бренд карты. Example: Visa

payment_method_data   object  optional  

Дополнительные данные способа оплаты.

Create payment for subscription

requires authentication

Creates a payment session (LedPay card or Cryptomus crypto) and returns a redirect URL so the organizer can complete the payment.

Example request:
curl --request POST \
    "https://tic.rs/api/organizer/v1/subscription/create-payment" \
    --header "X-Api-Key: {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --data "{
    \"tariff_plan_id\": 1,
    \"payment_method\": \"card\",
    \"billing_period\": \"month\"
}"
import requests
import json

url = 'https://tic.rs/api/organizer/v1/subscription/create-payment'
payload = {
    "tariff_plan_id": 1,
    "payment_method": "card",
    "billing_period": "month"
}
headers = {
  'X-Api-Key': '{YOUR_AUTH_KEY}',
  'Content-Type': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://tic.rs/api/organizer/v1/subscription/create-payment';
$response = $client->post(
    $url,
    [
        'headers' => [
            'X-Api-Key' => '{YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'tariff_plan_id' => 1,
            'payment_method' => 'card',
            'billing_period' => 'month',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "payment_url": "https://pay.cryptomus.com/pay/...",
    "payment_method": "crypto"
}
 

Request      

POST api/organizer/v1/subscription/create-payment

Headers

X-Api-Key      

Example: {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Body Parameters

tariff_plan_id   integer   

ID тарифного плана. Example: 1

payment_method   string   

Метод оплаты: "card" или "crypto". Example: card

billing_period   string  optional  

Example: month

Must be one of:
  • month
  • year

Payment API

Organizer server API for creating and managing orders, viewing transactions, and initiating refund requests.

Rate limit: 60 requests/minute.

Orders

requires authentication

Returns a paginated list of orders created by the organizer. Each order object includes basic information, status, total amount and currency.

Example request:
curl --request GET \
    --get "https://tic.rs/api/payment/v1/orders?page=1&per_page=20&search=123&status=2&sort_by=created_at&sort_dir=desc" \
    --header "X-Api-Key: {YOUR_AUTH_KEY}" \
    --header "X-Language: sr Language code (sr/en/ru). Example: sr"
import requests
import json

url = 'https://tic.rs/api/payment/v1/orders'
params = {
  'page': '1',
  'per_page': '20',
  'search': '123',
  'status': '2',
  'sort_by': 'created_at',
  'sort_dir': 'desc',
}
headers = {
  'X-Api-Key': '{YOUR_AUTH_KEY}',
  'X-Language': 'sr Language code (sr/en/ru). Example: sr'
}

response = requests.request('GET', url, headers=headers, params=params)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://tic.rs/api/payment/v1/orders';
$response = $client->get(
    $url,
    [
        'headers' => [
            'X-Api-Key' => '{YOUR_AUTH_KEY}',
            'X-Language' => 'sr Language code (sr/en/ru). Example: sr',
        ],
        'query' => [
            'page' => '1',
            'per_page' => '20',
            'search' => '123',
            'status' => '2',
            'sort_by' => 'created_at',
            'sort_dir' => 'desc',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 60
x-ratelimit-remaining: 24
access-control-allow-origin: *
 

{
    "data": [
        {
            "number": "AAU-7004",
            "signature": "5f52321b-92c0-4141-8e52-54c4ce446721",
            "created_at": "2025-12-18T14:15:35.000000Z",
            "status_id": 2,
            "status": "Оплачен",
            "amount_total": 5,
            "currency": "RSD",
            "public_token": "JQFiRHIC"
        },
        {
            "number": "AYM-0579",
            "signature": "f8c4c400-8d1b-484a-ab4a-dcff71625530",
            "created_at": "2025-11-05T17:34:14.000000Z",
            "status_id": 2,
            "status": "Оплачен",
            "amount_total": 101,
            "currency": "RSD",
            "public_token": "5njMTKyO"
        }
    ],
    "total": 2,
    "current_page": 1,
    "per_page": 20
}
 

Request      

GET api/payment/v1/orders

Headers

X-Api-Key      

Example: {YOUR_AUTH_KEY}

X-Language      

Example: sr Language code (sr/en/ru). Example: sr

Query Parameters

page   integer  optional  

The page number. Example: 1

per_page   integer  optional  

Number of results per page. Maximum: 100. Example: 20

search   string  optional  

Search by number, customer name/email/phone, signature or public_token. Example: 123

status   integer  optional  

Filter orders by status ID. Example: 2

sort_by   string  optional  

Sort field (created_at, number, status_id). Default: created_at. Example: created_at

sort_dir   string  optional  

Sort direction (asc, desc). Default: desc. Example: desc

Response

Response Fields

data   object   
number   string   

Order number

signature   string   

Unique signature

created_at   string   

Creation timestamp (ISO 8601)

status_id   integer   

Status ID

status   string   

Status name

amount_total   number   

Total amount

currency   string   

Currency code (e.g. RSD, EUR)

public_token   string   

Public token for public links

total   integer   

Total records

current_page   integer   

Current page number

per_page   integer   

Items per page

Create order

requires authentication

Creates an order with provided items. Supported item types: event, unpublished_ticket, service, product. You can specify service/delivery/event dates when applicable. Currency code may be provided; defaults to RSD.

Example request:
curl --request POST \
    "https://tic.rs/api/payment/v1/orders" \
    --header "X-Api-Key: {YOUR_AUTH_KEY}" \
    --header "X-Language: sr Language code (sr/en/ru). Example: sr" \
    --header "Content-Type: application/json" \
    --data "{
    \"customer\": {
        \"name\": \"Ivan Ivanov\",
        \"email\": \"[email protected]\",
        \"phone\": \"+381600000000\"
    },
    \"items\": [
        \"architecto\"
    ],
    \"currency\": \"EUR\",
    \"success_url\": \"https:\\/\\/example.com\\/success\",
    \"fail_url\": \"https:\\/\\/example.com\\/fail\"
}"
import requests
import json

url = 'https://tic.rs/api/payment/v1/orders'
payload = {
    "customer": {
        "name": "Ivan Ivanov",
        "email": "[email protected]",
        "phone": "+381600000000"
    },
    "items": [
        "architecto"
    ],
    "currency": "EUR",
    "success_url": "https:\/\/example.com\/success",
    "fail_url": "https:\/\/example.com\/fail"
}
headers = {
  'X-Api-Key': '{YOUR_AUTH_KEY}',
  'X-Language': 'sr Language code (sr/en/ru). Example: sr',
  'Content-Type': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://tic.rs/api/payment/v1/orders';
$response = $client->post(
    $url,
    [
        'headers' => [
            'X-Api-Key' => '{YOUR_AUTH_KEY}',
            'X-Language' => 'sr Language code (sr/en/ru). Example: sr',
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'customer' => [
                'name' => 'Ivan Ivanov',
                'email' => '[email protected]',
                'phone' => '+381600000000',
            ],
            'items' => [
                'architecto',
            ],
            'currency' => 'EUR',
            'success_url' => 'https://example.com/success',
            'fail_url' => 'https://example.com/fail',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request      

POST api/payment/v1/orders

Headers

X-Api-Key      

Example: {YOUR_AUTH_KEY}

X-Language      

Example: sr Language code (sr/en/ru). Example: sr

Content-Type      

Example: application/json

Body Parameters

customer   object  optional  
name   string  optional  

nullable Customer name. Example: Ivan Ivanov

email   string  optional  

nullable Customer email. Example: [email protected]

phone   string  optional  

nullable Customer phone. Example: +381600000000

items   string[]   

List of items.

type   string   

Item type: event, unpublished_ticket, service, product. Example: service

name   string  optional  

required_unless:items[].type,event Item name for non-event items. Example: Cleaning service

amount   number   

Item unit amount. Example: 49.99

quantity   integer   

Quantity. Example: 2

event_id   integer  optional  

required_if:items[].type,event EventCalendar ID for event items. Example: 123

ticket_id   integer  optional  

The EventCalendar ID if needed by integration. Example: 123

event_date   date  optional  

nullable Date for unpublished_ticket. Example: 2025-12-31

service_date   date  optional  

nullable Date for service. Example: 2025-11-01

delivery_date   date  optional  

nullable Date for product delivery. Example: 2025-11-10

currency   string  optional  

nullable Currency code (ISO 4217). Example: EUR

success_url   string  optional  

nullable URL to redirect the customer after successful payment. Example: https://example.com/success

fail_url   string  optional  

nullable URL to redirect the customer after failed/cancelled payment. Example: https://example.com/fail

Response

Response Fields

data   object   
number   string   

Order number

signature   string   

Order signature

public_token   string   

Public token

payment_url   string   

Payment URL to start checkout

Show order by signature

requires authentication

Returns full order information by unique signature, including items and transactions.

Example request:
curl --request GET \
    --get "https://tic.rs/api/payment/v1/orders/8b266d05a4aab061e6febf6d3c0ee6d7" \
    --header "X-Api-Key: {YOUR_AUTH_KEY}" \
    --header "X-Language: sr Language code (sr/en/ru). Example: sr"
import requests
import json

url = 'https://tic.rs/api/payment/v1/orders/8b266d05a4aab061e6febf6d3c0ee6d7'
headers = {
  'X-Api-Key': '{YOUR_AUTH_KEY}',
  'X-Language': 'sr Language code (sr/en/ru). Example: sr'
}

response = requests.request('GET', url, headers=headers)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://tic.rs/api/payment/v1/orders/8b266d05a4aab061e6febf6d3c0ee6d7';
$response = $client->get(
    $url,
    [
        'headers' => [
            'X-Api-Key' => '{YOUR_AUTH_KEY}',
            'X-Language' => 'sr Language code (sr/en/ru). Example: sr',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (404):

Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 60
x-ratelimit-remaining: 23
access-control-allow-origin: *
 

{
    "message": "Not found"
}
 

Request      

GET api/payment/v1/orders/{signature}

Headers

X-Api-Key      

Example: {YOUR_AUTH_KEY}

X-Language      

Example: sr Language code (sr/en/ru). Example: sr

URL Parameters

signature   string   

Unique order signature. Example: 8b266d05a4aab061e6febf6d3c0ee6d7

Response

Response Fields

data   object   
number   string   

Order number

signature   string   

Order signature

created_at   string   

Creation timestamp (ISO 8601)

status_id   integer   

Status ID

status   string   

Status name

currency   string   

Currency code

items[]   object   

Order items breakdown

total   number   

Total amount

public_token   string   

Public token

transactions[]   object   

Related transactions

Transactions

requires authentication

Returns a paginated list of transactions (payments/refunds) related to all orders of the organizer.

Example request:
curl --request GET \
    --get "https://tic.rs/api/payment/v1/transactions?page=1&per_page=20&order_signature=8b266d05a4aab061e6febf6d3c0ee6d7&status=approved&date_from=2025-09-01&date_to=2025-09-30&sort_by=created_at&sort_dir=desc" \
    --header "X-Api-Key: {YOUR_AUTH_KEY}" \
    --header "X-Language: sr Language code (sr/en/ru). Example: sr"
import requests
import json

url = 'https://tic.rs/api/payment/v1/transactions'
params = {
  'page': '1',
  'per_page': '20',
  'order_signature': '8b266d05a4aab061e6febf6d3c0ee6d7',
  'status': 'approved',
  'date_from': '2025-09-01',
  'date_to': '2025-09-30',
  'sort_by': 'created_at',
  'sort_dir': 'desc',
}
headers = {
  'X-Api-Key': '{YOUR_AUTH_KEY}',
  'X-Language': 'sr Language code (sr/en/ru). Example: sr'
}

response = requests.request('GET', url, headers=headers, params=params)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://tic.rs/api/payment/v1/transactions';
$response = $client->get(
    $url,
    [
        'headers' => [
            'X-Api-Key' => '{YOUR_AUTH_KEY}',
            'X-Language' => 'sr Language code (sr/en/ru). Example: sr',
        ],
        'query' => [
            'page' => '1',
            'per_page' => '20',
            'order_signature' => '8b266d05a4aab061e6febf6d3c0ee6d7',
            'status' => 'approved',
            'date_from' => '2025-09-01',
            'date_to' => '2025-09-30',
            'sort_by' => 'created_at',
            'sort_dir' => 'desc',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 60
x-ratelimit-remaining: 22
access-control-allow-origin: *
 

{
    "data": [],
    "total": 0,
    "current_page": 1,
    "per_page": 20
}
 

Request      

GET api/payment/v1/transactions

Headers

X-Api-Key      

Example: {YOUR_AUTH_KEY}

X-Language      

Example: sr Language code (sr/en/ru). Example: sr

Query Parameters

page   integer  optional  

The page number. Example: 1

per_page   integer  optional  

Number of results per page. Maximum: 100. Example: 20

order_signature   string  optional  

Filter by order signature. Example: 8b266d05a4aab061e6febf6d3c0ee6d7

status   string  optional  

Filter by transaction status (approved/failed). Example: approved

date_from   string  optional  

date Filter by created_at from (inclusive). Example: 2025-09-01

date_to   string  optional  

date Filter by created_at to (inclusive). Example: 2025-09-30

sort_by   string  optional  

Sort field (created_at, amount, status). Default: created_at. Example: created_at

sort_dir   string  optional  

Sort direction (asc, desc). Default: desc. Example: desc

Response

Response Fields

data   object   
signature   string   

Payment signature (OID)

status   string   

Transaction status (approved/failed)

amount   number   

Amount (negative for refunds)

currency   string   

Currency code

created_at   string   

Creation timestamp (ISO 8601)

order   object   
signature   string   

Order signature

number   string   

Order number

public_token   string   

Order public token

total   integer   

Total records

current_page   integer   

Current page number

per_page   integer   

Items per page

Create refund request by payment signature

requires authentication

Creates a refund request for a single payment identified by its signature. Returns the refund request signature.

Example request:
curl --request POST \
    "https://tic.rs/api/payment/v1/refunds/payment/8b266d05a4aab061e6febf6d3c0ee6d7" \
    --header "X-Api-Key: {YOUR_AUTH_KEY}" \
    --header "X-Language: sr Language code (sr/en/ru). Example: sr"
import requests
import json

url = 'https://tic.rs/api/payment/v1/refunds/payment/8b266d05a4aab061e6febf6d3c0ee6d7'
headers = {
  'X-Api-Key': '{YOUR_AUTH_KEY}',
  'X-Language': 'sr Language code (sr/en/ru). Example: sr'
}

response = requests.request('POST', url, headers=headers)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://tic.rs/api/payment/v1/refunds/payment/8b266d05a4aab061e6febf6d3c0ee6d7';
$response = $client->post(
    $url,
    [
        'headers' => [
            'X-Api-Key' => '{YOUR_AUTH_KEY}',
            'X-Language' => 'sr Language code (sr/en/ru). Example: sr',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request      

POST api/payment/v1/refunds/payment/{signature}

Headers

X-Api-Key      

Example: {YOUR_AUTH_KEY}

X-Language      

Example: sr Language code (sr/en/ru). Example: sr

URL Parameters

signature   string   

Payment signature (OID). Example: 8b266d05a4aab061e6febf6d3c0ee6d7

Response

Response Fields

success   boolean   

Operation status

data   object   
signature   string   

Refund request signature

Create refund requests for all payments in an order

requires authentication

Cancels an order and creates refund requests for all its payments. Returns an array of refund request signatures.

Example request:
curl --request POST \
    "https://tic.rs/api/payment/v1/refunds/order/36bc1d644db04148b899b940451dc4ea" \
    --header "X-Api-Key: {YOUR_AUTH_KEY}" \
    --header "X-Language: sr Language code (sr/en/ru). Example: sr"
import requests
import json

url = 'https://tic.rs/api/payment/v1/refunds/order/36bc1d644db04148b899b940451dc4ea'
headers = {
  'X-Api-Key': '{YOUR_AUTH_KEY}',
  'X-Language': 'sr Language code (sr/en/ru). Example: sr'
}

response = requests.request('POST', url, headers=headers)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://tic.rs/api/payment/v1/refunds/order/36bc1d644db04148b899b940451dc4ea';
$response = $client->post(
    $url,
    [
        'headers' => [
            'X-Api-Key' => '{YOUR_AUTH_KEY}',
            'X-Language' => 'sr Language code (sr/en/ru). Example: sr',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request      

POST api/payment/v1/refunds/order/{signature}

Headers

X-Api-Key      

Example: {YOUR_AUTH_KEY}

X-Language      

Example: sr Language code (sr/en/ru). Example: sr

URL Parameters

signature   string   

Order signature. Example: 36bc1d644db04148b899b940451dc4ea

Response

Response Fields

success   boolean   

Operation status

data   object   
signatures[]   string   

Refund request signatures

Show refund request by signature

requires authentication

Returns detailed information about a single refund request.

Example request:
curl --request GET \
    --get "https://tic.rs/api/payment/v1/refunds/2a7f9f9e-6e3a-4e1a-9b8a-1b2c3d4e5f6a" \
    --header "X-Api-Key: {YOUR_AUTH_KEY}" \
    --header "X-Language: sr Language code (sr/en/ru). Example: sr"
import requests
import json

url = 'https://tic.rs/api/payment/v1/refunds/2a7f9f9e-6e3a-4e1a-9b8a-1b2c3d4e5f6a'
headers = {
  'X-Api-Key': '{YOUR_AUTH_KEY}',
  'X-Language': 'sr Language code (sr/en/ru). Example: sr'
}

response = requests.request('GET', url, headers=headers)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://tic.rs/api/payment/v1/refunds/2a7f9f9e-6e3a-4e1a-9b8a-1b2c3d4e5f6a';
$response = $client->get(
    $url,
    [
        'headers' => [
            'X-Api-Key' => '{YOUR_AUTH_KEY}',
            'X-Language' => 'sr Language code (sr/en/ru). Example: sr',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (404):

Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 60
x-ratelimit-remaining: 21
access-control-allow-origin: *
 

{
    "message": "Not found"
}
 

Request      

GET api/payment/v1/refunds/{signature}

Headers

X-Api-Key      

Example: {YOUR_AUTH_KEY}

X-Language      

Example: sr Language code (sr/en/ru). Example: sr

URL Parameters

signature   string   

Refund request signature. Example: 2a7f9f9e-6e3a-4e1a-9b8a-1b2c3d4e5f6a

Response

Response Fields

data   object   
signature   string   

Refund request signature

status   string   

Refund processing status (pending/completed/failed)

platform_approval_status   string   

Platform approval status (pending/approved/rejected)

payment_signature   string   

Original payment signature

refund_payment_signature   string   

Refund payment signature (when created)

ip   string   

Request IP

user_agent   string   

Request user agent

request_url   string   

Request URL

created_at   string   

Creation timestamp (ISO 8601)

platform_approved_at   string|null   

Platform approval timestamp (ISO 8601)

platform_rejected_at   string|null   

Platform rejection timestamp (ISO 8601)

platform_rejection_reason   string|null   

Platform rejection reason

List refund requests

requires authentication

Returns a paginated list of refund requests for the organizer.

Example request:
curl --request GET \
    --get "https://tic.rs/api/payment/v1/refunds?page=1&per_page=20" \
    --header "X-Api-Key: {YOUR_AUTH_KEY}" \
    --header "X-Language: sr Language code (sr/en/ru). Example: sr"
import requests
import json

url = 'https://tic.rs/api/payment/v1/refunds'
params = {
  'page': '1',
  'per_page': '20',
}
headers = {
  'X-Api-Key': '{YOUR_AUTH_KEY}',
  'X-Language': 'sr Language code (sr/en/ru). Example: sr'
}

response = requests.request('GET', url, headers=headers, params=params)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://tic.rs/api/payment/v1/refunds';
$response = $client->get(
    $url,
    [
        'headers' => [
            'X-Api-Key' => '{YOUR_AUTH_KEY}',
            'X-Language' => 'sr Language code (sr/en/ru). Example: sr',
        ],
        'query' => [
            'page' => '1',
            'per_page' => '20',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 60
x-ratelimit-remaining: 20
access-control-allow-origin: *
 

{
    "data": [
        {
            "signature": "1a9968c9-341e-4925-993b-e11cb6c199b6",
            "status": "pending",
            "platform_approval_status": "pending",
            "payment_signature": "f1bc9dd411917a9629a3955074b3196a",
            "refund_payment_signature": null,
            "created_at": "2025-11-21T12:49:50.000000Z"
        },
        {
            "signature": "8f409136-a236-4803-b778-49e3eb7e7b2a",
            "status": "pending",
            "platform_approval_status": "pending",
            "payment_signature": "be61fa049b806571ce96a8187ebfc1ea",
            "refund_payment_signature": null,
            "created_at": "2025-11-21T12:49:50.000000Z"
        },
        {
            "signature": "c00a4541-e7a5-40a1-a597-0cb0c2547e64",
            "status": "pending",
            "platform_approval_status": "pending",
            "payment_signature": "721176055d9d93ea85b35a0396e5e842",
            "refund_payment_signature": null,
            "created_at": "2025-11-21T12:49:49.000000Z"
        },
        {
            "signature": "29bcbb55-90af-40fc-aa78-9c3a31c65375",
            "status": "pending",
            "platform_approval_status": "pending",
            "payment_signature": "a098488736a42ac96a6b5c0751d950e5",
            "refund_payment_signature": null,
            "created_at": "2025-11-21T12:49:49.000000Z"
        },
        {
            "signature": "70deb19e-1bdb-48f6-ac70-325aa145e702",
            "status": "pending",
            "platform_approval_status": "pending",
            "payment_signature": "cdb10a21e38421320f16636f466a24e0",
            "refund_payment_signature": null,
            "created_at": "2025-11-21T12:49:49.000000Z"
        },
        {
            "signature": "02d5c41f-08f8-43a7-939e-b3543730fcbd",
            "status": "completed",
            "platform_approval_status": "approved",
            "payment_signature": "93aef08ef7df20d6bc4f920ecd1947cb",
            "refund_payment_signature": "2d4525905b5a1ca35139022f2b410d90",
            "created_at": "2025-10-11T10:37:24.000000Z"
        },
        {
            "signature": "13480454-0ec3-4266-9bff-ea33bdad50b4",
            "status": "pending",
            "platform_approval_status": "pending",
            "payment_signature": "8c1bf0bc21ff8804d51d75d15c78d447",
            "refund_payment_signature": null,
            "created_at": "2025-10-11T10:34:32.000000Z"
        },
        {
            "signature": "1785db40-ee84-4401-bebb-6d2085b9b0c8",
            "status": "pending",
            "platform_approval_status": "pending",
            "payment_signature": "5502c509c8937a158ed8102596905883",
            "refund_payment_signature": null,
            "created_at": "2025-10-10T09:12:43.000000Z"
        },
        {
            "signature": "188e87d3-1d6a-414f-9399-686ae3ea5366",
            "status": "completed",
            "platform_approval_status": "approved",
            "payment_signature": "14ced8c0885a92f7d8f0dd5183dbf7e0",
            "refund_payment_signature": "5bc3278cd882789ebd5973de565b4a3c",
            "created_at": "2025-10-08T21:54:43.000000Z"
        },
        {
            "signature": "096591d7-c62c-4545-8ed6-b4423602560d",
            "status": "completed",
            "platform_approval_status": "approved",
            "payment_signature": "efd2f7c1cd13cf0877f0c84c2cbfd408",
            "refund_payment_signature": "ecb472681aabae206880cb41036f7193",
            "created_at": "2025-10-08T15:06:26.000000Z"
        }
    ],
    "total": 10,
    "current_page": 1,
    "per_page": 20
}
 

Request      

GET api/payment/v1/refunds

Headers

X-Api-Key      

Example: {YOUR_AUTH_KEY}

X-Language      

Example: sr Language code (sr/en/ru). Example: sr

Query Parameters

page   integer  optional  

The page number. Example: 1

per_page   integer  optional  

Number of results per page. Maximum: 100. Example: 20

Response

Response Fields

data   object   
signature   string   

Refund request signature

status   string   

Refund processing status (pending/completed/failed)

platform_approval_status   string   

Platform approval status (pending/approved/rejected)

payment_signature   string   

Original payment signature

refund_payment_signature   string   

Refund payment signature (when created)

created_at   string   

Creation timestamp (ISO 8601)

total   integer   

Total records

current_page   integer   

Current page number

per_page   integer   

Items per page

Order statuses dictionary

requires authentication

Returns dictionary of possible order statuses.

Example request:
curl --request GET \
    --get "https://tic.rs/api/payment/v1/statuses/orders" \
    --header "X-Api-Key: {YOUR_AUTH_KEY}"
import requests
import json

url = 'https://tic.rs/api/payment/v1/statuses/orders'
headers = {
  'X-Api-Key': '{YOUR_AUTH_KEY}'
}

response = requests.request('GET', url, headers=headers)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://tic.rs/api/payment/v1/statuses/orders';
$response = $client->get(
    $url,
    [
        'headers' => [
            'X-Api-Key' => '{YOUR_AUTH_KEY}',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 60
x-ratelimit-remaining: 19
access-control-allow-origin: *
 

{
    "data": [
        {
            "id": 1,
            "name": "Новый"
        },
        {
            "id": 2,
            "name": "Оплачен"
        },
        {
            "id": 3,
            "name": "Отправлен в логистику"
        },
        {
            "id": 4,
            "name": "В доставке"
        },
        {
            "id": 5,
            "name": "Выполнен"
        },
        {
            "id": 6,
            "name": "Корзина"
        },
        {
            "id": 7,
            "name": "Отменен"
        }
    ]
}
 

Request      

GET api/payment/v1/statuses/orders

Headers

X-Api-Key      

Example: {YOUR_AUTH_KEY}

Response

Response Fields

data   object   
id   integer   

Status ID

name   string   

Status name

Transaction statuses dictionary

requires authentication

Returns dictionary of possible transaction statuses.

Example request:
curl --request GET \
    --get "https://tic.rs/api/payment/v1/statuses/transactions" \
    --header "X-Api-Key: {YOUR_AUTH_KEY}"
import requests
import json

url = 'https://tic.rs/api/payment/v1/statuses/transactions'
headers = {
  'X-Api-Key': '{YOUR_AUTH_KEY}'
}

response = requests.request('GET', url, headers=headers)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://tic.rs/api/payment/v1/statuses/transactions';
$response = $client->get(
    $url,
    [
        'headers' => [
            'X-Api-Key' => '{YOUR_AUTH_KEY}',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 60
x-ratelimit-remaining: 18
access-control-allow-origin: *
 

{
    "data": [
        {
            "code": "approved",
            "name": "Approved"
        },
        {
            "code": "failed",
            "name": "Failed"
        }
    ]
}
 

Request      

GET api/payment/v1/statuses/transactions

Headers

X-Api-Key      

Example: {YOUR_AUTH_KEY}

Response

Response Fields

data   object   
code   string   

Status code (approved/failed)

name   string   

Human readable name