Introduction
Starlight is intended for recordings whose small surfaces have collapsed into blurred patches or compression. Instead of merely spreading those patches across a larger image, the model proposes a more resolved appearance. It can suit selected archive passages and compressed street footage when a generated interpretation is acceptable in the finished edit.
Key features & highlights
The five presets cover different restoration goals: current default Precise 2.6, realism-oriented Precise 2.5 for AI material, speed-focused Fast 3, fidelity-oriented Fast 2 and Mini for difficult archives. In the cyclist trial, the reconstructed jersey folds, bicycle boundaries and building surfaces were more defined, but the rider’s face was also redrawn.
Four delivery tiers run from 720p through 4K. Fast 2 has a distinct minimum size, so a request using the lowest tier can still return a full-HD frame. The three-second Precise 2.6 street run at 1080p took roughly seventy-five seconds; this observation helps plan a trial but does not establish a guaranteed turnaround for other clips.
Request parameters
| Parameter | Required | Description |
|---|---|---|
video_url | Yes | A 1–60 second MP4 link or upload is required; clips outside the duration limit are rejected before acceptance. Starlight preserves the incoming soundtrack and shot length. at least 1 characters |
preset | No | Default |
resolution | No |
|
Pricing
For Starlight, preset and tier determine the rate and step length applied to the incoming duration. Billing rounds upward to seconds and then whole steps, never below one step. The displayed second price is calculated as step price divided by step duration. The measured upload length or 60 seconds for a remote URL is reserved at acceptance; settlement refunds the excess, with no usage charge for failure. Fast 2 has a lower rate than the other four presets; 720p/1080p share a rate and 2K/4K share a higher one.
| Resolution | Style preset: fast_2 | Style preset: fast_3 | Style preset: mini | Style preset: precise_2_5 | Style preset: precise_2_6 |
|---|---|---|---|---|---|
| $0.07 / second | $0.1384615385 / second | $0.1384615385 / second | $0.1384615385 / second | $0.1384615385 / second |
| $0.07 / second | $0.1384615385 / second | $0.1384615385 / second | $0.1384615385 / second | $0.1384615385 / second |
| $0.1513043478 / second | $0.3026086957 / second | $0.3026086957 / second | $0.3026086957 / second | $0.3026086957 / second |
| $0.1513043478 / second | $0.3026086957 / second | $0.3026086957 / second | $0.3026086957 / second | $0.3026086957 / second |
Use cases
For a city montage, choose a street shot whose movement remains useful despite heavy compression. Decide whether the newly resolved tram panels and clothing fit the surrounding footage before processing a larger collection of inserts.
For an archive sequence, distinguish an attractive reconstructed image from evidence about historical appearance. A face or sign that becomes clearer can contain generated shapes, so approval should depend on the purpose of the sequence and the importance of those details.
Prompt guide & pro tips
There is no prompt box to direct reconstruction. Use a short moving selection with both a face and a textured background, then test precise_2_6 at 1080p. Try a different preset when the source or restoration goal calls for it, keeping the output tier stable so the comparison remains interpretable.
Review aligned frames and uninterrupted playback before accepting the take. Pay attention to facial proportions, bicycle tubes and repeated masonry as the camera moves. Confirm returned dimensions when using Fast 2, and check sound synchronization as part of delivery. Preserve the original recording so the generated reconstruction remains distinguishable during later editorial decisions.
API quick start
# Generate the idempotency key once; reuse it when retrying after a lost response.
export SPICY_IDEMPOTENCY_KEY="${SPICY_IDEMPOTENCY_KEY:-$(uuidgen)}"
curl -X POST https://api.spicyapi.ai/api/v1/jobs/createTask \
-H "Authorization: Bearer $SPICY_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $SPICY_IDEMPOTENCY_KEY" \
-d '{
"model": "topaz/starlight/upscale",
"input": {
"preset": "precise_2_6",
"resolution": "1080p",
"video_url": "https://example.com/reference.mp4"
}
}'
# Copy data.taskId from the response into TASK_ID, then poll the status.
TASK_ID="TASK_ID_FROM_RESPONSE"
curl "https://api.spicyapi.ai/api/v1/jobs/recordInfo?taskId=$TASK_ID" \
-H "Authorization: Bearer $SPICY_API_KEY"
See the API reference for authentication, the complete schema, polling, and error handling.






