---
title: "Update a project"
method: PUT
path: "/projects/{id}"
tags: ["Projects"]
---

# Update a project

`PUT /projects/{id}`

## Request

- Base URL: `https://api.hookdeck.com/2025-07-01`
- URL: `https://api.hookdeck.com/2025-07-01/projects/{id}`
- Auth: one of:
  - HTTP bearer
  - HTTP basic

Update a project by ID.

## Path parameters

- `id` string, required: Project ID

## Request body

- object
  - `headers_prefix` string, nullable
  - `domain` string
  - `name` string
  - `context` object
    - `use` 'dev' | 'recovery' | 'monitoring' | 'manage', nullable
    - `industry` 'app' | 'saas' | 'ecommerce' | 'agency', nullable
    - `size` '1-5' | '6-25' | '26-150' | '150+', nullable
    - `approx_usage` '< 1M' | '1-10M' | '10-50M' | '50+ M', nullable
    - `completed_guides` string[]
    - `dismissed_guides` string[]
  - `notification_methods` string[]
  - `webhook_topics` TopicsValue[], nullable
  - `webhook_source_id` string, nullable
  - `notification_preferences` object
    - `project_throughput_exceed` boolean
  - `private` boolean
  - `mode` 'inbound' | 'outbound'

## Response `200`

The updated project

- Project
  - `id` string, required: The project ID
  - `organization_id` string, required: The organization ID
  - `name` string, required: The project name
  - `type` 'event_gateway' | 'console' | 'outpost', required: The project type
  - `private` boolean, required: Whether the project is private
  - `is_guest` boolean, required: Whether the project is a guest project
  - `static_ip_proxy` boolean, required: Whether static IP proxy is enabled
  - `notification_methods` string[], required: Notification methods enabled for the project
  - `webhook_topics` string[], required: Webhook notification topics
  - `webhook_source_id` string, nullable, required: The source ID for webhook notifications
  - `custom_hostnames` string[], required: Custom hostnames attached to the project
  - `directory_sync_enabled` boolean, required: Whether project members are provisioned from a directory group
  - `headers_prefix` string, nullable, required: Prefix for Hookdeck headers
  - `max_events_per_second` number, float, required: Maximum events per second for the project
  - `notification_preferences` object, required: Notification preferences for the project
    - `project_throughput_exceed` boolean, required
  - `updated_at` string, required: Last update timestamp
  - `created_at` string, required: Creation timestamp

## Other responses

- `400`: Bad Request
- `404`: Not Found

## Changes

- **2026-09-27** `b1b6f4bac5a1`: 2 info
  - added the new optional request property `notification_preferences`
  - added the required property `notification_preferences` to the response with the `200` status
- **2026-09-24** `9bebff6c68f9`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/hookdeck/apis/hookdeck-admin-rest-api/changes/projects/:id/put.md)

---

[API](https://skmtc.dev/hookdeck/apis/hookdeck-admin-rest-api.md) - [All operations](https://skmtc.dev/hookdeck/apis/hookdeck-admin-rest-api/llms.txt) - [OpenAPI document](https://skmtc.dev/hookdeck/apis/hookdeck-admin-rest-api/revisions/b1b6f4bac5a1?raw)
