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

# Update an asset

> Updates an asset. `custom_field_values` replaces the entire map — merge your changes into the current values first, or unlisted keys are silently cleared. Pass an empty string for `location_id` or `project_id` to detach.



## OpenAPI

````yaml PATCH /assets/{asset_id}
openapi: 3.1.0
info:
  title: Mangrove - API
  version: 1.1.0
servers:
  - url: https://app.gomangrove.com/api/v1
security:
  - sec0: []
paths:
  /assets/{asset_id}:
    patch:
      summary: Update an asset
      description: >-
        Updates an asset. `custom_field_values` replaces the entire map — merge
        your changes into the current values first, or unlisted keys are
        silently cleared. Pass an empty string for `location_id` or `project_id`
        to detach.
      operationId: update-asset
      parameters:
        - name: asset_id
          in: path
          required: true
          description: Asset friendly ID (e.g., asset_abc123def456)
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                asset:
                  type: object
                  properties:
                    name:
                      type: string
                    location_id:
                      type: string
                      description: >-
                        Location friendly ID. Empty string detaches the asset
                        from its location.
                    project_id:
                      type: string
                      description: >-
                        Project friendly ID. Empty string detaches the asset
                        from its project.
                    lat:
                      type: number
                    long:
                      type: number
                    custom_field_values:
                      type: object
                      description: >-
                        Full replacement of the custom field values map —
                        include unchanged keys or they are cleared.
            examples:
              Request Example:
                value:
                  asset:
                    custom_field_values:
                      serial: KILN-001
                      status: Registered
                      registry_id: FSE-12345
      responses:
        '200':
          description: '200'
          content:
            application/json:
              examples:
                Result:
                  value:
                    id: asset_abc123def456
                    friendly_id: asset_abc123def456
                    name: Kiln Alpha
                    health_status: null
                    location_id: loc_xyz789
                    project_id: prj_abc123
                    lat: 37.3875
                    long: -121.9635
                    custom_field_values:
                      serial: KILN-001
                      status: Registered
                      registry_id: FSE-12345
                    created_at: '2026-01-15T10:00:00.000Z'
                    updated_at: '2026-01-15T11:30:00.000Z'
        '422':
          description: '422'
          content:
            application/json:
              examples:
                Result:
                  value:
                    status: error
                    statusCode: 422
                    errors:
                      - message: Location does not belong to the specified project
      deprecated: false
components:
  securitySchemes:
    sec0:
      type: apiKey
      in: header
      name: Authorization
      x-bearer-format: ''

````