1. jika kamu menggunakan Murni api, kamu tidak butuh set di .env
variable SESSION_DOMAIN dan SANCTUM_STATEFUL_DOMAINS

2. kamu tidak perlu axios.withCredential jadi TRUE, yang benar adalah false

3. Pastikan route ada di api.php bukan web

4. pastikan tidak mengirim cookie apapun agar tidak dikira statefull (by cookie)



berikut perbedaan nya

Perbedaan Murni API Bearer Token vs Cookie (Stateful Session) di Laravel Sanctum

Fitur / AspekMurni API (Bearer Token)Cookie / Stateful Session
Cara AutentikasiKirim header Authorization: Bearer <token> di setiap request.Login mengembalikan cookie session (laravel_session), request selanjutnya otomatis kirim cookie.
CSRF ProtectionTidak digunakan — API token tidak butuh CSRF.Wajib kirim XSRF-TOKEN pada request POST, PUT, DELETE.
Penyimpanan TokenDisimpan di database tabel personal_access_tokens dan dikirim manual oleh client (misalnya disimpan di localStorage atau memory).Token sesi disimpan di browser cookie dan dikelola otomatis oleh browser.
Cocok UntukMobile apps, SPA frontend yang di-deploy terpisah dari backend, API publik.SPA yang host-nya sama domain/subdomain dengan backend (atau yang dianggap stateful oleh Sanctum).
Konfigurasi SanctumSANCTUM_STATEFUL_DOMAINS kosong. SESSION_DOMAIN biasanya tidak digunakan. Middleware auth:sanctum tetap bisa dipakai.SANCTUM_STATEFUL_DOMAINS diisi domain frontend. SESSION_DOMAIN diisi domain utama. Middleware auth:sanctum dipakai.
Kelebihan- Tidak terikat domain
- Aman untuk API publik
- Tidak tergantung cookie atau CSRF.
- Praktis untuk SPA yang butuh login stateful
- Cookie dikelola otomatis oleh browser.
Kekurangan- Token harus disimpan & dikelola manual di frontend.
- Jika bocor, bisa dipakai siapa saja sampai kedaluwarsa.