Get started
Model connections
Connect your model services with an API key or a subscription sign-in, choose defaults and configure cost estimates.
Interface version 1.9.8 · 2026-10-17
Mosael's AI features (agent chat, text-to-image / video, voiceover, transcription) are bring-your-own-key: most vendors take an API key, subscription plans use authorized sign-in (below). Credentials are stored by the connected backend and used to authenticate requests to the selected service. A remote backend stores them remotely. The settings API returns masked hints or authorization status.
Configured per capability#
Settings groups AI providers into four capability sections, each configured independently:
| Section | Used by |
|---|---|
| AI Chat | the agent and workflow LLM nodes |
| AI Image | text-to-image generation |
| AI Video | text-to-video generation |
| AI Audio | three blocks: speech synthesis (TTS voiceover), podcast dialogue, music & sound generation |
At the top of each section is the default model: the default provider and model for that capability. Boards, AI Studio and workflow generation nodes preselect it, and you can switch in place. With no default set, those pickers show "Choose a model" and wait for you to pick one — they never fall back to whichever model happens to be listed first. The dropdown lists models (e.g. "DeepSeek · deepseek-v4-pro"), not providers — several models under one provider each appear on their own.

Configure providers per capability — Chat / Image / Video / Audio each have their own section; after "Add provider" the UI renders exactly the fields that provider declares, and keys are stored locally:
One connection is one endpoint plus one credential#
A vendor is not a model or a connection. A connection records where the current user connects and which credential they use, and it can hold any number of models. Endpoint/non-secret options and API-key/OAuth state are stored separately so they can evolve independently, but both belong only to their creator; Mosael never lists, selects, or falls back to another user's connection. Click the chevron on a provider row to see that connection's model list.
Add a provider#
Click Add provider in the relevant section:
- Pick a vendor. The list is filtered by section and grows over time:
- AI Chat: Alibaba Bailian, Kimi, DeepSeek, MiniMax, OpenAI, Google AI Studio (Gemini, see below), OpenAI-compatible endpoints, plus the subscription group below;
- AI Image: Alibaba Bailian, Volcengine ARK, OpenAI, OpenAI-compatible endpoints, Evolink;
- AI Video: Alibaba Bailian, Volcengine ARK, MiniMax, Volcengine Jimeng AI (vision), HeyGen, Hedra, Google AI Studio (Veo), Evolink, Kuaishou Kling — the digital-human models from Jimeng, HeyGen, Hedra and Kling are covered in Digital humans;
- AI Audio: speech synthesis (Alibaba Bailian, OpenAI, Volcengine TTS), podcast dialogue (Volcengine podcast), music & sound (below).
- Give it a name (e.g. "My Kimi").
- Paste the API key (subscription plans have no key field — you authorize after saving instead). A "Get API key ↗" link jumps straight to that vendor's key console.
- Base URL: API-key providers can leave it empty for the vendor default (shown as the placeholder); self-hosted OpenAI-compatible endpoints need it filled in. Subscription/OAuth providers neither expose nor need this field — their Provider Adapter owns the endpoint, so do not invent a service address for them.
- Model is optional; if filled it becomes this provider's first model. You can add more at any time.
Providers can be enabled / disabled at any time without deleting.
ByteDance: one company, two product protocols#
Volcengine Ark's Seedream / Seedance generation APIs and Volcengine Speech's TTS / podcast APIs both belong to ByteDance, but their consoles, credentials, endpoints and request protocols are not interchangeable. Mosael groups them under one company namespace while retaining separate Adapters and stable connection types; directory ownership does not merge the two credential sets.
When Volcengine Ark's content moderation refuses a request (something in the prompt, the first frame or reference image, a reference video or audio, or the generated result), the error says which part was blocked and that this is the provider's moderation, not Mosael's; when a photo of a real person in the first frame is refused as private information, it suggests a model that accepts real people, such as Seedance on Evolink. Task failures that aren't moderation now carry the provider's error code and reason too.
Evolink: several generation engines under one connection#
Evolink is a unified image/video gateway. One Evolink API key can host Seedance, Kling, Veo, Hailuo, WAN, Sora, GPT Image, Gemini and Seedream model rows under the same connection. Mosael uploads local image, video and audio inputs through the Evolink Files API while preserving their roles (keyframe, reference, edit source, or extension clip), submits the asynchronous task by exact model id, then immediately downloads expiring results into the local media library.
This route is independent from the native Volcengine Seedance adapter, so you can choose it for different regional, account or content-policy behaviour. Mosael adds no local "real person" keyword block, but it cannot promise policy bypass: acceptance still belongs to Evolink's current upstream model.
Evolink's GPT Image models are gpt-image-2, gpt-image-2-beta, gpt-image-2.5-flare (everyday images),
gpt-image-2.5-sunburst (refinement) and gpt-image-1.5. They are billed by token, and the price is mostly decided by
quality and resolution tier (a 1K 1:1 low-quality image costs well under a cent, a 2K high-quality one tens of cents), so
AI Studio, boards and workflow nodes all show both, defaulting to the cheapest: low quality, 1K, 1:1. A line under quality spells
out the difference: low is about a ninth of medium and high about four times medium, so try low first and raise it for the final
render. gpt-image-2-beta has a fixed price per image, makes only 1K and offers no quality setting. These models are off by default:
switch on the one you want in your Evolink connection, and make it the default image model if you like.
Google Gemini: use an AI Studio API key#
In AI Chat, add Google AI Studio (Gemini / Veo / Lyria) and paste an API key from AI Studio (the "Get API key ↗" link next to the field goes there). The same key also drives Veo video and Lyria music. If you already have a Google connection for Veo, you don't need a new one: after the update it can chat too, so just add the Gemini models you want from its model list.
- API key only, no subscription sign-in. Since March 2026 Google explicitly forbids third-party apps from using a Gemini subscription (Google AI Pro / Ultra, the sign-in that Gemini CLI and Antigravity use), so Mosael doesn't offer one and won't add one. A subscription and API usage are billed separately; the API is pay-as-you-go.
- The model list comes from Gemini's own catalog (
GET /v1beta/models) and only lists Gemini models that can chat. Imagen, Veo, embeddings, text-to-speech, live audio and transcription models don't appear in chat pickers, and adding one by hand doesn't turn it into a chat model. - Where it works: the agent (AI Studio), writing and image reading on the infinite canvas, and workflow LLM nodes. Direct calls such as subtitle translation, publish copy and prompt optimization don't use Gemini yet (same as subscription connections); they pick one of your other chat connections. Asset analysis in native-video mode still reads the whole video directly.
- Tool calls: chat uses Gemini's native protocol, not its OpenAI-compatible layer. Every Gemini 3 tool call carries a
"thought signature" that the next step must send back unchanged; the compatibility layer can't, and fails on the second
step with
Function call is missing a thought_signature. - Thinking levels: 2.5 Flash / Flash-Lite can be switched off and offer low / medium / high. 2.5 Pro and all of Gemini 3 can't be switched off, so the "off" entry reads Model default: Mosael sends no thinking setting and the model decides. Gemini 3 Pro Preview only has low / high.
- Network: reaching the Gemini API from mainland China needs the outbound proxy in Settings.
ComfyUI: provided by a plugin#
ComfyUI is not in the “Add provider” list: it is connected through the ComfyUI plugin that ships with Mosael, on the Plugins page (one connection per server). Once connected it appears under the image / video sections marked “Provided by a plugin”; its models are the workflows saved in ComfyUI and can be set as defaults. See Generating with ComfyUI.
Alibaba Bailian: CosyVoice can speak your library voices#
A Bailian connection's speech synthesis has two engines on the same key: Alibaba Bailian (qwen-tts) and Alibaba Bailian (CosyVoice). Besides its stock voices, CosyVoice can clone a voice from your voice library into your own Bailian account and speak with it: the voice dropdown gains a My cloned voices group, and each voice in the library gets Clone on Bailian.
- Cloning is free; speaking is billed at CosyVoice's per-character price. Uploading a voice the first time needs your agreement once, and a voice nobody has declared ownership of is never cloned.
- Copies follow the key: on a shared connection everyone uses their own key, and a cloned voice lives only in that person's account. They also follow the model: when the connection's CosyVoice model changes, a new copy is cloned on the new model the next time it's used, and the old one is left alone.
- If Bailian deletes a copy (copies unused for a year are removed automatically), it's rebuilt the next time it's used; deleting the voice in Mosael deletes its copies on Bailian too, and any that can't be removed are listed.
- When Bailian speech synthesis fails, the error carries Bailian's own words from the response (
code: message) — a missing voice, the wrong model — not just a status line.
See Editing → Your own voice through Bailian for how to use it, and Cost rules below for pricing CosyVoice.
Music and sound#
"Music & sound generation" in the AI audio section holds connections that generate audio. It is a different capability from speech synthesis (one reads text aloud, the other composes music or makes sound effects) and has its own default model. Wired so far — all from official documentation, checked 2026-09-25, not yet run with a real key:
| Provider | Models | What it does | Notes |
|---|---|---|---|
lyria-3.5, lyria-3-pro-preview, lyria-3-clip-preview | Songs, instrumentals, image-to-music | Same Gemini API key. No duration or BPM parameters — everything goes through the prompt and lyrics | |
| Evolink | six Suno models such as suno-v5.5-beta | Songs, instrumentals | Two tracks per request; only v5.5 takes a duration (10–360 s) |
| Kuaishou Kling | kling-text-to-audio, kling-video-to-audio | Sound effects; effects / music for a video | Video 3–20 s, links only; effects 3–10 s |
| Alibaba Model Studio | fun-music-v1, fun-music-preview, qwen-audio-3.1-tts-next | Songs, instrumentals; effects / ambience | Beijing region only; Fun-Music needs an application in the Model Gallery |
| Volcengine AI music | GenSongForTime, GenBGMForTime (postpaid), GenSongV4, GenBGM (packs) | Vocal songs, instrumentals | Its own connection: account AK + SK (enterprise-verified accounts); instrumental prompts must be Chinese |
OpenAI has no music or sound-effect endpoint today (speech synthesis only), so it is not listed. MiniMax music
stopped accepting new users on 2026-08-20 and is not offered either; a MiniMax connection still does chat and Hailuo video. Plugins can provide
audio models too (kind: "audio"); they join the picker like the built-in ones.
Managing its models#
Expand a provider row:
- Add a model: the "Add model…" field at the bottom is a searchable input listing catalog models you haven't configured yet. Catalogs run to hundreds of entries , so it searches rather than scrolls. Models absent from the catalog — private deployments, aliases — can simply be typed in; they work exactly like catalog ones and are only badged "not in catalog".
- Enable / disable a single model with the switch. Disabled models disappear from the default-model dropdown and every model picker.
- Model settings (gear icon):
- Capabilities: which sections this model serves (chat / image / video / music & SFX / speech / podcast). Untagged models are detected automatically, see "Capability tags" below. This is how one endpoint expresses "a chat model and an image model".
- Context window: decides how long a conversation can run before compaction kicks in. Defaults to the vendor catalog, then the built-in verified limits; when neither knows the model, a cloud model counts as 128K and a local or LAN endpoint (localhost, private addresses) as 64K — 32K can't even hold the tool descriptions. You can override it, and the line underneath says whether the current value is yours, the catalog's, built-in, or the fallback. Context lengths reported by vLLM are recognised.
- Max output tokens: how long one reply can be, thinking included. When unknown it is estimated at a quarter of the context window (capped at 32,768); left empty, the request sends a default budget rather than the model's limit, and the line underneath says so.
- Advanced (collapsed): compatibility switches — reasoning model, supports image input, supports reasoning_effort, supports json_schema (Structured Outputs), supports the developer role. You only come here when an endpoint rejects a request; for json_schema, verified vendors come with the answer filled in.
- Where parameters come from (image/video models only; a model with both capabilities configures each separately): see the next section.
- Delete with the trash icon.
The context window and the compatibility switches only show for chat models — asking an image model whether it supports the developer role is noise.
Capability tags: which models reach the generation pickers#
The small tags on a model row (chat, image, video…) are that model's capabilities, and they decide which pickers it appears in. Click the tags to change them; dashed tags were detected automatically, solid ones are tags you set.
Untagged models are read by one rule:
- Generation (image / video / music & SFX) and speech need evidence: the built-in catalog knows the model (e.g.
gpt-image-2, Wan, Seedance, Suno), the connection itself declares it (plugin-provided models), you've written a "where parameters come from" for that kind on it, or the provider only does that one thing (Volcano speech, Volcano music). - Everything else counts as a chat model only — provided the provider does chat at all. On generation-only providers such as Evolink or Ark, an unrecognised model is nothing and stays out of every picker.
So chat models on OpenAI-compatible endpoints (147ai, Ollama, relays) no longer show up in the board's or AI Studio's image picker. Conversely, a relay model that does make images but isn't in the built-in catalog needs an "Image" tag before it appears; the model list says so at the top: "Models on this connection count as chat models by default. Tag the ones that make images or videos here".
When upgrading, untagged models from before this change get the rule's answer written down as tags. A capability stays if you set the model as that capability's default or it has actually produced an image / video, and tags you set yourself are never touched. A saved selection (a board cell, a workflow node) that points at a model which lost the capability shows "Choose a model", and submitting explains that the model isn't tagged for it — pick another model or tag it.
Where an image/video model's parameters come from#
The built-in table only holds models we have verified: which sizes they accept, what their duration cap is, whether they take a reference image. So this field defaults to Detect automatically — the model name is looked up in that table. When it is found, the matching knobs appear in the generation screen.
Three common reasons a model is not found: an alias you typed yourself (gpt-image-2-client is just gpt-image-2), a private deployment, or the same model configured through a relay endpoint. Two ways out:
- "Same as ‹model›" — point at a model we do recognise. It is a pointer: if we later widen that model's description, rows pointing at it follow. Prefer this.
- "Describe this endpoint…" (the link under the field) — when nothing in the catalog matches (a combination only your relay offers), write the parameter set yourself: tick the knobs this endpoint really accepts, say which values each one takes and where it starts, plus its hard limits and any quirks about request shape. Save and the row already points at it; renaming, editing and deleting are reached the same way.
Two things worth stating plainly:
- We do not guess across vendors from the model name. Measured on the same
qwen-image-edit: Alibaba's own endpoint takes one reference image and no size; through Evolink it takes 14 and offers sizes. A guessed parameter is rejected by the endpoint on the spot. - When a model is unrecognised the screen does not pretend it simply has no parameters. It names the fields that channel can send (the request is constructed by Mosael, so that part needs no verification) while saying nobody has verified which values this model accepts, which is why the generation screen does not offer them yet.
- Saving a parameter set only checks the shape (lists must be text, limits must be positive integers, a default must appear in its list). It cannot check "does this endpoint really support it" — only the endpoint knows that, and a wrong value fails when the provider rejects the generation request.
Parameters a model declares a default for are always sent. AI Studio's form pre-fills the defaults; when workflows, boards, the agent or scheduled tasks submit without some of them, those are written into the request with the model's declared default too, instead of being left out and falling back to the provider's own default — Evolink's gpt-image-2, for instance, declares the cheapest low quality while the provider's own default is medium. Values you set explicitly are sent as you set them.
Subscription plans: authorize instead of pasting a key#
Claude Pro/Max, Kimi Code, ChatGPT Plus/Pro, GitHub Copilot, xAI and OpenRouter are subscriptions with no key to paste. Pick the matching entry when adding a provider under AI Chat, save, then click Authorize on that row:
- Some vendors first ask for a sign-in method (Codex offers browser authorization or a device code).
- The dialog shows an authorization link or a device code; complete it in your browser. Vendors that need a pasted code get an input field right there.
- Once authorized, the models that account can actually use are pulled in automatically (Copilot's vary by plan tier; OpenRouter has hundreds).
Tokens refresh themselves. Expiry is simply how subscription tokens work — the app refreshes them when they're used and whenever you open Settings. Only a failed refresh (signed out elsewhere, authorization revoked) surfaces, in warning colour, as "re-authorization needed"; click Re-authorize then. Revoke disconnects the account.
When AI Studio analyzes an existing image or video with a subscription model, it keeps using the
current session model. The backend verifies the session from the agent's short-lived token and
sends images or sampled video frames through a tool-free, stateless Gateway. This is not a public
reverse proxy and it needs no base_url. Native whole-video input is not available through this
Gateway; choose Auto or Frames + transcript instead.
Checking your quota#
Subscription rows carry an extra gauge icon showing the current plan, each quota, and when it resets.
It is fetched on click. None of these quota endpoints is a documented public API (they're what each vendor's own CLI uses internally), so polling them on a timer would both trip rate limits and quietly rot into a permanently failing background task the day a vendor changes something. When a fetch fails, the message distinguishes "this vendor isn't supported" from "this attempt didn't succeed".
Quotas are shown the way the vendor puts them. Kimi Code reports percentages — "Weekly usage 83%", "Rate limit 0%" (a five-hour window) — exactly as Kimi's own dashboard does, each with when it resets; not "83 of 100 calls used".
Capability providers: who does each job#
Settings → Capability providers lists Mosael's own capabilities and who performs each one. Each block's Provider picker lists local engines and connections of matching plugins side by side; ones that aren't set up are listed with what's missing (and stay out of the picker), and a row of Used in tags is computed from where the capability is actually used. Find plugins in the corner opens the plugin market filtered to that capability.

| Capability | Local / built in | Default |
|---|---|---|
| Noise reduction | Built-in, DeepFilterNet, RNNoise | Built-in (the two speech models remove music, so they're never picked automatically) |
| Vocal separation | Demucs (local) | Demucs |
| Document parsing | Local parsing | Local parsing; a cloud parser such as MinerU is only used when you choose it |
| Asset links | None — needs an object-storage plugin connection | With exactly one set up it's used automatically; with several and none chosen, you're asked at generation time |
| Speech | Local voice cloning, Edge free voices, OpenAI, Volcano, Alibaba Bailian | No default: engine and voice are chosen as a pair wherever they're used |
| Transcription | FunASR, sherpa-onnx, WhisperX (local) | The first one with its runtime installed (in that order); missing runtimes point to Admin → Engines |
| Translation | Google Translate (free), Chat model | Google Translate; the chat model costs money, so it's used only when chosen, with your own chat connection |
Plugins are never picked silently (except asset links with a single storage): a transcription, translation or document-parsing plugin must be made the default here or named where it's used. Transcription and subtitle translation in the editor, the engine dropdowns on workflow nodes, voice input in the composer (follows transcription by default; it can be set separately under Settings → Agent → Spoken replies) and a document's Parse again all follow this page. How plugin authors register for these capabilities is in Writing a plugin.
Outbound proxy#
When a vendor blocks your region (authorization or calls rejected, "region not supported"), a deployment admin sets a proxy under Admin → Deployment → Outbound proxy (it is the whole deployment's way out, so only deployment admins can change it). Both provider calls and authorization sign-in go through it.
- Loopback traffic never goes through the proxy (otherwise every agent tool call would break) — nothing to configure.
- The embedded browser is unaffected: publish-account logins carry their own per-account proxy.
Retries on a flaky network#
Admin → Deployment sets the retry count (right below the outbound proxy: both answer "how do AI calls get out"). It applies to every AI call — chat, image, video, audio, embedding — because rate limits and 502s don't discriminate. On 429 / 5xx / connection failure the request retries with exponential backoff, with nothing required from you.
Cost rules#
Under Admin → Cost rules you can price models (per token / per image / per second / per video; only deployment admins can edit them — other members see the resulting spend on the Statistics page); Statistics and the task center accumulate AI spend accordingly. Unpriced usage is labeled "unpriced". On the Statistics page, the "N unpriced" count in the AI spend tile under Overview links deployment admins straight here; daily and per-provider spend live under AI usage, over the last 7, 30 or 90 days.
Rules are grouped by model: one card (or one row in list view) shows every price of that model, with its source marked Manual / Catalog / Official list. Search by model, provider or note, and filter by provider profile, capability, source or currency; switch between cards and list at the top right — the choice is remembered. In list view each model is one row with its prices as small chips; click a chip to edit that price (deleting a single price is at the bottom-left of the edit dialog).
Time-of-day prices. Some vendors charge differently by the hour (DeepSeek: weekdays 9:00–12:00 and 14:00–18:00 Beijing time are peak, other times half price). When editing a rule, add Time-of-day prices under the unit price: pick the time zone the vendor uses (no need to convert), then add slots — start and end time, the weekdays it applies, and that slot's price. It's part of the same rule: a call is first matched to the rule by provider and model, then priced by the moment it happened; any time outside the slots uses the base unit price. Public holidays can't be told apart and are estimated at the weekday price.
Tiers by resolution. Most video vendors price by output resolution (Wan at 720P and 1080P, Hailuo at 768P and 2K are different prices). A rule has a Resolution field: the rule with it left empty is the model's base tier, and each other tier gets its own rule (write 720p, 1080p or 2K, in any case). A generation is priced by its resolution: the rule for that tier if there is one, otherwise the base tier; a resolution with neither its own price nor a base tier is unpriced, never borrowed from another tier. A flat price set up for one connection or workspace takes precedence over a general tiered price. Cards and the list name each price's tier, keeping the tiers of one unit together with the base tier first.

What the provider reports is what gets recorded.
- When the response reports usage, that usage is priced: GPT Image's text input, reference-image input and image output tokens each have a unit price (the units include "1M image input tokens"), Seedance is priced on its output tokens, and Qwen image and Seedream on the image count the provider states. Tokens merely estimated from the prompt length are not priced — better to show "unpriced" so you can see what's missing.
- When the response states the charge itself (Evolink), that amount is recorded instead of an estimate. Evolink credits are converted to dollars so the record matches its own billing.
- Failed calls: when the provider returned nothing (the request was refused outright) the cost is 0, regardless of how many images or seconds were asked for; when the provider had already generated and charged and only our download failed, the reported usage or charge is recorded.
Free is recorded as 0 and marked free. Voices that cost nothing, such as Edge, record 0 marked free — no longer "unpriced", and no prompt to add a price rule; spend totals leave them out, so a CNY deployment's account doesn't sprout a $0 line.
Speech is recorded under the connection's vendor. Price rules (from Prefill prices or written by hand) are set per vendor, so both
qwen-tts and CosyVoice on a Bailian connection are recorded under Alibaba Bailian and match Bailian's speech prices in the price list
(CosyVoice models are priced per 10,000 characters). CosyVoice used to be recorded under its engine name, which never matched a price
rule, so everything it spoke was "unpriced"; past records are moved over when you upgrade. The upgrade doesn't create price rules for
you: to record CosyVoice at its list price, run Prefill prices once for the Bailian connection under Cost rules. Cloning a voice
records a free usage entry (tts / enroll_voice), so you can see when, which voice and which connection it went to.
Provider responses are used as a check. The output seconds and resolution in Wan and MiniMax responses, the token breakdown in Evolink image responses and the duration in Bailian's digital-human responses are compared with what was metered; when a provider reports a charge with a breakdown, the breakdown is priced and compared with the charge. A mismatch doesn't change the record — it logs a warning and keeps the evidence with that usage entry. Video metering records only the resolution the request states (declared defaults are already in the request) instead of guessing, and reference images count only first frames, last frames, reference images and masks.
A workflow's spending belongs to its run. LLM calls, generation and voice-over inside a workflow are attached to that run (with the sub-jobs it starts), the run history shows what each run cost, and the admin page's spend by person no longer misses them.
Currencies are kept apart. CNY and USD spend are never added together: statistics, the overview and the admin page show one amount per currency ("CN¥12.30 + $4.50"), the cost chart draws one currency at a time with a switch when there are several, and nothing is converted. If one call matches rules in different currencies, it's recorded as unpriced with that reason — put those rules in one currency.
Prefill prices creates rules in bulk from two sources. The dialog lists one row per provider — prefill them one at a time or all at once with Prefill all; each provider's result appears under its own row:
- The provider's own model catalog, when it carries prices (OpenRouter, or the catalog a subscription sign-in brings back), takes precedence.
- When the catalog has no prices (true of most OpenAI-compatible endpoints), the app's built-in official price list fills the gap: DeepSeek, Kimi, Alibaba Bailian (chat, Wan video, image, speech), Volcengine Ark (Seedance video, Seedream image), Volcengine speech, MiniMax (chat, Hailuo video), OpenAI (chat, GPT Image, TTS), Anthropic, xAI, Google (Gemini chat, Veo, Lyria), and Evolink's own listed prices for Seedance and GPT Image. Every entry was checked on the vendor's official pricing page; each rule's note cites the page and the check date. Currency follows the vendor's list (CNY for Chinese vendors, USD otherwise), and an international endpoint gets the international price. Prices that change by the hour (DeepSeek's peak/off-peak) become time-of-day prices; prices tiered by output resolution get one rule per tier (Wan, Hailuo, Seedance, Veo); other tiers, such as by context length, record one tier and name the rest in the note.
- Relays (custom OpenAI-compatible addresses, Evolink and the like) look up their own entries first (prices the relay lists itself, and model names it made up, such as 147ai's
gpt-image-2-client, whose note says the real price isn't published and OpenAI's official price is used as a reference); only when there is none do they borrow a vendor's list price, and only when the model id belongs to exactly one vendor, with a note warning that the relay may charge differently.
Two rules stay the same: it only fills what's missing and never touches what you've already entered (your prices may include a discount or an enterprise agreement), and a price of 0 produces no rule — that means "unpriced / included in the subscription", not "free". The result says how many rules came from the catalog and from the price list, and which models still need a price by hand.
A few things happen on their own when you upgrade:
- Models newly added to the price list in this version (the resolution tiers, GPT Image's text and reference-image input prices, 147ai's gpt-image-2-client, Evolink's Seedance and GPT Image, Hailuo H3 at 2K…) are filled into existing libraries by the same rules as Prefill — only for models your connections actually use, only what's missing, and none of your existing rules change; other models you never prefilled or priced are left to you.
- Past usage is recalculated: image, video and audio generations whose cost was empty and can now be worked out from the price list or the provider's report get a cost; failures refused on the spot that were charged by the request become free; GPT Image calls recorded at a few dozen micros from estimated prompt tokens are repriced on the reported tokens. Any other cost already recorded, anything not computable and anything ambiguous are left alone, and chat usage is not backfilled.
- Past speech records follow today's booking: CosyVoice records move under Bailian (see "Speech is recorded under the connection's vendor" above), and older Edge voice-overs still sitting as "unpriced" become 0, marked free, and stop counting toward "N unpriced". Only records with no cost change; anything already costed is left alone.
Bindings: missing config surfaces where it's needed#
Models are bound to the places that use them. When something isn't configured, that place tells you and links to the fix:
- Workflow LLM / AI-generate nodes: with no usable provider (or a deleted one referenced), the inspector shows an amber / red banner with a "Configure" shortcut.
- AI Studio generation: with no usable generation model, the list shows the same prompt.
The generation model catalog always has built-in entries; whether they actually run depends on the corresponding vendor key being configured.



