# Custom Profiles You can create routing profiles that are customized to your needs. You can take advantage of all the modelling options described in the [Custom Model section](#tag/Custom-Model) and use the created custom profile (prefix `cp_`) with our Routing, Matrix and Route Optimization APIs. **Notes** * The geographic coverage of each custom profile is restricted and varies based on the selected package. * This feature is available starting with the premium package. A curl example to create a profile: ``` curl -X POST -H "Content-Type: application/json" "https://graphhopper.com/api/1/profiles?key=YOUR_KEY" -d '{"bounds":{"bbox":[11.45462,48.00954,11.77322,48.2076]},"custom_model":{"priority":[{"if":"road_class == MOTORWAY","multiply_by":"0"}]},"profile":"car"}' ``` To quickly test your custom_model you can use the Routing API where a different custom model can be specified in every request. Or use [GraphHopper Maps](https://graphhopper.com/maps/) and click the gear button. **Creating custom profiles using the API Explorer** Besides using the `/profiles` endpoint directly you can also create custom profiles using [our API explorer](https://explorer.graphhopper.com/?endpoint=profiles). 1. Visit the [API explorer](https://explorer.graphhopper.com/?endpoint=profiles). 2. Set your API key with the "API key" button. 2. Now copy and paste the JSON to create a custom profile into the input window. To get started you can use the already pre-filled example, which will create a custom profile that excludes motorways and is limited to the Munich area. 3. Click "Send". This creates a custom profile. Copy the returned `id` from the output window (it starts with `cp_`). 4. To try this profile out you change the drop down to "Optimization API", pick the first example and replace `car` in `"profile": "car"` (`vehicle_types` section) with the profile `id` you just copied and click "Send". The optimized route no longer uses motorways. Keep in mind that this is a simple example and the custom model language is a lot more powerful than this with which you can avoid, exclude or prefer certain areas or road classes and a lot more. Make sure you read the [Custom Model section](#tag/Custom-Model) to learn about all the details. Note that you can use the profile `id` just as well for the `/matrix` or `/route` endpoint. E.g. select "Routing API" and use the profile `id` in the request. ## Create a custom routing profile - [POST /profiles](https://docs.graphhopper.com/openapi/custom-profiles/postprofile.md) ## List your custom routing profiles - [GET /profiles](https://docs.graphhopper.com/openapi/custom-profiles/getprofile.md) ## Submit a profile creation job - [POST /profiles/calculate](https://docs.graphhopper.com/openapi/custom-profiles/calculateprofile.md): An alternate endpoint for computing a profile for a large boundary asynchronously, where a request against the regular endpoint would result in a timeout. The request format is the same, but instead of the result, you are given a job identification number that you can use to retrieve the result once it is available. ## Retrieve result of a profile creation job - [GET /profiles/solution/{jobId}](https://docs.graphhopper.com/openapi/custom-profiles/getprofilesolution.md) ## Delete a custom routing profile - [DELETE /profiles/{profileId}](https://docs.graphhopper.com/openapi/custom-profiles/deleteprofile.md)