So, this is clearly an edge case, but it did have me pulling my hair out until I realized it was happening on the API end of things.
For condition based PM generation (when the calibration gas gets low, replace the tank), I was adding assets that we're using the API to update a field value automatically from our Ignition SCADA gateway. I added a bit of extra info to the asset name so it would be extra clear to the techs which one of the systems and which type of gas to replace, which meant it now had "Span Gas Canister (CO-,CEM1)" for the asset name. This caused the request to fail with returning an internal server error/500 status and the message