BusinessContext get
Get a project's brand (business context) metadata; null when the project has none.
path Parameters
projectIdstring · required
Responses
Successful response
Decision Table
| Variant | Matching Criteria |
|---|---|
| type = null | |
| type = object · requires: projectId, id, name +2 more |
BusinessContext create
BusinessContext collectVoiceSource
Fetch a social channel's posts as a brand-voice source.
Request Body
projectIdstring · requiredchannelstring · requiredPosts: 'X' | 'LinkedIn' | 'Facebook' | 'Instagram'. Threads: 'Gmail' | 'Outlook' | 'Slack' | 'Teams'. Own words: MANUAL_CHANNEL (with
samples).
urlstringPublic page URL, read by the paid scrapers (also for Facebook/Instagram). Omitted on Facebook/Instagram → the connected Pages (Graph API).
accountstringFacebook/Instagram: the connected Page id to read (NOT_FOUND if not connected). Omitted → the Pages the brand already holds, or every connected Page when it holds none yet.
samplesobject[]Samples collected on the user's own device by
tfa-cli brand voice collect <channel>(zele, outlook-api, tfa-memory, ...): signed-in data, so it wins over url / Graph API.
Responses
Successful response
sourcesobject[] · required
profileobjectA learned company/personal writing voice — the distilled output of the voice refinement loop. Used to make agents write in the user's style.
BusinessContext removeVoiceSource
Forget a collected brand-voice source.
Request Body
projectIdstring · requiredchannelstring · required
accountstringThe account's source (Page id / crawled URL); omitted → the channel's device bucket.
allboolean
Responses
Successful response
sourcesobject[] · required
profileobjectA learned company/personal writing voice — the distilled output of the voice refinement loop. Used to make agents write in the user's style.
BusinessContext refineBrandVoice
Learn a company/personal writing voice via a short refinement loop.
Request Body
projectIdstring · required
sourceconstLearns from EVERY collected source (see collectVoiceSource) — social channels plus the Manual answers — producing one global profile. Set to 'company' to ignore all of that and derive the voice from company info alone.
Const value: companycorrectionstringOne new correction from the author ("too polished", "never exclamation marks"). The server appends it to the stored profile's list — so two tabs or the CLI can never overwrite each other — and runs a single cheap correction pass instead of a full re-learn.
Responses
Successful response
profilestring · requiredmatchnumber · requiredsourcerequirediterationsobject[] · required
notestringchannelstringanswerFeedbackobjectConstruct a type with a set of properties K of type T
sourcesobject[]What fed this profile.
channelsobjectConstruct a type with a set of properties K of type T
evidenceobject[]formatobjectConstruct a type with a set of properties K of type T
movesobjectConstruct a type with a set of properties K of type T
skeletonobjectConstruct a type with a set of properties K of type T
neverstring[]addsstringquirksstring[]correctionsstring[]