Skip to main content
Two calls cover most integrations: create a report (one conversation), then send a completion (one question and answer) to it. Settings on the report apply to every turn in that conversation. Settings on a message apply to that one turn.

Authenticate

Send an API key from Profile → API Keys, or from Settings → Service Accounts for unattended jobs:
X-API-Key: bow_... also works. Keep keys server-side. For apps where each person signs in, use OAuth: see Embed BOW Chat.

Quickstart

1

Create a report

Keep the returned id. Agent IDs come from GET /api/mentions/available?categories=data_sources.
2

Ask a question

3

Read the answer

The response holds the whole conversation. The answer is the last entry in completions with role: "system".
Send more questions to the same report to continue the conversation. To stream the answer as it is written, add "stream": true and see Embed BOW Chat for the event format.

Customize the conversation

Set these when you create the report, or change them later with PUT /api/reports/{id}. They apply to every turn on the report.
On PUT, a field you leave out stays as it is, and null hands it back to the organization’s default. tools merges by name, so {"tools": {"web_fetch": null}} clears only that one.
These settings can only switch features off. If your organization has turned a feature off, true does not turn it back on.

Reasoning effort

Models support different levels. BOW uses the nearest level the model supports, so any value above is safe to send. Any other value returns 422.

Tools

Set a tool to false to switch it off. The agent won’t use it and is told it is unavailable. Tools not in this list are always on. An unknown name returns 422.

Customize one message

Set these on prompt to change a single turn:
The message setting wins over the report, and the report wins over the defaults.
A non-streaming call returns as soon as the answer is saved, before follow-up questions are ready. Send "follow_ups": true on the prompt if you need them in the response.

Example: a fast, focused bot