LM-Kit OneDocs2026.8.10lm-kit.com
Media

Video Frames

Reports video frame-extraction capabilities.#

GET/lmkit/v1/video-frames/capabilities

Returns whether ffmpeg is available on the server (frame extraction requires it), the video container extensions accepted, and the image formats a frame can be encoded to. Clients should call this once at startup (cache the result) and use it to decide whether to request posters from the server or render them locally.

Responses

StatusTypeDescription
200

OK

curl -X GET "$LMKIT_ONE_URL/lmkit/v1/video-frames/capabilities" \
  -H "Authorization: Bearer $LMKIT_API_KEY"

Extracts one still frame from an uploaded video (poster / preview tile).#

GET/lmkit/v1/video-frames/{fileId}

Decodes a single frame from a previously uploaded video file and returns it as an image. Without 'at', the automatic policy applies: the frame is taken ~10% into the clip and a histogram scan picks the most representative frame of the following moments, which skips black, single-color, and fade frames. With 'at' (seconds), the frame at that exact position is returned (clamped into the clip). The image never upscales beyond the source width. Stream facts ride response headers so one call yields the poster AND the technical properties: 'X-Video-Duration-Seconds', 'X-Video-Width', 'X-Video-Height', 'X-Video-Codec', 'X-Video-Has-Audio', plus 'X-Frame-Timestamp-Seconds' and 'X-Frame-Timestamp-Mode' ('exact' or 'auto') for the frame itself. Containers accepted: the inspection engine's media registry (mp4, m4v, m4b, mov, 3gp, 3g2, mkv, webm, avi - see the capabilities route). Requires ffmpeg on the server; without it this endpoint answers 501 Not Implemented (the capabilities route advertises availability). Returns 422 Unprocessable Content when the file has no decodable video stream.

Parameters

NameInTypeDescription
fileIdrequiredpathstring

The file ID of a previously uploaded video file.

atqueryobject (double)

Frame position in seconds. Omit for the automatic poster policy (~10% in, representative-frame scan).

widthqueryobject (int32)

Target width in pixels (16-3840); height follows the aspect ratio. The source is never upscaled. Default: 640.

formatquerystring

Output image format: 'jpeg' (default), 'png', or 'webp'.

qualityqueryobject (int32)

Compression quality (1-100). Applies to 'jpeg' and 'webp'. Default: 90.

Responses

StatusTypeDescription
200

OK

400

Bad Request

404

Not Found

422

Unprocessable Entity

501

Not Implemented

curl -X GET "$LMKIT_ONE_URL/lmkit/v1/video-frames/$FILEID" \
  -H "Authorization: Bearer $LMKIT_API_KEY"