> For clean Markdown of any page, append .md to the page URL. > For a complete documentation index, see https://contentful.com/developers/docs/llms.txt. > For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://contentful.com/_mcp/server. # Update an asset PUT https://api.contentful.com/spaces/{space_id}/environments/{environment_id}/releases/{release_id}/assets/{asset_id} Content-Type: application/vnd.contentful.management.v1+json Creates a new asset with the specified ID or updates an existing one within the release. Include the current version in `X-Contentful-Version` when updating. Reference: https://contentful.com/developers/docs/references/content-management-api/timeline-assets/update-an-asset ## Authentication - `Authorization` header (bearer token, required) — Bearer authentication of the form `Bearer `, where token is your auth token. ## Request ### Path parameters - `space_id` (string, required) — ID of the space in form of a string - `environment_id` (string, required) — ID of the environment in form of a string - `release_id` (string, required) — ID of the release in form of a string - `asset_id` (string, required) — ID of the asset in form of a string ### Headers - `X-Contentful-Version` (string, optional) — Version of the asset to update ### Body (application/vnd.contentful.management.v1+json) This endpoint expects a map from string to any. - `map from string to any` ## Response ### 201 Created - Resource created successfully - `map from string to any` ## Examples **Request** ```json { "fields": { "file": { "en-US": { "contentType": "image/jpeg", "fileName": "example.jpeg", "upload": "https://example.com/example.jpg" } }, "title": { "en-US": "Playsam Streamliner" } }, "metadata": { "tags": [ { "sys": { "id": "nyCampaign", "linkType": "Tag", "type": "Link" } } ] } } ``` **Response** ```json { "fields": { "file": { "en-US": { "contentType": "image/jpeg", "fileName": "example.jpeg", "upload": "https://example.com/example.jpg" } }, "title": { "en-US": "Playsam Streamliner" } }, "metadata": { "tags": [ { "sys": { "id": "nyCampaign", "linkType": "Tag", "type": "Link" } } ] }, "sys": { "createdAt": "2025-07-09T17:47:29.000Z", "createdBy": { "sys": { "id": "7BslKh9TdKGOK41VmLDjFZ", "linkType": "User", "type": "Link" } }, "environment": { "sys": { "id": "staging", "linkType": "Environment", "type": "Link" } }, "id": "wtrHxeu3zEoEce2MokCSi", "release": { "sys": { "id": "black", "linkType": "Release", "type": "Link" } }, "space": { "sys": { "id": "yadj1kx9rmg0", "linkType": "Space", "type": "Link" } }, "type": "Asset", "updatedAt": "2025-07-09T17:47:29.000Z", "updatedBy": { "sys": { "id": "4FLrUHftHW3v2BLi9fzfjU", "linkType": "User", "type": "Link" } }, "version": 1 } } ``` **SDK Code** ```javascript JavaScript import { createClient } from 'contentful-management' // Client init const client = createClient({ accessToken: '' }) // Get asset first const asset = await client.release.asset.get({ spaceId: '', environmentId: '', releaseId: '', assetId: '', }); // Update asset await client.release.asset.update( { spaceId: '', environmentId: '', releaseId: '', assetId: '', }, { sys: asset.sys, fields: { ...asset.fields, title: { 'en-US': 'Updated asset title', }, }, } ); ``` ```android Android No snippet for this SDK. ``` ```java Java No snippet for this SDK. ``` ```kotlin Kotlin No snippet for this SDK. ``` ```swift Swift No snippet for this SDK. ``` ```js-legacy JavaScript (legacy) No snippet for this SDK. ``` ```php PHP No snippet for this SDK. ``` ```ruby Ruby No snippet for this SDK. ``` ```python Python No snippet for this SDK. ``` ```.net .NET No snippet for this SDK. ```