Skip to main content
GET
Get an improvement
status moves through queued, working, validating, then done or failed. The account that started it and anyone who can edit the skill can read it. MCP tool: get_skill_improvement.

Authorizations

Authorization
string
header
required

API key with the vd_sk_ prefix, as Authorization: Bearer vd_sk_.... Create keys in Settings → API Keys.

Path Parameters

improvement_id
string
required

Response

The improvement's current state.

Where an improvement is: queued → working → validating → done | failed.

done with improved: true means the new recipe version is live; done with improved: false means the attempt was kept as a candidate version (not live) and outcome says why. failed means the engine could not run (error). result says the same in one word.

improvement_id
string
required
status
string
required
status_url
string
required
skill_id
string
required
feedback
string
required
slug
string | null
mode
enum<string>
default:fix
Available options:
fix,
add_fields,
relearn_details
source
string
default:api

Who asked: api | mcp | assistant (Igris) | web | brain (workflow Brain) | imported (from the old Refine history)

result
enum<string>
default:running

running | improved (new version live) | kept_old (not better — the old version stays, the attempt is candidate_version) | no_change (nothing to learn or nothing changed) | failed (could not run) | applied (imported: applied without a check run)

Available options:
running,
improved,
kept_old,
no_change,
failed,
applied
imported
boolean
default:false

An entry imported from the old Refine / Re-learn history

started_by
string | null

The id of the account that asked for it

started_by_name
string | null
details
ImprovementDetails · object

What the engine made of the words: for add_fields, the request diffed against the skill's contract (genuinely new fields, re-worded duplicates merged into an existing field, ones it could not place, asked back as a question); and what the learn pass did.

strategy
string | null

fields (re-learn where the fields live) | rerecord (re-do the steps)

target_fields
string[]
diagnosis
Diagnosis · object | null

The diagnosis the improvement started from

diagnosis_after
Diagnosis · object | null

The check run's diagnosis, when it still came back short

fields_before
Fields Before · object
fields_after
Fields After · object
changes
FieldChange · object[]

Target fields, before → after

improved
boolean | null
recipe_version_before
integer | null
recipe_version
integer | null

The live recipe version once done

candidate_version
integer | null

Set when the attempt was kept as a candidate, not made live

outcome
string | null
error
string | null
credits_charged
integer
default:0
created_at
string<date-time> | null
updated_at
string<date-time> | null
finished_at
string<date-time> | null
idempotent_replay
boolean
default:false