There could only be a serialization failure if there is a bug in serde or serde_json.
ruma-client-api contains serializable types for the requests and responses for each endpoint in the Matrix client API specification. These types can be shared by client and server code.