---
title: "Update a function"
method: PATCH
path: "/projects/{project_id}/branches/{branch_id}/functions/{slug}"
tags: ["Functions"]
---

# Update a function

`PATCH /projects/{project_id}/branches/{branch_id}/functions/{slug}`

Updates the function's mutable metadata — currently only the display
`name`. A string sets the display name; `null` clears it, after which
the function's `name` falls back to its slug. Leading and trailing
whitespace is trimmed; a whitespace-only name is rejected. Acts only
on a function owned by the branch: a slug that is only inherited from
an ancestor branch returns 404 — rename it on the branch that owns
it. Like every other change on a branch, a rename is isolated per
branch: a branch forked before the rename keeps the name it had at
fork time.

**Note**: This endpoint is currently in Private Beta.

## Request body

- NeonFunctionUpdateRequest
  - `name` string, nullable, required — New display name for the function. `null` clears the display name; the function's `name` then falls back to its slug. Leading and trailing whitespace is trimmed; a whitespace-only name is rejected.

## Response `200`

The updated function

- NeonFunctionResponse
  - `function` NeonFunction, required
    - `id` string, required — Opaque, stable function identifier.
    - `slug` string, required — Branch-unique, lowercase DNS-label. Forms the invocation URL's host together with the branch id. Immutable.
    - `name` string, required — Free-form display name.
    - `invocation_url` string, required — URL at which the function is invoked. The host carries `<branch_id>-<slug>` as its first DNS label under a Neon-managed functions domain, and the URL ends with a trailing slash so paths concatenate onto it. Empty string when the function has no servable invoke host (e.g. a deployment without an invocation front-door).
    - `current_deployment` NeonFunctionDeployment
      - `id` integer, required — The deployment id, which is the platform version number (monotonic per function).
      - `status` 'pending' | 'building' | 'completed' | 'failed', required — Build lifecycle status of the deployment.
      - `memory_mib` integer, required
      - `runtime` string, required
      - `created_at` string, required
      - `environment` string[] — The NAMES of the deployment's environment variables, sorted. Values are encrypted at rest and are never returned — they are write-only. To change a value, deploy the variable with the new value; to remove a variable, deploy it with an empty value.
      - `error` string — Human-readable reason the deployment build failed. Present only when `status` is `failed`.
    - `active_deployment` NeonFunctionDeployment
      - `id` integer, required — The deployment id, which is the platform version number (monotonic per function).
      - `status` 'pending' | 'building' | 'completed' | 'failed', required — Build lifecycle status of the deployment.
      - `memory_mib` integer, required
      - `runtime` string, required
      - `created_at` string, required
      - `environment` string[] — The NAMES of the deployment's environment variables, sorted. Values are encrypted at rest and are never returned — they are write-only. To change a value, deploy the variable with the new value; to remove a variable, deploy it with an empty value.
      - `error` string — Human-readable reason the deployment build failed. Present only when `status` is `failed`.
    - `created_at` string, required

## Other responses

- `default` — General Error. The request may or may not be safe to retry, depending on the HTTP method, response status code, and whether a response was received. - If no response is returned from the API, a network error or timeout likely occurred. - In some cases, the request may have reached the server and been successfully processed, but the response failed to reach the client. As a result, retrying non-idempotent requests can lead to unintended results. The following HTTP methods are considered non-idempotent: `POST`, `PATCH`, `DELETE`, and `PUT`. Retrying these methods is generally **not safe**. The following methods are considered idempotent: `GET`, `HEAD`, and `OPTIONS`. Retrying these methods is **safe** in the event of a network error or timeout. Any request that returns a `503 Service Unavailable` response is always safe to retry. Any request that returns a `423 Locked` response is safe to retry. `423 Locked` indicates that the resource is temporarily locked, for example, due to another operation in progress.

---

[API](https://skmtc.dev/neon/apis/neon-api.md) · [All operations](https://skmtc.dev/neon/apis/neon-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/neon/neon-api/revisions/cfde79a5c713/schema)
