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.
Organizer API
Endpoints for organizers.
Rate limit: 60 requests/minute.
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: 59
access-control-allow-origin: *
{
"data": [
{
"uuid": "WPWLVQ",
"name": "Odit et.",
"created_at": "2025-06-11T20:30:36+02:00",
"updated_at": "2025-06-16T07:08:22+02:00",
"city": {
"id": 1,
"name": "Beograd"
},
"event_type": {
"id": 121,
"name": "Humanitarna večera"
},
"currency": {
"id": 1,
"code": "RSD"
},
"place": {
"id": 419,
"name": "Pozorište lutaka Pinokio",
"address": "Bulevar Mihajla Pupina 66, Beograd, Serbia"
},
"is_published": true,
"organizer_publish_status": true,
"has_future_dates": true,
"calendars_count": 5,
"reservations_count": 0,
"categories": [
{
"id": 41,
"name": "Biznis"
}
],
"languages": [
{
"id": 1,
"name": "Русский"
},
{
"id": 2,
"name": "English"
},
{
"id": 3,
"name": "Srpski"
},
{
"id": 4,
"name": "Deutsch"
}
]
},
{
"uuid": "TCPSCQLD",
"name": "Enim non facere tempora.",
"created_at": "2025-06-11T10:29:22+02:00",
"updated_at": "2025-06-27T01:49:52+02:00",
"city": {
"id": 1,
"name": "Beograd"
},
"event_type": {
"id": 2,
"name": "Koncert"
},
"currency": {
"id": 1,
"code": "RSD"
},
"place": {
"id": 2,
"name": "Ben Akiba",
"address": "Браће Крсмановић 6, Београд 11000, Сербия"
},
"is_published": true,
"organizer_publish_status": false,
"has_future_dates": false,
"calendars_count": 0,
"reservations_count": 0,
"categories": [
{
"id": 7,
"name": "Skijaški centar"
}
],
"languages": [
{
"id": 5,
"name": "Türkçe"
}
]
},
{
"uuid": "UJWVLXJ",
"name": "Distinctio eum doloremque id aut.",
"created_at": "2025-06-01T20:15:58+02:00",
"updated_at": "2025-06-11T20:30:26+02:00",
"city": {
"id": 1,
"name": "Beograd"
},
"event_type": {
"id": 121,
"name": "Humanitarna večera"
},
"currency": {
"id": 1,
"code": "RSD"
},
"place": {
"id": 419,
"name": "Pozorište lutaka Pinokio",
"address": "Bulevar Mihajla Pupina 66, Beograd, Serbia"
},
"is_published": false,
"organizer_publish_status": false,
"has_future_dates": true,
"calendars_count": 3,
"reservations_count": 0,
"categories": [
{
"id": 41,
"name": "Biznis"
}
],
"languages": [
{
"id": 4,
"name": "Deutsch"
}
]
},
{
"uuid": "BEWTNNO",
"name": "Quia officia est.",
"created_at": "2025-04-24T15:48:30+02:00",
"updated_at": "2025-06-27T04:50:03+02:00",
"city": {
"id": 1,
"name": "Beograd"
},
"event_type": {
"id": 121,
"name": "Humanitarna večera"
},
"currency": {
"id": 1,
"code": "RSD"
},
"place": {
"id": 67,
"name": "SILOSI",
"address": "Dunavski kej 46, Београд 11158, Сербия"
},
"is_published": true,
"organizer_publish_status": true,
"has_future_dates": true,
"calendars_count": 4,
"reservations_count": 13,
"categories": [
{
"id": 41,
"name": "Biznis"
}
],
"languages": [
{
"id": 1,
"name": "Русский"
},
{
"id": 2,
"name": "English"
},
{
"id": 3,
"name": "Srpski"
},
{
"id": 4,
"name": "Deutsch"
}
]
},
{
"uuid": "NTLTCVIP",
"name": "Repudiandae laboriosam est.",
"created_at": "2025-03-28T14:28:48+01:00",
"updated_at": "2025-06-26T22:04:28+02:00",
"city": {
"id": 1,
"name": "Beograd"
},
"event_type": {
"id": 43,
"name": "Karting trke"
},
"currency": {
"id": 1,
"code": "RSD"
},
"place": {
"id": 356,
"name": "Karting - KartLand Ada Huja Beograd",
"address": "Put Za Ada Huju bb, Beograd 11000, Serbia"
},
"is_published": true,
"organizer_publish_status": true,
"has_future_dates": false,
"calendars_count": 1,
"reservations_count": 0,
"categories": [
{
"id": 29,
"name": "Za odrasle"
}
],
"languages": [
{
"id": 1,
"name": "Русский"
}
]
}
],
"links": {
"first": "https://tic.rs/api/organizer/v1/events?page=1",
"last": "https://tic.rs/api/organizer/v1/events?page=1",
"prev": null,
"next": null
},
"meta": {
"current_page": 1,
"from": 1,
"last_page": 1,
"links": [
{
"url": null,
"label": "« Prethodno",
"active": false
},
{
"url": "https://tic.rs/api/organizer/v1/events?page=1",
"label": "1",
"active": true
},
{
"url": null,
"label": "Sledeće »",
"active": false
}
],
"path": "https://tic.rs/api/organizer/v1/events",
"per_page": 10,
"to": 5,
"total": 5
}
}
Example response (401, Authentication failed):
{
"message": "Invalid or inactive API key"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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.
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: 58
access-control-allow-origin: *
{
"data": [
{
"purchase_date": "2025-06-27T11:54:18+02:00",
"event": {
"uuid": "WPWLVQ",
"name": "Quis adipisci molestias fugit.",
"date": "2026-01-31T15: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": "RS"
}
},
{
"purchase_date": "2025-06-27T04:34:43+02:00",
"event": {
"uuid": "LQPPWQBE",
"name": "Voluptate accusamus ut.",
"date": "2026-01-31T15: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": "RS"
}
},
{
"purchase_date": "2025-06-25T01:07:49+02:00",
"event": {
"uuid": "BCHGSRZ",
"name": "Ratione iure impedit.",
"date": "2026-01-31T15: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": ""
}
},
{
"purchase_date": "2025-06-25T00:56:10+02:00",
"event": {
"uuid": "ZEZCRCVA",
"name": "Alias ratione dolores.",
"date": "2026-01-31T15: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": ""
}
},
{
"purchase_date": "2025-06-24T19:15:27+02:00",
"event": {
"uuid": "OLKGSSAA",
"name": "Ut dolores omnis.",
"date": "2026-01-31T15: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": "RS"
}
},
{
"purchase_date": "2025-06-19T05:24:50+02:00",
"event": {
"uuid": "NADSMR",
"name": "Odio dolorum voluptates.",
"date": "2026-01-31T15: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": "RS"
}
},
{
"purchase_date": "2025-06-19T03:33:33+02:00",
"event": {
"uuid": "QOEZONY",
"name": "Harum minus nostrum ipsa.",
"date": "2026-01-31T15: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": "RS"
}
},
{
"purchase_date": "2025-06-16T18:41:12+02:00",
"event": {
"uuid": "RKTYIIXX",
"name": "Sequi saepe doloribus.",
"date": "2026-01-31T15: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": "RS"
}
},
{
"purchase_date": "2025-06-16T16:42:00+02:00",
"event": {
"uuid": "UAVPADB",
"name": "Sed sed in.",
"date": "2026-01-31T15: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": "RS"
}
},
{
"purchase_date": "2025-06-16T16:41:05+02:00",
"event": {
"uuid": "DHWNPB",
"name": "Et sit doloribus.",
"date": "2026-01-31T15: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": "RS"
}
}
],
"links": {
"first": "https://tic.rs/api/organizer/v1/tickets?page=1",
"last": "https://tic.rs/api/organizer/v1/tickets?page=9",
"prev": null,
"next": "https://tic.rs/api/organizer/v1/tickets?page=2"
},
"meta": {
"current_page": 1,
"from": 1,
"last_page": 9,
"links": [
{
"url": null,
"label": "« Prethodno",
"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=2",
"label": "Sledeće »",
"active": false
}
],
"path": "https://tic.rs/api/organizer/v1/tickets",
"per_page": 10,
"to": 10,
"total": 85
}
}
Example response (401, Authentication failed):
{
"message": "Invalid or inactive API key"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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.