apyhub
FILE CONVERSION · FILE MANIPULATION

Generate Thumbnail from Video API

What it does

Video Thumbnail Generator extracts a PNG frame from a video and returns it as either a binary download or a signed link. Send a local video file or a remote video URL, choose the capture time in seconds, and optionally set the output size as a width-by-height string.

Use it when you need a preview image for a media library, a video upload flow, or an admin dashboard that shows a frame from each clip. The service accepts .mp4, .mkv, .avi, .mov, .flv, .3gp, and .webm files on upload, and it can also work from a remote video_url.

The input is simple: video for file uploads or video_url for remote sources, plus optional time and size. The /file/download and /url/download endpoints stream the generated thumbnail back as binary PNG data, while /file/link and /url/link return a data field containing a signed URI to the image.

That makes Video Thumbnail Generator a good fit for pipelines that need a deterministic still image from video without storing the original clip in your app.

▣ ENDPOINT 01 / 04
POST
Extract PNG frame from upload and stream download (VIT-01)
https://api.eu.apyverse.com/apyhub/generate-image-thumbnail/file/download

QUICKSTART

GUIDE

Quickstart

Upload a video file to generate a thumbnail, optionally choosing the frame time and output size.

curl -X POST "https://api.eu.apyverse.com/apyhub/generate-image-thumbnail/file/download" \
  -H "apy-token: $APY_TOKEN" \
  -F "video=@/path/to/video.mp4"

What you'll get back

Returns a binary file download (string with format: binary) containing the generated thumbnail image.

(binary file)
TRY ITLIVE · 550 ATOMS
Loading your default key…
The full key is used to call the gateway and stays in this tab — never sent to orbit or saved.
Max 100MB total per request (all files combined). Larger? Use this API's URL-based endpoint instead, if it has one.
body*
Optional output scale WxH.
Frame seek position in seconds.
Video file (.mp4 .mkv .avi .mov .flv .3gp .webm). Max 500 MiB.

About this endpoint

What it does

Extracts a PNG frame from an uploaded video file and streams the result back as a binary download. You can optionally specify the frame seek time and output size.

Request Body

ParameterTypeMandatoryDescription
videoStringYesVideo file to process. Supported formats: .mp4, .mkv, .avi, .mov, .flv, .3gp, .webm. Maximum size: 500 MiB.
sizeStringNoOptional output scale in WxH format, for example 320x180.
timeIntegerNoFrame seek position in seconds. Default: 1. Minimum: 1.

Response

Returns a binary file stream containing the generated PNG frame. The success response is a raw binary body, not a JSON object.

ParameterTypeMandatoryDescription
bodyStringYesBinary PNG output streamed from the uploaded video.

Body

Name
Type
Description
bodyREQUIRED
object

Max 100MB total per request (all files combined). Larger? Use this API's URL-based endpoint instead, if it has one.

▣ ENDPOINT 02 / 04
POST
Extract PNG frame from upload and return signed link (VIT-02)
https://api.eu.apyverse.com/apyhub/generate-image-thumbnail/file/link

QUICKSTART

GUIDE

Quickstart

Upload a video file and get back a thumbnail URI.

curl -X POST "https://api.eu.apyverse.com/apyhub/generate-image-thumbnail/file/link" \
  -H "apy-token: $APY_TOKEN" \
  -F "video=@/path/to/video.mp4"

What you'll get back

Returns a JSON object with a data string field containing the thumbnail URI.

{
  "data": "https://storage.example.com/video-clips/thumb.png?sig=abc"
}
TRY ITLIVE · 550 ATOMS
Loading your default key…
The full key is used to call the gateway and stays in this tab — never sent to orbit or saved.
Max 100MB total per request (all files combined). Larger? Use this API's URL-based endpoint instead, if it has one.
body*

About this endpoint

What it does

Extracts a PNG frame from an uploaded video and returns a signed URL to the generated image. The request sends the video file plus optional frame settings, and the response returns the resulting link in a JSON object.

Request Body

ParameterTypeMandatoryDescription
sizeStringNoOutput image size in WIDTHxHEIGHT format.
timeIntegerNoFrame timestamp to extract, in seconds. Default: 1; minimum: 1.
videoStringYesVideo file to process, sent as binary data.

Response

Returns a JSON object with a data string field containing a URI to the generated PNG file. The success response body is an object wrapper with one top-level field: data (String).

ParameterTypeMandatoryDescription
dataStringYesSigned URI of the generated PNG frame.

Body

Name
Type
Description
bodyREQUIRED
object

Max 100MB total per request (all files combined). Larger? Use this API's URL-based endpoint instead, if it has one.

▣ ENDPOINT 03 / 04
POST
Extract PNG frame from remote URL and stream download (VIT-03)
https://api.eu.apyverse.com/apyhub/generate-image-thumbnail/url/download

QUICKSTART

GUIDE

Quickstart

Generate a thumbnail from a video URL.

curl -X POST "https://api.eu.apyverse.com/apyhub/generate-image-thumbnail/url/download" \
  -H "apy-token: $APY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"video_url":"https://assets.apyhub.com/samples/sample.mp4"}'

What you'll get back

Returns a binary file response (string with format: binary), not a JSON object.

TRY ITLIVE · 550 ATOMS
Loading your default key…
The full key is used to call the gateway and stays in this tab — never sent to orbit or saved.
body*

About this endpoint

What it does

Downloads a remote video from the provided video_url, extracts a PNG frame, and streams the resulting file back in the response.

Request Body

ParameterTypeMandatoryDescription
sizeStringNoOutput frame size, in WIDTHxHEIGHT format.
timeStringNoTime position to extract the frame from. Default: 1.
video_urlStringYesRemote video URL to process. Must be a URI.

Response

Returns a binary file stream containing the generated PNG image. The output schema is a binary string, so the success response is not a JSON object.

Body

Name
Type
Description
bodyREQUIRED
object
▣ ENDPOINT 04 / 04
POST
Extract PNG frame from remote URL and return signed link (VIT-04)
https://api.eu.apyverse.com/apyhub/generate-image-thumbnail/url/link

QUICKSTART

GUIDE

Quickstart

Generate a thumbnail from a video URL with the default image size.

curl -X POST "https://api.eu.apyverse.com/apyhub/generate-image-thumbnail/url/link" \
  -H "apy-token: $APY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "video_url": "https://assets.apyhub.com/samples/sample.mp4"
  }'

What you'll get back

Returns a JSON object with a data string field containing the generated thumbnail image URI.

{
  "data": "https://storage.example.com/video-clips/thumb.png?sig=abc"
}
TRY ITLIVE · 550 ATOMS
Loading your default key…
The full key is used to call the gateway and stays in this tab — never sent to orbit or saved.
body*

About this endpoint

What it does

Extracts a PNG thumbnail frame from a remote video URL and returns a signed URL to the generated image. The request body includes the source video URL and can optionally include the thumbnail size and capture time.

Request Body

ParameterTypeMandatoryDescription
video_urlStringYesRemote video URL to process. Must be a URI.
sizeStringNoOutput thumbnail size, such as 320x180.
timeStringNoCapture time in the video. Defaults to 1 if omitted.

Response

Returns a JSON object with a data string field containing the signed URI of the generated PNG thumbnail.

ParameterTypeMandatoryDescription
dataStringYesSigned URI for the extracted PNG thumbnail.

Body

Name
Type
Description
bodyREQUIRED
object
▣ COMMON ERRORS

Errors any endpoint can return

400bad_request

Required parameter missing or malformed body.

401unauthorized

API key missing, revoked, or not authorized for this service.

429rate_limited

Your plan's per-second rate exceeded. Retry with exponential backoff.

503upstream_busy

Backend temporarily unavailable. Try again in a few seconds.