Skip to main content
TroopyDocs
Open Troopy
Troopy

API reference / Brain

Change the brand

Changes parts of the brand. Send at least one part. Null takes a part back to the default. The colours and the fonts go together: send all three colours, and both fonts. The logo for a dark background is for owners and admins.

patch/api/v1/brand

Authorization

HeaderAuthorization: Bearer <API key>
Or the headerX-API-Key: <API key>
API keyMake one in Troopy under Settings > API keys. It acts as you, in its workspace.

Other ways to call it

CLItroopy brand update
MCP tooltroopy_update_brand
Rate limit60 calls in 60 seconds, for each key
RetriesSend an Idempotency-Key header. A retry with the same key gets the first answer back, and the operation runs one time.

Body

application/json
colorsobject | null
3 properties
background*string

The colour behind everything, like #0e0e10

text*string

The colour of the words on the background

accent*string

The one colour that stands out: buttons, numbers, the words to see first

fontsobject | null
2 properties
heading*enum<string>

The font of titles and big numbers

interplus-jakarta-sansdm-sansmanropepoppinsmontserratwork-sansibm-plex-sansspace-groteskoutfitsorafigtreegeisthanken-groteskinstrument-sansmona-sansand 35 more

body*enum<string>

The font of the other words

interplus-jakarta-sansdm-sansmanropepoppinsmontserratwork-sansibm-plex-sansspace-groteskoutfitsorafigtreegeisthanken-groteskinstrument-sansmona-sansand 35 more

grainboolean

A faint print texture over each card

taglinestring | null

The business in one line, 90 characters at most

whystring | null

Why people pick the business over the others, 300 characters at most

audiencestring | null

Who the business is for, 300 characters at most

notForstring | null

Who the business is not for, 300 characters at most

ctaobject | null
2 properties
label*string

The words of the button, like Start my channel

At least 1 characters · At most 30 characters

url*string

Where the button goes

At most 500 characters · uri

picturesstring | null

How the pictures of the business look: the mood, the light, the colours, and what never shows. 600 characters at most

logoDarkstring | null

The logo for a dark background: a PNG, JPEG or WebP image of at most 512 KB, base64-encoded. null removes it. Owners and admins only

Response

200 · application/json
data*object
18 properties
name*string

The workspace's name

website*string | null
logo*string | null

The address of the logo, for a light background

logoDark*string | null

The address of the logo for a dark background

colors*object | null

Null: the cards have the default look, paper and ink with an orange

3 properties
background*string

The colour behind everything, like #0e0e10

text*string

The colour of the words on the background

accent*string

The one colour that stands out: buttons, numbers, the words to see first

fonts*object | null

Null: a serif for titles, and Inter for the rest

2 properties
heading*enum<string>

The font of titles and big numbers

interplus-jakarta-sansdm-sansmanropepoppinsmontserratwork-sansibm-plex-sansspace-groteskoutfitsorafigtreegeisthanken-groteskinstrument-sansmona-sansand 35 more

body*enum<string>

The font of the other words

interplus-jakarta-sansdm-sansmanropepoppinsmontserratwork-sansibm-plex-sansspace-groteskoutfitsorafigtreegeisthanken-groteskinstrument-sansmona-sansand 35 more

grain*boolean

A faint print texture over each card

tagline*string | null

The business in one line

why*string | null

Why people pick the business over the others

audience*string | null

Who the business is for

notFor*string | null

Who the business is not for

cta*object | null

The one thing that the business asks people to do

2 properties
label*string

The words of the button, like Start my channel

At least 1 characters · At most 30 characters

url*string

Where the button goes

At most 500 characters · uri

pictures*string | null

How its pictures look. Troopy adds it to the words of each picture that a teammate makes

read*object | null

The last read of the website, which fills the parts of the brand that no person set

6 properties
status*enum<string>

runningdonefailed

url*string

The page that Troopy read

at*string

ISO 8601 date and time

error*string | null
colors*array<string>

The colours of the site, as hex: its background, its words, the colours with a hue that it paints most, then its greys

fonts*object

The fonts of the site, as its CSS names them

2 properties
heading*string | null
body*string | null
set*object

Who set each part last

competitors*array<object>

The competitors that people added, 30 at most

7 properties
id*string

A 24-character id

name*string
site*string

Its domain, like rival.com. Teammates may read its pages, and never type on them

note*string | null

How the business differs from it, in one line

watch*boolean

Whether the Competitor watcher checks it each week

by*object

Who wrote it

3 properties
type*enum<string>

personagentapi

id*string
name*string
at*string

ISO 8601 date and time

suggested*array<object>

Competitors that teammates found. Each counts only after a person adds it

6 properties
id*string

A 24-character id

name*string
site*string
why*string

Why the teammate thinks that it competes, in the teammate's words

by*object

Who wrote it

3 properties
type*enum<string>

personagentapi

id*string
name*string
at*string

ISO 8601 date and time

finding*object | null

The search for competitors that a teammate does now, until its task ends

3 properties
task*string

The key of its task

status*enum<string>

backlogtodoin_progressneeds_youin_reviewdonecanceled

paused*boolean

Its teammate is paused: the search starts when a person resumes it

Errors

400 invalid_inputFix the field named in detail. Each operation's schema is in /api/v1/openapi.json.
401 unauthorizedSend an API key as `Authorization: Bearer tr_live_...`. Create one in Troopy under Settings.
403 forbiddenThe key lacks a scope this operation needs, or its owner lacks the role. detail says which; create a key with the scope, or ask an organization owner or admin.
409 conflictThis Idempotency-Key was used for a different request, or that request is still running. Use a new key for a new request.
429 rate_limitedWait the number of seconds in Retry-After, then retry.