Video Frames
Reports video frame-extraction capabilities.#
/lmkit/v1/video-frames/capabilitiesReturns 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
| Status | Type | Description |
|---|---|---|
| 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).#
/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
| Name | In | Type | Description |
|---|---|---|---|
fileIdrequired | path | string | The file ID of a previously uploaded video file. |
at | query | object (double) | Frame position in seconds. Omit for the automatic poster policy (~10% in, representative-frame scan). |
width | query | object (int32) | Target width in pixels (16-3840); height follows the aspect ratio. The source is never upscaled. Default: 640. |
format | query | string | Output image format: 'jpeg' (default), 'png', or 'webp'. |
quality | query | object (int32) | Compression quality (1-100). Applies to 'jpeg' and 'webp'. Default: 90. |
Responses
| Status | Type | Description |
|---|---|---|
| 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"