Expose your timetable scheduling data to end users via secure REST APIs. Choose between public access or private JWT-authenticated endpoints.
https://public.geliana.comChoose the level of access control that fits your needs
No authentication required. Anyone with the API URL can access the data. Usage is still tracked against your school's API call limits.
Require JWT authentication. Users must exchange API credentials for access tokens before making requests.
For private APIs, users need to authenticate using JWT tokens
The secret is shown only once — make sure to save it!
curl -X POST https://public.geliana.com/auth \
-H "Content-Type: application/json" \
-d '{
"type": "token",
"api_key": "gklive_xxxxxxxxxxxx",
"api_secret": "gklive_secret_xxxxxxxxxxxx",
"api_slug": "pub-id/random/id"
}'Response:
{
"access_token": "eyJhbGci...",
"refresh_token": "eyJhbGci...",
"token_type": "Bearer",
"expires_in": 86400
}curl -X POST https://public.geliana.com/auth \
-H "Content-Type: application/json" \
-d '{
"type": "refresh",
"refresh_token": "eyJhbGci..."
}'Response:
{
"access_token": "eyJhbGci...",
"refresh_token": "eyJhbGci...",
"token_type": "Bearer",
"expires_in": 86400
}9 different resources you can expose through your APIs
/tFull session timetable with all sessions
/aGroup teaching assignments
/eOrganizational containers for intrusive events
/gStudent cohorts and subgroups
/rTeaching spaces and availability
/uTeaching subjects and content
/mPublication summary with entity counts
/cCalendar and intrusive events
/iTeaching staff data
GET /apis/{publication_id}/{resource_code}/{api_id}
Authorization: Bearer {access_token}
# Example:
GET /apis/pub-abc123/t/xyz789
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...Filter results by specific entities
| Parameter | Description | Applicable Resources |
|---|---|---|
group_id | Filter allocations/groups by group | a, g |
instructor_id | Filter by instructor | a, i |
unit_id | Filter by unit | u |
room_id | Filter by room | r |
All API responses follow a consistent structure
{
"message": "success",
"time_taken_seconds": 0.123,
"count": 150,
"data": [
{
"id": "artifact-uuid",
"publication_id": "pub-123",
"school_id": "school-456",
"file_id": "file-789",
"createdAt": "2026-03-18T10:30:00",
// ... resource-specific fields
}
]
}| Status | Error | Description |
|---|---|---|
| 400 | Bad Request | Missing parameters or invalid request |
| 401 | Unauthorized | Invalid or missing JWT token |
| 402 | Payment Required | API call limit exceeded |
| 403 | Forbidden | API is inactive |
| 404 | Not Found | API or resource not found |
| 412 | Precondition Failed | School doesn't have API access |
| 500 | Internal Error | Server error |
API calls are tracked against your school's provisioned limit
Create APIs from your Timesheets and start sharing timetable data with your systems.