upload:<id> references to a job’s agent arms. These uploads are the skills an evaluated agent receives, separate from the CLI’s documentation skill.
Examples reuse connection setup. Create skill.tar.gz from a skill folder containing SKILL.md, with that file at the archive root:
201 with { "skills": [...] }, containing one or more SkillUpload records. Use a returned id, not the folder name, in an upload:<id> reference.
Routes
scope is my (default), shared, or org. sortField accepts name, size, or uploaded; sortDirection accepts asc or desc. Keep sorting unchanged while paging.
Upload fields
name accepts letters, digits, ., _, and -, up to 100 characters. For multiple skills, put each skill in its own top-level folder with its own SKILL.md.
Uploading the same name and content reuses its record. Different content under the same name creates a new record and makes it the current name:<skill-name> reference. Existing upload:<id> references remain fixed. An existing identical record cannot be moved to another organization by reuploading it with a different org.
Read and remove
SetSKILL_ID from an upload or list response:
skill_md, which is null when the text cannot be read. See skill methods for the metadata fields.
GET also accepts name:my-skill to read your current upload for that name. Name lookup is limited to your own skills; organization members can read shared records by upload id.
QUEUED, RUNNING, or CANCELLING job referencing the upload prevents deletion with 409 skill_in_use. Wait for that job to finish, or cancel it and wait until it settles.
For an agent arm, add the reference to its skills array:
YOUR_SKILL_ID, then include the arm in job creation.
Errors
Invalid archives, missing skill files, or an unsupported name are refused. Unknown upload ids return404 skill_not_found. Consult the skill error codes and use GET /api/meta for current upload limits.
