---
title: "Stores a temporary upload as a bundled skill file."
method: POST
path: "/agents/skills/{skillId}/files/byuploadid"
tags: ["agentSkills"]
---

# Stores a temporary upload as a bundled skill file.

`POST /agents/skills/{skillId}/files/byuploadid`

Stores or replaces a bundled file from a temporary upload of the current user. The relative path
            defaults to fileName and can be overridden with relativePath, for example references/logo.png.
            The same file, count, and package limits apply as for the multipart upload.

<Check title="Required Permissions" icon="key">Any authenticated user.</Check>

## Path parameters

- `skillId` string, uuid, required

## Request body

- UploadSkillFileByUploadIdRequestModel — Selects a temporary upload to store as a bundled skill file.
  - `uploadId` string, uuid, required — The temporary upload ID.
  - `fileName` string, required — The uploaded file name. It is the target path unless AiService.Feature.AgentRuntime.Models.UploadSkillFileByUploadIdRequestModel.RelativePath is set.
  - `relativePath` string, nullable — The optional target path relative to the skill root. Defaults to the file name.

## Response `200`

OK

- SkillFileResponseModel — Represents a bundled skill file in API responses.
  - `relativePath` string, nullable — The path of the file relative to the skill root (for example "scripts/sync.py").
  - `sizeBytes` integer — The file size in bytes.

## Other responses

- `400` — Bad Request
- `401` — Unauthorized
- `404` — Not Found

## Changes

- **2026-09-23** `eadefd26df12` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/awork-io/apis/api-v1-reference/changes/agents/skills/:skillId/files/byuploadid/post.md)

---

[API](https://skmtc.dev/awork-io/apis/api-v1-reference.md) · [All operations](https://skmtc.dev/awork-io/apis/api-v1-reference/llms.txt) · [OpenAPI document](https://skmtc.dev/awork-io/apis/api-v1-reference/revisions/eadefd26df12?raw)
