DocsConcepts
Teams and budgets
A team is a department, a location or a project. Its keys work in its areas and spend against its budget. Most small businesses need no teams at all.
On this page
Every account has one team called Company. It holds every key no other team holds, the account's first key among them, and it works in every area. A small business can leave everything there, with no budgets, rules or drafts-only setting, until the owner asks for them.
account_save_team makes or changes a team, for $0.001. A key joins a team when it is made, with team in POST /v1/keys, and it never works outside the team's areas.
| Field | What it does |
|---|---|
name |
The team's name, like Support, Finance or the Hamburg shop. |
new_name |
Renames the team. Its keys, its spend and its budget stay with it. |
areas |
The areas its keys may work in. The account tools always work. |
read_only |
Its keys only read. |
drafts_only |
Every change its keys ask for waits for a person. |
monthly_ |
Its budget for each period. Left empty, the spend is counted with no cap. |
budget_period |
month, quarter or year, or project for one total that ends on budget_ends_on. |
budget |
hard refuses the call that would pass the budget. soft only warns. |
alert_percent |
The share of the budget at which the alert goes out. |
erp_code |
The team's code in the business's ERP. |
mailboxes |
The Microsoft 365 or Google mailboxes its keys may act as. |
sees_sensitive |
false hides suppliers' bank details and HR notes and contracts from its keys. Only the owner turns it on. |
account_list_teams lists the teams with their areas, budgets, the spend of each budget's current period, ERP codes, keys and people.
A team's budget counts what its keys spend. The most a call can cost is held when it starts and settled when it ends, so a burst of calls stays inside a hard budget. Past a hard budget, a call answers team_budget_reached with status 429 and costs nothing. A soft budget only warns.
Periods follow the account's calendar: its time zone, UTC until the owner picks another on the account page, and the month its fiscal year starts, January until set. Quarters and years count from that month. A project budget never starts again, and once its end date has passed, a hard one refuses every call until the date moves.
When the spend reaches alert_percent of the budget, the bot gets the event account.budget_alert, and the owner, the team's managers and the account's billing people get an email, once a period.
Bots make teams, narrow them and pause them. On an account with an owner email, the owner does the rest on the account page: widening a team, letting it write, ending drafts only, softening, raising or removing its budget, changing its period and letting a project run longer. The owner can also raise a budget for a while, and the raise ends on its own.
account_pause_team stops every key of a team at once, for free. Their calls answer team_paused until the owner starts the team again. It is the quick stop for a bot that misbehaves or a team that spends too fast. The owner can also pause the whole account, and every call then answers account_paused.
Some charges come with no key behind them: a form's responses, a number's calls, an inbox's tickets. Each lands on the team that owns the thing it came through, and a customer's charge never stops on a team budget. account_assign_team gives a form, a meeting type, a job, an inbox, a phone number, a newsletter, the website chat, a rental, a pipeline, a table or a website to a team. Something a bot makes belongs to the bot's team from the start.
A person can be in several teams, and a manager of some of them. Their own assistant works for the first of their teams that allows each tool, and each call is charged to that team. Someone in no team works for the company-wide team. A team's managers approve the calls of a drafts-only team, and a team named in an approval rule approves through its managers, or through all its people when the rule says so.
An account has up to 100 teams.
Updated . Every route, field and number here is read from the API's own code.