curl --request POST \
--url https://api.example.com/orgs/fill-tabs \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"dry_run": false,
"max_deals": 200,
"max_accounts": 200,
"max_llm_calls": 1,
"concurrency": 4,
"generators": []
}
'import requests
url = "https://api.example.com/orgs/fill-tabs"
payload = {
"dry_run": False,
"max_deals": 200,
"max_accounts": 200,
"max_llm_calls": 1,
"concurrency": 4,
"generators": []
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
dry_run: false,
max_deals: 200,
max_accounts: 200,
max_llm_calls: 1,
concurrency: 4,
generators: []
})
};
fetch('https://api.example.com/orgs/fill-tabs', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.example.com/orgs/fill-tabs",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'dry_run' => false,
'max_deals' => 200,
'max_accounts' => 200,
'max_llm_calls' => 1,
'concurrency' => 4,
'generators' => [
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.example.com/orgs/fill-tabs"
payload := strings.NewReader("{\n \"dry_run\": false,\n \"max_deals\": 200,\n \"max_accounts\": 200,\n \"max_llm_calls\": 1,\n \"concurrency\": 4,\n \"generators\": []\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.example.com/orgs/fill-tabs")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"dry_run\": false,\n \"max_deals\": 200,\n \"max_accounts\": 200,\n \"max_llm_calls\": 1,\n \"concurrency\": 4,\n \"generators\": []\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/orgs/fill-tabs")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"dry_run\": false,\n \"max_deals\": 200,\n \"max_accounts\": 200,\n \"max_llm_calls\": 1,\n \"concurrency\": 4,\n \"generators\": []\n}"
response = http.request(request)
puts response.read_body{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}Start Fill Tabs
Fill every open deal’s and every account’s tabs (health, brief, next actions, competitors, competitive intelligence, stakeholders, war room, account health, readiness), as their generate buttons would.
Respects the same feature flags as the buttons, skips outputs that are still fresh, and records per deal/account what ran, what was skipped and why. Idempotent: while a run for the org is in progress this returns it (200) instead of starting another (202).
curl --request POST \
--url https://api.example.com/orgs/fill-tabs \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"dry_run": false,
"max_deals": 200,
"max_accounts": 200,
"max_llm_calls": 1,
"concurrency": 4,
"generators": []
}
'import requests
url = "https://api.example.com/orgs/fill-tabs"
payload = {
"dry_run": False,
"max_deals": 200,
"max_accounts": 200,
"max_llm_calls": 1,
"concurrency": 4,
"generators": []
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
dry_run: false,
max_deals: 200,
max_accounts: 200,
max_llm_calls: 1,
concurrency: 4,
generators: []
})
};
fetch('https://api.example.com/orgs/fill-tabs', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.example.com/orgs/fill-tabs",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'dry_run' => false,
'max_deals' => 200,
'max_accounts' => 200,
'max_llm_calls' => 1,
'concurrency' => 4,
'generators' => [
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.example.com/orgs/fill-tabs"
payload := strings.NewReader("{\n \"dry_run\": false,\n \"max_deals\": 200,\n \"max_accounts\": 200,\n \"max_llm_calls\": 1,\n \"concurrency\": 4,\n \"generators\": []\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.example.com/orgs/fill-tabs")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"dry_run\": false,\n \"max_deals\": 200,\n \"max_accounts\": 200,\n \"max_llm_calls\": 1,\n \"concurrency\": 4,\n \"generators\": []\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/orgs/fill-tabs")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"dry_run\": false,\n \"max_deals\": 200,\n \"max_accounts\": 200,\n \"max_llm_calls\": 1,\n \"concurrency\": 4,\n \"generators\": []\n}"
response = http.request(request)
puts response.read_body{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Body
Only report what would be generated; calls no LLM or provider and writes nothing.
Most open deals to visit, most recently active first.
0 <= x <= 500Most accounts to visit, most recently updated first.
0 <= x <= 500Cap on paid generator runs (LLM or paid data provider) across the whole run; each run counts once. Omit for no cap beyond max_deals/max_accounts.
x >= 0Deals/accounts filled at the same time.
1 <= x <= 10Only run these generators; omit for all of them.
deal_health, deal_brief, deal_actions, deal_competitors, deal_competitive_intel, deal_stakeholders, deal_war_room, account_health, account_readiness Response
Successful Response