---
title: "updateProject"
description: "Update a project"
canonical: "https://pgbeam.com/docs/ts-sdk/projects/updateProject"
last-updated: "2026-09-14T19:37:21.000Z"
---

# updateProject

> Update a project

URL: https://pgbeam.com/docs/ts-sdk/projects/updateProject

Partially updates a project. Only provided fields are modified.

## Usage

## Parameters

Parameter

Type

Required

Description

pathParams.project\_id

`string`

Yes

Unique project identifier (prefixed, e.g. prj\_xxx).

body.name

`string`

No

Updated project name.

body.description

`string`

No

Updated project description.

body.tags

`string[]`

No

Replacement set of user-defined project labels.

body.status

`ProjectStatus`

No

Project lifecycle status.

body.allowed\_cidrs

`CidrEntry[]`

No

IP filtering rules as CIDR ranges with optional labels. Empty array means allow all. Both IPv4 and IPv6 CIDR notation are supported.

body.default\_policy\_profile\_id

`string`

No

When set, passthrough/human connections are enforced against this policy profile. Send an empty string to clear.

body.residency

`DataResidency`

No

Data-residency requirement for the project. "any" (default) lets queries be served from the nearest data-plane metro. "us" or "eu" require the serving metro to be in that jurisdiction; the proxy fails a connection closed when it is served from a metro outside the required jurisdiction, so regulated workloads never process outside their permitted region.

body.agents\_disabled

`boolean`

No

Project-level kill-switch. Set true to block ALL agent-credential connections to this project (live agent sessions are dropped within seconds); set false to re-enable them. Passthrough/human connections are unaffected. Engaging the kill-switch emits a kill\_switch webhook event.

## Response

`Promise<Project>`: project updated.

## Example

## Errors

Status

Description

400

The request was rejected. `code` is `INVALID_INPUT`, and `errors` names the offending fields when the failure was a validation one.

401

Missing or invalid authentication. `code` is `UNAUTHORIZED`.

403

The caller is authenticated but not allowed to perform this operation. `code` is `FORBIDDEN` when the caller's role is insufficient, and `PLAN_LIMIT_REACHED` when the organization's plan is what stands in the way. The two are answered differently, so branch on the code rather than the status.

404

The resource does not exist, or the caller is not entitled to know that it does. `code` is `NOT_FOUND`.

409

The request conflicts with the current state. `code` distinguishes the cases: `RESOURCE_EXISTS` for a name or value already in use, `INVALID_STATE` for a resource that is no longer in a state that allows the operation, and `IDEMPOTENCY_KEY_REUSED` for a retry whose body does not match the request the key was first used for.

412

The `If-Match` entity tag does not match the current representation, so the resource changed after the read this write was based on. Nothing was modified. `code` is `PRECONDITION_FAILED`. Re-read the resource, re-apply the change, and retry with the new tag.

413

The request body exceeds the 2 MB limit. `code` is `PAYLOAD_TOO_LARGE`.

415

The request body is not JSON, or carries a body without declaring a Content-Type. `code` is `UNSUPPORTED_MEDIA_TYPE`.

429

Rate limited. `code` is `RATE_LIMITED`.

500

The request failed for a reason on our side. `code` is `INTERNAL_ERROR`. Quote `request_id` when reporting it.