Custom Fields
Custom fields are the details your business keeps on each contact that Brilo does not hold by default: an insurance carrier, a date of birth, a recall date, a preferred clinic. You define a field once for the workspace, then every contact can have a value for it. Your agent can read them on calls as{{custom.<key>}}, campaign emails can insert them, and
Search Contacts can filter on them.
These endpoints do what Settings, then Custom fields does in the dashboard, so a script or
an AI agent can set fields up for you. The same tools are on the
Brilo MCP server.
Errors share one shape, { "status", "error_code", "message", "details" }. Branch on error_code;
the message says in plain words what to change.
Field types
List Custom Fields
status is active (default), archived or all. Fields come in display order.
Response
Get a Custom Field
404
field_not_found.
Create a Custom Field
Example Request
A choice field your front desk fills in:201 with the new field, shaped as in List Custom Fields.
Keys are never reused
A key stays taken after its field is archived, because contacts keep their values. If you send akey that any field uses, archived or not, the request returns 409 key_collision rather than
renaming it. If you leave key out, Brilo picks a free one by adding _2, _3 and so on.
Change a Custom Field
label, options, option_colors, filled_by, description,
visible_to_agent, memory, required or display_order. Renaming changes the label for
everyone in the workspace. options replaces the whole list of choices; contacts keep values that
are no longer a choice. When you rename a choice, send option_colors too so its colour moves
with it; a colour for a choice that is gone is dropped. Send an empty description to clear it.
memory changes only the settings you send; null puts them back to the defaults.
Switching filled_by to agent needs accept_price_per_call, just like creating one. Switching
it to person stops the charge for that field; anyone can do it.
A field keeps its key and type for life: sending either returns 400 immutable_field. To
change a type, archive the field and create a new one. An archived field cannot be changed
(400 archived_key).
Memory columns
Setfilled_by to agent and the field becomes a memory column: your agent remembers what the caller says in it, after each
call. The description tells it what to listen for. A workspace can have up to 25 of these.
Memory costs $0.01 for each call your agent remembers from, for all memory columns together, so a person approves the price every time
a column starts remembering. Get price_per_call and estimated_monthly from
Memory, show them to the person, and once they agree send the
price as accept_price_per_call with filled_by agent. Without it, or with a different price,
the request returns 409 price_not_accepted with the price and the estimate in details. Only
any member of the workspace or an API key a person created (not a paired assistant’s key) can do this;
anyone can change the other settings of a memory column, or switch it back to person.
The field then shows the approval in memory, read-only:
accept_price_per_call on the field, or accept it for every paused column at once with
POST /memory/accept-price.
memory says when your agent may change a value:
memory.agents says whose calls fill the field: "all" (the default, every agent, including ones
you add later) or a list of agent ids from Memory, so only calls
those agents answered fill it. An empty list is refused; send "all" instead. Agents you add must
be in your workspace. If every listed agent is later deleted, the field pauses (agents_deleted)
instead of switching to every agent.
memory.source_action_ids links the field to post-call extractions your agents already run,
so their answer fills it. Get them from Suggested Fields.
Each value your agent remembers shows where it came from: the contact’s
record has field_sources with the call and the caller’s own
words, and its activity shows the same on each change. In HIPAA workspaces the words are never returned, only the call.
Suggested Fields
name as the label, its type, options and description, with
filled_by agent, memory.source_action_ids and accept_price_per_call.
Memory Status
Archive a Custom Field
value_count is how many contacts still hold a value for the field.
Related
- Contacts to set values and search on them
- Lists to group contacts
- Memory for the price and which memory columns are paused
- Add your own contact fields for choosing good fields
