API v1 reference, updated September 17, 2026. Only ai-image-detector accepts new hosted operations, using CommFor. Other entries document browser-only tools. Keep API keys on a trusted server; all example values are illustrative, not results for your image.
Authentication
Create a key in Account → API keys and send it as an Authorization Bearer token over HTTPS. Do not expose it in public pages, query strings, screenshots or browser bundles. Revoke keys that are no longer needed. Local tools do not require an API key.
Explicit model upload
POST raw supported image bytes to /api/v1/files with the correct image Content-Type and authentication. Use the returned private file_id for the CommFor operation. Choosing a file for local inspection does not perform this upload.
Use static JPG, PNG or WebP within the displayed byte, pixel and edge limits. A successful upload does not guarantee successful decoding or model analysis; inspect errors and job status. The hosted service prepares the model input; do not infer a generator from its score.
Availability matrix
The fifteen Browser-only operations do not accept new hosted requests. Their local parameters and result descriptions follow for coverage; they carry no hosted billing envelope.
| Operation | Group | Availability |
|---|---|---|
| dpi-checker | Image inspection | Browser-only: free, no upload |
| metadata-viewer | Image inspection | Browser-only: free, no upload |
| dpi-converter | Image transforms | Browser-only: free, no upload |
| metadata-remover | Image transforms | Browser-only: free, no upload |
| image-converter | Image transforms | Browser-only: free, no upload |
| image-resizer | Image transforms | Browser-only: free, no upload |
| pixels-to-inches | Calculations | Browser-only: free, no upload |
| inches-to-pixels | Calculations | Browser-only: free, no upload |
| pixels-to-cm | Calculations | Browser-only: free, no upload |
| cm-to-pixels | Calculations | Browser-only: free, no upload |
| pixels-to-mm | Calculations | Browser-only: free, no upload |
| mm-to-pixels | Calculations | Browser-only: free, no upload |
| print-size-calculator | Calculations | Browser-only: free, no upload |
| aspect-ratio-calculator | Calculations | Browser-only: free, no upload |
| openai-image-detector | Source and AI analysis | Browser-only: free, no upload |
| ai-image-detector | Source and AI analysis | Hosted: optional CommFor, 1 credit |
dpi-checker
Image inspection. Browser-only. Free local processing; no new hosted request, upload or credit charge. facts includes pixel dimensions, file byte size and all density sources; check300 reports yes, no or unknown.
Examples describe structure with illustrative values, not a completed result for your image. Numeric examples are calculated from the displayed local inputs.
| Parameter | Type / default | Meaning |
|---|---|---|
| image | Local browser File | Choose a supported file in the browser; this operation has no hosted upload. |
Local settings (illustrative; choose the image in your browser)
{}Local result shape (illustrative)
{
"facts": {
"format": "jpeg",
"width": 1200,
"height": 900,
"fileSizeBytes": 12345,
"resolution": {
"state": "specified",
"xPpi": 300,
"yPpi": 300,
"sources": [
{
"source": "jfif",
"x": 300,
"y": 300,
"unit": "ppi"
}
]
}
},
"check300": {
"state": "yes",
"text": "300 DPI"
}
}metadata-viewer
Image inspection. Browser-only. Free local processing; no new hosted request, upload or credit charge. MetadataReport: facts, fields, text, evidence, warnings and createdAt (Unix milliseconds). Evidence carries execution status; missing evidence is not a zero score.
Examples describe structure with illustrative values, not a completed result for your image. Numeric examples are calculated from the displayed local inputs.
| Parameter | Type / default | Meaning |
|---|---|---|
| image | Local browser File | Choose a supported file in the browser; this operation has no hosted upload. |
| include_sensitive | Boolean; default false | Sensitive values are redacted unless explicitly true. |
Local settings (illustrative; choose the image in your browser)
{
"include_sensitive": false
}Local result shape (illustrative)
{
"facts": {
"format": "jpeg",
"width": 1200,
"height": 900,
"fileSizeBytes": 12345,
"resolution": {
"state": "specified",
"xPpi": 300,
"yPpi": 300,
"sources": [
{
"source": "jfif",
"x": 300,
"y": 300,
"unit": "ppi"
}
]
}
},
"fields": {},
"text": [],
"evidence": [],
"warnings": [],
"createdAt": 1789516800000
}dpi-converter
Image transforms. Browser-only. Free local processing; no new hosted request, upload or credit charge. original, target {xPpi,yPpi}, actual and verification. Download the resulting copy from the browser.
Examples describe structure with illustrative values, not a completed result for your image. Numeric examples are calculated from the displayed local inputs.
| Parameter | Type / default | Meaning |
|---|---|---|
| image | Local browser File | Choose a supported file in the browser; this operation has no hosted upload. |
| ppi | Required integer 1–12000; dpi alias accepted | Target X and Y density. Changes supported metadata without resampling. |
Local settings (illustrative; choose the image in your browser)
{
"ppi": 300
}Local result shape (illustrative)
{
"original": {
"format": "jpeg",
"width": 1200,
"height": 900,
"fileSizeBytes": 12345,
"resolution": {
"state": "specified",
"xPpi": 300,
"yPpi": 300,
"sources": [
{
"source": "jfif",
"x": 300,
"y": 300,
"unit": "ppi"
}
]
}
},
"target": {
"xPpi": 300,
"yPpi": 300
},
"actual": {
"format": "jpeg",
"width": 1200,
"height": 900,
"fileSizeBytes": 12345,
"resolution": {
"state": "specified",
"xPpi": 300,
"yPpi": 300,
"sources": [
{
"source": "jfif",
"x": 300,
"y": 300,
"unit": "ppi"
}
]
}
},
"verification": {
"ok": true,
"targetMatched": true,
"dimensionsUnchanged": true,
"pixelPayloadUnchanged": true,
"iccUnchanged": true,
"orientationUnchanged": true,
"thumbnailUnchanged": true,
"nonTargetMetadataUnchanged": true,
"violations": []
}
}metadata-remover
Image transforms. Browser-only. Free local processing; no new hosted request, upload or credit charge. before/after ImageFacts, removed and retained records. Unknown remove_fields are rejected explicitly; do not treat rejection as a successful cleanup. Orientation, ICC and pixels are preserved; inspect actual output.
Examples describe structure with illustrative values, not a completed result for your image. Numeric examples are calculated from the displayed local inputs.
| Parameter | Type / default | Meaning |
|---|---|---|
| image | Local browser File | Choose a supported file in the browser; this operation has no hosted upload. |
| remove_private | Boolean; default true | Group privacy removal takes precedence over individual preservation. |
| remove_source | Boolean; default false | Explicit permission to remove source/provenance records. |
| preserve_dpi | Boolean; default true | Retain density metadata. |
| remove_fields | Optional string array; at most 100 | PNG IDs are text.source + | + text.key, e.g. png:tEXt|Author. EXIF IDs use the exact listExifFields path, e.g. EXIF|IFD0/0x013b, including nested EXIF/GPS/Interop and linked directories. Select only fields marked removable; orientation, image-data pointers and thumbnail geometry/pointers are protected. Use remove_private:false for selective removal. Unknown or unsafe paths are rejected. |
Local settings (illustrative; choose the image in your browser)
{
"remove_private": false,
"remove_source": false,
"preserve_dpi": true,
"remove_fields": [
"EXIF|IFD0/0x013b"
]
}Local result shape (illustrative)
{
"before": {
"format": "jpeg",
"width": 1200,
"height": 900,
"fileSizeBytes": 12345,
"resolution": {
"state": "specified",
"xPpi": 300,
"yPpi": 300,
"sources": [
{
"source": "jfif",
"x": 300,
"y": 300,
"unit": "ppi"
}
]
}
},
"after": {
"format": "jpeg",
"width": 1200,
"height": 900,
"fileSizeBytes": 12345,
"resolution": {
"state": "specified",
"xPpi": 300,
"yPpi": 300,
"sources": [
{
"source": "jfif",
"x": 300,
"y": 300,
"unit": "ppi"
}
]
}
},
"removed": [],
"retained": []
}image-converter
Image transforms. Browser-only. Free local processing; no new hosted request, upload or credit charge. original image facts, target resize/encoding plan and actual output facts. Input dimensions stay unchanged. Evidence can additionally explain output verification.
Examples describe structure with illustrative values, not a completed result for your image. Numeric examples are calculated from the displayed local inputs.
| Parameter | Type / default | Meaning |
|---|---|---|
| image | Local browser File | Choose a supported file in the browser; this operation has no hosted upload. |
| format | jpeg | png | webp; default input format | Output encoding. |
| quality | 0.1–1; default 0.9 | JPEG quality. Quality applies only to supported lossy browser encodings. |
| background | white | transparent | Background for output and padding; JPEG cannot retain transparency. |
Local settings (illustrative; choose the image in your browser)
{
"format": "png",
"quality": 0.9,
"background": "transparent"
}Local result shape (illustrative)
{
"original": {
"format": "jpeg",
"width": 1200,
"height": 900,
"fileSizeBytes": 12345,
"resolution": {
"state": "specified",
"xPpi": 300,
"yPpi": 300,
"sources": [
{
"source": "jfif",
"x": 300,
"y": 300,
"unit": "ppi"
}
]
}
},
"target": {
"width": 1200,
"height": 900
},
"actual": {
"format": "png",
"width": 1200,
"height": 900,
"fileSizeBytes": 12345,
"resolution": {
"state": "specified",
"xPpi": 300,
"yPpi": 300,
"sources": [
{
"source": "jfif",
"x": 300,
"y": 300,
"unit": "ppi"
}
]
}
}
}image-resizer
Image transforms. Browser-only. Free local processing; no new hosted request, upload or credit charge. original, target plan (width/height, target, rotated, source/destination rectangles, rotation, fit, enlarged and optional ppi) and actual output facts. Evidence may be included.
Examples describe structure with illustrative values, not a completed result for your image. Numeric examples are calculated from the displayed local inputs.
| Parameter | Type / default | Meaning |
|---|---|---|
| image | Local browser File | Choose a supported file in the browser; this operation has no hosted upload. |
| mode | pixels (default) | percent | physical | pixels uses width/height; percent uses percent; physical uses width/height, unit and ppi. |
| width, height | Positive numbers | Integer pixels in pixels mode; physical measurements in physical mode. |
| percent | Positive number | Required for percent mode; 50 halves each edge. |
| unit, ppi | in | cm | mm; positive PPI | Required for physical dimensions. |
| fit | contain (default) | crop | pad | stretch | Contain fits inside bounds; crop/pad produces target frame; stretch changes proportions. |
| rotation | 0 | 90 | 180 | 270; default 0 | Applied before crop coordinates. |
| focusX, focusY | 0–100; default 50 | Crop/pad focus position. |
| crop | Optional {x,y,width,height} | Positive-area pixel rectangle in the rotated source. |
| format | jpeg | png | webp; default input format | Output encoding. |
| quality | 0.1–1; default 0.9 | JPEG quality. Quality applies only to supported lossy browser encodings. |
| background | white | transparent | Background for output and padding; JPEG cannot retain transparency. |
Local settings (illustrative; choose the image in your browser)
{
"mode": "pixels",
"width": 600,
"height": 450,
"fit": "contain",
"format": "jpeg",
"quality": 0.9
}Local result shape (illustrative)
{
"original": {
"format": "jpeg",
"width": 1200,
"height": 900,
"fileSizeBytes": 12345,
"resolution": {
"state": "specified",
"xPpi": 300,
"yPpi": 300,
"sources": [
{
"source": "jfif",
"x": 300,
"y": 300,
"unit": "ppi"
}
]
}
},
"target": {
"width": 600,
"height": 450,
"target": {
"width": 600,
"height": 450
},
"rotated": {
"width": 1200,
"height": 900
},
"source": {
"x": 0,
"y": 0,
"width": 1200,
"height": 900
},
"destination": {
"x": 0,
"y": 0,
"width": 600,
"height": 450
},
"rotation": 0,
"fit": "contain",
"enlarged": false
},
"actual": {
"format": "jpeg",
"width": 600,
"height": 450,
"fileSizeBytes": 12345,
"resolution": {
"state": "specified",
"xPpi": 300,
"yPpi": 300,
"sources": [
{
"source": "jfif",
"x": 300,
"y": 300,
"unit": "ppi"
}
]
}
}
}pixels-to-inches
Calculations. Browser-only. Free local processing; no new hosted request, upload or credit charge. The local result contains width, height, unit, formula, parameters, rows and text. Operation-specific values include exactPixels, comparison, ratio, trim/bleed, effectivePpi or resizer when applicable.
Examples describe structure with illustrative values, not a completed result for your image. Numeric examples are calculated from the displayed local inputs.
| Parameter | Type / default | Meaning |
|---|---|---|
| width, height | Required positive numbers | Pixels must be integers; physical dimensions may be fractional. |
| ppi | Required positive number | Pixels per inch; never inferred from a screen. |
| physicalWidth, physicalHeight | Optional positive pair | Compare against a target physical size in the operation’s output unit. |
| preset | Optional string | Preserved descriptive label; it does not override dimensions. |
Local settings (illustrative; choose the image in your browser)
{
"width": 2400,
"height": 3000,
"ppi": 300
}Local result shape (illustrative)
{
"width": 8,
"height": 10,
"unit": "in",
"formula": "physical in = px ÷ PPI × 1",
"parameters": {
"width": 2400,
"height": 3000,
"ppi": 300
},
"rows": [
[
"Input pixels",
"2400 × 3000 px"
],
[
"Width",
"8 in"
],
[
"Height",
"10 in"
],
[
"PPI",
"300"
]
],
"text": "8 × 10 in\nInput pixels: 2400 × 3000 px\nWidth: 8 in\nHeight: 10 in\nPPI: 300\nFormula: physical in = px ÷ PPI × 1",
"ppi": 300,
"actualPixels": {
"width": 2400,
"height": 3000
},
"resizer": {
"eligible": true
}
}inches-to-pixels
Calculations. Browser-only. Free local processing; no new hosted request, upload or credit charge. The local result contains width, height, unit, formula, parameters, rows and text. Operation-specific values include exactPixels, comparison, ratio, trim/bleed, effectivePpi or resizer when applicable.
Examples describe structure with illustrative values, not a completed result for your image. Numeric examples are calculated from the displayed local inputs.
| Parameter | Type / default | Meaning |
|---|---|---|
| width, height | Required positive numbers | Pixels must be integers; physical dimensions may be fractional. |
| ppi | Required positive number | Pixels per inch; never inferred from a screen. |
| preset | Optional string | Preserved descriptive label; it does not override dimensions. |
Local settings (illustrative; choose the image in your browser)
{
"width": 8,
"height": 10,
"ppi": 300
}Local result shape (illustrative)
{
"width": 2400,
"height": 3000,
"unit": "px",
"formula": "px = in ÷ 1 × PPI",
"parameters": {
"width": 8,
"height": 10,
"ppi": 300
},
"rows": [
[
"Input print size",
"8 × 10 in"
],
[
"Width",
"2400 px"
],
[
"Height",
"3000 px"
],
[
"PPI",
"300"
],
[
"Exact pixels",
"2400 × 3000 px"
],
[
"Rounding",
"Each pixel dimension is rounded to the nearest whole pixel. These are required pixels, not a measurement of an existing image."
]
],
"text": "2400 × 3000 px\nInput print size: 8 × 10 in\nWidth: 2400 px\nHeight: 3000 px\nPPI: 300\nExact pixels: 2400 × 3000 px\nRounding: Each pixel dimension is rounded to the nearest whole pixel. These are required pixels, not a measurement of an existing image.\nFormula: px = in ÷ 1 × PPI",
"ppi": 300,
"targetPixels": {
"width": 2400,
"height": 3000
},
"exactPixels": {
"width": 2400,
"height": 3000
},
"resizer": {
"eligible": true
}
}pixels-to-cm
Calculations. Browser-only. Free local processing; no new hosted request, upload or credit charge. The local result contains width, height, unit, formula, parameters, rows and text. Operation-specific values include exactPixels, comparison, ratio, trim/bleed, effectivePpi or resizer when applicable.
Examples describe structure with illustrative values, not a completed result for your image. Numeric examples are calculated from the displayed local inputs.
| Parameter | Type / default | Meaning |
|---|---|---|
| width, height | Required positive numbers | Pixels must be integers; physical dimensions may be fractional. |
| ppi | Required positive number | Pixels per inch; never inferred from a screen. |
| physicalWidth, physicalHeight | Optional positive pair | Compare against a target physical size in the operation’s output unit. |
| preset | Optional string | Preserved descriptive label; it does not override dimensions. |
Local settings (illustrative; choose the image in your browser)
{
"width": 2400,
"height": 3000,
"ppi": 300
}Local result shape (illustrative)
{
"width": 20.32,
"height": 25.4,
"unit": "cm",
"formula": "physical cm = px ÷ PPI × 2.54",
"parameters": {
"width": 2400,
"height": 3000,
"ppi": 300
},
"rows": [
[
"Input pixels",
"2400 × 3000 px"
],
[
"Width",
"20.32 cm"
],
[
"Height",
"25.4 cm"
],
[
"PPI",
"300"
]
],
"text": "20.32 × 25.4 cm\nInput pixels: 2400 × 3000 px\nWidth: 20.32 cm\nHeight: 25.4 cm\nPPI: 300\nFormula: physical cm = px ÷ PPI × 2.54",
"ppi": 300,
"actualPixels": {
"width": 2400,
"height": 3000
},
"resizer": {
"eligible": true
}
}cm-to-pixels
Calculations. Browser-only. Free local processing; no new hosted request, upload or credit charge. The local result contains width, height, unit, formula, parameters, rows and text. Operation-specific values include exactPixels, comparison, ratio, trim/bleed, effectivePpi or resizer when applicable.
Examples describe structure with illustrative values, not a completed result for your image. Numeric examples are calculated from the displayed local inputs.
| Parameter | Type / default | Meaning |
|---|---|---|
| width, height | Required positive numbers | Pixels must be integers; physical dimensions may be fractional. |
| ppi | Required positive number | Pixels per inch; never inferred from a screen. |
| preset | Optional string | Preserved descriptive label; it does not override dimensions. |
Local settings (illustrative; choose the image in your browser)
{
"width": 10,
"height": 15,
"ppi": 300
}Local result shape (illustrative)
{
"width": 1181,
"height": 1772,
"unit": "px",
"formula": "px = cm ÷ 2.54 × PPI",
"parameters": {
"width": 10,
"height": 15,
"ppi": 300
},
"rows": [
[
"Input print size",
"10 × 15 cm"
],
[
"Width",
"1181 px"
],
[
"Height",
"1772 px"
],
[
"PPI",
"300"
],
[
"Exact pixels",
"1181.102362 × 1771.653543 px"
],
[
"Rounding",
"Each pixel dimension is rounded to the nearest whole pixel. These are required pixels, not a measurement of an existing image."
]
],
"text": "1181 × 1772 px\nInput print size: 10 × 15 cm\nWidth: 1181 px\nHeight: 1772 px\nPPI: 300\nExact pixels: 1181.102362 × 1771.653543 px\nRounding: Each pixel dimension is rounded to the nearest whole pixel. These are required pixels, not a measurement of an existing image.\nFormula: px = cm ÷ 2.54 × PPI",
"ppi": 300,
"targetPixels": {
"width": 1181,
"height": 1772
},
"exactPixels": {
"width": 1181.1023622047244,
"height": 1771.6535433070867
},
"resizer": {
"eligible": true
}
}pixels-to-mm
Calculations. Browser-only. Free local processing; no new hosted request, upload or credit charge. The local result contains width, height, unit, formula, parameters, rows and text. Operation-specific values include exactPixels, comparison, ratio, trim/bleed, effectivePpi or resizer when applicable.
Examples describe structure with illustrative values, not a completed result for your image. Numeric examples are calculated from the displayed local inputs.
| Parameter | Type / default | Meaning |
|---|---|---|
| width, height | Required positive numbers | Pixels must be integers; physical dimensions may be fractional. |
| ppi | Required positive number | Pixels per inch; never inferred from a screen. |
| physicalWidth, physicalHeight | Optional positive pair | Compare against a target physical size in the operation’s output unit. |
| preset | Optional string | Preserved descriptive label; it does not override dimensions. |
Local settings (illustrative; choose the image in your browser)
{
"width": 1200,
"height": 1800,
"ppi": 300
}Local result shape (illustrative)
{
"width": 101.6,
"height": 152.39999999999998,
"unit": "mm",
"formula": "physical mm = px ÷ PPI × 25.4",
"parameters": {
"width": 1200,
"height": 1800,
"ppi": 300
},
"rows": [
[
"Input pixels",
"1200 × 1800 px"
],
[
"Width",
"101.6 mm"
],
[
"Height",
"152.4 mm"
],
[
"PPI",
"300"
],
[
"One pixel",
"0.08466666667 mm at 300 PPI"
]
],
"text": "101.6 × 152.4 mm\nInput pixels: 1200 × 1800 px\nWidth: 101.6 mm\nHeight: 152.4 mm\nPPI: 300\nOne pixel: 0.08466666667 mm at 300 PPI\nFormula: physical mm = px ÷ PPI × 25.4",
"ppi": 300,
"actualPixels": {
"width": 1200,
"height": 1800
},
"resizer": {
"eligible": true
}
}mm-to-pixels
Calculations. Browser-only. Free local processing; no new hosted request, upload or credit charge. The local result contains width, height, unit, formula, parameters, rows and text. Operation-specific values include exactPixels, comparison, ratio, trim/bleed, effectivePpi or resizer when applicable.
Examples describe structure with illustrative values, not a completed result for your image. Numeric examples are calculated from the displayed local inputs.
| Parameter | Type / default | Meaning |
|---|---|---|
| width, height | Required positive numbers | Pixels must be integers; physical dimensions may be fractional. |
| ppi | Required positive number | Pixels per inch; never inferred from a screen. |
| bleed | Nonnegative mm; default 0 | Added on all four sides. |
| chosenSize | trim | bleed; optional | With nonzero bleed, choose a size before forwarding to resize. |
| preset | Optional string | Preserved descriptive label; it does not override dimensions. |
Local settings (illustrative; choose the image in your browser)
{
"width": 100,
"height": 150,
"ppi": 300,
"bleed": 3,
"chosenSize": "bleed"
}Local result shape (illustrative)
{
"width": 1252,
"height": 1843,
"unit": "px",
"formula": "px = mm ÷ 25.4 × PPI; bleed size = trim size + 2 × bleed per edge",
"parameters": {
"width": 100,
"height": 150,
"ppi": 300,
"bleed": 3,
"chosenSize": "bleed"
},
"rows": [
[
"Finished trim size",
"100 × 150 mm"
],
[
"Bleed per edge",
"3 mm"
],
[
"Size including bleed",
"106 × 156 mm"
],
[
"Trim pixels",
"1181 × 1772 px"
],
[
"Bleed pixels",
"1252 × 1843 px"
],
[
"Exact trim pixels",
"1181.102362 × 1771.653543 px"
],
[
"Exact bleed pixels",
"1251.968504 × 1842.519685 px"
],
[
"PPI",
"300"
],
[
"Chosen size",
"Including bleed"
],
[
"Rounding",
"Each final dimension is rounded to the nearest whole pixel. Bleed is added to both edges."
]
],
"text": "1252 × 1843 px\nFinished trim size: 100 × 150 mm\nBleed per edge: 3 mm\nSize including bleed: 106 × 156 mm\nTrim pixels: 1181 × 1772 px\nBleed pixels: 1252 × 1843 px\nExact trim pixels: 1181.102362 × 1771.653543 px\nExact bleed pixels: 1251.968504 × 1842.519685 px\nPPI: 300\nChosen size: Including bleed\nRounding: Each final dimension is rounded to the nearest whole pixel. Bleed is added to both edges.\nFormula: px = mm ÷ 25.4 × PPI; bleed size = trim size + 2 × bleed per edge",
"ppi": 300,
"trim": {
"width": 100,
"height": 150,
"unit": "mm"
},
"bleed": {
"width": 106,
"height": 156,
"unit": "mm"
},
"resizer": {
"eligible": true
},
"targetPixels": {
"width": 1252,
"height": 1843
},
"exactPixels": {
"width": 1251.968503937008,
"height": 1842.5196850393702
}
}print-size-calculator
Calculations. Browser-only. Free local processing; no new hosted request, upload or credit charge. The local result contains width, height, unit, formula, parameters, rows and text. Operation-specific values include exactPixels, comparison, ratio, trim/bleed, effectivePpi or resizer when applicable.
Examples describe structure with illustrative values, not a completed result for your image. Numeric examples are calculated from the displayed local inputs.
| Parameter | Type / default | Meaning |
|---|---|---|
| mode | print-size (default) | required-pixels | effective-ppi | Select calculation direction. |
| unit | in (default) | cm | mm | Unit of physical dimensions. |
| width, height | Positive integer pixels | Required for print-size and effective-ppi. |
| physicalWidth, physicalHeight | Positive numbers | Required for required-pixels and effective-ppi. |
| ppi | Positive number | Required for print-size and required-pixels. |
| targetPpi | Optional positive number | Compare effective-ppi with a requested density. |
Local settings (illustrative; choose the image in your browser)
{
"mode": "print-size",
"width": 2400,
"height": 3000,
"ppi": 300,
"unit": "in"
}Local result shape (illustrative)
{
"width": 8,
"height": 10,
"unit": "in",
"formula": "physical in = px ÷ PPI × 1",
"parameters": {
"width": 2400,
"height": 3000,
"ppi": 300,
"mode": "print-size",
"unit": "in"
},
"rows": [
[
"Input pixels",
"2400 × 3000 px"
],
[
"Width",
"8 in"
],
[
"Height",
"10 in"
],
[
"PPI",
"300"
]
],
"text": "8 × 10 in\nInput pixels: 2400 × 3000 px\nWidth: 8 in\nHeight: 10 in\nPPI: 300\nFormula: physical in = px ÷ PPI × 1",
"ppi": 300,
"actualPixels": {
"width": 2400,
"height": 3000
},
"resizer": {
"eligible": true
}
}aspect-ratio-calculator
Calculations. Browser-only. Free local processing; no new hosted request, upload or credit charge. The local result contains width, height, unit, formula, parameters, rows and text. Operation-specific values include exactPixels, comparison, ratio, trim/bleed, effectivePpi or resizer when applicable.
Examples describe structure with illustrative values, not a completed result for your image. Numeric examples are calculated from the displayed local inputs.
| Parameter | Type / default | Meaning |
|---|---|---|
| mode | dimensions (default) | ratio-only | missing-width | missing-height | Choose the known quantities. |
| width, height | Positive integers | dimensions requires both; missing-width requires height; missing-height requires width. |
| ratioWidth, ratioHeight | Positive integers | Required for ratio-only and either missing-edge mode. |
Local settings (illustrative; choose the image in your browser)
{
"mode": "dimensions",
"width": 1920,
"height": 1080
}Local result shape (illustrative)
{
"width": 16,
"height": 9,
"unit": "ratio",
"formula": "Simplest ratio = width : height, divided by their greatest common divisor.",
"parameters": {
"mode": "dimensions",
"width": 1920,
"height": 1080
},
"rows": [
[
"Input pixels",
"1920 × 1080 px"
],
[
"Ratio",
"16:9"
],
[
"Megapixels",
"2.0736 MP"
]
],
"text": "16 × 9 ratio\nInput pixels: 1920 × 1080 px\nRatio: 16:9\nMegapixels: 2.0736 MP\nFormula: Simplest ratio = width : height, divided by their greatest common divisor.",
"ratio": {
"width": 16,
"height": 9
},
"actualPixels": {
"width": 1920,
"height": 1080
},
"megapixels": 2.0736,
"resizer": {
"eligible": true
}
}openai-image-detector
Source and AI analysis. Browser-only. Free local processing; no new hosted request, upload or credit charge. Local source labels and embedded provenance validation states. An OpenAI label is not official verification. OpenAI API and private SynthID checks are paused; missing records do not prove human authorship.
Examples describe structure with illustrative values, not a completed result for your image. Numeric examples are calculated from the displayed local inputs.
| Parameter | Type / default | Meaning |
|---|---|---|
| image | Local browser File | Choose a supported file in the browser; this operation has no hosted upload. |
Local settings (illustrative; choose the image in your browser)
{}Local result shape (illustrative)
{
"facts": {
"format": "jpeg",
"width": 1200,
"height": 900,
"fileSizeBytes": 12345,
"resolution": {
"state": "specified",
"xPpi": 300,
"yPpi": 300,
"sources": [
{
"source": "jfif",
"x": 300,
"y": 300,
"unit": "ppi"
}
]
}
},
"fields": {},
"evidence": [],
"warnings": []
}ai-image-detector
Source and AI analysis. Hosted: POST /api/v1/operations/ai-image-detector. Explicit image upload; 1 credit per completed item. models contains provider commfor, aiProbability (0–1) and calibrated:false. This is an AI-generated score, not a calibrated authenticity probability. No deepfake or generator classification is returned. Each completed item costs 1 credit; technical failures release the reservation.
Examples describe structure with illustrative values, not a completed result for your image. Numeric examples are calculated from the displayed local inputs.
| Parameter | Type / default | Meaning |
|---|---|---|
| file_id | Required string | Private ID returned by an explicit authenticated POST /api/v1/files upload. |
| models | Required array ["commfor"] | Only CommFor is available for new hosted analysis; local inspection makes no hosted request. |
CommFor request
curl https://checkimagedpi.com/api/v1/operations/ai-image-detector \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-H 'Idempotency-Key: example-commfor-001' \
--data '{"file_id":"YOUR_FILE_ID","models":["commfor"]}'Completed job (illustrative)
{
"request_id": "EXAMPLE_JOB_ID",
"job_id": "EXAMPLE_JOB_ID",
"operation": "ai-image-detector",
"provenance": "server",
"status": "succeeded",
"result": {
"items": [
{
"status": "succeeded",
"result": {
"models": [
{
"provider": "commfor",
"aiProbability": 0.1,
"calibrated": false
}
]
},
"warnings": [],
"billing": {
"charged": 1
}
}
],
"success_count": 1
},
"warnings": [],
"error": null,
"billing": {
"reserved": 1,
"charged": 1,
"released": 0,
"unit": "credit"
},
"expires_at": 1792108800
}Status, warnings and billing
Queued work returns HTTP 202 and a job_id. Poll authenticated GET /api/v1/jobs/{job_id}. queued and running are unfinished; distinguish succeeded, partial, failed and expired. Successful item data is nested under result.items[].result, and expired jobs return result:null. Billing distinguishes reserved, charged and released credits.
A completed model score is not proof of authenticity. A failed request must not appear as a zero score. Existing historical reports can retain the operation and provider that originally produced them; they do not advertise current availability.
Idempotency and retries
Reuse an idempotency key with identical input when a request outcome is uncertain. Reusing a key with different input is a conflict. Inspect the existing job before submitting new work. A new key represents a new operation; polling the original is not a second charge.
Errors are not negative detections
Read the HTTP status, machine-readable error and request ID. Keep secrets and private inputs out of support messages.
| HTTP | Meaning |
|---|---|
| 400 | Invalid or unsupported operation/input |
| 401 / 403 | Authentication or access failure |
| 402 | Insufficient credits |
| 409 | Idempotency or task conflict |
| 413 / 415 | Size or format unsupported |
| 429 | Rate or concurrency limit |
| 502 / 503 / 504 | Model failure, unavailable service or timeout |
Historical jobs, downloads and retention
Historical job polling and unexpired output downloads remain available even when their operation is now browser-only. Downloadable outputs expire after 24 hours. Authenticated GET /api/v1/files/{file_id}/link returns {"url":"SIGNED_URL","expires_in":600}; a fresh ten-minute link cannot revive an expired file.
Temporary hosted inputs are removed after processing and within one hour. Reports without original images or prompts are retained for 30 days and usage metadata for 90 days. DELETE /api/v1/files/{file_id} removes an available owned file early. Browser-local exports are separate: deleting a server report cannot remove a copy already downloaded.
Frequently asked questions
Should I retry a timeout with a new key?
First inspect the existing job; a new key can create duplicate work.
Are local operations charged?
No. The fifteen browser-only tools are free and do not submit hosted operation requests.
Does an old report prove that operation is still hosted?
No. Historical access is retained separately from the current CommFor-only operation API.