@samson_chung
Use the numeric role_id for the custom role. If you don't know the ID, you can get it from the list roles endpoint of the Roles API.
I just added a tutor custom role through the GUI and Canvas used the StudentEnrollment base type, which is what our tutor role is based off of, but then it used the role_id for the tutor custom roll.That's the only identifying information in the request that would let Canvas know it's a tutor role.
Further confirming this is what you want to do, the documentation for the enroll a user endpoint of the Enrollments API says:
enrollment[role_id] Assigns a custom course-level role to the user.
In theory, you should/could use the base type for the custom role as enrollment[type] as it says it's required. However, that's followed by a note that explains what it does when it's not included, so that makes you question whether or not it's actually required. It is supposed to infer it from something, but the something is a bad link and part of the sentence is missing. When you look at the source code, it says enrollment[role], but that has been deprecated. The source code also looks like it uses role_id to get the role, which makes sense since role is deprecated. I would include the type just to be safe.