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
Авторизация организатора через 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));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.
Получение информации о текущем пользователе
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: 59
access-control-allow-origin: *
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.
Выход из системы (инвалидация токена)
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));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.
Обновление токена
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));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.
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: 56
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"
}
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.
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: 1764965975
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"
}
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
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.
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: 58
access-control-allow-origin: *
{
"data": [
{
"uuid": "WPWLVQ",
"name": "Odit et.",
"created_at": "2025-12-05T11:53:07+01:00",
"updated_at": "2025-12-05T12:07:21+01:00",
"city": {
"id": 1,
"name": "Beograd"
},
"event_type": {
"id": 153,
"name": "Sastanak zajednice"
},
"currency": {
"id": 1,
"code": "RSD"
},
"place": {
"id": 2,
"name": "Ben Akiba",
"address": "Браће Крсмановић 6, Београд 11000, Сербия"
},
"is_published": true,
"organizer_publish_status": true,
"has_future_dates": true,
"calendars_count": 1,
"reservations_count": 3,
"categories": [
{
"id": 39,
"name": "Sastanci"
}
],
"languages": [
{
"id": 1,
"name": "Русский"
}
]
},
{
"uuid": "TCPSCQLD",
"name": "Enim non facere tempora.",
"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, Сербия"
},
"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"
}
]
},
{
"uuid": "UJWVLXJ",
"name": "Distinctio eum doloremque id aut.",
"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, Сербия"
},
"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"
}
]
},
{
"uuid": "BEWTNNO",
"name": "Quia officia 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, Сербия"
},
"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"
}
]
},
{
"uuid": "NTLTCVIP",
"name": "Repudiandae laboriosam est.",
"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, Сербия"
},
"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"
}
]
},
{
"uuid": "SGIOGL",
"name": "Recusandae modi rerum ex.",
"created_at": "2025-11-13T22:24:03+01:00",
"updated_at": "2025-11-13T22:24: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, Сербия"
},
"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"
}
]
},
{
"uuid": "RZYHCT",
"name": "Deserunt ducimus corrupti et.",
"created_at": "2025-11-13T22:21:26+01:00",
"updated_at": "2025-11-13T22:25:05+01:00",
"city": {
"id": 1,
"name": "Beograd"
},
"event_type": {
"id": 2,
"name": "Koncert"
},
"currency": {
"id": 1,
"code": "RSD"
},
"place": {
"id": 58,
"name": "Фонтан у гостиницы Москва",
"address": "Теразијска чесма, Теразије, Београд 11000, Сербия"
},
"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"
}
]
},
{
"uuid": "FTMGOS",
"name": "Corporis nesciunt ut ratione.",
"created_at": "2025-11-13T22:18:26+01:00",
"updated_at": "2025-11-13T22:25:00+01:00",
"city": {
"id": 1,
"name": "Beograd"
},
"event_type": {
"id": 2,
"name": "Koncert"
},
"currency": {
"id": 1,
"code": "RSD"
},
"place": {
"id": 58,
"name": "Фонтан у гостиницы Москва",
"address": "Теразијска чесма, Теразије, Београд 11000, Сербия"
},
"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"
}
]
},
{
"uuid": "BMZEZC",
"name": "Aut molestiae sunt.",
"created_at": "2025-11-13T22:17:02+01:00",
"updated_at": "2025-11-13T22:24:48+01:00",
"city": {
"id": 1,
"name": "Beograd"
},
"event_type": {
"id": 2,
"name": "Koncert"
},
"currency": {
"id": 1,
"code": "RSD"
},
"place": {
"id": 58,
"name": "Фонтан у гостиницы Москва",
"address": "Теразијска чесма, Теразије, Београд 11000, Сербия"
},
"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"
}
]
},
{
"uuid": "EXQZTPPI",
"name": "Et ipsam dolorem et.",
"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, Београд, Сербия"
},
"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"
}
]
}
],
"links": {
"first": "https://tic.rs/api/organizer/v1/events?page=1",
"last": "https://tic.rs/api/organizer/v1/events?page=4",
"prev": null,
"next": "https://tic.rs/api/organizer/v1/events?page=2"
},
"meta": {
"current_page": 1,
"from": 1,
"last_page": 4,
"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=3",
"label": "3",
"active": false
},
{
"url": "https://tic.rs/api/organizer/v1/events?page=4",
"label": "4",
"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": 32
}
}
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: 57
access-control-allow-origin: *
{
"data": [
{
"purchase_date": "2025-12-05T21:15:23+01:00",
"event": {
"uuid": "WPWLVQ",
"name": "Quis adipisci molestias fugit.",
"date": "2026-08-30T17:00:00+02: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": "2025-12-05T14:18:03+01:00",
"event": {
"uuid": "LQPPWQBE",
"name": "Voluptate accusamus ut.",
"date": "2027-01-31T10: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": ""
}
},
{
"purchase_date": "2025-12-05T14:15:36+01:00",
"event": {
"uuid": "BCHGSRZ",
"name": "Ratione iure impedit.",
"date": "2027-01-31T10: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-12-05T12:08:33+01:00",
"event": {
"uuid": "ZEZCRCVA",
"name": "Alias ratione dolores.",
"date": "2027-01-31T10: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": "DE"
}
},
{
"purchase_date": "2025-12-05T10:59:31+01: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": "VN"
}
},
{
"purchase_date": "2025-12-05T10:57:37+01:00",
"event": {
"uuid": "NADSMR",
"name": "Odio dolorum voluptates.",
"date": "2026-08-30T17:00:00+02: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": "2025-12-03T06:39:09+01:00",
"event": {
"uuid": "QOEZONY",
"name": "Harum minus nostrum ipsa.",
"date": "2026-08-30T17:00:00+02: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": ""
}
},
{
"purchase_date": "2025-12-03T06:18:33+01:00",
"event": {
"uuid": "RKTYIIXX",
"name": "Sequi saepe doloribus.",
"date": "2026-08-30T17:00:00+02: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-12-03T06:16:16+01:00",
"event": {
"uuid": "UAVPADB",
"name": "Sed sed in.",
"date": "2026-08-30T17:00:00+02: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-12-02T08:12:41+01:00",
"event": {
"uuid": "DHWNPB",
"name": "Et sit doloribus.",
"date": "2026-08-30T17:00:00+02: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": "DE"
}
}
],
"links": {
"first": "https://tic.rs/api/organizer/v1/tickets?page=1",
"last": "https://tic.rs/api/organizer/v1/tickets?page=20",
"prev": null,
"next": "https://tic.rs/api/organizer/v1/tickets?page=2"
},
"meta": {
"current_page": 1,
"from": 1,
"last_page": 20,
"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=19",
"label": "19",
"active": false
},
{
"url": "https://tic.rs/api/organizer/v1/tickets?page=20",
"label": "20",
"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": 194
}
}
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.
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: 54
access-control-allow-origin: *
{
"data": [
{
"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": 1,
"current_page": 1,
"per_page": 20
}
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
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));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
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: 53
access-control-allow-origin: *
{
"message": "Not found"
}
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
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: 52
access-control-allow-origin: *
{
"data": [],
"total": 0,
"current_page": 1,
"per_page": 20
}
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
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));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
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));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
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: 51
access-control-allow-origin: *
{
"message": "Not found"
}
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
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: 50
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
}
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
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: 49
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": "Отменен"
}
]
}
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
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: 48
access-control-allow-origin: *
{
"data": [
{
"code": "approved",
"name": "Approved"
},
{
"code": "failed",
"name": "Failed"
}
]
}
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
code
string
Status code (approved/failed)
name
string
Human readable name