Aperture API

Input contract

What a hologram upload must look like, and what happens when it does not. Each refusal has a stable code, listed on the error-meanings page.

File formats

Accepted extensions: .h5, .hdf5, .jpeg, .jpg, .npy, .npz, .png, .tif, .tiff. Anything else is refused with INPUT_FORMAT_UNSUPPORTED.

Required metadata

Parameter Unit Allowed range
wavelength_um micrometres greater than 0.1, at most 20.0
pixel_pitch_um micrometres greater than 0.1, at most 1000.0, and strictly greater than wavelength_um

Wavelength is in micrometres: 0.635, not 635. A pitch that is not above the wavelength is refused with PARAM_PITCH_NOT_ABOVE_WAVELENGTH.

Optional inputs

Limits

Limit Value
Image width or height at most 4000 px per axis, read from the file header before decoding (INPUT_DIMENSIONS_TOO_LARGE)
Upload size 64 MB or 75 MB depending on plan (tier-limits page); 75 MB is the service ceiling (INPUT_FILE_TOO_LARGE)
processing_profile=standard working field up to 1080 x 1920 px (rows x columns); larger frames are centre-cropped, never downscaled
processing_profile=xhigh working field up to 3000 x 4000 px (rows x columns); larger frames are centre-cropped, never downscaled
Memory if the requested field will not fit in free memory the request is refused with CAPACITY_INSUFFICIENT_MEMORY (507) instead of failing mid-run

Crop to the region of interest rather than downscaling: downscaling changes the effective pixel pitch and can destroy off-axis carrier fringes.

Checks, in order

  1. Empty file: INPUT_EMPTY.
  2. Dimensions from the header, before any decode: INPUT_DIMENSIONS_TOO_LARGE.
  3. Channel layout: INPUT_CHANNELS_UNSUPPORTED.
  4. Full decode; a truncated or mislabelled file is INPUT_UNREADABLE.
  5. Every pixel the same value (all dark or fully saturated): INPUT_BLANK.
  6. Partial saturation is recorded as a flag in the quality report, never a refusal.