KitabGrid Developer APIDokumentacja API v1
REST API · v1

Koran, hadisy, tłumaczenia i zatwierdzone audio

Zewnętrzne API jest celowo bardziej rygorystyczne niż strona publiczna: poza KitabGrid mogą trafić tylko treści zatwierdzone do publikacji oraz zatwierdzone pod względem źródła i ponownego użycia.

Base URLhttps://kitabgrid.com/api/v1
FormatJSON · UTF-8
UwierzytelnianieBearer / X-KitabGrid-Key

1. Proces dostępu

  1. Podaj domenę/subdomenę, dane kontaktowe, cel użycia, wymagane zakresy danych i języki tłumaczeń.
  2. Potwierdź wymagany adres e-mail.
  3. KitabGrid ręcznie ocenia stronę, zakresy i skutki licencyjne.
  4. Po zatwierdzeniu krótkotrwały jednorazowy link generuje klucz. Surowy klucz nie jest przechowywany ani wysyłany e-mailem.

2. Uwierzytelnianie i typy kluczy

kg_live_… — tajny klucz serwerowy. Używaj wyłącznie na backendzie. Zapytanie z tym kluczem jest odrzucane, gdy nagłówek Origin wskazuje użycie w przeglądarce.

kg_pub_… — klucz przeglądarkowy. Działa tylko z dokładnie zatwierdzonego originu HTTPS i nie jest traktowany jako prywatny sekret.

curl -H "Authorization: Bearer kg_live_REPLACE_ME" \ "https://kitabgrid.com/api/v1/quran/ayahs/1/1?lang=en&include=translations,audio"
fetch("https://kitabgrid.com/api/v1/quran/ayahs/1/1?lang=pl&include=translations", { headers: { "X-KitabGrid-Key": "kg_pub_REPLACE_ME" } }).then(r => r.json()).then(console.log);

Nie używaj kluczy API w query string. Klucze powinny znajdować się w nagłówku HTTP, aby zmniejszyć ryzyko wycieku przez adresy URL, referrery lub logi.

3. Endpointy API

MethodEndpointZakresCel
GET/clientauthenticatedBieżący klient, domena, zakresy i limity.
GET/languagesauthenticatedJęzyki przyznane klientowi i dostępne publicznie.
GET/quran/surahsquran.readKatalog 114 sur tam, gdzie istnieją zatwierdzone dane.
GET/quran/surahs/{surah}quran.readMetadane sury.
GET/quran/surahs/{surah}/ayahsquran.readStronicowane wersety; można dołączyć tłumaczenia/audio.
GET/quran/ayahs/{surah}/{ayah}quran.readPojedynczy werset z opcjonalnymi tłumaczeniami/audio.
GET/quran/recitersquran.audio.readZatwierdzeni recytatorzy z audio dopuszczonym do użycia.
GET/hadith/search?q=...hadith.readWyszukiwanie zatwierdzonych opublikowanych hadisów.
GET/hadith/collectionshadith.readZatwierdzone zbiory opublikowane/częściowe.
GET/hadith/collections/{slug}hadith.readMetadane zbioru.
GET/hadith/collections/{slug}/hadithshadith.readStronicowane zatwierdzone hadisy.
GET/hadith/collections/{slug}/hadiths/{number}hadith.readPojedynczy hadis z opcjonalnymi zatwierdzonymi tłumaczeniami/audio.

4. Wspólne parametry

lang=en,pl
Lista przyznanych języków tłumaczeń oddzielona przecinkami, maksymalnie 5.
include=translations,audio
Dodaje tylko żądane bloki opcjonalne i tylko przy przyznanym odpowiednim zakresie.
reciter={id}
Wybiera konkretnego zatwierdzonego recytatora Koranu. Jeśli niedostępny, system nie podstawia innego po cichu.
page / per_page
Paginacja. per_page ma limit 50.

5. Zasady treści, źródeł i licencji

  • Tekst źródłowy Koranu/hadisów jest zwracany tylko przez zatwierdzone rekordy źródeł.
  • Tłumaczenia muszą być zatwierdzone; tłumaczenia hadisów dodatkowo respektują bramę opublikowanej wersji tłumaczenia, jeśli taki workflow istnieje.
  • Audio jest zwracane tylko wtedy, gdy samo źródło audio zostało zatwierdzone do ponownego użycia. Obsługa audio hadisów istnieje, ale nie zwróci plików, dopóki nie zostaną zapisane zatwierdzone nagrania.
  • Bloki źródłowe mogą zawierać tytuł, autora/tłumacza, wydawcę, edycję, URL źródła, nazwę/URL licencji i zakres ponownego użycia. Integratorzy muszą zachować wymaganą atrybucję i informacje licencyjne.
{ "data": { "surah": 1, "ayah": 1, "arabic": "…", "translations": [{ "language": "pl", "text": "…", "source": {"title": "…", "license_name": "…", "reuse_scope": "…"} }], "audio": {"available": true, "items": [{"reciter": "…", "url": "…", "source": {"title": "…"}}]} }, "meta": {"version": "v1", "request_id": "…"} }

6. Limity, CORS i błędy

Domyślny profil zatwierdzenia to 60 zapytań/minutę i 10 000/dzień, ale administrator może ustawić inny limit dla każdego klienta. Odpowiedź 429 oznacza przekroczenie limitu.

Klucze przeglądarkowe otrzymują dokładny Access-Control-Allow-Origin tylko dla zatwierdzonej domeny/subdomeny. Dla uwierzytelnionego dostępu przeglądarkowego nie jest używany wildcard CORS.

HTTPZnaczenie
400Nieprawidłowy parametr lub żądanie.
401Brakujący/nieprawidłowy/unieważniony klucz.
403Zakres, język, origin lub stan klienta nie pozwala na zapytanie.
404Brak odpowiedniego zatwierdzonego rekordu publicznego.
429Przekroczony limit minutowy lub dzienny.
503Wymagana zależność API/danych jest niedostępna.