← SkillSafe / FastAPI Clinic

Your FastAPI service, reviewed against the routes you actually wrote

Paste main.py — or your routers, dependency module, Pydantic schemas, models and requirements.txt, whichever you have. You get a readiness verdict, a check-by-check table, the findings that matter with a corrected fragment each, one route rewritten properly, and the commands to prove it worked.

Both examples ship with a saved model run, so you can see the whole review — including the refactored route — without signing in and without spending a credit.

nothing pasted yet
Drag files in, or or a whole folder Everything is read in your browser. Nothing uploads until you run.
Paste a project to price the run.

What this does, and what it does not

The prescan is real parsing, not a keyword search. Every route decorator is read into its method, path, handler, async-ness, response_model and status_code; each handler's body is walked to the point where the indentation returns, so a blocking call is attributed to the handler it actually sits in. That matters, because the same call is a different answer in a different place: requests.get() inside async def stalls the event loop for every concurrent request and is flagged, the identical line inside a plain def handler is correct — FastAPI runs those in a threadpool — and is not flagged, and the same work wrapped in await asyncio.to_thread(...) is recognised as the fix and left alone. Everything it finds is handed to the model as facts it must reconcile, and the review is checked against them afterwards — if the model skips a flag, this page says so.

It reads; it does not run anything, and it never reaches your servers. This is a review of the text you pasted, not a load test, a dependency CVE scan or a substitute for pytest — which is the command every review here ends with. A secret you paste is a secret you should rotate: the review is told to name it rather than repeat it, and this page checks the rewritten route for any value it echoed back anyway.

Nothing to hand? Load the , a single-module app that calls requests inside async def and ships a committed secret, or the , which is mostly right and wants confirmation plus a pagination bound. Both replay a saved run for free.