Dokumentacja API tylko do odczytu z listą aktywnych webinarów i aktywnych kursów platformy szkoleniowej.
GET application/json Auth: nagłówek X-API-Key| Adres bazowy | https://TWOJA-DOMENA/api/public/v1 |
|---|---|
| Metoda HTTP | GET |
| Format odpowiedzi | application/json |
| Kodowanie | UTF-8 |
| Wersjonowanie | Wersja jest w ścieżce (/v1/). Zmiany łamiące trafią do /v2/, a /v1/ zostanie niezmienione. |
Adres TWOJA-DOMENA to domena instancji (ta sama, na której działa strona zapisu). API jest wyłącznie do odczytu: nie tworzy ani nie zmienia danych.
Klucz API należy przesłać w nagłówku HTTP X-API-Key. Klucz generuje administrator w panelu (Ustawienia → Klucze API) i przekazuje go odbiorcy.
X-API-Key: TWOJ_KLUCZ_API
Można wydać wiele kluczy dla różnych odbiorców i wyłączać je niezależnie. Wyłączenie lub usunięcie klucza odbiera dostęp natychmiast.
| Adres | GET /api/public/v1/webinars |
|---|---|
| Zwraca | Tablicę JSON aktywnych webinarów (opublikowane i jeszcze niezakończone), posortowaną według daty rozpoczęcia rosnąco. |
| Pole | Typ | Opis |
|---|---|---|
slug | string | Identyfikator w adresie strony zapisu. |
title | string | Tytuł webinaru. |
description | string / null | Krótki opis (zajawka). Bez znaczników HTML. |
startsAt | string (ISO 8601) | Termin rozpoczęcia z przesunięciem strefy, np. 2026-09-17T09:00:00+02:00. |
endsAt | string (ISO 8601) | Termin zakończenia. |
timezone | string | Strefa czasowa webinaru, np. Europe/Warsaw. |
registrationOpen | boolean | Intencja organizatora co do otwarcia zapisów. |
capacity | integer / null | Limit miejsc. null oznacza brak limitu. |
registeredCount | integer | Liczba zajętych miejsc (bez rezygnacji). |
registrationUrl | string / null | Pełny adres strony zapisu. null, gdy w instancji nie ustawiono publicznego adresu. |
| Adres | GET /api/public/v1/courses |
|---|---|
| Zwraca | Tablicę JSON opublikowanych kursów, w kolejności ustalonej przez administratora. |
| Pole | Typ | Opis |
|---|---|---|
slug | string | Identyfikator w adresie strony kursu. |
title | string | Tytuł kursu. |
subtitle | string / null | Podtytuł. |
description | string / null | Krótki opis. |
category | string / null | Kategoria kursu. |
level | string / null | Poziom: BASIC, INTERMEDIATE lub ADVANCED. |
durationMinutes | integer / null | Łączny czas materiału w minutach. null, gdy nie podano. |
free | boolean | true dla kursu bezpłatnego. |
priceGross | number / null | Cena brutto. null dla kursu darmowego. |
currency | string | Waluta ceny, np. PLN. |
enrolledCount | integer | Liczba kursantów (zapisy aktywne i ukończone). |
courseUrl | string / null | Pełny adres strony kursu. null, gdy nie ustawiono publicznego adresu. |
curl -X GET "https://TWOJA-DOMENA/api/public/v1/webinars" \ -H "X-API-Key: TWOJ_KLUCZ_API"
curl -X GET "https://TWOJA-DOMENA/api/public/v1/courses" \ -H "X-API-Key: TWOJ_KLUCZ_API"
const response = await fetch("https://TWOJA-DOMENA/api/public/v1/webinars", {
method: "GET",
headers: { "X-API-Key": "TWOJ_KLUCZ_API" }
});
if (!response.ok) {
throw new Error("API zwrocilo status " + response.status);
}
const webinars = await response.json();
console.log(webinars.length, "aktywnych webinarow");
<?php
$ch = curl_init("https://TWOJA-DOMENA/api/public/v1/courses");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, ["X-API-Key: TWOJ_KLUCZ_API"]);
$body = curl_exec($ch);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if ($status === 200) {
$courses = json_decode($body, true);
foreach ($courses as $course) {
echo $course["title"] . "\n";
}
}
[
{
"slug": "audyt-sieci-20260917",
"title": "Audyt bezpieczenstwa sieci",
"description": "Jak wykryc luki, zanim zrobi to ktos inny.",
"startsAt": "2026-09-17T09:00:00+02:00",
"endsAt": "2026-09-17T10:30:00+02:00",
"timezone": "Europe/Warsaw",
"registrationOpen": true,
"capacity": 100,
"registeredCount": 42,
"registrationUrl": "https://TWOJA-DOMENA/w/audyt-sieci-20260917"
}
]
[
{
"slug": "podstawy-eksploatacji",
"title": "Podstawy eksploatacji sieci wodociagowej",
"subtitle": "Kurs dla poczatkujacych",
"description": "Od podstaw do samodzielnej pracy.",
"category": "Eksploatacja",
"level": "BASIC",
"durationMinutes": 180,
"free": false,
"priceGross": 490.00,
"currency": "PLN",
"enrolledCount": 128,
"courseUrl": "https://TWOJA-DOMENA/kurs/podstawy-eksploatacji"
}
]
Brak pozycji zwraca pustą tablicę [] ze statusem 200 – to nie jest błąd.
Ciało błędu ma postać { "message": "...", "fields": {} }.
| HTTP | Komunikat | Znaczenie |
|---|---|---|
| 401 | Nieprawidłowy lub brakujący klucz API. | Brak nagłówka X-API-Key, pusty, błędny albo wyłączony klucz. Jeden komunikat dla wszystkich tych przypadków. |
| 404 | Nie znaleziono zasobu pod tym adresem. | Zły adres endpointu. |
| 405 | Metoda ... nie jest obsługiwana pod tym adresem. | Użyto innej metody niż GET. |
X-API-Key w logach aplikacyjnych.X-API-Key zwraca HTTP 401.[] ze statusem 200.