It's a pretty nice script, I like it. Special thanks for checking the script with shellcheck!
The script does exit 0 at multiple places when it detects that something is off.
The recommended practice is to exit with a non-zero code to signal that the execution was a failure.
Using exit 1 is fine solution.
Use set -euo pipefail to fail fast on errors
A common mistake in scripts is forgetting to check that some important command runs successfully, and by default Bash will continue running the rest of the script, which may cause severe harm.
A good simple safeguard is to include set -euo pipefail at the top of the script, which will make Bash abort on the first failure, and also treat referencing unassigned variables as an error, among other things. For more details see help set and man bash.
Minor nits
echo "" is really the same as echo, no need for the empty string parameter.
In a command like curl -s "long url" -o "short value" I prefer to rearrange the terms as curl -s -o "short value" "long url" to keep the most important part of the command visible without horizontal scrolling. If anything important goes at the far right end of a line, there is a higher risk of overlooking it.
instdir, checkdir, and checkres are constants with static values, therefore it's good to group them together at the top of the script.