Programs
Publish a draft version and move the `latest` alias
POST /v1/programs/{id}/versions/{n}/publish: Publish a draft version and move the `latest` alias
POST /v1/programs/{id}/versions/{n}/publish
| Operation id | publishProgramVersion |
| Key scope | run: keys that run jobs (and admin keys) |
| Section | Programs |
#Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string | yes | min length 1 |
n | path | integer | yes | ≥ 1 |
#Example request
curl -X POST "https://api.kaab.ist/v1/programs/{id}/versions/{n}/publish" \
-H "Authorization: Bearer $KAAB_API_KEY"
#Responses
#200
Version
{
"id": "pv_01j9zqk3q7m4n5p6r7s8t9v0wx",
"object": "program_version",
"program_id": "prg_01j9zqk3q7m4n5p6r7s8t9v0wx",
"version": 3,
"status": "published",
"definition": {
"kaab": "1",
"steps": [
{
"goto": "https://shop.example.com/p/1"
},
{
"extract": {
"title": "h1"
}
}
]
},
"definition_hash": "sha256:9ab1",
"lint": {
"errors": [],
"warnings": [
{
"code": "W001",
"path": "steps[0]",
"message": "`goto` without `expect`"
}
]
},
"notes": "healing: relocate price",
"source": "proposal",
"created_at": "2026-09-18T10:00:00Z",
"published_at": "2026-09-18T10:00:00Z"
}
#Errors
Every error answers with the error envelope; its code is one of the error codes.
| Status | When |
|---|---|
| 400 | request_invalid: request validation failed |
| 401 | Missing or invalid API key |
| 402 | insufficient_credits: top up to continue |
| 403 | The key's scope does not cover this operation |
| 404 | Resource not found |
| 409 | Conflicting state (see error.code) |
| 422 | Semantically invalid request (see error.code) |
| 429 | Rate limited; see Retry-After |
| 500 | internal: unexpected server error |