Files
Sharky Wang a2d13d535d feat(beatapi): serve the installed video and image models on BeatAPI (#331)
* fix(studio): serve composition material in the ranges a media element asks for

The material route advertised accept-ranges and answered every request with
the whole resource. A media element that asks for the tail index of an MP4
waits for the entire file before it can show a frame: measured 407 ms against
70 ms on a 124 MB source, and the full transfer time when the source arrives
slowly.

Reuse requestedByteRange, which the artifact route on the same server already
uses, and answer 206 with content-range, or 416 when the range is outside the
resource. A ranged response now takes a view of the material rather than
copying the whole resource per request.

* feat(beatapi): serve the installed video and image models on BeatAPI

`@hypit/provider-beatapi` posts one task to `https://api.beatapi.io` with a
Bearer API key, polls `GET /v1/tasks/{task_id}` until it succeeds, and stores
every entry of `output.media` in the current Build. It maps the nine models the
Distribution already describes: the four Seedance variants, MiniMax H3, Grok
Imagine 1.5, GPT Image 2 and both Nano Banana models. It adds no model package.

One BeatAPI alias serves every input mode, so the request shape alone decides
which arrays travel. The opening and closing frames travel as one ordered
`images` array, which a wire mapping cannot write from two ports, so routes.ts
folds `first_frame` and `last_frame` into it.

Seven service limits are reported as unsupported before any reference is
uploaded: Seedance has no web-search field and `seedance-2-mini` no generated
audio, where an authored `false` is dropped and an authored `true` refused;
Seedance 2 does not render 1080p with reference images; Seedance 2.5 takes 4 to
30 seconds rather than an automatic length; MiniMax H3 orders its two frames
first then last; Grok Imagine 1.5 accepts one image at 1080p; GPT Image 2 has no
background field; and Nano Banana 2 takes ten references and four fewer ratios.
Nano Banana 2 spells its JPEG output `jpeg`.

References are uploaded to `POST /v1/files` and travel as the returned HTTPS URL,
within the service's own types and sizes: 50 MB for PNG/JPEG/WebP images and
MP3/WAV/AAC/M4A audio, 100 MB for MP4/MOV video. BeatAPI documents no data URLs.
Seedance's `person-reference` declaration is accepted and not transmitted, since
BeatAPI's task body has no field for it.

The documented request bodies for Seedance text and multimodal modes, MiniMax
frame pairs, Grok references, GPT Image 2 and both Nano Banana models compile to
BeatAPI's published examples.
2026-09-20 10:29:07 +08:00
..