---
title: "Replaces the campaign's stream program."
method: PUT
path: "/campaign/{campaignId}/program"
tags: ["Campaign"]
---

# Replaces the campaign's stream program.

`PUT /campaign/{campaignId}/program`

The program is validated before it is persisted; a malformed graph is rejected.
 The program's version is bumped and republished — running sessions pick up the new
 program on their next response.

## Path parameters

- `campaignId` string, required

## Request body

- UpdateStreamProgramEndpointInput
  - `rootNodeId` string, required — The node the program's evaluation enters at.
  - `nodes` object, required — The program's decision graph, keyed by node id.
  - `maxRapids` integer, required — The session ends after this many counted responses.
  - `maxDurationSeconds` integer, required — The session ends after this many seconds.

## Response `204`

No Content

## Other responses

- `400` — Bad Request
- `401` — Unauthenticated
- `403` — Forbidden

---

[API](https://skmtc.net/rapidata/apis/rapidata-api.md) · [All operations](https://skmtc.net/rapidata/apis/rapidata-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/rapidata/rapidata-api/versions/e42ec51c7b88/schema)
