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

# Update project

> A merge patch of the project, answered with the project it left; an absent field keeps its value. archived changes alone, and a patch naming it with another field is refused with 422. archived true archives a live project: its workspaces and warm slots are released and its automations deleted, and archive_cleanup says whether the cleanup of its workspace resources completed or failed (the project is archived either way). archived false unarchives it, restoring the project and none of what its archive released; refused with 409 project_unarchive_conflict while another live project holds its repository or its PR review triggers. A project already in the state asked for is answered unchanged. Any other field of an archived project is refused with 409 project_archived. Restricted to an admin or owner of the project's organization.



## OpenAPI

````yaml api-reference/openapi.json PATCH /projects/{projectID}
openapi: 3.1.0
info:
  title: Aether API
  version: 0.1.0
servers:
  - url: https://api.runaether.dev
security:
  - bearerAuth: []
paths:
  /projects/{projectID}:
    patch:
      tags:
        - projects
      summary: Update project
      description: >-
        A merge patch of the project, answered with the project it left; an
        absent field keeps its value. archived changes alone, and a patch naming
        it with another field is refused with 422. archived true archives a live
        project: its workspaces and warm slots are released and its automations
        deleted, and archive_cleanup says whether the cleanup of its workspace
        resources completed or failed (the project is archived either way).
        archived false unarchives it, restoring the project and none of what its
        archive released; refused with 409 project_unarchive_conflict while
        another live project holds its repository or its PR review triggers. A
        project already in the state asked for is answered unchanged. Any other
        field of an archived project is refused with 409 project_archived.
        Restricted to an admin or owner of the project's organization.
      operationId: updateProject
      parameters:
        - in: path
          name: projectID
          required: true
          schema:
            format: uuid
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateProjectInput'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UpdateProjectResponse'
          description: OK
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProjectsErrorResponse'
          description: Bad Request
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProjectsErrorResponse'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                anyOf:
                  - $ref: '#/components/schemas/ProjectsErrorResponse'
                  - $ref: '#/components/schemas/OrgAuthorizationErrorResponse'
                  - $ref: '#/components/schemas/ControlForbiddenErrorResponse'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProjectsErrorResponse'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProjectsErrorResponse'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProjectsErrorResponse'
          description: Unprocessable Entity
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProjectsErrorResponse'
          description: Internal Server Error
        '503':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProjectsErrorResponse'
          description: Service Unavailable
components:
  schemas:
    UpdateProjectInput:
      additionalProperties: false
      properties:
        archived:
          type: boolean
        default_agent_profile_id:
          format: uuid
          type:
            - string
            - 'null'
        description:
          maxLength: 500
          type: string
        mobile_testing_mode:
          enum:
            - 'off'
            - tasks
            - tasks_and_reviews
          type: string
        name:
          maxLength: 100
          minLength: 1
          pattern: ^[a-zA-Z0-9][a-zA-Z0-9_-]{0,99}$
          type: string
        pr_review_actor_user_id:
          format: uuid
          type: string
        pr_review_aether_prs_auto_trigger:
          enum:
            - disabled
            - on_pr_created
            - on_every_push
          type: string
        pr_review_aether_prs_mode:
          enum:
            - review_only
            - fix_on_request
            - apply_fixes
          type: string
        pr_review_agent_profile_id:
          format: uuid
          type:
            - string
            - 'null'
        pr_review_comment_trigger_enabled:
          type: boolean
        pr_review_other_prs_auto_trigger:
          enum:
            - disabled
            - on_pr_created
            - on_every_push
          type: string
        pr_review_other_prs_mode:
          enum:
            - review_only
            - fix_on_request
            - apply_fixes
          type: string
        pr_review_post_demo_video:
          type: boolean
        pr_review_post_screenshots:
          type: boolean
        pr_review_prompt:
          minLength: 1
          type: string
        pr_review_respond_to_comments_enabled:
          type: boolean
        task_defaults:
          additionalProperties: false
          properties:
            agent_type:
              enum:
                - codex
                - claude-code
                - opencode
              type: string
            auto_fix_ci:
              type: boolean
            auto_fix_ci_instructions:
              minLength: 1
              type:
                - string
                - 'null'
            auto_fix_pr_comments:
              type: boolean
            auto_fix_pr_comments_instructions:
              minLength: 1
              type:
                - string
                - 'null'
            auto_rebase:
              type: boolean
            auto_rebase_instructions:
              minLength: 1
              type:
                - string
                - 'null'
            default_vm_size:
              enum:
                - small
                - medium
                - large
              type:
                - string
                - 'null'
            interaction_mode:
              enum:
                - default
                - plan
              type: string
            model:
              minLength: 1
              type: string
            post_pr_demo_video:
              type: boolean
            post_pr_screenshots:
              type: boolean
            reasoning_effort:
              enum:
                - ultra
                - max
                - xhigh
                - high
                - medium
                - low
                - ultrathink
                - ultracode
              type:
                - string
                - 'null'
          required:
            - agent_type
            - model
            - interaction_mode
            - auto_fix_ci
            - auto_fix_pr_comments
            - auto_rebase
          type: object
      type: object
    UpdateProjectResponse:
      additionalProperties: false
      properties:
        archive_cleanup:
          description: >-
            How the cleanup of the project's workspace resources went when this
            patch archived it: completed, or workspace_resource_cleanup_failed
            with the project archived all the same. Null when the patch did not
            archive it.
          enum:
            - completed
            - workspace_resource_cleanup_failed
            - null
          type:
            - string
            - 'null'
        archived_at:
          description: When the project was archived; absent while it is live.
          format: date-time
          type: string
        created_at:
          format: date-time
          type: string
        default_agent_profile:
          $ref: '#/components/schemas/AgentProfileSummary'
        default_branch:
          minLength: 1
          type: string
        description:
          maxLength: 500
          type: string
        id:
          format: uuid
          type: string
        installation_id:
          format: int64
          type:
            - integer
            - 'null'
        mobile_testing_mode:
          enum:
            - 'off'
            - tasks
            - tasks_and_reviews
          type: string
        name:
          maxLength: 100
          minLength: 1
          pattern: ^[a-zA-Z0-9][a-zA-Z0-9_-]{0,99}$
          type: string
        pr_review_actor_user_id:
          format: uuid
          type: string
        pr_review_aether_prs_auto_trigger:
          enum:
            - disabled
            - on_pr_created
            - on_every_push
          type: string
        pr_review_aether_prs_mode:
          enum:
            - review_only
            - fix_on_request
            - apply_fixes
          type: string
        pr_review_agent_profile_id:
          format: uuid
          type:
            - string
            - 'null'
        pr_review_comment_trigger_enabled:
          type: boolean
        pr_review_other_prs_auto_trigger:
          enum:
            - disabled
            - on_pr_created
            - on_every_push
          type: string
        pr_review_other_prs_mode:
          enum:
            - review_only
            - fix_on_request
            - apply_fixes
          type: string
        pr_review_post_demo_video:
          type: boolean
        pr_review_post_screenshots:
          type: boolean
        pr_review_prompt:
          minLength: 1
          type: string
        pr_review_respond_to_comments_enabled:
          type: boolean
        repo_url:
          type: string
        task_defaults:
          $ref: '#/components/schemas/ProjectTaskDefaults'
        updated_at:
          format: date-time
          type: string
      required:
        - archive_cleanup
        - id
        - name
        - pr_review_prompt
        - pr_review_aether_prs_auto_trigger
        - pr_review_other_prs_auto_trigger
        - pr_review_comment_trigger_enabled
        - pr_review_respond_to_comments_enabled
        - pr_review_post_screenshots
        - pr_review_post_demo_video
        - pr_review_aether_prs_mode
        - pr_review_other_prs_mode
        - mobile_testing_mode
        - task_defaults
        - created_at
        - updated_at
      type: object
    ProjectsErrorResponse:
      additionalProperties: false
      properties:
        code:
          enum:
            - account_deleting
            - aether_inference_unavailable
            - aether_inference_unserved
            - agent_connector_not_found
            - agent_default_project_archived
            - bad_gateway
            - bad_request
            - conflict
            - connection_agent_only
            - connection_harness_mismatch
            - connection_not_held
            - control_forbidden
            - default_skill_required
            - forbidden
            - gateway_timeout
            - gone
            - integration_auth_unexpected
            - integration_not_in_directory
            - integration_shape_changed
            - internal_error
            - mcp_connection_github_not_connected
            - mcp_connection_oauth_not_accepted
            - mcp_connection_org_not_offered
            - mcp_connection_secret_invalid
            - mcp_connection_server_changed
            - mcp_connection_static_secret_not_accepted
            - mcp_credential_policy_not_applicable
            - mcp_credential_policy_org_unavailable
            - mcp_credential_policy_required
            - mcp_oauth_app_auth_method_unsupported
            - mcp_oauth_app_invalid
            - mcp_oauth_app_issuer_invalid
            - mcp_oauth_app_required
            - mcp_oauth_not_advertised
            - mcp_oauth_pkce_unsupported
            - mcp_oauth_registration_failed
            - mcp_repo_config_invalid
            - mcp_server_address_refused
            - mcp_server_aether_managed
            - mcp_server_api_key_not_applicable
            - mcp_server_args_invalid
            - mcp_server_auth_discovery_failed
            - mcp_server_auth_unsupported
            - mcp_server_directory_managed
            - mcp_server_directory_moved
            - mcp_server_display_name_invalid
            - mcp_server_env_invalid
            - mcp_server_headers_invalid
            - mcp_server_key_invalid
            - mcp_server_key_reserved
            - mcp_server_key_taken
            - mcp_server_kind_change_refused
            - mcp_server_not_from_directory
            - mcp_server_not_mcp
            - mcp_server_package_invalid
            - mcp_server_plugin_bundled
            - mcp_server_plugin_off
            - mcp_server_response_too_large
            - mcp_server_return_to_invalid
            - mcp_server_runtime_invalid
            - mcp_server_switched_off
            - mcp_server_unreachable
            - mcp_server_url_invalid
            - mcp_server_version_unpinned
            - method_not_allowed
            - not_acceptable
            - not_found
            - not_implemented
            - org_role_insufficient
            - org_suspended
            - payment_required
            - plugin_moved
            - plugin_name_taken
            - plugin_request_invalid
            - plugin_server_key_reserved
            - plugin_server_key_taken
            - plugin_server_probe_failed
            - plugin_server_required
            - plugin_skill_invalid
            - plugin_source_address_refused
            - plugin_source_empty
            - plugin_source_invalid
            - plugin_source_not_found
            - plugin_source_not_public
            - plugin_source_too_large
            - plugin_source_unreachable
            - plugin_source_unsupported
            - plugin_switched_off
            - plugin_undeliverable
            - pr_review_actor_deleting
            - pr_review_actor_not_member
            - pr_review_actor_required
            - precondition_failed
            - project_archived
            - project_unarchive_conflict
            - rate_limited
            - request_canceled
            - request_timeout
            - request_too_large
            - service_unavailable
            - skill_slug_reserved
            - unauthenticated
            - unsupported_media_type
            - validation_failed
          minLength: 1
          type: string
        error:
          minLength: 1
          type: string
        errors:
          items:
            $ref: '#/components/schemas/ErrorDetail'
          type: array
      required:
        - error
        - code
      type: object
    OrgAuthorizationErrorResponse:
      additionalProperties: false
      properties:
        code:
          enum:
            - org_membership_required
            - org_role_insufficient
            - org_suspended
            - account_deleting
            - agent_host_route_not_allowed
            - credential_kind_not_admitted
          type: string
        error:
          minLength: 1
          type: string
      required:
        - error
        - code
      type: object
    ControlForbiddenErrorResponse:
      additionalProperties: false
      properties:
        code:
          enum:
            - control_forbidden
          type: string
        error:
          minLength: 1
          type: string
      required:
        - error
        - code
      type: object
    AgentProfileSummary:
      additionalProperties: false
      properties:
        agent_type:
          enum:
            - codex
            - claude-code
            - opencode
          type: string
        id:
          format: uuid
          type: string
        model:
          minLength: 1
          type: string
        name:
          maxLength: 100
          minLength: 1
          type: string
        reasoning_effort:
          enum:
            - ultra
            - max
            - xhigh
            - high
            - medium
            - low
            - ultrathink
            - ultracode
          type:
            - string
            - 'null'
      required:
        - id
        - name
        - agent_type
        - model
      type: object
    ProjectTaskDefaults:
      additionalProperties: false
      properties:
        agent_type:
          enum:
            - codex
            - claude-code
            - opencode
          type: string
        auto_fix_ci:
          type: boolean
        auto_fix_ci_instructions:
          minLength: 1
          type:
            - string
            - 'null'
        auto_fix_pr_comments:
          type: boolean
        auto_fix_pr_comments_instructions:
          minLength: 1
          type:
            - string
            - 'null'
        auto_rebase:
          type: boolean
        auto_rebase_instructions:
          minLength: 1
          type:
            - string
            - 'null'
        default_vm_size:
          enum:
            - small
            - medium
            - large
          type:
            - string
            - 'null'
        interaction_mode:
          enum:
            - default
            - plan
          type: string
        model:
          minLength: 1
          type: string
        post_pr_demo_video:
          type: boolean
        post_pr_screenshots:
          type: boolean
        reasoning_effort:
          enum:
            - ultra
            - max
            - xhigh
            - high
            - medium
            - low
            - ultrathink
            - ultracode
          type:
            - string
            - 'null'
      required:
        - agent_type
        - model
        - interaction_mode
        - auto_fix_ci
        - auto_fix_pr_comments
        - auto_rebase
        - post_pr_screenshots
        - post_pr_demo_video
        - auto_fix_ci_instructions
        - auto_fix_pr_comments_instructions
        - auto_rebase_instructions
      type: object
    ErrorDetail:
      additionalProperties: false
      properties:
        location:
          description: >-
            Where the error occurred, e.g. 'body.items[3].tags' or
            'path.thing-id'
          type: string
        message:
          description: Error message text
          type: string
        value:
          description: The value at the given location
      type: object
  securitySchemes:
    bearerAuth:
      bearerFormat: JWT
      scheme: bearer
      type: http

````

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