Skip to content

[FEATURE REQUEST] Allow OpenRouter :floor/:nitro/:online model-slug suffixes (currently rejected by model-selection validation) #858

Description

@D4N005H

ZooCode's model-selection field validates input against a fixed list of known model
slugs fetched from OpenRouter's /api/v1/models endpoint. This is correct for normal
model selection, but it also rejects valid OpenRouter routing-suffix syntax, since a
string like z-ai/glm-5.2:floor doesn't match any literal entry in that model list.

This is not a hypothetical request - the identical limitation was independently
reported against Cline (a closely related fork/inspiration for ZooCode) in
cline/cline#1820, where a user states verbatim: "Your tool does not allow adding
these arbitrary suffixes when picking the model."

OpenRouter officially documents these suffixes as first-class routing modifiers, not
separate models:

  • :floor → equivalent to setting provider.sort to "price" (cheapest provider)
  • :nitro → equivalent to setting provider.sort to "throughput" (fastest provider)
  • :online → adds web search capability to any model
  • :free → routes to the $0 variant where available

Why this matters

Users who want to guarantee lowest-cost routing on every request currently have no
way to do so within ZooCode's UI, since:

  1. The model dropdown only accepts exact canonical slugs, blocking :floor.
  2. There is no separate "Provider Routing" / "Sort by price" field mapping to
    OpenRouter's provider.sort parameter as an independent config option.

This forces cost-conscious users to rely entirely on OpenRouter's account-level
default provider-sorting setting as a workaround, which is a global setting rather
than something configurable per-profile inside ZooCode.

Suggested Fix (two options, either resolves the issue)

Option A - Allow suffix passthrough:
Relax model-slug input validation to permit a whitelist of trailing suffixes
(:floor, :nitro, :online, :free) appended to any otherwise-valid model slug,
and pass the full string through unmodified to the OpenRouter API call.

Option B - Dedicated Provider Routing field (preferred, more robust):
Add an explicit "Provider Routing" dropdown/field in Advanced Settings for OpenRouter
profiles, with options: Default (Balanced), Price (cheapest), Throughput (fastest).
This field would set provider: { sort: "price" } (etc.) in the outgoing request
body independently of the model slug, avoiding fragile string-parsing entirely and
matching OpenRouter's own documented API shape.

Option B is preferable since it avoids any ambiguity about slug parsing and gives
users a discoverable, validated UI control rather than requiring them to know
OpenRouter's suffix syntax.

References

  • OpenRouter model :suffixes cline/cline#1820 - identical complaint filed against Cline, confirms this is a
    cross-tool pattern, not a ZooCode-specific bug
  • OpenRouter FAQ / docs - documents :floor, :nitro, :online, :free as
    official routing suffixes, and provider.sort as the equivalent API parameter
  • Cline OpenRouter setup docs (docs.cline.bot/provider-config/openrouter) - confirms
    Cline's model selection is dropdown-only, no free-text/suffix override

Environment

  • ZooCode version: 3.66.0
  • Provider: OpenRouter
  • OS: Windows

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Fields

    No fields configured for Feature.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions