Genel Bakış
https://xlyazilim.com/api/v1Tüm API istekleri bu base URL üzerinden yapılmalıdır.
/ tuşu veya Ctrl+K kısayolu ile endpoint arayabilirsiniz.
Esc ile aramayı kapatın.
Hızlı Başlangıç
Kimlik Doğrulama
API, Laravel Sanctum tabanlı token authentication kullanır. Korumalı endpoint'lere erişmek için her istekte token gönderilmelidir.
Authorization: Bearer YOUR_TOKEN_HERE
Hata Kodları
API standart HTTP durum kodlarını kullanır. Hata durumunda detaylı mesaj döner.
| Kod | Durum | Açıklama |
|---|---|---|
| 200 | OK | İstek başarılı |
| 201 | Created | Kaynak başarıyla oluşturuldu |
| 400 | Bad Request | Geçersiz istek formatı |
| 401 | Unauthorized | Kimlik doğrulama gerekli veya token geçersiz |
| 403 | Forbidden | Bu işlem için yetkiniz yok |
| 404 | Not Found | Kaynak bulunamadı |
| 422 | Validation Error | Doğrulama hatası (detaylar response'da) |
| 429 | Too Many Requests | Rate limit aşıldı |
| 500 | Server Error | Sunucu hatası |
{
"success": false,
"message": "Validation failed",
"errors": {
"email": ["Email alanı gereklidir."],
"password": ["Şifre en az 8 karakter olmalıdır."]
}
}
Kimlik Doğrulama (Auth)
6 EndpointKullanıcı kayıt, giriş, çıkış ve şifre işlemleri için kullanılan endpoint'ler. Token tabanlı kimlik doğrulama (Laravel Sanctum) kullanılmaktadır.
Yeni bir kullanıcı hesabı oluşturur. Başarılı kayıt sonrası otomatik olarak token döner.
Request Body
| Parametre | Tip | Açıklama |
|---|---|---|
| name Zorunlu | string | Kullanıcının tam adı (min: 2) |
| email Zorunlu | string | Geçerli ve benzersiz email adresi |
| password Zorunlu | string | Şifre (min: 8 karakter) |
| password_confirmation Zorunlu | string | Şifre tekrarı |
Test Et
Email ve şifre ile giriş yapar, başarılı olursa Bearer token döner. Bu token diğer korumalı endpoint'lerde kullanılır.
Request Body
| Parametre | Tip | Açıklama |
|---|---|---|
| email Zorunlu | string | Kayıtlı email adresi |
| password Zorunlu | string | Kullanıcı şifresi |
Test Et
{
"success": true,
"message": "Giriş başarılı",
"token": "1|abc123...",
"user": {
"id": 1,
"name": "John Doe",
"email": "john@example.com"
}
}
Giriş yapmış kullanıcının bilgilerini döner. Token gerektirir.
Test Et
Mevcut token'ı iptal eder ve kullanıcıyı çıkış yaptırır.
Test Et
Şifre sıfırlama e-postası gönderir.
Request Body
| Parametre | Tip | Açıklama |
|---|---|---|
| email Zorunlu | string | Kayıtlı email adresi |
Test Et
Token ile şifre sıfırlama işlemini tamamlar.
Request Body
| Parametre | Tip | Açıklama |
|---|---|---|
| token Zorunlu | string | E-posta ile gelen sıfırlama token'ı |
| email Zorunlu | string | Kullanıcı email adresi |
| password Zorunlu | string | Yeni şifre (min: 8) |
| password_confirmation Zorunlu | string | Yeni şifre tekrarı |
Test Et
Onboarding
5 EndpointYeni kullanıcıların ilk giriş akışını yöneten endpoint'ler. Kullanıcı tercihlerini toplar ve profili yapılandırır.
Aktif onboarding flow'u ve tüm adımlarını döner. Kullanıcının mevcut durumunu ve tamamlanan adımları içerir.
Test Et
Tüm onboarding adımlarını cevaplanma durumuyla birlikte listeler. Bu endpoint ile tüm step'leri tek seferde alabilir ve next'e gerek kalmadan flow'u gösterebilirsiniz.
Test Et
Kullanıcının tamamlaması gereken bir sonraki onboarding adımını döner. Cevaplanan step'ten sonraki ilk cevaplanmamış step'i döndürür.
Test Et
Belirli bir onboarding adımı için kullanıcının cevabını kaydeder.
URL Parametreleri
| Parametre | Tip | Açıklama |
|---|---|---|
| step_id Zorunlu | integer | Onboarding adım ID'si |
Request Body
| Parametre | Tip | Açıklama |
|---|---|---|
| option_id Opsiyonel | integer | Seçilen seçenek ID'si (single/multiple choice için) |
| option_ids Opsiyonel | array | Seçilen seçenek ID'leri (multiple choice için) |
| answer Opsiyonel | string|number|boolean|array | Cevap değeri (soru tipine göre: text, number, date, boolean, single_choice, multi_choice) |
Test Et
Onboarding sürecini tamamlar ve kullanıcıyı ana uygulamaya yönlendirir.
Test Et
Engagement & Points
4 EndpointGünlük giriş, streak takibi ve puan kazanma sistemi için kullanılan endpoint'ler.
Kullanıcının günlük girişini kaydeder. Streak bilgisi ve bonus XP döner.
Test Et
Belirli bir eylem için puan kazandırır. Aksiyon tipine göre puan miktarı değişir.
Request Body
| Parametre | Tip | Açıklama |
|---|---|---|
| action Zorunlu | string | Aksiyon tipi (lesson_complete, quiz_pass, streak_bonus vb.) |
| reference_type Opsiyonel | string | Referans model tipi |
| reference_id Opsiyonel | integer | Referans model ID'si |
Test Et
Kullanıcının mevcut puan durumunu, seviye bilgisini ve streak verisini döner.
Test Et
Kullanıcının puan kazanma geçmişini sayfalı olarak döner.
Query Parametreleri
| Parametre | Tip | Açıklama |
|---|---|---|
| page Opsiyonel | integer | Sayfa numarası (varsayılan: 1) |
| per_page Opsiyonel | integer | Sayfa başına kayıt (varsayılan: 20) |
Test Et
Avatar Sistemi
3 EndpointKullanıcı avatarı özelleştirme ve yönetim endpoint'leri. Kategorilere göre avatar parçaları satın alınabilir ve kombinlenebilir.
Tüm avatar kategorilerini ve içerdikleri parçaları döner. Her parçanın fiyatı, kilit durumu ve kullanıcının sahip olup olmadığı bilgisi içerir.
Test Et
Kullanıcının mevcut avatar konfigürasyonunu döner. Seçili parçalar ve sahip olunan tüm parçalar listelenir.
Test Et
Avatar konfigürasyonunu kaydeder. Yeni parça seçimi veya satın alma işlemi yapar. Kullanıcının sahip olmadığı parça seçilirse otomatik satın alma yapılır.
Request Body
| Parametre | Tip | Açıklama |
|---|---|---|
| selections Zorunlu | object | Kategori bazlı seçimler {"hair": 5, "eyes": 2, ...} |
Test Et
Seviye Belirleme (Placement)
5 EndpointKullanıcının İngilizce seviyesini belirlemek için kullanılan test sistemi. Adaptif sorularla kullanıcının gerçek seviyesi tespit edilir.
Kullanıcının alabileceği aktif placement testlerini listeler. Daha önce tamamlanmış ve devam eden testler bilgisi içerir.
Test Et
Yeni bir placement test oturumu başlatır veya devam eden oturumu döner. İlk soru ile birlikte oturum bilgisi döner.
Request Body
| Parametre | Tip | Açıklama |
|---|---|---|
| test_id Zorunlu | integer | Test ID'si (aktif testlerden birini seçin) |
Test Et
Mevcut soruya cevap gönderir. Adaptif sistem sonraki soruyu belirler. Cevap doğruluğuna göre zorluk seviyesi ayarlanır.
Request Body
| Parametre | Tip | Açıklama |
|---|---|---|
| attempt_id Zorunlu | integer | Test attempt ID'si (start endpoint'inden alınır) |
| question_id Zorunlu | integer | Soru ID'si |
| answer Opsiyonel | string | Seçilen cevap (soru tipine göre değişir) |
Test Et
Placement testini tamamlar ve sonuçları hesaplar. Belirlenen seviye kullanıcı profiline kaydedilir.
Request Body
| Parametre | Tip | Açıklama |
|---|---|---|
| attempt_id Zorunlu | integer | Test attempt ID'si (start endpoint'inden alınır) |
Test Et
Kullanıcının placement test sonucu belirlenen seviyesini döner. Test tamamlanmamışsa null döner.
Test Et
Öğrenci API (Student)
10 EndpointÖğrenci paneli için sınıf, ders, aktivite, sınav ve ilerleme bilgilerini yöneten endpoint'ler.
Öğrencinin kayıtlı olduğu sınıfları listeler.
Test Et
Öğrencinin erişebileceği dersleri listeler.
Test Et
Belirli bir dersin detay bilgilerini döner.
Test Et
Öğrencinin atanmış sınavlarını listeler.
Test Et
Sınav detay bilgilerini döner.
Test Et
Sınav cevaplarını gönderir.
Test Et
Öğrencinin genel ilerleme bilgilerini döner.
Test Et
Öğrencinin puan bilgilerini döner.
Test Et
Öğrencinin kazandığı rozetleri listeler.
Test Et
Sınıf veya okul bazlı liderlik tablosunu döner.
Test Et
Pratik - AI Konuşma
14 Endpoint1. Senaryo Pratiği: Önceden tanımlanmış konularda AI ile rol yaparak konuşma (POST /practice/start)
2. Serbest Konuşma: Herhangi bir konuda zamanlı serbest konuşma (POST /practice/free/start)
Her iki modül için de Review (geri bildirim) desteği mevcuttur.
A1 (Başlangıç) • A2 (Temel) • A1-A2 (Geçiş) •
B1 (Orta) • B2 (Orta Üstü) • A2-B1 • B1-B2 •
C1 (İleri) • C2 (Üstün) • B2-C1 • C1-C2
AI destekli interaktif konuşma pratiği. Tüm konuşmalar TTS (Text-to-Speech) desteğine sahiptir. Piper-TTS motoru kullanılır (en_US-libritts-high ONNX modeli).
Senaryo Tabanlı Konuşma Pratiği
Farkli roller (arkadaş, öğretmen, iş görüşmecisi), konular ve adım sayısı ile senaryo tabanlı konuşmalar. TTS ses desteği dahil.
Panel Senaryo Alanları → API Parametre Eşlemesi
Panelden oluşturulan senaryoda yer alan alanlar, konuşma başlatılırken aşağıdaki API parametrelerine map edilir.
| Panel alanı | API parametresi | Açıklama |
|---|---|---|
| Konu Başlığı (Topic) | topic + llm_role |
Ana konu başlığı hem topic hem llm_role parametrelerine eklenir |
| Konu İçerik Detayı | details |
Senaryo veya metin bağlamı |
| Hedef Kelimeler (Vocabulary) | vocabulary |
Pratik yapılacak kelime listesi (array, max 20) |
| Hedef Gramer Kuralları | target_grammar |
Hedef gramer kuralları veya tense (max 10) |
| Zorluk Seviyesi | difficulty |
CEFR seviyesi: A1–C2 |
Konuşma pratiğinde kullanılabilir TTS seslerinin listesini döner. Kadın ve erkek ses seçenekleri voice_id, isim, açıklama ve speaker_id ile döner.
Erkek Sesler: male_1 (David), male_2 (Michael), male_3 (James), male_4 (Robert), male_5 (William), male_6 (Daniel), male_7 (Thomas), male_8 (Christopher)
Test Et
Giriş yapan kullanıcının sınıfı ve İngilizce seviyesine göre konuşma senaryolarını döner.
Listeden seçilen senaryonun id değeri ile POST /practice/start çağrılarak konuşma başlatılır.
Query Parameters (Opsiyonel)
| Parametre | Tip | Açıklama |
|---|---|---|
| grade_level_id Opsiyonel | integer | Sınıf ID. Yoksa kullanıcının kayıtlı olduğu sınıftan alınır. |
| level_band_id Opsiyonel | integer | Seviye bandı ID (A1, A2, B1 vb.). |
| unit_id Opsiyonel | integer | Ünite ID ile filtre |
| difficulty Opsiyonel | string | beginner, intermediate, advanced |
| category Opsiyonel | string | travel, business, daily_life, shopping, healthcare vb. |
Test Et
Senaryo tabanlı konuşma oturumu başlatır. AI'nın rolü, konu, kelime hedefleri ve gramer hedefleri belirlenir.
session_id döner, sonraki mesajlar için bu ID kullanılır.
Senaryo ID ile Başlatma (Önerilen)
| Parametre | Tip | Açıklama |
|---|---|---|
| scenario_id Opsiyonel | integer | Panelden oluşturulan senaryonun ID'si. Verildiğinde topic, details, vocabulary, target_grammar, difficulty, partner_name, llm_role, total_steps otomatik doldurulur. |
Request Body (scenario_id yoksa zorunlu)
| Parametre | Tip | Zorunlu | Açıklama |
|---|---|---|---|
| partner_name | string | Evet* | AI partnerin adı (1-50 karakter). Örn: "Sarah" |
| llm_role | string | Evet* | AI'nın rol açıklaması (5-300 karakter). Örn: "friendly coffee shop barista" |
| total_steps | integer | Evet* | Konuşma adım sayısı (3-30) |
| topic | string | Hayır | Konuşma konusu (max 200 karakter) |
| details | string | Hayır | Ek detaylar/bağlam (max 500 karakter) |
| vocabulary | array | Hayır | Hedef kelimeler (max 20) |
| target_grammar | array | Hayır | Hedef gramer yapıları (max 10) |
| difficulty | string | Hayır | CEFR seviyesi (varsayılan: B1) |
| voice_gender | string | Hayır | male veya female (varsayılan: female) |
| voice_id | string | Hayır | Belirli ses ID (örn: female_3, male_1) |
| speech_rate | float | Hayır | Ses hızı: 0.5-1.5 (varsayılan: 1.0) |
| enable_tts | boolean | Hayır | TTS aktif/pasif (varsayılan: true) |
| textbook_grade | string | Hayır | Ders kitabı sınıf seviyesi (2-12) |
{
"partner_name": "Sarah",
"llm_role": "friendly coffee shop barista",
"total_steps": 8,
"topic": "ordering coffee",
"details": "Focus on polite expressions",
"vocabulary": ["latte", "espresso", "pastry"],
"target_grammar": ["Would like", "Present Perfect"],
"difficulty": "B1",
"voice_gender": "female",
"speech_rate": 1.0,
"enable_tts": true
}
{
"session_id": "a1b2c3d4e5f6g7h8",
"opening_message": "Hi there! Welcome to our coffee shop. What can I get for you today?",
"partner_name": "Sarah",
"total_steps": 8,
"audio_base64": "UklGRi4AAAB... (base64 WAV veya null)",
"voice_id": "female_1"
}
Test Et
Devam eden konuşmada mesaj gönderir ve AI yanıtını alır. Adım sayacı ve bitiş durumu döner.
is_done: true olduğunda konuşma tamamlanmıştır.
Request Body
| Parametre | Tip | Zorunlu | Açıklama |
|---|---|---|---|
| session_id | string | Evet | /start'tan dönen session_id |
| user_message | string | Evet | Kullanıcının mesajı (1-2000 karakter) |
{
"session_id": "a1b2c3d4e5f6g7h8",
"user_message": "Hi! I would like a latte please."
}
{
"session_id": "a1b2c3d4e5f6g7h8",
"ai_message": "Sure! Would you like a regular or large latte?",
"current_step": 2,
"total_steps": 8,
"remaining_steps": 6,
"is_done": false,
"audio_base64": "UklGRi4AAAB... (base64 WAV veya null)"
}
Test Et
Konuşma oturumunu sonlandırır ve özet rapor döner.
Request Body
| Parametre | Tip | Zorunlu | Açıklama |
|---|---|---|---|
| session_id | string | Evet | Konuşma oturum ID'si |
Test Et
Kullanıcının geçmiş konuşmalarını listeler. Filtreleme yapılabilir.
Query Parameters (Opsiyonel)
| Parametre | Tip | Açıklama |
|---|---|---|
| status Opsiyonel | string | active veya completed |
| per_page Opsiyonel | integer | Sayfa başına kayıt (varsayılan: 20, max: 50) |
Test Et
Belirli bir konuşmanın detaylarını ve tüm mesajlarını getirir.
URL Parameters
| Parametre | Tip | Açıklama |
|---|---|---|
| id Zorunlu | integer | Konuşma ID'si |
Test Et
Senaryo Pratik Review (Denetleme)
Tamamlanan senaryo tabanlı pratik oturumunun transkripsiyonunu analiz eder. Kullanıcının her mesajı hata tespiti yapılır,
[red]...[red] etiketleriyle işaretlenir, düzeltilmiş versiyon ve hata açıklamaları döner.
CEFR seviyesine göre kalibre edilir: A1/A2'de toleranslı, C1/C2'de sıkı.
AI ve kullanıcı mesajlarını alır, sadece kullanıcı mesajlarını analiz eder. Tek bir LLM çağrısıyla tüm mesajlar analiz edilir.
Senaryo tabanlı pratik için topic ve details alanları mevcuttur.
Request Body
| Parametre | Tip | Zorunlu | Açıklama |
|---|---|---|---|
| ai_transcript | array<string> | Evet | AI mesajları (sırasıyla, 1-50 mesaj) |
| user_transcript | array<string> | Evet | Kullanıcı mesajları (sırasıyla, 1-50 mesaj) |
| difficulty | string | Hayır | CEFR seviyesi (varsayılan: B1) |
| topic | string | Hayır | Konuşma konusu - bağlam için (max 200) |
| details | string | Hayır | Ek detaylar - bağlam için (max 500) |
| conversation_id | integer | Hayır | Lokal konuşma ID (otomatik konu doldurma) |
{
"ai_transcript": [
"Hi! Welcome to our coffee shop. What can I get for you today?",
"Sure! Would you like a regular or large latte?",
"Great choice! That will be $4.50."
],
"user_transcript": [
"Hi! I would like a latte please.",
"I want large one.",
"Here you go. I buyed a cookie too."
],
"difficulty": "B1",
"topic": "ordering coffee",
"details": "Focus on polite expressions"
}
{
"reviews": [
{
"id": 1,
"original": "Hi! I would like a latte please.",
"annotated": "Hi! I would like a latte please.",
"corrected": "Hi! I would like a latte please.",
"errors": [],
"has_errors": false
},
{
"id": 2,
"original": "I want large one.",
"annotated": "I want [red]large[red] one.",
"corrected": "I want a large one.",
"errors": ["Missing article: 'a' before 'large one'"],
"has_errors": true
},
{
"id": 3,
"original": "Here you go. I buyed a cookie too.",
"annotated": "Here you go. I [red]buyed[red] a cookie too.",
"corrected": "Here you go. I bought a cookie too.",
"errors": ["Wrong verb form: 'buyed' should be 'bought' (irregular past)"],
"has_errors": true
}
],
"overall_feedback": "Good basic communication with minor grammar errors.",
"total_messages": 3,
"messages_with_errors": 2
}
reviews[].annotated — Hatalar [red]....[red] ile işaretli versiyonreviews[].corrected — Tam düzeltilmiş versiyonreviews[].errors — Her hata için kısa açıklama (boşsa hata yok)overall_feedback — Genel performans özeti
Test Et
Serbest Konuşma (Free Practice)
Zaman tabanlı serbest İngilizce konuşma pratiği. AI doğrudan öğretmen rolünde, rol yapma yok. 10, 15 veya 20 dakikalık oturumlar. Kalan süre her yanıtta döner, süre dolunca AI kapanış mesajı verir.
Zaman tabanlı serbest konuşma oturumu başlatır. Konu belirlenmez, AI öğretmen olarak serbest konuşma başlatır.
Request Body
| Parametre | Tip | Zorunlu | Açıklama |
|---|---|---|---|
| duration_minutes | integer | Hayır | Süre: 10, 15 veya 20 dakika (varsayılan: 15) |
| difficulty | string | Hayır | CEFR seviyesi (varsayılan: B1) |
| voice_gender | string | Hayır | male veya female (varsayılan: female) |
| voice_id | string | Hayır | Belirli ses ID (örn: female_3) |
| speech_rate | float | Hayır | Ses hızı: 0.5-1.5 (varsayılan: 1.0) |
| enable_tts | boolean | Hayır | TTS aktif/pasif (varsayılan: true) |
{
"duration_minutes": 15,
"difficulty": "B1",
"voice_gender": "female",
"speech_rate": 1.0,
"enable_tts": true
}
{
"session_id": "f8e7d6c5b4a39281",
"opening_message": "Hello! Welcome to our practice session. How are you today?",
"duration_minutes": 15,
"remaining_seconds": 900,
"audio_base64": "UklGRi4AAAB... (base64 WAV veya null)",
"voice_id": "female_1"
}
Test Et
Devam eden serbest konuşmada mesaj gönderir. remaining_seconds ile geri sayım takip edilir.
is_done: true olduğunda oturum bitmiştir.
Request Body
| Parametre | Tip | Zorunlu | Açıklama |
|---|---|---|---|
| session_id | string | Evet | /start'tan dönen session_id |
| user_message | string | Evet | Kullanıcının mesajı (1-2000 karakter) |
{
"session_id": "f8e7d6c5b4a39281",
"user_message": "I like traveling. Last summer I go to Italy."
}
{
"session_id": "f8e7d6c5b4a39281",
"ai_message": "How exciting! Just a small note - we say 'I went to Italy'...",
"remaining_seconds": 840,
"is_done": false,
"audio_base64": "UklGRi4AAAB..."
}
Test Et
Mesaj göndermeden oturum zamanlayıcısını kontrol eder. UI geri sayımı için idealdir.
URL Parameters
| Parametre | Tip | Açıklama |
|---|---|---|
| session_id Zorunlu | string | Oturum ID'si |
{
"session_id": "f8e7d6c5b4a39281",
"duration_minutes": 15,
"elapsed_seconds": 120,
"remaining_seconds": 780,
"is_done": false,
"message_count": 4
}
Test Et
Serbest konuşma pratiğinde kullanılabilir TTS seslerinin listesini döner.
Test Et
Serbest Konuşma Review (Denetleme)
Tamamlanan serbest konuşma oturumunun transkripsiyonunu analiz eder. Senaryo tabanlı review'dan farkı:
topic ve details alanı YOKTUR. Serbest konuşmanın önceden belirlenmiş bir senaryosu olmadığı için bağlam sadece konuşma akışından çıkarılır.
AI ve kullanıcı mesajlarını alır, sadece kullanıcı mesajlarını analiz eder. topic/details YOKTUR — serbest konuşma olduğu için bağlam sadece konuşma akışından çıkarılır.
•
topic alanı YOK•
details alanı YOK• Prompt'ta "Session Type: Free conversation" olarak belirtilir
• Diğer tüm özellikler (hata tespiti, [red] işaretleme, CEFR kalibrasyonu) aynıdır
Request Body
| Parametre | Tip | Zorunlu | Açıklama |
|---|---|---|---|
| ai_transcript | array<string> | Evet | AI mesajları (sırasıyla, 1-50 mesaj) |
| user_transcript | array<string> | Evet | Kullanıcı mesajları (sırasıyla, 1-50 mesaj) |
| difficulty | string | Hayır | CEFR seviyesi (varsayılan: B1) |
{
"ai_transcript": [
"Hello! Welcome to our practice session. How are you today?",
"That sounds lovely! What do you enjoy most about traveling?",
"Italy has amazing food! What was your favorite dish there?"
],
"user_transcript": [
"I am fine, thank you. I like traveling very much.",
"I enjoy to visit new places and meet new peoples.",
"I eated pasta every day! It was very delicious."
],
"difficulty": "B1"
}
{
"reviews": [
{
"id": 1,
"original": "I am fine, thank you. I like traveling very much.",
"annotated": "I am fine, thank you. I like traveling very much.",
"corrected": "I am fine, thank you. I like traveling very much.",
"errors": [],
"has_errors": false
},
{
"id": 2,
"original": "I enjoy to visit new places and meet new peoples.",
"annotated": "I enjoy [red]to visit[red] new places and meet new [red]peoples[red].",
"corrected": "I enjoy visiting new places and meeting new people.",
"errors": [
"Wrong verb form: 'enjoy to visit' should be 'enjoy visiting' (gerund)",
"Wrong plural: 'peoples' should be 'people' (irregular plural)"
],
"has_errors": true
},
{
"id": 3,
"original": "I eated pasta every day! It was very delicious.",
"annotated": "I [red]eated[red] pasta every day! It was very delicious.",
"corrected": "I ate pasta every day! It was very delicious.",
"errors": [
"Wrong verb form: 'eated' should be 'ate' (irregular past tense of 'eat')"
],
"has_errors": true
}
],
"overall_feedback": "Good conversational skills with some verb form errors.",
"total_messages": 3,
"messages_with_errors": 2
}
Test Et
TTS Ses Sistemi Bilgisi
Çıktı: WAV (base64 encoded)
Ses seçimi:
voice_gender ile cinsiyet bazlı veya voice_id ile belirli ses seçilebilir.
Kadın Sesler
| Voice ID | İsim | Açıklama |
|---|---|---|
female_1 | Emily | Warm, friendly |
female_2 | Sarah | Clear, professional |
female_3 | Jessica | Soft, gentle |
female_4 | Ashley | Energetic |
female_5 | Amanda | Calm, soothing |
female_6 | Rachel | Bright |
female_7 | Olivia | Mature |
female_8 | Emma | Young, clear |
Erkek Sesler
| Voice ID | İsim | Açıklama |
|---|---|---|
male_1 | David | Deep, calm |
male_2 | Michael | Clear, professional |
male_3 | James | Authoritative |
male_4 | Robert | Warm, mature |
male_5 | William | Neutral |
male_6 | Daniel | Energetic |
male_7 | Thomas | Deep, slow |
male_8 | Christopher | Clear, broadcast |
Speech Rate / Speed Değerleri
| Değer | Açıklama |
|---|---|
0.5 | Çok hızlı |
0.75 | Hızlı (ileri seviye için) |
1.0 | Normal (varsayılan) |
1.25 | Yavaş (orta seviye için) |
1.5 | Çok yavaş (başlangıç için) |
Sınıf (Classroom)
4 Endpoint
Öğrencinin sınıf bölümüne ait ana özet + erişebileceği üniteler, dersler ve ders detayı.
Hiyerarşi: SchoolClass → Unit → Lesson → (Reading / Listening / Speaking / Writing / PracticeScenario / SkillExam)
/topics/* endpoint'leri kaldırıldı.
Artık ünite ve dersler /classroom/overview ve /student/* altında listelenir.
Sınav ve eğitim programları /classroom/exams/* ve /classroom/education/* altındadır.
Öğrencinin sınıflarına atanmış üniteleri, aktif sınavlarını ve eğitim programlarını tek bir yanıtta döner. Sınıf sekmesinin ana ekranı için kullanılır.
{
"success": true,
"data": {
"units": [
{
"id": 1,
"title": "Ünite 1: Greetings & Introductions",
"description": "Tanışma ve selamlaşma kalıpları",
"lessons_count": 5,
"icon": "ph-handshake"
}
],
"active_exams": [
{
"assignment_id": 12,
"exam": {
"id": 4,
"title": "Unit 1 Reading Quiz",
"exam_type": "reading",
"duration_minutes": 20,
"total_questions": 10
},
"due_date": "2026-05-01T23:59:59+03:00"
}
],
"education": {
"enrollments": [
{
"program_id": 1,
"title": "Yaz Kampı A1",
"description": "Başlangıç seviyesi ingilizce",
"status": "in_progress",
"completion_percent": 35
}
],
"available_programs": [
{ "id": 2, "title": "Kış Okulu A2", "description": "A2 seviyesine geçiş" }
]
},
"progress": {
"total_sessions": 12,
"completed_sessions": 7,
"total_xp": 420,
"completion_percent": 58
}
}
}
Test Et
Öğrencinin kayıtlı olduğu sınıfları, sınıf seviyesi, okul ve dönem bilgileri ile döner.
{
"success": true,
"data": [
{
"id": 1,
"name": "5-A Sınıfı",
"grade_level": "5. Sınıf",
"school": "Atatürk Ortaokulu",
"term": "2026 Bahar",
"enrolled_at": "2026-02-01T00:00:00.000000Z"
}
]
}
Test Et
Öğrencinin sınıflarına atanmış ünitelerdeki tüm aktif dersleri döner.
{
"success": true,
"data": [
{
"id": 1,
"title": "Lesson 1: Hello & Nice to Meet You",
"description": "Temel selamlaşma kalıpları",
"duration_min": 30,
"unit": "Ünite 1: Greetings & Introductions",
"order": 1
}
]
}
Test Et
Bir dersin içeriklerini (Reading / Listening / Speaking / Writing / Practice / Sınav) birleşik olarak döner.
contents altında her içerik tipi ayrı bir dizidir.
{
"success": true,
"data": {
"id": 1,
"title": "Lesson 1: Hello & Nice to Meet You",
"description": "Temel selamlaşma kalıpları",
"duration_min": 30,
"unit": { "id": 1, "title": "Ünite 1: Greetings & Introductions" },
"contents": {
"reading": [ { "id": 10, "title": "Meeting New Friends", "difficulty": "A1" } ],
"listening": [ { "id": 4, "title": "A Phone Call", "duration": 45 } ],
"speaking": [ { "id": 2, "title": "Introduce Yourself" } ],
"writing": [ { "id": 1, "title": "Write About Your Day" } ],
"practice": [
{ "id": 3, "topic": "Meeting a Classmate", "cefr_level": "A1" }
],
"exams": [ { "id": 4, "title": "Unit 1 Reading Quiz", "exam_type": "reading" } ]
}
}
}
Test Et
Sınavlarım (Exams)
11 EndpointSkill-based sınavlar: Reading, Listening, Speaking, Writing. Zamanlı sınav sistemi, otomatik değerlendirme ve manuel review desteği.
Şu an açık olan ve öğrenciye atanmış sınavları listeler.
Test Et
Gelecekte açılacak sınavları listeler (opens_at > now).
Test Et
Tamamlanan veya süresi dolan sınavları listeler.
Test Et
Yeni sınav oturumu oluşturur ve zamanlayıcıyı başlatır.
Test Et
Sınav sorularını ve kalan süreyi döner. Doğru cevaplar gizlidir.
Test Et
Soru bazlı otomatik kayıt (autosave). Süre dolduysa kabul edilmez.
Request Body
| Parametre | Tip | Açıklama |
|---|---|---|
| question_id Zorunlu | integer | Soru ID'si |
| answer_json Zorunlu | mixed | Cevap (şık, metin vb.) |
Test Et
Sınavı sonlandırır, otomatik puanlama yapar ve sonuç üretir.
Test Et
Sınav sonuç detaylarını döner. show_result_immediately false ise 403 döner.
Test Et
Speaking sınavlarında veya audio_response/open/essay sorularında ses dosyası yükler.
Multipart form-data ile gönderilmeli. Önceki yükleme varsa silinir.
audio (file, mp3/wav/m4a/webm/ogg, max 15MB),
opsiyonel duration_ms ve transcript.
Örnek Yanıt (200)
{
"success": true,
"data": {
"file_id": 42,
"file_url": "http://localhost:8001/storage/exam-audio/12/xyz.webm",
"transcript": null,
"duration_ms": 8200
}
}
403 başka kullanıcının cevabı,
400 EXAM_EXPIRED süre dolmuş,
422 AUDIO_NOT_ALLOWED soru tipi uygun değil.
Writing sınavlarında veya essay/open sorularında uzun metin gönderir.
analyze=true gönderilirse AI /writing/analyze ile ön değerlendirme yapılır ve
sonuç cevap içine kaydedilir.
text (string, 10–10000 karakter, zorunlu),
analyze (boolean, opsiyonel).
Örnek Yanıt (200)
{
"success": true,
"data": {
"answer_id": 17,
"word_count": 142,
"ai_analysis": {
"overall_score": 78,
"task_achievement": 80,
"grammar": 75,
"vocabulary": 82,
"coherence": 74,
"suggestions": ["Use more linking words...", "Vary sentence length..."],
"corrected_version": "..."
},
"saved_at": "2026-04-16T17:24:00Z"
}
}
Derslerim (Education)
8 EndpointKlasik eğitim omurgası: Program → Ünite → Ders → İçerik hiyerarşisi. Kilitli ilerleme sistemi ile çalışır - bir ders bitmeden sonraki açılmaz.
Kullanıcının grade_level'ına uygun programları listeler.
Test Et
Kullanıcıyı programa kaydeder ve ilerleme tablolarını başlatır.
Test Et
Programın ünitelerini ve tamamlanma yüzdesini döner.
Test Et
Ünitenin derslerini ve her ders için kilit durumunu döner.
Test Et
Dersin içeriğini ve soru bankasını döner. Kilitliyse 403 döner.
Test Et
Dersi tamamlandı olarak işaretler ve sonraki dersi/üniteyi açar.
Test Et
Ders içindeki bir soruyu cevaplar.
Request Body
| Parametre | Tip | Açıklama |
|---|---|---|
| question_id Zorunlu | integer | Soru ID'si |
| answer Zorunlu | mixed | Cevap |
Test Et
Takvim & Etkinlik
5 EndpointSınav, ders, etkinlik ve tatil tarihlerini yönetir. Aylık/günlük görünüm ve yaklaşan etkinlikler.
Belirtilen ay için etkinlikleri gruplandırılmış olarak döner.
Query Parametreleri
| Parametre | Tip | Açıklama |
|---|---|---|
| year Zorunlu | integer | Yıl (örn: 2025) |
| month Zorunlu | integer | Ay (1-12) |
Test Et
Belirtilen gün için etkinlikleri döner.
Query Parametreleri
| Parametre | Tip | Açıklama |
|---|---|---|
| date Zorunlu | string | Tarih (YYYY-MM-DD) |
Test Et
Bugünkü etkinlikleri döner.
Test Et
Gelecek N gün içindeki etkinlikleri döner. Push bildirimi için kullanışlı.
Query Parametreleri
| Parametre | Tip | Açıklama |
|---|---|---|
| days Opsiyonel | integer | Gün sayısı (varsayılan: 7) |
Test Et
Belirli bir etkinliğin detaylarını döner.
Test Et
Bildirimler & Duyurular
8 EndpointSistem bildirimleri, duyurular ve bildirim ayarları. Push bildirimine hazır yapı.
Kullanıcının bildirimlerini sayfalanmış olarak döner.
Test Et
Okunmamış bildirim sayısını döner. Badge gösterimi için kullanılır.
Test Et
Belirli bir bildirimi okundu olarak işaretler.
Test Et
Tüm bildirimleri okundu olarak işaretler.
Test Et
Bildirimler ve duyuruları birleşik akış olarak döner.
Test Et
Kullanıcının bildirim tercihlerini döner.
Test Et
Bildirim tercihlerini günceller.
Request Body
| Parametre | Tip | Açıklama |
|---|---|---|
| push_enabled Opsiyonel | boolean | Push bildirimleri |
| email_enabled Opsiyonel | boolean | E-posta bildirimleri |
| exam_reminders Opsiyonel | boolean | Sınav hatırlatıcıları |
Test Et
İlerleme & Rozet & XP
7 EndpointKullanıcının tüm gelişimini takip eden sistem. XP → Level → Rozet zinciri ve modül bazlı ilerleme.
Kullanıcının genel ilerleme özetini döner: toplam XP, seviye, streak, rozet sayısı.
Test Et
Reading, Listening, Speaking, Writing modüllerinin yüzdelik ilerlemesini döner.
Test Et
Kullanıcının kazandığı ve henüz kazanmadığı rozetleri listeler.
Test Et
Kullanıcının XP kazanım geçmişini döner.
Test Et
XP bazlı kullanıcı sıralamasını döner.
Test Et
Günlük giriş kontrolü yapar, streak günceller ve XP verir.
Test Et
Rozeti profilinde göster/gizle.
Test Et
Profil & Hesap
10 EndpointKullanıcı profili, avatar, şifre değişikliği ve hesap güvenliği işlemleri.
Kullanıcının profil bilgilerini döner.
Test Et
Profil bilgilerini günceller.
Request Body
| Parametre | Tip | Açıklama |
|---|---|---|
| name Opsiyonel | string | Ad soyad |
| grade Opsiyonel | integer | Sınıf (1-12) |
| school_name Opsiyonel | string | Okul adı |
| city Opsiyonel | string | Şehir |
| birth_date Opsiyonel | date | Doğum tarihi (YYYY-MM-DD) |
Test Et
Kullanıcının eğitim bilgilerini ve mevcut seçenekleri döner. Öğrenci kayıt sonrası eğitim bilgilerini toplamak için kullanılır.
Test Et
Öğrenci kayıt olduktan sonra eğitim bilgilerini kaydeder veya günceller. Sadece öğrenciler için kullanılabilir.
Request Body
| Parametre | Tip | Açıklama |
|---|---|---|
| education_level Zorunlu | string | Eğitim seviyesi (primary, secondary, high_school, university, graduate, other) |
| grade Opsiyonel | integer | Sınıf (1-12 arası, sadece ilkokul/ortaokul/lise için) |
| school_name Opsiyonel | string | Okul adı (max 255 karakter) |
Test Et
Profil fotoğrafı yükler. Multipart form-data kullanılır.
Kullanıcı şifresini değiştirir. Mevcut token iptal edilir.
Request Body
| Parametre | Tip | Açıklama |
|---|---|---|
| current_password Zorunlu | string | Mevcut şifre |
| password Zorunlu | string | Yeni şifre (min: 8) |
| password_confirmation Zorunlu | string | Yeni şifre tekrarı |
Test Et
Kullanıcı emailini değiştirir. Yeni email için doğrulama gerekir.
Request Body
| Parametre | Tip | Açıklama |
|---|---|---|
| email Zorunlu | string | Yeni email adresi |
| password Zorunlu | string | Mevcut şifre (doğrulama için) |
Test Et
Hesap güvenlik geçmişini döner (giriş, şifre değişikliği vb.).
Test Et
Kullanıcı hesabını kalıcı olarak siler.
Request Body
| Parametre | Tip | Açıklama |
|---|---|---|
| password Zorunlu | string | Mevcut şifre (doğrulama için) |
Test Et
API Durumu (External)
2 EndpointHarici API servislerinin durumunu ve bilgilerini kontrol etmek için kullanılan endpoint'ler. Sistemin sağlık durumu ve versiyon bilgisi alınabilir.
API hakkında genel bilgileri döner. Versiyon, desteklenen özellikler ve konfigürasyon bilgisi içerir.
Test Et
Harici servislerin (OpenAI, ElevenLabs vb.) çalışma durumunu kontrol eder. Her servisin durumu ve yanıt süresi döner.
Test Et
Admin API
12 EndpointAdmin yetkisi gerektiren endpoint'ler. Onboarding flow, step ve option yönetimi.
/api/admin/onboarding
Tüm onboarding flow'larını listeler.
Test Et
Yeni onboarding flow'u oluşturur.
Request Body
| Parametre | Tip | Açıklama |
|---|---|---|
| name Zorunlu | string | Flow adı |
| description Opsiyonel | string | Açıklama |
| is_active Opsiyonel | boolean | Aktif mi? (varsayılan: false) |
Test Et
Belirli bir flow'un detayını döner.
Test Et
Flow'u aktif eder. Diğer aktif flow'lar deaktif edilir.
Test Et
Flow'a ait adımları listeler.
Test Et
Step'e ait seçenekleri listeler.