Skip to main content
PATCH
/
assets
/
{assetId}
/
update
Update an asset
curl --request PATCH \
  --url https://versuno.ai/api/public/assets/{assetId}/update \
  --header 'Authorization: <api-key>' \
  --header 'Content-Type: application/json' \
  --data '{}'
{
  "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
  "assetType": "prompt",
  "title": "Revised assistant prompt",
  "description": "Updated for v2 workflows",
  "content": "You are an expert assistant that...",
  "content_blocks": [
    {
      "id": "b_11111111-1111-4111-8111-111111111111",
      "type": "heading",
      "meta": {
        "level": 2
      },
      "content": "Support Workflow"
    },
    {
      "id": "b_22222222-2222-4222-8222-222222222222",
      "type": "paragraph",
      "meta": {},
      "content": "Greet the user, ask clarifying questions, then propose next steps."
    }
  ],
  "emoji": "✨",
  "projectId": null,
  "teamId": null,
  "userId": "b2c3d4e5-f6a7-8901-bcde-f12345678901",
  "createdAt": "2026-01-15T10:30:00.000Z",
  "updatedAt": "2026-01-21T09:15:00.000Z",
  "deletedAt": null
}

Documentation Index

Fetch the complete documentation index at: https://docs.versuno.ai/llms.txt

Use this file to discover all available pages before exploring further.

This is a partial update. Send only the fields you want to change and the full updated asset is returned.
Do not use this endpoint to modify editor body text via content. The content field is deprecated, kept only for compatibility, and will be removed soon. For content editing, use Patch specific blocks and Apply block operations.
Sending an empty body or a body with no recognized fields returns 400 No fields provided to update.
Set projectId to a UUID to move an asset into a project, or set it to null to unassign it.

Authorizations

Authorization
string
header
default:Bearer uk_live_your_api_key_here
required

Versuno API key. Must be prefixed with Bearer. Format: Bearer uk_live_...

Path Parameters

assetId
string<uuid>
required

Query Parameters

assetType
enum<string>
required

The asset type to update. Must match the asset's actual type.

Available options:
prompt,
persona,
context,
system_prompt,
skill

Body

application/json
title
string

New display name.

Example:

"Revised assistant prompt"

content
string
deprecated

Deprecated compatibility field for body text. Use block update endpoints instead. Will be removed soon.

Example:

"You are an expert assistant that..."

description
string | null

Updated summary, or null to clear it.

Example:

"Updated for v2 workflows"

emoji
string | null

New emoji, or null to clear it.

Example:

"✨"

projectId
string<uuid> | null

Move to a project, or null to unassign.

Example:

null

teamId
string<uuid> | null

Reassign to a team, or null to unassign.

Example:

null

lastUsedAt
string<date-time> | null

Adjust the last-used timestamp.

Example:

null

content_blocks
object[] | null

Replace structured block tree in ai_asset_blocks. Preferred over content.

Example:
[
{
"id": "b_11111111-1111-4111-8111-111111111111",
"type": "heading",
"meta": { "level": 2 },
"content": "Support Workflow"
},
{
"id": "b_22222222-2222-4222-8222-222222222222",
"type": "paragraph",
"meta": {},
"content": "Greet the user, ask clarifying questions, then propose next steps."
}
]

Response

Full updated asset object.

An AI asset — a prompt, persona, context, system prompt, or skill.

id
string<uuid>

Unique identifier for the asset.

Example:

"a1b2c3d4-e5f6-7890-abcd-ef1234567890"

assetType
enum<string>

Type of AI asset. Immutable after creation.

Available options:
prompt,
persona,
context,
system_prompt,
skill
Example:

"prompt"

title
string

Display name of the asset.

Example:

"Customer support assistant"

description
string | null

Short summary shown in the UI.

Example:

"Handles tier-1 support tickets"

content
string

The main content body of the asset.

Example:

"You are a friendly customer support agent. Help users resolve their issues quickly and professionally."

content_blocks
object[] | null

Structured block tree resolved from ai_asset_blocks.

Example:
[
{
"id": "b_11111111-1111-4111-8111-111111111111",
"type": "heading",
"meta": { "level": 2 },
"content": "Support Workflow"
},
{
"id": "b_22222222-2222-4222-8222-222222222222",
"type": "paragraph",
"meta": {},
"content": "Greet the user, ask clarifying questions, then propose next steps."
},
{
"id": "b_33333333-3333-4333-8333-333333333333",
"type": "todo_list",
"meta": {},
"content": null,
"children": [
{
"id": "b_44444444-4444-4444-8444-444444444444",
"type": "paragraph",
"meta": { "checked": false },
"content": "Confirm account email"
},
{
"id": "b_55555555-5555-4555-8555-555555555555",
"type": "paragraph",
"meta": { "checked": true },
"content": "Acknowledge issue details"
}
]
}
]
emoji
string | null

Single emoji icon for the asset.

Example:

"🤖"

isPublic
boolean

Whether the asset is publicly visible.

Example:

false

currentVersion
integer

Latest version number of this asset (1 if no versions exist yet).

Example:

3

projectId
string<uuid> | null

ID of the project this asset belongs to, or null if unassigned.

Example:

null

teamId
string<uuid> | null

ID of the team workspace this asset belongs to, or null for personal.

Example:

null

userId
string<uuid>

ID of the user who owns this asset.

Example:

"b2c3d4e5-f6a7-8901-bcde-f12345678901"

createdAt
string<date-time>

ISO 8601 timestamp when the asset was created.

Example:

"2026-01-15T10:30:00.000Z"

updatedAt
string<date-time>

ISO 8601 timestamp of the last update.

Example:

"2026-01-20T14:45:00.000Z"

deletedAt
string<date-time> | null

ISO 8601 timestamp when the asset was trashed, or null if active.

Example:

null