apyhub
DATA EXTRACTION · FILE MANIPULATION

Extract Image Metadata API

Hosted on ApyHub

What it does

Image Metadata Extractor reads an image and returns the metadata ExifTool can detect for that file. Send either an uploaded image binary or a publicly accessible image URL, and get a JSON response under data with fields such as FileType, MIMEType, ImageWidth, ImageHeight, ImageSize, ColorType, BitDepth, Compression, FileSize, FileName, and ExifToolVersion when available.

Use it when you need to inspect image properties before storing, processing, or serving assets. It can help you check dimensions for layout rules, confirm format and MIME type before upload, or read file-level details during media ingestion and QA. The service supports common image formats including JPEG, PNG, WebP, and TIFF.

The response is a metadata object keyed by tag name, so the exact fields can vary by source image and file format. In addition to the documented attributes, other ExifTool tags may appear depending on the image, including ICC profile, GPS, and encoding-related details.

If you are building an asset pipeline, CMS, moderation workflow, or analytics tool, Image Metadata Extractor gives you structured image metadata without having to parse files yourself.

▣ ENDPOINT 01 / 02
POST
input file
http://localhost:8080/apyhub/extract-image-metadata/multi-part/download
QUICKSTARTGUIDE

Quickstart

Upload an image file to extract its metadata.

curl -X POST "http://localhost:8080/apyhub/extract-image-metadata/multi-part/download" \
  -H "apy-token: $APY_TOKEN" \
  -F "image=@/path/to/image.jpg"

What you'll get back

Returns a JSON object with a data object containing image metadata keyed by ExifTool tag name. The documented fields include items like FileType, MIMEType, ImageWidth, and ImageHeight; additional ExifTool tags may also appear depending on the file.

{
  "data": {
    "FileType": "JPEG",
    "MIMEType": "image/jpeg",
    "ImageWidth": 640,
    "ImageHeight": 427
  }
}
TRY ITLIVE · 30 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*
Image file to inspect (JPEG, PNG, WebP, TIFF, etc.).

About this endpoint

What it does

Uploads an image file and returns extracted ExifTool metadata as JSON. The request body must include an image binary file, and the response wraps the metadata under a data object.

Request Body

ParameterTypeMandatoryDescription
imageStringYesImage file to inspect. Accepted examples include JPEG, PNG, WebP, TIFF, etc. The value is sent as binary file content.

Response

Returns a JSON object with a required data object field. data contains ExifTool metadata keyed by tag name; the schema documents a set of common image attributes, and additional ExifTool tags may also appear depending on the source image.

ParameterTypeMandatoryDescription
dataObjectYesExifTool metadata keyed by tag name. The documented fields below may be present depending on the image format, and additional tags can also appear.
data.FilterStringNoThe filter for the image.
data.BitDepthIntegerNoThe bit depth of the image.
data.FileNameStringNoBase name of the input file, without extension, set by the service.
data.FileSizeStringNoThe file size.
data.FileTypeStringNoThe file type.
data.MIMETypeStringNoThe MIME type of the image.
data.ColorTypeStringNoThe color type of the image.
data.DirectoryStringNoThe directory for the image. This is a server temp path and is not relevant to clients.
data.ImageSizeStringNoThe image dimensions in WxH format.
data.InterlaceStringNoThe interlace mode for the image.
data.ImageWidthIntegerNoThe width of the image in pixels.
data.MegapixelsStringNoImage megapixels. ExifTool may return this value as either a string or a number.
data.SourceFileStringNoThe source file information, with the base name set by the service.
data.CompressionStringNoThe compression type for the image.
data.ImageHeightIntegerNoThe height of the image in pixels.
data.SRGBRenderingStringNoThe sRGB rendering intent for the image.
data.FileAccessDateStringNoThe timestamp when the file was accessed.
data.FileModifyDateStringNoThe timestamp when the file was modified.
data.ExifToolVersionNumberNoThe ExifTool version used to extract metadata.
data.FilePermissionsStringNoThe file permissions in Linux-style format.
data.FileTypeExtensionStringNoThe file extension.
data.FileInodeChangeDateStringNoThe timestamp for the inode change date.

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 / 02
POST
input url
http://localhost:8080/apyhub/extract-image-metadata/url/download
QUICKSTARTGUIDE

Quickstart

Send a public image URL to extract its metadata.

curl -X POST "http://localhost:8080/apyhub/extract-image-metadata/url/download" \
  -H "apy-token: $APY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://assets.apyhub.com/samples/sample.jpg"}'

What you'll get back

Returns a JSON object with a data object containing image metadata fields such as FileName, FileType, MIMEType, ImageWidth, and ImageHeight. The data object may include additional ExifTool tags depending on the image.

{
  "data": {
    "FileName": "sample",
    "FileType": "JPEG",
    "MIMEType": "image/jpeg",
    "ImageWidth": 640,
    "ImageHeight": 427
  }
}
TRY ITLIVE · 30 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*
Provide `url`.
Publicly accessible image URL.

About this endpoint

What it does

Downloads the image at the provided public URL and returns extracted ExifTool metadata as JSON. The request body supplies the image URL, and the response wraps the metadata fields under data.

Request Body

ParameterTypeMandatoryDescription
urlStringYesPublicly accessible image URL. Must be a valid URI.

Response

Returns a JSON object with a data object field containing ExifTool metadata keyed by tag name. The documented response fields include file, image, and extraction attributes such as FileName, FileType, MIMEType, ImageWidth, and ImageHeight; additional ExifTool tags may also appear depending on the source image.

ParameterTypeMandatoryDescription
dataObjectYesExifTool metadata keyed by tag name under data. Documented fields are listed below; additional tags may appear depending on the image format and source file.
data.FilterStringNoThe filter for the image.
data.BitDepthIntegerNoThe bit depth of the image.
data.FileNameStringNoBase name of the input file (without extension), set by the service.
data.FileSizeStringNoThe file size.
data.FileTypeStringNoThe file type.
data.MIMETypeStringNoThe MIME type of the image.
data.ColorTypeStringNoThe color type of the image.
data.DirectoryStringNoThe directory for the image (server temp path; not relevant to clients).
data.ImageSizeStringNoThe height and width of the image (WxH).
data.InterlaceStringNoThe interlace mode for the image.
data.ImageWidthIntegerNoThe width of the image in pixels.
data.MegapixelsStringNoImage megapixels; ExifTool may return a string or number.
data.SourceFileStringNoThe source file information (base name set by the service).
data.CompressionStringNoThe compression type for the image.
data.ImageHeightIntegerNoThe height of the image in pixels.
data.SRGBRenderingStringNoThe sRGB rendering intent for the image.
data.FileAccessDateStringNoThe timestamp when the file was accessed.
data.FileModifyDateStringNoThe timestamp when the file was modified.
data.ExifToolVersionNumberNoThe ExifTool version used to extract metadata.
data.FilePermissionsStringNoThe permissions for the file (Linux-style).
data.FileTypeExtensionStringNoThe file extension.
data.FileInodeChangeDateStringNoThe timestamp for the inode change date.

Body

Name
Type
Description
bodyREQUIRED
object
Provide `url`.
▣ 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.