This doesn’t look right. It seems that you uploaded a single JSON containing a mapping of metadata for each id. I assume you defined this as the base URI? Otherwise, how did you configure the URIs?
If you configure the base URI to ipfs://QmXcpWX3dHUeJ5SLwHg3rKy2ueaPZb4BnYpBLCAMpwqB4E/ (note slash at the end), the token URI for id 0 would be ipfs://QmXcpWX3dHUeJ5SLwHg3rKy2ueaPZb4BnYpBLCAMpwqB4E/0 but as you can see this link doesn’t work.
You need to upload a directory of files called 0, 1, and so on. I’ve done this successfully on Pinata (Why doesn't OpenZeppelin ERC721 contain setTokenURI? - #4 by frangio)