Hi — good catch, and thanks for reporting this.
A 403 is technically correct from the server side, but from a UX point of view it’s confusing if the user only finds out after trying to submit. A couple of small improvements would make this much clearer:
What I’d suggest
Show a paid / Pro badge on the submit button (or on the exam page) so users know the feature is gated before they try it.
If they click the button and aren’t entitled, show a modal explaining: why it’s restricted, how to upgrade, and a link to a free trial or support.
Instead of surfacing a raw 403, return a structured error (e.g. 403 { code: "feature_locked", message: "This feature requires a Pro subscription" }) so the client can show a friendly message and CTAs.
Add a tooltip on hover and a short note on the exam page describing which actions are paid features.
Log these 403 hits so product/support can see how many users are blocked and whether messaging needs to change.
Suggested modal text
Feature locked — Pro required
Submitting exam answers is a Pro feature. Upgrade to Pro to unlock submissions, progress tracking, and detailed feedback. [Upgrade] [Contact support]
Thanks again for flagging it — small changes like this save a lot of user confusion.