In SSRS, how does an "Internal" parameter differ from a "hidden" parameter?

PromptUser == false --> Parameter is "Internal"

PromptUser == true && Prompt is null or empty --> Parameter is "Hidden"

PromptUser == true && Prompt is NOT null or empty --> Parameter is visible


Internal is not exposed and you cannot pass it to the report when calling with parameters from another one. Note it will not appear at the top where the user can change it.

Hidden means that it won't show at the top of the page to allow the user to manually adjust it, but it can be passed to the report via call from another report.

I prefer to use hidden and have sensible defaults on them. In that way I can always override if I need to them when navigating between reports.

I would also look at this similar answer : What are the rules for using "Internal" parameters in SSRS. It shows a good use case for Internal parameters, which I've used on occasion too.