OctaFuse 2.14.0 Adds Multimodal Adapters, Route-Group Discounts, Per-Field Config

OctaFuse Gateway 2.14.0 introduces OpenAI-compatible adapters for MiniMax, Seedream, and Gemini image and voice models, adds per-route-group user discounts with price preview, and switches admin config to per-field saves to prevent overwriting live usage data.

Programmer DD
Programmer DD
Programmer DD
OctaFuse 2.14.0 Adds Multimodal Adapters, Route-Group Discounts, Per-Field Config

01 Image and Voice Access Extensions

OctaFuse Gateway 2.14.0 adds OpenAI-compatible transformation routes for MiniMax, Seedream, and Gemini image models, plus enhanced Bailian support. Clients using OpenAI SDKs can now call these providers via transformation routes, while native endpoints remain available.

New Adapters

MiniMax : Added file transcription, speech synthesis, and image generation adapters. Supports OpenAI transcription, TTS, and image generation interfaces, plus native MiniMax endpoints.

Seedream : Added dedicated image generation adapter shared by Volcano Ark and BytePlus. Supports OpenAI image generation interface and new native image generation endpoint.

Gemini Image Models : Completed native image request handling, added OpenAI image generation transformation. Supports OpenAI image generation interface or native Gemini endpoint; upstream supports Gemini API and Vertex AI.

Bailian : Added native speech synthesis, async file transcription with task query, improved multimodal routing and Qwen-TTS-Realtime session passthrough.

Each adapter has different capabilities:

Gemini : OpenAI image generation transformation supports reference images and size mapping, but only single, non-streaming, b64_json response; does not support /v1/images/edits. Use native endpoint for streaming or raw Gemini response.

Seedream : OpenAI transformation returns non-streaming JSON; native endpoint supports JSON and SSE. Models supporting multiple images can use n parameter; 5.0 Pro/Flash only allow 1.

MiniMax : File transcription non-streaming, single file limit 25MB; sync speech synthesis supports non-streaming and SSE.

Billing: MiniMax transcription by duration, speech synthesis by upstream character usage, MiniMax and Seedream image generation by successful image count. Gemini image requests billed by text, image, etc.; requests with no valid image, client cancellation, or gateway timeout do not deduct Gateway user quota. MiniMax business errors treated as failures even with HTTP success.

Vendor-Specific Parameters via extra_body

Parameters like image aspect ratio, resolution, voice emotion not in OpenAI standard fields can now be passed via extra_body in OpenAI image generation, image edit, speech synthesis, and transcription requests. They are merged into upstream request body per vendor's native structure.

Example: Calling MiniMax speech synthesis route with OpenAI SDK extra_body to set emotion, pitch, language:

client.audio.speech.create(
    model="minimax-speech-2.8-hd",
    input="你好,欢迎使用 OctaFuse。",
    voice="male-qn-qingse",
    extra_body={
        "voice_setting": {
            "emotion": "happy",
            "pitch": 2
        },
        "language_boost": "Chinese",
    },
)
model

uses Gateway-configured model ID, voice uses MiniMax voice ID. Extra fields must match vendor format; if route pool contains multiple protocols, ensure each candidate upstream accepts them. Extra fields total ≤32KB; model name and adapter-critical fields for billing and response parsing cannot be overridden. Route defaults and forced overrides still apply; Bailian speech synthesis input.* parameters must remain in route request parameters.

Playground and Simulator Verification

Playground and Simulator support new native endpoints: edit Gemini image requests, preview images, play MiniMax non-streaming audio. Image samples use lowest resolution tier per model to avoid unsupported sizes. Playground only validates selected upstream, does not deduct Gateway quota but may incur vendor charges. For auth, routing, and actual billing verification, use Simulator or real client.

Gemini image adapter call guide showing OpenAI client entry, field mapping, and usage limits
Gemini image adapter call guide showing OpenAI client entry, field mapping, and usage limits
MiniMax Speech 2.8 Turbo native speech synthesis debug showing non-streaming request params, HTTP 200 response, audio playback and download
MiniMax Speech 2.8 Turbo native speech synthesis debug showing non-streaming request params, HTTP 200 response, audio playback and download

MiniMax native speech synthesis with stream: false returns audio playable or downloadable directly.

02 User Group Discounts

Previously user multipliers were set per model; 2.14.0 allows further distinction by route group. In user details "Quota & Billing", add group multipliers for a model.

Example configuration: default group: multiplier

0.8
campaign

group: multiplier 0.5 Other groups (fallback *): multiplier 0.9 With this config, campaign uses 0.5, default uses 0.8, others use 0.9. If no matching group and no * fallback, original route billing applies.

User multiplier combines with route effective multiplier, not directly equal to final discount. Two combination modes: "multiply" (e.g., route 0.6 × user 0.5 = 0.3) and "min" (e.g., min(0.6, 0.5) = 0.5). Only user cost adjusted; supplier cost unchanged.

Group multipliers apply to text, image, audio billing and model list discount display. Existing numeric multiplier continues to apply to all groups without rewrite.

DeepSeek V4.1 Flash user default multiplier 1, default group overridden to 0.4
DeepSeek V4.1 Flash user default multiplier 1, default group overridden to 0.4

Default multiplier ×1, default group separately set to ×0.4.

After saving, preview in user details "Model List" shows visible models, catalog, routes, and combined multipliers per group. Preview reads saved config only, no model calls, no RPM consumption. Default shows default and free group text models; filter by type, group, model; max 40 results. Portal can fetch via read-only API GET /api/admin/users/:id/models.

User model list preview showing DeepSeek V4.1 Flash in default and free groups with catalog, routes, combined multipliers
User model list preview showing DeepSeek V4.1 Flash in default and free groups with catalog, routes, combined multipliers

Catalog multiplier ×2, default and free groups show routes and combined multipliers.

03 Backend Configuration Upgrade

Admin edits during live traffic previously saved entire form, risking overwrite of new consumption data with stale values loaded at page open. 2.14.0 submits only changed fields; adjusting email, rate limits, or multipliers no longer affects latest usage.

User details split into "Overview", "Quota & Billing", "Model List", "Activity Log". Changing quota reset cycle or time no longer auto-clears current period consumption; consumption corrections require explicit field edit. Unsaved page exit prompts confirmation.

Gateway config page saves per card independently. Example: adjusting business timezone does not submit drafts from other cards. Cards mark unsaved changes and allow individual revert.

User exclusive multiplier synthesis mode config card showing unsaved changes, revert and save buttons
User exclusive multiplier synthesis mode config card showing unsaved changes, revert and save buttons

04 Other Updates

Provider Presets : Added pay-as-you-go "Qwen AI Platform" and MiniMax International; updated Qwen Token Plan address; supplemented Responses, Anthropic, image, audio endpoints per platform capabilities; corrected LongCat Chat address.

Endpoint Configuration : Templates supporting only partial OpenAI capabilities now list concrete endpoints instead of deriving unconfirmed interfaces from Base; Bailian endpoint docs clarify Base vs. plan-specific endpoints.

New Model Presets : Added Claude Haiku 5.5, Gemini Nano Banana 2.1, MiniMax ASR 1.0, Speech 2.8 HD/Turbo, Image 01/01 Live with corresponding modality and pricing configs.

Pricing & Billing Corrections : Fixed Claude Sonnet 5.5 cache read price, Seedream 5.0 Pro resolution price tiers, Grok Imagine Image 2.0 billing. OpenAI image generation without size can use extension field resolution for pricing tier selection.

Parameter Troubleshooting : Multimodal request logs now include extra fields and restored protected field records to verify final parameter handling; data URL content masked.

Provider Cards : Cards without configured keys or pending confirmation no longer show "Click to visit"; import and edit dialogs still open respective platforms.

Preset imports do not overwrite existing same-ID models or rewrite existing provider endpoints. New addresses and corrected prices must be manually verified against upstream and updated.

Upgrade to 2.14.0

Upgrading from 2.13.0 requires no new database migrations or required configs. Backup database, then update Proxy, Admin, and migrate images uniformly; earlier versions must apply pending migrations in order. Enable new protocols or group multipliers after all Proxies upgraded.

Check the following during upgrade:

New Multimodal Routes : MiniMax image/audio require minimax.base; Seedream dedicated adapter requires volcengine.base; Gemini image transformation needs valid Gemini endpoint. Import models and configure routes. Existing OpenAI passthrough Seedream routes can continue; new protocols do not imply video, music, etc. support.

Bailian Image Sizes : dashscope-image-qwen and dashscope-image-wan no longer auto-convert 1024x1024 to 1024*1024; pass through to upstream. Clients or route params relying on old conversion must adjust; use model-specific values like 1K, 2K, or width*height.

Existing Endpoints & Prices : Imported data not auto-updated. If provider still declares unsupported interfaces via Base, switch to concrete endpoints. Anthropic and Google CNY presets are USD × 7 conversion placeholders, not independent CNY list prices.

External Systems Reading Multipliers : Legacy numeric config remains compatible. After using new group config, systems directly reading/writing charged_cost_factors must handle object values; pricing audit parsing must allow new user_charged_factor_route_group group key.

Upgrade does not require running scripts/db/migrate-image-billing-modes.mjs. If used, it modifies billing configs and prices for specified models; backup and check --dry-run first; not for updating Sonnet cache prices.

Post-upgrade: test transformation and native routes separately, verify image/voice usage and billing, check group discounts, fallback results, config saves. MiniMax native transcription still buffers entire segment, no real-time SSE; when duration unreadable, billing estimates from file size.

Full changelog and upgrade notes at GitHub Release v2.14.0: https://github.com/OctaFuse/octafuse-gateway/releases/tag/v2.14.0 and Changelog: https://github.com/OctaFuse/octafuse-gateway/blob/v2.14.0/CHANGELOG.md

OctaFuse website: https://octafuse.dev/

GitHub repo: https://github.com/OctaFuse/octafuse-gateway

Original Source

Signed-in readers can open the original source through BestHub's protected redirect.

Sign in to view source
Republication Notice

This article has been distilled and summarized from source material, then republished for learning and reference. If you believe it infringes your rights, please contactadmin@besthub.devand we will review it promptly.

API gatewayGeminiMiniMaxOctaFuse GatewayMultimodal AdaptersPer-Field ConfigRoute-Group DiscountsSeedream
Programmer DD
Written by

Programmer DD

A tinkering programmer and author of "Spring Cloud Microservices in Action"

0 followers
Reader feedback

How this landed with the community

Sign in to like

Rate this article

Was this worth your time?

Sign in to rate
Discussion

0 Comments

Thoughtful readers leave field notes, pushback, and hard-won operational detail here.