---
title: "Upsert brand stories"
method: PATCH
path: "/v1/brandStories/upsert"
tags: ["brandStories"]
---

# Upsert brand stories

`PATCH /v1/brandStories/upsert`

## Request

- Base URL: `https://api.zevari.ai`
- URL: `https://api.zevari.ai/v1/brandStories/upsert`
- Auth: HTTP bearer

Transport: call this endpoint with HTTP PATCH and a JSON request body. Create or update the active workspace's Brand Stories asset in Library.

## Request body

- object
  - `origin_story` string: The origin story people should understand
  - `founder_stories` string[]: Founder/operator stories AI can reuse
  - `customer_stories` string[]: Customer stories, proof moments, or before/after examples
  - `reusable_hooks` string[]: Reusable hooks or story openings
  - `narrative_themes` string[]: Narrative themes AI should return to repeatedly
  - `status` 'active' | 'draft' | 'disabled'
  - `version_bump` 'patch' | 'minor' | 'major'
  - `change_reason` string

## Response `200`

Successful Zevari API response.

- ZevariResponseEnvelope
  - `ok` boolean, required: False when the underlying tool reports an error or a partial failure.
  - `method` string, required: Public API method name.
  - `data` unknown, required
  - `request_id` string, required: Request correlation ID. Also returned in X-Zevari-Request-Id.

## Other responses

- `400`: Invalid arguments or method execution error.
- `401`: Missing, invalid, expired, revoked, or unauthorized API key.
- `404`: Unknown or non-public Zevari API method.
- `429`: API key rate limit exceeded.
- `500`: Unhandled server error.

---

[API](https://skmtc.dev/zevari/apis/zevari-public-api.md) · [All operations](https://skmtc.dev/zevari/apis/zevari-public-api/llms.txt) · [OpenAPI document](https://skmtc.dev/zevari/apis/zevari-public-api/revisions/a0bc3afac227?raw)
