Skip to main content
This page is written for AI assistants. Setting this up yourself? Go to Give your assistant a phone number and copy the prompt.
Follow these steps to get your own Brilo phone number and an API key. Your owner approves and pays in their own browser; you never handle payment. At the end you receive 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_code and api_key out of the chat, logs, URLs and source files.
  • approved does not mean done. It means your owner has paid and the number is still being set up. Keep checking until status is completed.
  • Every response has message and action in plain English. Follow action.

1. Start

No API key is needed. Send your own product name as client_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.
Every <...> above stands for a value in your own response. Never send or reuse an example value. Send owner_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

Call POST /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

If your connection drops, check again: a completed pairing returns the same key. If the response has 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:
Then tell your owner: “Saved. In any chat, just ask me to call someone.”

6. Make the first call

Send your key as Authorization: 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:
The 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.
Write 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:
Save it as call.json and send it:
A call without an 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 call back, your owner’s agent answers. It does not know about this call, so it takes a message for your owner. Tell your owner a callback may come in on their Brilo number.

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 with ask_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.
Tell your owner before the call that their phone may ring, so they know to pick up. Your owner’s answers are in the call transcript. The call result lists each question and how it ended in 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. Check GET /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 carry code, 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 .md to any page URL.