# Skill bundle upload URL

> A presigned URL to stage a pushed bundle for validate or publish.

Source: https://docs.generalinput.com/api/skills/bundle-upload-url



<Endpoint method="POST" path="/v1/skills/:id/bundle-upload-url" />

<Access scope="skills:manage" />

## Response [#response]

```json
{
  "uploadUrl": "https://storage.example/…?X-Amz-Signature=…",
  "bundleKey": "staging/skl_01HX…/2ad9…tar.gz",
  "contentType": "application/gzip"
}
```

`PUT` the gzipped tar of the skill directory with `Content-Type: application/gzip`, then pass `bundleKey` to [validate](/api/skills/validate) or [publish](/api/skills/publish). `SKILL.md` must be at the archive root.
