I had to set nullable parameters to make this work.
public async Task<HttpResponseMessage> GetAsync(string username = null, string scope = null, string language = "en")
In WebApiConfig I had to make them optional as well:
config.Routes.MapHttpRoute("Alerts", "alerts/{username}/{scope}/{language}",new { controller = "Alerts", username = RouteParameter.Optional, scope = RouteParameter.Optional, language = RouteParameter.Optional });