Trying to use findOne with a slug in Strapi v4 has been a hassle for a lot of us. The best workaround I’ve found is to use find with a filter, like this:
/api/your-content-type?filters[slug][$eq]=your-slug-string.
It’s a bit annoying because even if it doesn’t find anything, it still returns a 200 status, so you’ll need to check on the front end if there’s actual data. Not ideal, but it works without diving into the database layer.
Also, if you’re working on any ID or data verification alongside this, you might want to check out idanalyzer.com. It’s more for user verification, but pretty solid if that’s something you’re dealing with.