Change the fallback provider’s model
const url = 'https://beta-api.plune.ai/v1/settings/ai/fallback';const options = { method: 'PATCH', headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'}, body: '{"model":"gpt-5-mini"}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request PATCH \ --url https://beta-api.plune.ai/v1/settings/ai/fallback \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --data '{ "model": "gpt-5-mini" }'#829: owner only. The model only - the provider and the key are replaced with PUT. 404 when no fallback is set.
Authorizations
Section titled “Authorizations ”Request Body required
Section titled “Request Body required ”#829: PATCH /v1/settings/ai/fallback - the model only; the provider and the key are replaced with PUT.
object
Same rules as AiSettingsConnect.model.
Examples
{ "model": "gpt-5-mini"}Responses
Section titled “ Responses ”Updated - the owner view
What an owner reads — AiSettingsStatus plus AC-05/AC-09/AC-15. Never includes the credentials themselves (AC-12).
object
Whether a provider has ever been connected (an ai_settings row exists).
Present exactly when configured is true.
Present exactly when configured is true.
#829: the fallback slot - provider and model only (AC-05). Present when one is set.
object
ADR-0004 — the three ways to connect a provider on this feature; each later addition is its own task.
#829: the owner’s view of the fallback slot; present when one is set.
object
ADR-0004 — the three ways to connect a provider on this feature; each later addition is its own task.
Present when provider is custom.
userId of the owner who last connected or replaced the fallback’s credentials.
The fallback’s own most recent provider issue, apart from the primary’s: a primary that fell back stays in the primary’s.
Present when provider is custom.
#1286: the owner’s monthly limit in USD; null = none. At 80% usage.cap.state is warning, at 100% new draft requests are refused.
Draft language, default en (AC-05) — a project setting, not the reader’s interface language.
Present exactly when configured is true (AC-05, AC-12 — “коли й ким”, never the value).
userId of the owner who last connected or replaced credentials.
AC-09 — the most recent provider issue, if any; null otherwise. Never aborted-shaped: a timeout is not a provider failure.
Present exactly when configured is true.
object
Calendar month, UTC.
object
#829: how many of the attempts above the fallback made, so an owner sees it really works (ADR 0052 §3).
object
Sum of costUsd over calls whose model had a known price at call time.
Count of calls whose tokens the provider reported but whose model has no price — “ціна невідома” — never folded into knownUsd as zero (SAD §8 rule 6). A call that reported no tokens (a timeout, a rejected key) has nothing to price and is counted in calls, not here.
#1286: the same two numbers split by who asked. agent is a model acting for a person (a bearer token with X-Plune-Session, an agent actor in the audit log); human is everyone else. The halves add up to the totals.
object
object
object
#1286: where the month stands against the owner’s limit (AiSettingsFull.monthlyCapUsd); absent when no limit is set. warning from 80% of it, spent at 100%. Only calls with a known price count.
object
GET, owner only (#896): the model the platform recommends for each provider it lists — none for custom, whose owner names the model. The connect form offers it first; always a model with a known price (AC-15).
object
GET, owner only (#898): the models the connect form lets the owner choose from for each provider the platform lists — the ones it has a price for, the recommended first, each with that price. None for custom. A model that is not listed is still allowed (model is free text): the list is a help, not a gate.
object
One model the connect form lists (#898): the id as a provider writes it and what the platform’s own price table charges for it, per million tokens (AC-15).
object
USD for a million input tokens.
USD for a million output tokens.
One model the connect form lists (#898): the id as a provider writes it and what the platform’s own price table charges for it, per million tokens (AC-15).
object
USD for a million input tokens.
USD for a million output tokens.
Example
{ "provider": "anthropic", "fallback": { "provider": "anthropic", "lastIssueKind": "key_rejected" }, "lastIssueKind": "key_rejected", "usage": { "cap": { "state": "ok" } }, "models": { "anthropic": [ { "id": "claude-sonnet-5-5", "inputUsdPerMillion": 2, "outputUsdPerMillion": 10 } ], "openrouter": [ { "id": "claude-sonnet-5-5", "inputUsdPerMillion": 2, "outputUsdPerMillion": 10 } ] }}Empty body, an unknown field, or the same as the primary
object
Example generated
{ "error": "example"}No / invalid token or session
A member or a reader asked
object
Example
{ "error": "project owner only"}No fallback is set
object
Example
{ "error": "No fallback is set"}The primary is not connected yet - PUT /v1/settings/ai first
object
Example
{ "error": "AI is not connected yet — connect a provider first"}Rate-limited: the per-route throttle, or the per-minute request limit of the plan an API token counts by (#1442; the body names the plan, #2092). Retry-After carries the seconds until the window rolls over.
object
Example generated
{ "error": "example"}Headers
Section titled “Headers ”Seconds until the window rolls over