Conversation
Adds the Y-API OpenAI-compatible gateway with the 14 models it currently serves, all as base_model overrides. - Model list: authenticated GET /v1/models (2026-09-16) - Pricing: https://y-api.bestvirtualgoods.com/pricing - Costs are USD cash price (credit price / promotional 20x top-up rate) - reasoning_options and interleaved verified against the live API
Action items
|
Addresses the review on anomalyco#7235. - deepseek/deepseek-v4-pro: author `[interleaved] field = "reasoning_details"`. The review was right that reasoning text is returned. Re-probed at n=14: reasoning_content appeared 0/14 times, reasoning_details ({type: "reasoning.text"}) 14/14. The earlier "unstable across 3 samples" note was an artefact of the sample size. The lab uses reasoning_content; this host does not, so the override describes the host. - deepseek/deepseek-v4.1-flash: drop medium and xhigh, matching the lab baseline and the sibling Y-API DeepSeek Flash entries. The host accepts both without error but does not act on them distinctly: medium's full observed range (104-108 reasoning tokens) sits inside high's (104-139), and the sibling flash-0731 is non-monotonic across the same set. - z-ai/glm-5.2: field was reasoning_content, which this host returned on 0 of 10 calls. It returns reasoning_details on 8 of 10. Corrected. Found by re-checking every [interleaved] declaration at n>=6, not only the one flagged. - provider.toml: cite the two pages that state the 20x credit rate, with the access date, so the cost transform is reviewable. Also note the rate is advertised as limited-time (reverts to 1:10, doubling every cost). Re-verified: bun validate passes; bun run test still 337 pass / 7 fail, the same 7 pre-existing failures. All other [interleaved] declarations re-confirmed at n>=6: hy3 and mimo-v2.5 reasoning_content 6/6; glm-5.3 and glm-5.3-flash reasoning_content 10/10; kimi-k3 reasoning_details 8/10; the four OpenAI models expose no side channel (0/6), so omitting the field there is correct.
|
All three items addressed in 5c101ec. Thank you — the second one caught a real bug in a file the review didn't flag.
So the field is authored, but as
I also tried to get upstream to enumerate the supported set by sending an invalid value, but this host does not forward the upstream error text — it returns an opaque
Both now appear verbatim in the header comment, along with the access date and the consequence: the rate is advertised as limited-time, so when it reverts to 1:10 every cost in this PR doubles. The service quotes no non-USD price, so there is no FX conversion in the chain. One more bug, found by re-checking every Re-confirmed at n>=6 after the change:
|
|
No actionable findings. |
The model is back in service: 5/5 200 on 2026-09-17, and it now appears in
GET /v1/models (the catalog is 15 models, up from 14).
Three things are authored from the wire rather than inherited from the lab
entry, and each is commented in the file:
- reasoning_options: an unlisted effort returns the supported set verbatim
("Unexpected reasoning effort minimal. Supported types are xhigh (default),
medium, and low."), so the set is low|medium|xhigh. `none` also answered 200
but is not in that enumeration, so it is not authored.
- [limit] context = 262144. The Alibaba Cloud entry advertises 1M, but this host
rejects anything longer with "The input (2000052 tokens) is longer than the
model's context length (262144 tokens)" — a ~4x overstatement if inherited.
- No [interleaved]: this host returns the trace as a plain `reasoning` string,
which is not a schema-valid interleaved.field.
Cost is the USD cash price (credit / 20), per the provider.toml header.
`bun validate` passes and resolves 15 models under y-api.
|
No actionable findings. |
What
Adds Y-API (
y-api) as an OpenAI-compatible provider, with the 15 models it currently serves. Every model is abase_modeloverride — Y-API is a relay, not a lab, so no newmodels/entries are needed (all 15 lab entries already exist).https://api.y-api.bestvirtualgoods.com/v1Sources for the data
Model list — an authenticated
GET /v1/modelson 2026-09-16, cross-checked against the public pricing page.Cost — USD cash price. The public catalog quotes account credit (e.g. DeepSeek V4 Pro at
0.5 / 1.0), and credit is topped up at a promotional 20x rate, so everycostvalue here iscredit / 20(DeepSeek V4 Pro →0.025 / 0.05). That makes the figures comparable to other providers' list prices, which is whatcostis for.The 20x rate is stated by the service itself, in two places, both read 2026-09-16:
Both quotes are reproduced in the
provider.tomlheader, with the date, because the conversion is not derivable from the file. Note the rate is advertised as limited-time: when it reverts to 1:10, every cost here doubles. The service quotes no non-USD price, so there is no FX conversion in the chain.reasoning_options — read off the live API rather than assumed, because this host's supported set differs from the first-party entries for three models:
reasoning_efforton this hostopenai/gpt-6-astralow,medium,high,xhighnone, nomax. Upstream error text enumerates the supported values.openai/gpt-5.6-sol/-terra/-lunanone,low,medium,high,xhighmax→400 Unsupported value: 'reasoning_effort' does not support 'max' with this model. Supported values are: 'none', 'low', 'medium', 'high', and 'xhigh'.deepseek/deepseek-v4.1-flashlow,high,maxauthored, thoughmedium/xhighare acceptedSo
maxis omitted for all four OpenAI models here even thoughproviders/openai/models/…lists it — this host's API rejects it, andreasoning_optionsdescribes this host's API.On
deepseek-v4.1-flash: the host acceptsmediumandxhighwithout error but does not act on them distinctly, so only the lab baseline set is authored, matching the other Y-API DeepSeek Flash entries.usage.completion_tokens_details.reasoning_tokens, n=3 per level:medium's entire observed range (104-108) sits insidehigh's (104-139), andxhigh's spread is wider than the gap to either neighbour. As a control, siblingdeepseek-v4-flash-0731on the same host,reasoning_contentlength, n=5 per level, gives means oflow 826 / medium 442 / high 453 / xhigh 648 / max 1801— not monotonic at all. An effort level a caller cannot observe is worse than not offering it.Two further request-shape facts, for reviewers:
openai/gpt-6-astraalso rejectsmax_tokensand requiresmax_completion_tokens. I did not model this — I did not find a field in the schema that expresses "this model needsmax_completion_tokens", so I am flagging it here instead of inventing one.deepseek/deepseek-v4-flashis a reasoning model here:thinking.type = "disabled"suppressesreasoning_content, andreasoning_effortacceptslow|high|max. That is why the DeepSeek family carriestoggle+effortrather thaneffortalone.interleaved — authored from the field this host actually emits, which is not always the lab's
reasoning_content. Each declaration was checked with at least 6 identical calls on 2026-09-16:reasoning_contentreasoning_detailsdeepseek/deepseek-v4-proreasoning_detailsz-ai/glm-5.2reasoning_detailsmoonshotai/kimi-k3reasoning_detailsz-ai/glm-5.3reasoning_contentz-ai/glm-5.3-flashreasoning_contenttencent/hy3reasoning_contentxiaomi/mimo-v2.5reasoning_contentdeepseek/deepseek-v4-flash,-0731,-v4.1-flashreasoning_contentreasoning_detailsentries are[{type: "reasoning.text", text: "…"}];reasoning(a plain string) also accompanies it but is not a schema-validinterleaved.field, so it is not what gets authored.The four OpenAI models are omitted rather than guessed at: across 6 calls each, none of
reasoning_content,reasoning, orreasoning_detailswas present. Their leading comments say so, so the omission is explicit rather than an oversight.qwen/qwen3.8-flash(added in a follow-up commit)This model was left out of the first commit. On 2026-09-16 it was advertised on the pricing page but absent from
GET /v1/models, and calling it returned:It has since come back — 5/5 200 on 2026-09-17, and the catalog is now 15 models — so it is included. Listing a model that cannot be called would be worse than omitting it; so would continuing to omit one that can.
Three of its fields are authored from this host's behaviour rather than inherited from the Alibaba Cloud entry:
reasoning_options— an unlisted effort returns the supported set verbatim, so the set is read off the wire rather than from Alibaba's docs:So
low|medium|xhigh.nonealso answered 200 5/5, but it is not in that enumeration, and I could not resolve the discrepancy before hitting the request cap described below — so it is not authored.[limit] context = 262144— the onlylimitoverride in this PR. The Alibaba Cloud entry advertises 1M, but this host rejects anything longer:Inheriting the base value would overstate the window by ~4x. The other 14 models inherit, and I checked that their base limits are within rounding of what this host actually serves (1,000,000 / 1,048,576 against a measured 1,048,544).
No
[interleaved]— this host returns the trace as a plainreasoningstring (messagekeys arecontent/reasoning/role/tool_calls), which is not a schema-validinterleaved.field. Same reason the four OpenAI models omit it.Limit on the effort sweep
The remaining effort values (
high,xhigh,max,no_think) could not be re-checked. The key hit this host's trial-tier cap of 500 requests / 1440 minutes partway through the sweep (您已达到请求数限制:1440分钟内最多请求500次), so those probes returned the cap error rather than an effort rejection and carry no signal.lowandmediumwere confirmed 200 before the cap;minimalproduced the enumeration above. Flagging this rather than presenting an incomplete sweep as a complete one.Validation
bun validate— passes. Resolves to 15 models undery-api. All inheritname,modalitiesetc. from their base models; onlyqwen/qwen3.8-flashoverrideslimit, for the reason above.bun run test— 337 pass, 7 fail. All 7 are pre-existing and unrelated to this change: I reproduced the identical 7 failures on a clean tree (git stash -u), with the same names:catalog generation > repository open-weight model metadata includes weights linksinherits Hyper reasoning when API omits reasoning metadataDeepInfra preserves live modalities for new base modelssyncs the last LLM Gateway case variant without mixing source recordsmissing reasoning controls open issues without deleting existing models or blocking valid onessnapshot exports providers, models, generatedAt, and a default catalogsnapshot entrypoint is self-containedproviders/y-api/(17 files), no changes tomodels/,models.json, orlabs/.Logo
Square 24×24
viewBox,currentColoronly, no fixed dimensions — the site's brand mark (the seal with the Y, plus the accent bar) with the colour dropped, sincecurrentColorcannot express the two-tone original.Measurement note
All probes above go through
curlwith a browserUser-Agent. Python'surllibis blocked at the edge with403 error code: 1010, so the numbers in this PR come fromcurl, not from a scripted HTTP client.