5356096349
LS.api was passing raw object bodies straight to fetch(), which coerces them to '[object Object]' — the server then parsed empty JSON and 400'd on missing fields. This silently broke every POST that uses LS.api directly (EP.api.startMock, saveAttempt, mockAnswer, etc.). LS.post already stringified, so most call sites worked. Now apiFetch mirrors that behavior for plain objects, while FormData / Blob / URLSearchParams / ArrayBuffer / strings still pass through unchanged. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>