Skip to content

Set up the built-in assistant (owners only)

POST
/api/v1/settings/assistant
curl --request POST \
--url http://127.0.0.1:8484/api/v1/settings/assistant \
--header 'Content-Type: application/json' \
--data '{ "apiKey": "example", "baseUrl": "example", "enabled": true, "model": "example", "price": { "input": "example", "output": "example" }, "provider": "anthropic" }'
Media typeapplication/json
object
$schema

A URL to the JSON Schema for this object.

string format: uri
apiKey

Leave empty to keep the saved key

string
baseUrl

Address of the endpoint, e.g. http://localhost:11434/v1 for Ollama; empty for the provider’s own API

string
enabled

On/off switch; on when omitted

boolean
model

Model id; required for openai, optional for anthropic

string
price

The price of the model, to estimate costs; both empty forgets it. Omit to keep it

object
input
required

US dollars per million input tokens, e.g. 4 or 0.10

string
output
required

US dollars per million output tokens, e.g. 20 or 0.50

string
provider
required

Anthropic for Claude; openai for any OpenAI-compatible endpoint (OpenAI, OpenRouter, Ollama, LM Studio…)

string
Allowed values: anthropic openai

OK

Media typeapplication/json
object
$schema

A URL to the JSON Schema for this object.

string format: uri
baseUrl
string
configured
required

A provider, and what it needs, is set

boolean
defaultModel
required

The model used with Anthropic when none is given

string
enabled
required

The assistant answers: it is configured and switched on

boolean
hasKey
required

An API key is saved; it is never returned

boolean
locked
required

Fields set by environment variables on the server, not editable here: provider, apiKey, model, baseUrl

Array<string> | null
model
string
month

What the assistant was asked this month

object
costUsd

Estimated cost in US dollars of the entries whose price is known

string
inputTokens
required
integer format: int64
month
required

E.g. 2026-11, in the household’s time zone

string
outputTokens
required
integer format: int64
questions
required

Questions and imports read by a model

integer format: int64
unpriced
required

Entries whose model has no price: their tokens count, their cost does not

integer format: int64
on
required

The on/off switch, whatever the configuration

boolean
price

The price used to estimate the cost of the current model; absent when it is not known

object
input
required

US dollars per million input tokens, e.g. 4 or 0.10

string
output
required

US dollars per million output tokens, e.g. 20 or 0.50

string
priceSource
required

Where the price comes from: Exhale’s table, the owner, or nowhere (tokens only)

string
Allowed values: default settings unknown
provider
string
Allowed values: anthropic openai

Example

{
"$schema": "https://example.com/api/schemas/AssistantStatus.json",
"priceSource": "default",
"provider": "anthropic"
}

Error

Media typeapplication/problem+json
object
$schema

A URL to the JSON Schema for this object.

string format: uri
detail

A human-readable explanation specific to this occurrence of the problem.

string
errors

Optional list of individual error details

Array<object> | null
object
location

Where the error occurred, e.g. ‘body.items[3].tags’ or ‘path.thing-id’

string
message

Error message text

string
value

The value at the given location

instance

A URI reference that identifies the specific occurrence of the problem.

string format: uri
status

HTTP status code

integer format: int64
title

A short, human-readable summary of the problem type. This value should not change between occurrences of the error.

string
type

A URI reference to human-readable documentation for the error.

string format: uri
default: about:blank

Example

{
"$schema": "https://example.com/api/schemas/ErrorModel.json",
"detail": "Property foo is required but is missing.",
"instance": "https://example.com/error-log/abc123",
"status": 400,
"title": "Bad Request",
"type": "about:blank"
}