This page is written for AI assistants. Setting this up yourself? Go to
Give your assistant a phone number and copy the prompt.
api_key, phone_number and
agent_id, and you can place calls from that number and read the calls people make to it.
Rules
- Never pay, sign up or approve anything for your owner.
- Keep
device_codeandapi_keyout of the chat, logs, URLs and source files. approveddoes not mean done. It means your owner has paid and the number is still being set up. Keep checking untilstatusiscompleted.- Every response has
messageandactionin plain English. Followaction.
1. Start
No API key is needed. Send your own product name asclient_name (up to 64 characters). If you know
your owner’s name, email or phone number, pass them in prefill so their sign-up form arrives filled
in. Values that are not usable are dropped silently, and Brilo does not store them.
<...> above stands for a value in your own response. Never send or reuse an example value.
2. Show your owner the link and the code
Sendowner_message from the step 1 response, exactly as written, with the link tappable. It
already has the link with the code built in (verification_url_complete) and the code on its own
line, so your owner can check it matches the page:
<user_code> stands for the code in your own response. Never send a code from this page: every
code on it is an example, and your owner’s page will not accept it.
Do not build your own message from verification_url: it has no code in it, so your owner would have
to type the code by hand. If you start a new pairing (for example after a code expires), send the new
owner_message.
If you cannot send links, read out verification_url and the code instead. Do not open the link
yourself: the page is for your owner.
3. Check until it is done
CallPOST /v1/agent/onboarding/poll with the device_code, waiting at least interval seconds
between calls.
If you cannot keep checking on your own (for example, you only act when your owner messages you),
tell your owner: “Tell me when you’ve finished paying.” Then check once when they do.
Checking faster than
interval returns a 429 that says how long to wait, in the body and in the
Retry-After header. Wait that long, then continue.
4. Save your key
code: pairing_key_replaced, this pairing’s key is no longer active; start a new pairing only if
your owner asks you to. Then tell your owner their new number.
5. Remember that you can make calls
Save a note in your long-term memory, custom instructions or notes file (whatever you keep across chats), so that in any later conversation you know you can make and check phone calls for your owner. Replace each<...> with the value from the step 4 response; do not copy the placeholders. Never put
the key itself in the note:
6. Make the first call
Send your key asAuthorization: Bearer <api_key>. Ask your owner which number to call for the test,
then ring them.
Your owner’s agent is set up to answer their calls. Its saved greeting (“Hi, this is …‘s AI assistant. Who am I speaking with?”)
is for people calling in, so every call you place brings its own script in agent_overrides:
Ready-made
agent_overrides for common calls (a business, a phone menu, a hold queue, a voicemail)
are in Playbooks.
Fill in instruction yourself from what your owner asked for. Do not ask them for these; a line
or two each is enough:
instruction replaces everything the agent knows, so put in it what the person answering will
ask about:
- Who the call is for: your owner or their business, by name, so the agent can answer “who is this?”. When calling a business, the agent gives this name only when asked.
- The facts: who, what, where and when, and how to reach your owner. The agent has nothing else to go on.
- What to do when it does not know: offer to check and follow up, or take a message. Never guess.
summary_instruction the same way, from what your owner will want to know: whether the person
was reached, what they said, and anything they asked for, including whether and when they want a
call back. Brilo does not schedule callbacks for you: remember the time and place that call yourself.
The same call as a request body. In JSON the line breaks are written as \n:
call.json and send it:
instruction or a greeting is refused with call_script_incomplete, and the
response names what is missing. Calls ring straight away; they are not held for quiet hours.
You can call and text numbers in the US and Canada.
Calling a business
When you call a business (a clinic, restaurant, shop or office), do not say your owner’s name in the greeting. Start with what the call is about. Give the name only when they ask, or when the task needs it, like booking under a name. The person picking up does not know your owner, and the name means nothing to them until then. If they ask for a number to reach your owner, give your Brilo number (phone_number from step 4),
never your owner’s own phone.
greeting:
instruction:
voicemail_behavior: LEAVE_MESSAGE.
voicemail_message: say what the call is about and leave your Brilo number, so they can call back
and act on it. Leave out personal details: no name, date of birth, address, account or insurance
numbers. Those wait until someone calls back and asks.
summary_instruction:
When they may ask for something only your owner knows
Some calls will ask your owner’s details: a date of birth, an account number, a PIN. If the call you are placing might do that, turn on Ask a Human withask_a_human inside agent_overrides. When the
other side asks something the agent does not know, it puts them on hold, rings your owner, gets the
answer, and carries on. Without it, the agent can only say it will check with your owner.
Set when to the things they might ask for, in plain words. Do not send phone_number or
human_label: the agent always rings your owner’s verified phone and uses their first name. Sending
either is refused with ask_a_human_number_locked.
ask_a_human, never the answer. Full details are in Ask a Human.
7. Find out how the call went
A call takes as long as it takes. CheckGET /v1/call/{id}, waiting retry_after seconds between
checks, and stop when retry_after is no longer in the response. Checking faster does not finish the
call sooner.
If it went to voicemail
Voicemail is an answer, not a failure. Do not call again straight away: calling a business over and over looks like spam.- You left a message: you are done. They have your Brilo number and will call back. Tell your owner, e.g. “I left a voicemail at Bright Smile Dental asking them to call back on your Brilo number.” Do not call that number again for this task unless your owner asks.
- You did not leave a message: you may try once more, at least 2 hours later and during their business hours. Leave a message that time.
- At most 2 calls to the same number for the same task. After that, stop and tell your owner.
Errors
Errors carrycode, message and action. Limit errors also carry limit, used and resets_at,
so you can tell your owner exactly when they can try again.
Check what is left before you call:
GET /v1/usage returns each limit with limit, used,
remaining and resets_at. Full request and response shapes are in the
API reference.
Keep it safe
- Your owner can disconnect you at any time, and can replace your key by connecting you again from a newer install. Other assistants on the same number keep working either way.
- If your owner asks to cancel, follow When your owner wants to cancel. Never try to cancel yourself.
- One call at a time: while a call is live, a second one is refused.
- For machine-readable docs, read /llms.txt, or add
.mdto any page URL.
