 <p>You can either use Attribute routing (specified as an attribute, either on the entire controller class or each method individually) or conventional routing. If each controller can have multiple possible endpoints, it may be harder to achieve what you want through attribute routing, albeit still possible. If you choose to go the conventional route (pun intended), you could set that up similar to this way:</p> <p>Adapted from the <a href="http://www.asp.net/web-api/overview/web-api-routing-and-actions/attribute-routing-in-web-api-2" rel="nofollow">Web API 2 docs</a>:</p> <pre><code> public static class WebApiConfig { public static void Register(HttpConfiguration config) { // Attribute routing. config.MapHttpAttributeRoutes(); // Convention-based routing. config.Routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "api/{endpointId}/{controller}/public/{category}/{id}", defaults: new { endpointId = "1", controller = "DefaultController", category = "DefaultCategory" id = RouteParameter.Optional } ); } } </code></pre>