Update a skill
Change a skill’s name, description, inputs, output fields, run settings, saved login, or sharing.
changes (what changed, in words), warnings, and login.
422 naming the step. A new input with recorded_value (the value the recording typed or opened) replaces that value on each run; without it the input is added but changes nothing yet. A change to the steps becomes a new version.
To add output fields, use Improve a skill with mode: "add_fields": the skill has to learn where they are.
Who. The owner or a workspace editor. login_id and visibility are owner only, and a login is only used on the owner’s own runs. Needs skills:write.
MCP tool: update_skill.Authorizations
API key with the vd_sk_ prefix, as Authorization: Bearer vd_sk_.... Create keys in Settings → API Keys.
Headers
Any unique string (such as your order id). Resending the same request with the same key within 24 hours returns the first answer (with Idempotent-Replayed: true) and does nothing twice; the same key with a different request is a 422 idempotency_key_reused.
1 - 255Path Parameters
Body
Every key is optional; an absent key leaves that setting as it is. To ADD output fields, use POST /v1/skills/{slug}/improve with mode add_fields (the skill has to learn where they are).
1 - 100500Rows a run returns when the caller does not say; 0 = all
0 <= x <= 500'remote' | 'extension' | 'none'; '' clears it
'identity', 'residential', 'residential:', a country code, 'random' or 'none'; null, '' or 'automatic' = automatic
The owner's browser profile id; '' removes it
'deep' | 'flash'; '' clears it
1 <= x <= 90The owner's saved login; null or '' removes it (needs the logins:write scope)
private: only you. workspace: shared with a team workspace (owner only)
private, workspace With visibility=workspace: which team workspace (needed when you are in several)
Response
The skill after the change.
The skill after the edit (the GET /v1/skills/{slug} shape), and what changed.
Skill visibility settings.
private, public Skill lifecycle status.
draft, active, published, deprecated - Sample Output · object
- Sample Output · object[]
The last finished run of a skill or workflow, as a list row shows it.
Lifetime aggregates kept on the skill row (updated by every terminal run), plus the rolling window over the last 20 runs (app/published_skills/reliability.py).
A saved login as every caller sees it: never the password, seed or a code.

