Upsert global skill

Create or update a global skill at the given id. If no skill with skill_id exists, the request body must carry all fields required to create a skill of that type (for code skills: code, name, description) and a new global skill is created with the supplied id. Otherwise the existing skill is updated in place. This endpoint is used for native integrations sync.

Recent Requests
Log in to see full request history
TimeStatusUser Agent
Retrieving recent requests…
LoadingLoading…
Path Params
uuid
required
Body Params

Skills.UpdateSkillRequest

Create or update a code skill at the given id.

When the targeted skill already exists this acts as an update. For generated skills (where generated=true) the following fields act as overrides:

  • name, description, code, dependencies, allowed_domains, additional_prompt

Override behavior for generated skills:

  • Setting a field to a value creates an override
  • Setting a field to null explicitly clears the override (reverts to generated value)
  • Setting a field to the same value as generated data is treated as clearing the override

For non-generated skills, required fields (name, description, code) cannot be set to null.

When the targeted skill does not exist, the request creates a new skill with the supplied id. In that case the body must carry name, description, and code; any missing field returns 400.

allowed_domains
array of objects | null

Domains the skill can make requests to. For generated skills, set to null to revert to generated value.

allowed_domains
string | null

Python code for the skill execution. Must contain a run() function as the entry point.
The function signature will be automatically analyzed to extract parameter schema.
Use type annotations to specify parameter types and descriptions.

For secrets, use Secret("secret_name") to reference secrets configured via /secrets APIs.
For files, use Annotated[File, "description"] to accept file uploads.
For regular parameters, use Annotated[type, "description"].

Example:

from typing import Annotated
import requests

def run(api_key: Annotated[str, Secret("gmail_api_key")],
        input_file: Annotated[File, "CSV file to process"],
        to_email: Annotated[str, "Recipient email address"]) -> str:
    # Implementation here
    with open(input_file) as f:
        data = f.read()
    return "File processed and email sent successfully"

For generated skills: set to null to revert to the original generated code.

dependencies
array of objects | null

List of Python dependencies. For generated skills, set to null to revert to generated value.

dependencies
string | null
string | null
string
enum
required
Allowed:
Responses

Callback
Language
Credentials
URL
LoadingLoading…
Response
Click Try It! to start a request and see the response here! Or choose an example:
application/json