How to remove the word ‘api’ from Azure functions url

You could also leverage the power of Azure Function Proxies for this, which might be better if you want to be explicit about which methods or routes you want to access.

Just create a proxy.json file and add the following piece of JSON to it.

{
  "$schema": "http://json.schemastore.org/proxies",
  "proxies": {
    "myazurefunctionproxy": {
      "matchCondition": {
        "methods": ["GET"],
        "route": "/{slug}"
      },
      "backendUri": "https://%WEBSITE_HOSTNAME%/api/{slug}"
    },
  }
}

This sample will redirect all GET-requests to a route with /api/ prefixed.


The Azure Functions v2 solution is covered in this answer, the http bit needs to be wrapped in an extensions property.

{
  "version": "2.0",
  "extensions": {
    "http": {
      "routePrefix": "customPrefix"
    }
  }
}

The accepted answer no longer works if you're using version 2 functions, instead you need to put the http settings in an extensions property:

"extensions": {
    "http": {
        "routePrefix": ""
    }
}

You can get caught out looking at the hosts.json reference because if you only look at the http section it shows just the http properties so make sure to check the start of the doc for the top level hosts.json format.


Edit the host.json file and set routePrefix to empty string:

{
  "http": {
    "routePrefix": ""
  }
}