> ## Documentation Index
> Fetch the complete documentation index at: https://open.manus.ai/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# project.update

> Updates a project's name, instruction, default connectors, or default skills. Omitted fields are unchanged; a request with no updatable field returns `400 invalid_argument`. `connector_ids` and `skill_ids` replace the entire list. Returns the full updated configuration in the same shape as [project.detail](https://open.manus.ai/docs/v2/project.detail).

<sup>Questions or issues? Contact us at [api-support@manus.ai](mailto:api-support@manus.ai).</sup>

> [!TIP]
>
> **Auth:**
>
> * **API Key:** Full access.
> * **Standard OAuth client:** Requires `manage_all_tasks`. `create_project` alone is not sufficient.
> * **Trusted client:** Full access.
>
> The user must own the project or be a project member with edit permission.

## Update rules

* Send `project_id` and at least one of `name`, `instruction`, `connector_ids`, or `skill_ids`. Omitted fields keep their current values.
* An empty string clears `instruction`. `name` cannot be cleared.
* `connector_ids` and `skill_ids` replace the entire list rather than adding to it. Pass `[]` to clear a list. To add or remove one item, read the current list with [project.detail](https://open.manus.ai/docs/v2/project.detail.md) and send the full new list.
* The response contains the full updated configuration in the same shape as `project.detail`.

## Errors

| Status | Cause |
| - | - |
| `400 invalid_argument` | `project_id` is missing; no updatable field is present; `name` is blank or longer than 255 characters; `instruction` exceeds 65,535 UTF-8 bytes; `connector_ids` has more than 500 entries or `skill_ids` more than 50; a list entry is not a non-empty string of at most 128 bytes; or a connector ID does not exist. |
| `400 failed_precondition` | A connector is not installed or authorized in the user's account, or a Skill Hub skill has no available version. |
| `403 permission_denied` | The user can view the project but cannot edit it; a Standard OAuth client lacks `manage_all_tasks`; or a connector was not granted to the app. |
| `404 not_found` | The project does not exist or the user is not a member, or a skill ID is unknown or cannot be used as a project default skill. |
| `429 rate_limited` | The `project.update` limit was exceeded; see [Rate Limits](https://open.manus.ai/docs/v2/rate-limits.md). |


## OpenAPI

````yaml POST /v2/project.update
openapi: 3.1.0
info:
  title: Manus OpenAPI v2
  description: >-
    API for integrating Manus into your workflow. All responses are wrapped with
    {"ok": true, "request_id": "...", ...} for success and {"ok": false,
    "request_id": "...", "error": {"code": "...", "message": "..."}} for errors.
  version: 2.0.0
servers:
  - url: https://api.manus.ai
security:
  - ApiKeyAuth: []
paths:
  /v2/project.update:
    post:
      summary: UpdateProject
      description: >-
        Updates a project's name, instruction, default connectors, or default
        skills. Omitted fields are unchanged; a request with no updatable field
        returns `400 invalid_argument`. `connector_ids` and `skill_ids` replace
        the entire list. Returns the full updated configuration in the same
        shape as [project.detail](https://open.manus.ai/docs/v2/project.detail).
      operationId: openapi.v2.OpenapiV2Service.UpdateProject
      parameters:
        - name: x-manus-api-key
          in: header
          required: false
          schema:
            type: string
          description: >-
            API key for direct authentication. Provide either this or
            `Authorization`, not both. See
            [Authentication](https://open.manus.ai/docs/v2/authentication).
        - name: Authorization
          in: header
          required: false
          schema:
            type: string
            example: Bearer {access_token}
          description: >-
            OAuth2 access token in `Bearer {token}` format. An OAuth client
            requires the `manage_all_tasks` scope unless it is a `Trusted team
            client` or `Trusted public client`; `create_project` alone is not
            sufficient. Provide either this or `x-manus-api-key`, not both. See
            the [Open App](https://open.manus.ai/docs/v2/open-app) guide.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                project_id:
                  type: string
                  description: >-
                    The unique identifier of the project to update. Use
                    [project.list](https://open.manus.ai/docs/v2/project.list)
                    to get project IDs.
                name:
                  type: string
                  minLength: 1
                  maxLength: 255
                  description: >-
                    New display name, 1–255 characters. Cannot be empty or
                    whitespace only.
                instruction:
                  type: string
                  description: >-
                    New default instruction applied to tasks in this project, up
                    to 65,535 UTF-8 bytes. Pass an empty string to clear it.
                connector_ids:
                  type: array
                  items:
                    type: string
                  maxItems: 500
                  description: >-
                    Replaces the project's default connectors with this list.
                    Pass `[]` to remove all default connectors; omit the field
                    to keep them unchanged. Accepts up to 500 connector IDs from
                    [connector.list](https://open.manus.ai/docs/v2/connector.list);
                    duplicates are ignored. Each connector must be installed and
                    authorized in the user's account. A Standard OAuth client
                    can set only connectors the user granted to the app, and the
                    My Browser connector also requires the `use_my_browsers`
                    scope.
                skill_ids:
                  type: array
                  items:
                    type: string
                  maxItems: 50
                  description: >-
                    Replaces the project's default skills with this list. Pass
                    `[]` to remove all default skills; omit the field to keep
                    them unchanged. Accepts up to 50 skill IDs from
                    [skill.list](https://open.manus.ai/docs/v2/skill.list);
                    duplicates are ignored. Each skill must be an official
                    skill, a Skill Hub skill, a skill of the user's team, or a
                    skill of this project; other skills, including personal and
                    Open App skills, return `404 not_found`. Project members'
                    individual skill preferences are kept.
              required:
                - project_id
      responses:
        '200':
          description: Project updated successfully.
          content:
            application/json:
              schema:
                type: object
                properties:
                  ok:
                    type: boolean
                    example: true
                    description: Whether the request was successful.
                  request_id:
                    type: string
                    description: Unique identifier for this API request.
                  project:
                    $ref: '#/components/schemas/Project'
                    description: The updated project with its full configuration.
        4XX:
          description: Error response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security: []
components:
  schemas:
    Project:
      type: object
      description: >-
        A project for organizing tasks with a shared instruction, default
        connectors, and default skills.
        [project.detail](https://open.manus.ai/docs/v2/project.detail) and
        [project.update](https://open.manus.ai/docs/v2/project.update) return
        every field;
        [project.create](https://open.manus.ai/docs/v2/project.create) and
        [project.list](https://open.manus.ai/docs/v2/project.list) return only
        `id`, `name`, and `created_at`.
      properties:
        id:
          type: string
          description: Unique identifier for the project.
        name:
          type: string
          description: Display name of the project.
        created_at:
          type: integer
          format: int64
          description: Unix timestamp (seconds) when the project was created.
        instruction:
          type: string
          description: >-
            Default instruction applied to all tasks in this project. Omitted
            when the project has no instruction.
        connector_ids:
          type: array
          items:
            type: string
          description: >-
            IDs of the project's default connectors. Tasks in this project use
            them when `message.connectors` is omitted; see
            [task.create](https://open.manus.ai/docs/v2/task.create). Omitted
            when the project has no default connectors.
        skill_ids:
          type: array
          items:
            type: string
          description: >-
            IDs of the project's default skills. Omitted when the project has no
            default skills.
        updated_at:
          type: integer
          format: int64
          description: >-
            Unix timestamp (seconds) when the project configuration was last
            updated.
    ErrorResponse:
      type: object
      description: Standard error response format returned when a request fails.
      properties:
        ok:
          type: boolean
          example: false
          description: Always false for error responses.
        request_id:
          type: string
          description: >-
            Unique identifier for this API request, useful for debugging with
            support.
        error:
          type: object
          description: Error details.
          properties:
            code:
              type: string
              description: >-
                Machine-readable error code (e.g., "invalid_argument",
                "not_found", "permission_denied", "rate_limited").
            message:
              type: string
              description: Human-readable error description explaining what went wrong.
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-manus-api-key

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.