---
title: "Delete a backend function"
method: DELETE
path: "/api/apps/{app_id}/backend-functions/{function_name}"
---

# Delete a backend function

`DELETE /api/apps/{app_id}/backend-functions/{function_name}`

<Info>This API is in beta. Endpoints, fields, and behavior may still change, so avoid depending on it in production.</Info>

Deletes one of the app's backend functions, along with the automations that run it.

The function is removed from the app's main line, but the published app keeps serving it until you deploy the app again with [Deploy an app](/api-reference/deploy-an-app). Its automations are deleted straight away, so they stop for the published app too. The function's file in the app's code is left alone. The delete is rejected while main is protected.

An app runs one deploy at a time, and a delete counts as one. If another deploy for the app is still running after a short wait, the call is rejected and is safe to retry. On some apps the remaining functions are redeployed as part of the delete, and the request waits for that to finish.

This is limited to 60 requests per minute per app for each workspace's API keys, so every personal and workspace API key in a workspace shares one allowance. Some workspaces have a different limit.

<Note>This endpoint accepts a personal API key belonging to a user with editor access to the app, or a workspace API key with the `apps:deploy` scope. A read-only key is refused.</Note>

## Path parameters

- `function_name` string, required — Name of the backend function, as `name` in [List backend functions](/api-reference/list-backend-functions). Nested functions have slashes in their name, and you send those as they are.
- `app_id` string, required — ID of the app the function belongs to.

## Response `204`

The function was deleted.

## Other responses

- `401` — Missing or invalid credentials.
- `403` — You don't have editor access to this app, the app is blocked, your API key is read-only, or your workspace API key lacks the `apps:deploy` scope or doesn't cover this app.
- `404` — App not found, or the app has no backend function with this name.
- `409` — Another deploy for the app is running, or the app's main line is protected. With a workspace API key, it also means the app left the key's workspace or the key was revoked during the request. In that case the function can already be gone, and a retry then answers that it isn't found.
- `422` — `function_name` is blank, contains `.`, `$` or a control character, is `__router__` or `__prod__`, or names an actor under `base44/actors/`, which this endpoint doesn't delete.
- `429` — Rate limit exceeded.

## Changes

> 26 revisions in range; 1 not diffed.

- **2026-10-06** `9a0e9d0827a1` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/adexad/apis/base44-app-management-api/changes/api/apps/:app_id/backend-functions/:function_name/delete.md)

---

[API](https://skmtc.dev/adexad/apis/base44-app-management-api.md) · [All operations](https://skmtc.dev/adexad/apis/base44-app-management-api/llms.txt) · [OpenAPI document](https://skmtc.dev/adexad/apis/base44-app-management-api/revisions/9a0e9d0827a1?raw)
