v0.12.194
v0.12.194 — May 18, 2026
-
Seedance video pricing aligned with blockrun's token-priced model. Last week blockrun replaced the flat per-second Seedance pricing with
duration × tokens/sec × $/1M tokens × 1.05 marginafter a verification call againstbytedance/seedance-2.0-fastmeasured 10,128 tokens/sec at 480p (token360's default, not the 720p we'd guessed). The old ClawRouterVIDEO_PRICINGtable was both wrong-shaped and ~3–4× off on the high side. Updatedsrc/proxy.ts:VIDEO_PRICINGnow stores base$/sec(no margin baked in —estimateVideoCoststill applies the 5% margin to match server'sMARGIN_PERCENT). Per-second values are derived from10128 × $/1M tokens / 1e6.- New optional
pricePerSecondImageInputfield per model. 2.0 Fast and 2.0 Pro charge ~40% less per token on image-to-video (token360's published image rate); 1.5 Pro stays flat because its audio-generation toggle isn't yet wired to a request param, and undercharging when audio is on by default would be silent loss. estimateVideoCost(model, durationSeconds, hasImageInput)picks the cheaper image rate when the request body hasimage_url. The video route now parsesimage_urlpresence alongsidemodel+duration_secondsand threads it into the cost callsite (src/proxy.ts:2706, 2876).- Net effect on the default 5s call telemetry: 1.5 Pro $0.16 → $0.23, 2.0 Fast $0.79 → $0.60 text / $0.35 image, 2.0 Pro $1.58 → $0.74 text / $0.46 image. Matches blockrun's quoted prices to within rounding. This is telemetry-only — payment is fully server-dictated via x402 (
feedback_telemetry_vs_payment).
-
BytePlus RealFace passthrough documented (no code change needed). blockrun added an optional
real_face_asset_idbody field (formatta_xxxxxxxx) on Seedance 2.0 variants for real-person character consistency across frames. The ClawRouter video route already forwards the raw request body to blockrun as-is, so RealFace works transparently — but the README +skills/clawrouter/SKILL.mdheadline didn't mention it. Updated both with usage notes, the per-1M-token pricing model, and the constraint that RealFace +image_urlare mutually exclusive (both seed the first frame; pick one). -
Surf skill refreshed against blockrun's real
/gateway/v1catalog (83 endpoints). The first Surf skill (v0.12.193) was drafted in parallel with blockrun's integration and ended up out of sync once blockrun:- Switched to
api.asksurf.ai/gateway/v1(real public gateway, 82–83 real endpoints) and dropped 15 invented routes the skill had described. - Pre-validates required query params per endpoint before settling payment — call with a missing param and you get
400 { missing_params, all_required, docs }and the wallet isn't charged. 56 of 83 endpoints have required params. - Dropped surf-1.5 chat (
/surf/chat/completions) again pending per-token billing — calling it now returns 404 without taking payment.
Updated
skills/surf/SKILL.md:- Endpoint count 84 → 83, removed the Chat section, added the required-param pre-check note up front.
- Fixed param names that the agent would otherwise feed incorrectly and trip the pre-check 400:
social/mindshareisq+interval(notproject+window),search/*family isq(notquery),token/holders+token/transfersneedaddressANDchain,onchain/gas-priceneedschain,onchain/txneedshash+chain, exchange family universally needspair, market family usessymbol, prediction-market endpoints use their specific identifier params (market_slug,event_slug,condition_id,market_ticker,event_ticker,ticker,address), andfund/ranking+project/defi/*needmetric. - Reworded the example flows that previously used wrong param names (
search/project?query=ethena→?q=ethena, mindshare example fixed).
- Switched to
-
Phone skill — voice/call
fromis now optional with server-side auto-pick. blockrun movedfromfrom required → optional on/v1/voice/call. After payment verification the server picks a caller-ID from the wallet's owned numbers: 0 active →403 no_active_numberwith buy-first hint, exactly 1 → auto-used, 2+ →400 ambiguous_fromlisting all candidates. The prior skill said "Otherwise Bland picks one" — wrong, and would have made agents leavefromoff and confuse users with the 403/400 responses. Updatedskills/phone/SKILL.mdwith the actual auto-pick rule table and the ownership-mismatch 403 behavior. -
No code change for
real_face_asset_id, no new partner tools, no proxy whitelist change. Surf + Phone are both base+skill integrations (per the v0.12.193 rule). All blockrun upstream changes here flow through the existingproxyPaidApiRequestpath transparently.