---
title: Update Asset
description: Update an asset's metadata using its numeric ID
url: https://storyblok.com/docs/api/management/assets/update-asset
---

# Update Asset

PUT

```html
https://mapi.storyblok.com/v1/spaces/:space_id/assets/:asset_id
```

Use this endpoint to update an asset’s metadata.

To upload a new asset or replace an existing one, follow the steps in [Upload and Replace Assets](/docs/api/management/assets/upload-and-replace-assets).

## Path parameters

-   `:space_id` (required) (number)
    
    Numeric ID of a space.
    
-   `:asset_id` (required) (number)
    
    Numeric ID of an asset.
    

## Request body properties

-   `asset` (The Asset Object)
    
    The [asset object](/docs/api/management/assets/the-asset-object)
    

## Examples

-   cURL
    
    ```shellscript
    curl "https://mapi.storyblok.com/v1/spaces/288868932106293/assets/656565" \
      -X PUT \
      -H "Authorization: YOUR_OAUTH_TOKEN" \
      -H "Content-Type: application/json" \
      -d "{\"asset_folder_id\":123123,\"internal_tag_ids\":[1111],\"is_private\":true,\"locked\":false,\"meta_data\":{\"alt\":\"Asset alt text\",\"copyright\":\"Copyright text\",\"source\":\"Asset source\",\"title\":\"Asset title\"},\"publish_at\":\"2025-05-31T11:52:00.000Z\"}"
    ```
    
-   JS
    
    ```javascript
    // storyblok-js-client@>=7, node@>=18
    import Storyblok from "storyblok-js-client";
    
    const storyblok = new Storyblok({
      oauthToken: "YOUR_PERSONAL_ACCESS_TOKEN",
    });
    
    try {
      const response = await storyblok.put('spaces/288868932106293/assets/656565', {
        "asset_folder_id": 123123,
        "internal_tag_ids": [
          1111
        ],
        "is_private": true,
        "locked": false,
        "meta_data": {
          "alt": "Asset alt text",
          "copyright": "Copyright text",
          "source": "Asset source",
          "title": "Asset title"
        },
        "publish_at": "2025-05-31T11:52:00.000Z"
      })
      console.log({ response })
    } catch (error) {
      console.log(error)
    }
    ```
    
-   PHP
    
    ```php
    $client = new \Storyblok\ManagementClient('YOUR_OAUTH_TOKEN');
    
    $payload = ["asset_folder_id" => 123123,"internal_tag_ids" => [1111],"is_private" => true,"locked" => false,"meta_data" => ["alt" => "Asset alt text","copyright" => "Copyright text","source" => "Asset source","title" => "Asset title"],"publish_at" => "2025-05-31T11 => 52 => 00.000Z"];
    
    $client->put('spaces/288868932106293/assets/656565', $payload)->getBody();
    ```
    
-   Java
    
    ```java
    HttpResponse<String> response = Unirest.put("https://mapi.storyblok.com/v1/spaces/288868932106293/assets/656565")
      .header("Content-Type", "application/json")
      .header("Authorization", "YOUR_OAUTH_TOKEN")
      .body({"asset_folder_id":123123,"internal_tag_ids":[1111],"is_private":true,"locked":false,"meta_data":{"alt":"Asset alt text","copyright":"Copyright text","source":"Asset source","title":"Asset title"},"publish_at":"2025-05-31T11:52:00.000Z"})
      .asString();
    ```
    
-   C#
    
    ```csharp
    var client = new RestClient("https://mapi.storyblok.com/v1/spaces/288868932106293/assets/656565");
    var request = new RestRequest(Method.PUT);
    
    request.AddHeader("Content-Type", "application/json");
    request.AddHeader("Authorization", "YOUR_OAUTH_TOKEN");
    request.AddParameter("application/json", "{\"asset_folder_id\":123123,\"internal_tag_ids\":[1111],\"is_private\":true,\"locked\":false,\"meta_data\":{\"alt\":\"Asset alt text\",\"copyright\":\"Copyright text\",\"source\":\"Asset source\",\"title\":\"Asset title\"},\"publish_at\":\"2025-05-31T11:52:00.000Z\"}", ParameterType.RequestBody);
    IRestResponse response = client.Execute(request);
    ```
    
-   Python
    
    ```python
    import requests
    
    url = "https://mapi.storyblok.com/v1/spaces/288868932106293/assets/656565"
    
    querystring = {}
    
    payload = {"asset_folder_id":123123,"internal_tag_ids":[1111],"is_private":true,"locked":false,"meta_data":{"alt":"Asset alt text","copyright":"Copyright text","source":"Asset source","title":"Asset title"},"publish_at":"2025-05-31T11:52:00.000Z"}
    headers = {
      'Content-Type': "application/json",
      'Authorization': "YOUR_OAUTH_TOKEN"
    }
    
    response = requests.request("PUT", url, data=payload, headers=headers, params=querystring)
    
    print(response.text)
    ```
    
-   Ruby
    
    ```ruby
    require 'storyblok'
    client = Storyblok::Client.new(oauth_token: 'YOUR_OAUTH_TOKEN')
    
    payload = {"asset_folder_id" => 123123,"internal_tag_ids" => [1111],"is_private" => true,"locked" => false,"meta_data" => {"alt" => "Asset alt text","copyright" => "Copyright text","source" => "Asset source","title" => "Asset title"},"publish_at" => "2025-05-31T11 => 52 => 00.000Z"}
    
    client.put('spaces/288868932106293/assets/656565', payload)
    ```
    
-   Swift
    
    ```swift
    let storyblok = URLSession(storyblok: .mapi(accessToken: .oauth("YOUR_OAUTH_TOKEN")))
    var request = URLRequest(storyblok: storyblok, path: "spaces/288868932106293/assets/656565")
    request.httpMethod = "PUT"
    request.httpBody = try JSONSerialization.data(withJSONObject: [
        "asset_folder_id": 123123,
        "internal_tag_ids": [
            1111,
        ],
        "is_private": true,
        "locked": false,
        "meta_data": [
            "alt": "Asset alt text",
            "copyright": "Copyright text",
            "source": "Asset source",
            "title": "Asset title",
        ],
        "publish_at": "2025-05-31T11:52:00.000Z",
    ])
    let (data, _) = try await storyblok.data(for: request)
    print(try JSONSerialization.jsonObject(with: data))
    ```
    
-   Kotlin
    
    ```kotlin
    val client = HttpClient {
        install(Storyblok(MAPI)) {
            accessToken = OAuth("YOUR_OAUTH_TOKEN")
        }
    }
    
    val response = client.put("spaces/288868932106293/assets/656565") {
        setBody(buildJsonObject {
            put("asset_folder_id", 123123)
            putJsonArray("internal_tag_ids") {
                add(1111)
            }
            put("is_private", true)
            put("locked", false)
            putJsonObject("meta_data") {
                put("alt", "Asset alt text")
                put("copyright", "Copyright text")
                put("source", "Asset source")
                put("title", "Asset title")
            }
            put("publish_at", "2025-05-31T11:52:00.000Z")
        })
    }
    
    println(response.body<JsonElement>())
    ```

## Pagination

-   [Previous: The Asset Object](/docs/api/management/assets/the-asset-object)
-   [Next: Upload and Replace Assets](/docs/api/management/assets/upload-and-replace-assets)
