apyhub
DATA EXTRACTION · FILE MANIPULATION

Image Metadata Extractor

What it does

Image Metadata Extractor reads metadata from an image you send by URL or as an uploaded file. Send a publicly accessible image URL to /url/download, or upload an image to /multi-part/download, and get ExifTool-derived metadata back in data.

Use it when you need to inspect image format and file details without opening the file yourself. The response includes fields such as FileType, FileTypeExtension, MIMEType, FileSize, ImageWidth, ImageHeight, ImageSize, BitDepth, ColorType, Compression, Interlace, Megapixels, and timestamps like FileAccessDate and FileModifyDate when available.

The service also returns source and environment details such as FileName, SourceFile, Directory, FilePermissions, and ExifToolVersion. Some images expose additional ExifTool tags too, including ICC profile, GPS, or encoding-related metadata, depending on the source file and format.

Use Image Metadata Extractor for media intake checks, asset cataloging, upload validation, or building workflows that need to classify images by type, size, and encoding before further processing.

▣ ENDPOINT 01 / 02
POST
Extract metadata from image URL (JSON)
https://api.eu.apyverse.com/apyhub/extract-image-metadata/url/download

QUICKSTART

GUIDE

Quickstart

Send the public image URL in a JSON body to extract its metadata.

curl -X POST "https://api.eu.apyverse.com/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 exact set can vary by image, but it is always wrapped in data.

{
  "data": {
    "FileName": "sample",
    "FileType": "JPEG",
    "MIMEType": "image/jpeg",
    "ImageWidth": 640,
    "ImageHeight": 427
  }
}
TRY ITLIVE · 10 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 an image from the public URL you provide in the request body and returns extracted ExifTool metadata for that image in the data object.

Request Body

ParameterTypeMandatoryDescription
urlStringYesPublicly accessible image URL. Must be a URI.

Response

Returns a JSON object with a required data object field. data contains image metadata keyed by tag name; the schema explicitly documents the catalog fields below, and additional ExifTool tags may also appear depending on the source image.

ParameterTypeMandatoryDescription
dataObjectYesExifTool metadata keyed by tag name under data. Fields below are the documented catalog attributes; additional ExifTool tags may appear depending on the source image. Field presence varies by file format — not every attribute is returned for every image.
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`.
▣ ENDPOINT 02 / 02
POST
Extract metadata from uploaded image (JSON)
https://api.eu.apyverse.com/apyhub/extract-image-metadata/multi-part/download

QUICKSTART

GUIDE

Quickstart

Upload an image to extract its metadata.

curl -X POST "https://api.eu.apyverse.com/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 tags. The data object may include fields such as FileName, FileType, MIMEType, ImageSize, and other ExifTool tag values depending on the uploaded image.

{
  "data": {
    "FileName": "sample",
    "FileType": "JPEG",
    "MIMEType": "image/jpeg",
    "ImageSize": "640x427"
  }
}
TRY ITLIVE · 10 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 JSON metadata extracted from that image. The request sends a binary image file, and the response wraps the extracted metadata in a data object.

Request Body

ParameterTypeMandatoryDescription
imageStringYesImage file to inspect. Binary upload; supported formats include JPEG, PNG, WebP, TIFF, etc.

Response

Returns a JSON object with a required data object field containing ExifTool metadata keyed by tag name. The data object may include the documented attributes below, and additional ExifTool tags may also appear depending on the source image.

ParameterTypeMandatoryDescription
dataObjectYesExifTool metadata keyed by tag name. Field presence varies by file format; not every attribute is returned for every image. Additional ExifTool tags may appear depending on the source image.
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 image size in WxH format.
data.InterlaceStringNoThe interlace mode for the image.
data.ImageWidthIntegerNoThe width of the image in pixels.
data.MegapixelsNumberNoImage megapixels. The service may return this as 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 permissions for the file, 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.

▣ 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.