EyeQ Docs

API reference

Complete endpoint and query parameter reference for Perfectly Clear Web API v2

This page provides the complete endpoint and query parameter reference for Perfectly Clear Web API v2.

Base URL

https://api.perfectlyclear.io/v2

Authentication

Send your API key in the request header:

X-API-KEY: <your_api_key>

Endpoints

EndpointMethodDescription
/uploadGETGet a pre-signed upload URL and fileKey
/pfcGETStart a correction job
/status/{jobID}GETCheck correction job status
/presetsGETList available presets
/presets/POSTCreate a preset upload request
/presets/{presetId}GETGet a preset
/presets/{presetId}DELETEDelete a preset

Query parameters

GET /upload

ParameterTypeRequiredDefaultDescription
fileTypestringNoimageFile type for the upload request. Use image or video.

GET /pfc

Resize-related settings are mutually exclusive. Use only one resize dimension strategy per request (width, height, long, short, or scale).

ParameterTypeRequiredDefaultAllowed / RangeDescription
fileKeystringYesID of the uploaded file returned by /upload.
fileTypestringNoimageimage, videoFile type for correction. Must match the uploaded file type.
presetstringNoAI preset selectionAny preset name or nonePreset to apply. Use none to skip correction and perform resize/output-only operations.
cachebooleanNotruetrue, falseReuse existing corrected output for identical settings when available.
outputTypestringNooriginaljpg, png, originalOutput format. original keeps source format when supported.
resizestringNoautoauto, general, smallDetailsUpscaling mode used when resizing is requested.
widthintegerNo32 to 10000Target width in pixels. Height is derived from aspect ratio.
heightintegerNo32 to 10000Target height in pixels. Width is derived from aspect ratio.
longintegerNo32 to 10000Target long edge in pixels.
shortintegerNo32 to 10000Target short edge in pixels.
scaleintegerNoInteger percentScale percentage. Example: 200 doubles width and height.
outputQualityintegerNo9040 to 100JPEG quality setting. Ignored for non-JPEG output.
autocropbooleanNofalsetrue, falseEnable auto-cropping.
autocropDetectOnlybooleanNofalsetrue, falseReturn crop coordinates without applying crop. Requires autocrop=true.
autocropSizestringNoWorkbench valueHead size factor for autocrop.
autocropXstringNoWorkbench valueRelative horizontal head offset for autocrop.
autocropYstringNoWorkbench valueRelative vertical head offset for autocrop.
cropARWstringNoWorkbench valueCrop aspect ratio width component.
cropARHstringNoWorkbench valueCrop aspect ratio height component.
autocropTopHeadGapstringNoPositive value to enableTop-of-head gap target for autocrop. Zero or negative disables this behavior.
skipstringNoclipartclipart, legacy, noneNon-photo skip mode. Ignored when AI preset selection is active.
removeGlaresbooleanNofalsetrue, falseEnable glasses glare detection and removal.
removeBackgroundbooleanNofalsetrue, falseEnable background removal. If output type is omitted, output is PNG with transparency.
bgColorstringNotransparentHex with # or named colorBackground color used when removeBackground=true.
preserveMetadatabooleanNotruetrue, falsePreserve source EXIF metadata, especially for upscaling/background-removal workflows.
updateThumbnailbooleanNofalsetrue, falseRegenerate embedded thumbnail metadata.

GET /presets

ParameterTypeRequiredDefaultDescription
limitintegerNo20Maximum number of presets returned.
offsetintegerNo0Number of presets to skip before returning results.

Path parameters

EndpointParameterTypeDescription
/status/{jobID}jobIDstringCorrection job identifier returned in statusEndpoint.
/presets/{presetId}presetIdstringPreset identifier.

Status responses

GET /status/{jobID} can return these states:

  • PENDING
  • PROCESSING
  • COMPLETED
  • FAILED
  • REJECTED

The /status endpoint will also return different HTTP status codes to indicate the status of the job. These include:

  • 200 the job is still processing
  • 302 the job is complete and the corrected file is ready to download

When the 302 status is returned from the /status endpoint, the location header will contain the URL to download the corrected file. You can use curl -L to follow that redirect and download the corrected file. Other tools will redirect automatically, which makes it simple to check the status and also retrieve the corrected file in one call. Along with these status values, the message will also contain statusText that explains any errors or the processing in a little more detail. Once the job is COMPLETED, the status call will return a correctedFile parameter in the reply, like this:

{
   "status":"COMPLETED",
   "_id":"1234512345",
   "statusText":"done",
   "createdAt":"2023-02-16T23:13:43.821Z",
   "updatedAt":"2023-02-16T23:13:51.831Z",
   "correctedFile":"https://outputdomain.com/images/pfc-54321-12345-123451234_corrected_scene.jpg"
}

WEB-API Version 2 built on 02-26-2026.

Copyright © 2026 EyeQ Imaging Inc. All rights reserved.

On this page