If rate limit policy blocks the call policy execution "jumps" to on-error section, in that case your "choose" policy will not be invoked. The correct way to provide custom error message is indeed via logic on on-error section checking for particular error reason, see https://learn.microsoft.com/en-us/azure/api-management/api-management-error-handling-policies#predefined-errors-for-policies. IF that did not work for you, likely some condition was wrong, feel free to add it to the question.