Programs
Rename a program or change its description and canary settings
PATCH /v1/programs/{id}: Rename a program or change its description and canary settings
PATCH /v1/programs/{id}
| Operation id | updateProgram |
| 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 |
#Request body
| Field | Type | Required | Description |
|---|---|---|---|
name | string | pattern ^[a-z0-9][a-z0-9-]{1,62}$ | |
description | string or null | max length 1000 | |
canary | object | ||
canary.enabled | boolean | ||
canary.cron | string | min length 1 | |
canary.url | string | ||
canary.inputs | map of any |
#Example request
curl -X PATCH "https://api.kaab.ist/v1/programs/{id}" \
-H "Authorization: Bearer $KAAB_API_KEY" \
-H "Content-Type: application/json" \
-d '{"description":"Daily report export","canary":{"enabled":true,"cron":"0 */6 * * *"}}'
#Responses
#200
Program
{
"id": "prg_01j9zqk3q7m4n5p6r7s8t9v0wx",
"object": "program",
"name": "acme-report",
"description": "Daily report export",
"latest_version": 3,
"aliases": {
"latest": 3,
"production": 2
},
"canary": {
"enabled": true,
"cron": "0 */6 * * *",
"url": null
},
"created_at": "2026-09-18T10:00:00Z",
"updated_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 |