---
title: "Get Campaign Brief"
method: GET
path: "/campaigns/audience-builds/{build_id}/brief"
tags: ["campaigns"]
---

# Get Campaign Brief

`GET /campaigns/audience-builds/{build_id}/brief`

The Message-step brief for this build, or null before the first exchange.

## Path parameters

- `build_id` string, required

## Response `200`

Successful Response

- CampaignBrief
  - `id` string, required
  - `build_id` string, required
  - `campaign_id` string, nullable
  - `status` 'collecting' | 'ready', required
  - `messages` CampaignBriefMessage[]
    - `role` 'operator' | 'assistant', required
    - `text` string, required
    - `at` string, required
  - `brief` CampaignBriefData — The HOW of a campaign, parsed from the Message-step intake conversation.
    - `summary` string
    - `offers` CampaignBriefOffer[]
      - `name` string
      - `price` string
      - `includes` string[]
      - `terms` string[]
    - `promotions` CampaignBriefPromotion[]
      - `name` string
      - `details` string
      - `valid_until` string
    - `sample_messages` string[]
    - `tone` string
    - `must_say` string[]
    - `must_not_say` string[]
    - `handling_rules` string[]
    - `escalate_when` string[]
    - `facts` string[]
    - `office_handles_booking` boolean
  - `open_questions` string[]
  - `rendered_instructions` string
  - `budget` CampaignBriefBudget, required — How much of the brief allowance the rendered instructions use.
    - `used_tokens` integer, required
    - `limit_tokens` integer, required
    - `percent` integer, required
    - `state` 'ok' | 'approaching' | 'full', required
  - `updated_at` string, nullable

## Other responses

- `404` — Not found
- `422` — Validation Error

## Changes

- **2026-09-19** `216c8523b7ae` — 1 info
  - added the required property `anyOf[subschema #1: CampaignBrief]/budget` to the response with the `200` status
- **2026-09-16** `c14a8fc770d0` — 2 info
  - added the optional property `anyOf[subschema #1: CampaignBrief]/brief/office_handles_booking` to the response with the `200` status
  - the `brief` response's property default value changed from `{"summary":"","offers":[],"promotions":[],"sample_messages":[],"tone":"","must_say":[],"must_not_say":[],"handling_rules":[],"escalate_when":[],"facts":[]}` to `{"summary":"","offers":[],"promotions":[],"sample_messages":[],"tone":"","must_say":[],"must_not_say":[],"handling_rules":[],"escalate_when":[],"facts":[],"office_handles_booking":false}` for the status `200`
- **2026-09-14** `0d7ad1d56e7d` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/noso/apis/crucible-backend-api/changes/campaigns/audience-builds/:build_id/brief/get.md)

---

[API](https://skmtc.dev/noso/apis/crucible-backend-api.md) · [All operations](https://skmtc.dev/noso/apis/crucible-backend-api/llms.txt) · [OpenAPI document](https://skmtc.dev/noso/apis/crucible-backend-api/revisions/216c8523b7ae?raw)
