Forward API reference.
Description
Appends a new version to an existing Skill. A version is immutable after creation. The service generates version as a 16-digit Unix microsecond timestamp and updates the Skill's latest_version to point to it.
Package and upload-field rules are the same as Create a Skill. See Skill package.
Path
POST /api/v1/forward/skills/{id}/versions
Request headers
| Header | Required | Description |
|---|---|---|
Authorization | Yes | Bearer <PAT or SAT> |
Content-Type | Yes | multipart/form-data |
Path parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
id | string | Yes | ID of the target Skill. |
Query parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
identity_id | string | No | Use only when operating on Identity-owned resources. A PAT can explicitly supply this query parameter; omitting it uses administrator scope. SAT ownership is determined by the credential. Explicitly supplying this parameter with any SAT (including an empty value) returns HTTP 400. Versions inherit the ownership of their Skill. See Identity ownership. |
Form fields
| Field | Type | Required | Description |
|---|---|---|---|
files | file | Yes | Upload field that can appear multiple times. Supports two forms: • A single .zip archive;• A bare file tree, with one file per part and a relative path in filename (for example, customer-reply/SKILL.md or customer-reply/scripts/run.sh).Both the compressed archive and its extracted contents must be no larger than 50 MB. |
This endpoint accepts onlySee Skill package for package constraints. A package must containfiles; omitting it returns 400. The legacy singularfilefield is not supported here.
SKILL.md, have exactly one top-level directory, and use the name from SKILL.md as the directory name.
Example request
Single zip archive:
files field):
Example response
HTTP 201 Created
Response fields
The response is a Skill version object. version is the newly assigned 16-digit Unix microsecond timestamp. After creation, the Skill's latest_version points to that value; verify it with Get a Skill.
Errors
| HTTP | Type | Trigger |
|---|---|---|
| 400 | invalid_request_error | Multipart parsing failed, the package structure is invalid (for example, missing SKILL.md, multiple top-level directories, or a directory name that differs from name), a parameter is missing, or any SAT explicitly supplies the query parameter identity_id (including an empty value). |
| 400 | skill_content_too_large | The compressed archive or its extracted contents exceed 50 MB. |
| 401 | authentication_error | The authentication token is missing or invalid. |
| 403 | permission_error | An Owner mismatch occurs in administrator scope, or a downstream service denies access. |
| 404 | not_found_error | The Skill does not exist or is not visible in the current Identity scope; the Identity specified by the PAT is invalid, disabled, deleted, or outside the caller's authorized scope. |
| 413 | invalid_request_error | The request body exceeds the service limit. |
| 429 | rate_limit_error | The caller exceeded the API rate limit. |
| 500/502/503 | api_error | Forward or a dependent service failed. |

