---
title: "Process Session Campaign"
method: GET
path: "/api/processes/{process_id}/campaign/{session_id}"
---

# Process Session Campaign

`GET /api/processes/{process_id}/campaign/{session_id}`

Read the optimisation-campaign ledger for a cloud-process session.

core exposes it at `GET /api/campaign/{session_id}` (the ledger the organism
workbench renders). The SPA's `sessionFetch('/api/campaign/<sid>')` becomes
`/api/processes/<pid>/campaign/<sid>` for a process-bound conversation, and
this relays it down the process's WS socket via the same `_process_rpc`
bridge as plan/memory/goal. `session_id` is re-encoded rather than forwarded
raw so an id needing escaping can't reshape the core path. A session with no
campaign is `{"campaign": null}` with 200 from core — not an error.

## Path parameters

- `process_id` string, required
- `session_id` string, required

## Headers

- `authorization` string, nullable

## Response `200`

Successful Response

- object

## Other responses

- `422` — Validation Error

---

[API](https://skmtc.dev/omicos/apis/omicos-server.md) · [All operations](https://skmtc.dev/omicos/apis/omicos-server/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/omicos/omicos-server/revisions/a00b94573ffe/schema)
