Pixazo APIImage ToolsMP4 to JPG API

MP4 to JPG API - Convert MP4 to JPG API: Pricing, Documentation

by Pixazo

The MP4 to JPG API extracts a single still frame from an MP4 video and returns it as a compact JPG. Give it a position in seconds and it decodes that exact moment — seeking after decode, so you get the true frame at that timestamp rather than the nearest keyframe — or omit the position to grab the last visible frame. Because JPG stays small and opens everywhere, it is the go-to format for video thumbnails, social preview cards, blog hero images and contact sheets. Send a video_url, poll the request, then download the still. Prefer a no-code option? The same conversion is available free in your browser as the MP4 to JPG Converter.

Get API Key
MP4 to JPG API

Models Version

Welcome Bonus

Get $5 Free Credit on First Payment

No strings attached — add funds and get $5 bonus instantly

Claim Your $5 →

MP4 to JPG API Documentation

Authentication

Every request is authenticated with your Pixazo API key in the Ocp-Apim-Subscription-Key header — the same key across every Pixazo endpoint.

HeaderRequiredValue
Ocp-Apim-Subscription-KeyYesYour Pixazo API key

MP4 frame to JPG generate request

Grabbing a thumbnail or poster frame from a video usually means a desktop editor. The MP4 to JPG API does it with one call: give it a video URL and a timestamp, and it decodes that frame and encodes it as JPG. Ideal for thumbnails, posters, previews and contact sheets.

Endpoint: POST https://gateway.pixazo.ai/media-tools/v1/video-extract-frame

Request Code

curl -X POST 'https://gateway.pixazo.ai/media-tools/v1/video-extract-frame' \
  -H 'Ocp-Apim-Subscription-Key: YOUR_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"video_url":"https://example.com/input.mp4","position":5,"to_format":"jpg"}'

Output

{
  "request_id": "req_9f3c1a7b2e",
  "status": "QUEUED",
  "polling_url": "https://gateway.pixazo.ai/v2/requests/status/req_9f3c1a7b2e"
}

Webhook (Optional)

Instead of polling, include a webhook_url in the request body and Pixazo will POST the completed job payload to that URL when the conversion finishes. The webhook body is identical to the completed-status response shown under Retrieving Results.

Request Parameters

ParameterRequiredTypeDefaultAllowedDescription
video_urlRequiredstringHTTP(S) URLPublicly reachable URL of the source video.
positionOptionalnumberlast frame0 – duration (seconds)Seconds from the start of the video; omit to get the last visible frame. A position past the end is an error, not clamped.
to_formatRequiredstring"jpg"Output image format for the extracted frame (jpg).
webhook_urlOptionalstringHTTP(S) URLReceive the completed job via webhook instead of polling.

Example Request

curl -X POST 'https://gateway.pixazo.ai/media-tools/v1/video-extract-frame' \
  -H 'Ocp-Apim-Subscription-Key: YOUR_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"video_url":"https://example.com/input.mp4","position":5,"to_format":"jpg"}'

Response

Every request returns a request_id immediately with a QUEUED status. Use the polling_url (or a webhook) to retrieve the finished file.

{
  "request_id": "req_9f3c1a7b2e",
  "status": "QUEUED",
  "polling_url": "https://gateway.pixazo.ai/v2/requests/status/req_9f3c1a7b2e"
}

Request Headers

HeaderRequiredValue
Ocp-Apim-Subscription-KeyYesYour Pixazo API key
Content-TypeYesapplication/json

Response Handling

The submit call returns one of the HTTP status codes below. A 202 means the job was accepted — everything else is an error you should handle.

CodeMeaning
202Accepted — the job was queued; poll the status URL.
400Bad request — a parameter is missing or invalid.
401Unauthorized — missing or wrong API key.
Payment required — insufficient balance.
Too many requests — you are being rate-limited.
500Server error — transient; retry with backoff.

Error Responses

Errors return a JSON body with a machine-readable code and a human-readable message.

{
  "request_id": "req_9f3c1a7b2e",
  "status": "FAILED",
  "error": {
    "code": "INSUFFICIENT_BALANCE",
    "message": "Your account balance is too low to process this request."
  }
}

Retrieving Results

Poll the status endpoint until the job reaches COMPLETED (or FAILED).

curl 'https://gateway.pixazo.ai/v2/requests/status/req_9f3c1a7b2e' \
  -H 'Ocp-Apim-Subscription-Key: YOUR_API_KEY'

Response (Completed)

{
  "request_id": "req_9f3c1a7b2e",
  "status": "COMPLETED",
  "model_id": "video-extract-frame",
  "output": {
    "media_url": "https://api-assets.pixazo.ai/out/result.jpg",
    "media_type": "JPG"
  },
  "error": null,
  "created_at": "2026-01-01T00:00:00Z",
  "completed_at": "2026-01-01T00:00:04Z"
}

Response Fields

FieldTypeDescription
request_idstringUnique id for this job.
statusstringOne of the job status values below.
output.media_urlstringURL of the converted file (when completed).
output.media_typestringOutput format (JPG).
errorobject | nullPopulated only when status is FAILED.

Status Values

StatusMeaning
QUEUEDJob accepted, waiting for a worker.
Conversion in progress.
COMPLETEDDone — the output URL is in the response.
FAILEDThe job could not be completed; see error.

MP4 to JPG API Pricing

Your request will cost $0.002 per second of source video.
A frame from a 30-second clip costs $0.06.

⚡ Performance

Live usage measured on Pixazo's gateway, split by model version. Generation time is how long a generation takes end-to-end (lower is better). Success rate is the percent of generations that complete (higher is better).

Show data for the last
Generations
110,000last 30d
~3,667 per day
Success rate
98.9%
of completed generations
Generation time
1.5savg
p95 2.3s
Requests
Aug 3max 5,500Sep 1
MP4 to JPGAvg 3,667/day
Generation Time
Aug 3max 1.6sSep 1
MP4 to JPGAvg 1.5s
Error Rate
Aug 3max 5.0%Sep 1
MP4 to JPGAvg 1.1%

〰 Uptime

Percent of generations that succeeded over the selected period, per model version.

Avg. Success Rate (30d)
98.91%
across all generations of this model family
Uptime
Aug 3max 100%Sep 1
SuccessfulAvg 98.88%