Compare two images
API · /imghash-api
Perceptual Image Hash API
Fingerprint images for near-duplicate detection and similarity. Compute the three classic perceptual hashes — aHash (average), dHash (difference) and pHash (DCT-based) — as 64-bit hex values for any image (by URL or base64), then compare two images to get the Hamming distance and a 0-100 similarity score per algorithm, with a likely-same flag. Unlike a cryptographic hash, perceptual hashes stay close when images are resized, recompressed or lightly edited — so you can spot duplicates, find re-uploads, cluster similar pictures and power reverse-image matching. Fully local (no third-party service), nothing stored. Supports PNG, JPEG, BMP, TIFF and GIF. Live. 3 endpoints. Distinct from basic image-info/resize and from string-similarity tools.
API health
healthy- Uptime
- 100.00%
- Server probes · 24h
- Avg latency
- 424 ms
- Server probes · 24h
- Subscribers
- 4,548
- active
- Total calls
- 45
- last 7 days
Pricing
Pick a tier — billed monthly, cancel anytime.
Free
Free
- 1,560 calls / month
- 2 requests / second
- Hard cap (429 above quota, no overage)
- 1,560 calls/month
- 2 req/sec
- aHash + dHash + pHash + compare
- No credit card
Starter
€7.40 /month
- 31,000 calls / month
- 8 requests / second
- Hard cap (429 above quota, no overage)
- 31k calls/month
- 8 req/sec
- URL + base64 input
- Email support
Pro
€27.00 /month
- 188,000 calls / month
- 20 requests / second
- Hard cap (429 above quota, no overage)
- 188k calls/month
- 20 req/sec
- Dedup / reverse-image pipelines
- Priority support
Mega
€63.00 /month
- 960,000 calls / month
- 50 requests / second
- Hard cap (429 above quota, no overage)
- 960k calls/month
- 50 req/sec
- Platform scale
- Dedicated SLA
Built by
Related APIs
Other APIs with overlapping tags.
Screw Auger API
Screw-conveyor and grain-auger maths as an API, computed locally and deterministically — the capacity, speed and throughput numbers a farmer, millwright or material-handling engineer sizes an auger with. The capacity endpoint gives the volumetric throughput from the screw geometry: the annular flight volume per turn ((π/4)(diameter² − shaft²) × pitch) × rpm × 60 × the trough loading, so a 9-inch full-pitch screw on a 2.5-inch shaft at 40 rpm and 45 % loading moves about 330 cubic feet — 265 bushels — an hour. The speed endpoint inverts it, the rpm needed for a target capacity, so you don't overspeed a small auger and grind the grain. The bushels endpoint converts a volumetric rate to bushels and tons per hour (1 bushel = 1.2445 ft³, tons = bushels × test weight ÷ 2000), so 330 ft³/hr of 56-lb corn is 265 bushels or 7.4 tons an hour — the number you match to the dryer or the truck. Everything is computed locally and deterministically, so it is instant and private. Ideal for grain-handling and ag-equipment apps, material-handling and conveyor-design tools, farm-build calculators, and engineering aids. Pure local computation — no key, no third-party service, instant. Live, nothing stored. 3 compute endpoints. Estimates — incline and material change real throughput. For belt conveyors use a conveyor API.
api.oanor.com/auger-api
Radiant Floor API
Radiant-floor and hydronic heating maths as an API, computed locally and deterministically — the output, tubing and flow numbers an installer or DIYer designs a warm floor with. The output endpoint gives the heat a warm floor puts out: about 2 BTU/hr per square foot for every °F the floor surface is above the room, so an 85 °F floor in a 70 °F room delivers roughly 30 BTU/hr/ft² — about 9,000 BTU/hr over 300 ft², the comfort ceiling since the floor is held at ~85 °F. The tubing endpoint gives the tube and loops for an area at a spacing: field tubing = area × 12 ÷ spacing, so 300 ft² at 9-inch spacing needs 400 feet of tube, split into loops kept under ~300 feet (two 200-foot loops) so the pump can push them. The flow endpoint gives the loop flow rate for a heat load, GPM = load ÷ (500 × ΔT) where 500 is water's constant and ΔT is the supply-to-return drop — 9,000 BTU/hr at a 20 °F ΔT wants 0.9 GPM. Everything is computed locally and deterministically, so it is instant and private. Ideal for radiant-heating and plumbing apps, hydronic-design and PEX-layout tools, HVAC contractor calculators, and DIY-build sites. Pure local computation — no key, no third-party service, instant. Live, nothing stored. 3 compute endpoints. Estimates — verify with a full heat-loss calc. For building load use an HVAC API; for pipe velocity use a flow-rate API.
api.oanor.com/radiant-api
Ladder Safety API
Ladder-safety maths as an API, computed locally and deterministically — the angle, reach and load numbers that keep a ladder from sliding out or buckling. The angle endpoint applies the 4:1 rule: the base goes out one foot for every four feet of working length, which lands the ladder at about 75.5° — a 24-foot ladder sits 6 feet from the wall and reaches roughly 23 feet up, steep enough not to tip back and shallow enough not to slide. The extension endpoint gives the usable length and reach of a two-section extension ladder, which loses the overlap the sections share (3 feet up to 36, 4 to 48, 5 beyond), and the working height at the safe angle — remembering the ladder must extend 3 feet above a roof edge you step onto. The duty-rating endpoint turns a total load — your weight plus tools and materials, not just bodyweight — into the right duty class, from Type III household (200 lb) through I industrial (250) to IAA professional (375). Everything is computed locally and deterministically, so it is instant and private. Ideal for construction-safety and trades apps, jobsite and rental tools, OSHA training aids, and home-improvement sites. Pure local computation — no key, no third-party service, instant. Live, nothing stored. 3 compute endpoints. Educational — always follow the manufacturer's labels and OSHA/ANSI rules.
api.oanor.com/ladder-api
Guitar Luthier API
Guitar and luthier maths as an API, computed locally and deterministically — the string-tension and fret numbers a player, builder or tech sets an instrument up with. The string-tension endpoint gives the tension a string pulls at pitch from the physics, tension = unit weight × (2 × scale length × frequency)² ÷ 386.4, where the unit weight (lb/in) comes from the string maker's chart — a .010 plain-steel high E on a 25.5-inch scale tuned to 329.6 Hz pulls about 16 lb. The fret-position endpoint gives the distance from the nut to any fret in equal temperament, scale × (1 − 2^(−fret/12)), so the 12th fret sits exactly halfway and the first fret of a 25.5-inch scale is 1.43 inches down — the maths behind every fretboard slot. The set-tension endpoint sums a whole string set into the total load on the neck (a typical six-string runs ~95–120 lb), the number that decides whether a gauge or tuning change needs a truss-rod re-setup. Everything is computed locally and deterministically, so it is instant and private. Ideal for luthier and guitar-tech apps, string-tension and fret-slotting calculators, setup and re-string tools, and music-gear sites. Pure local computation — no key, no third-party service, instant. Live, nothing stored. 3 compute endpoints. Get unit weights from the string maker's chart. For note↔frequency conversion use a music-theory API.
api.oanor.com/guitar-api
Frequently asked questions
Quick answers about pricing, quotas, and integration.
How do I get an API key for Perceptual Image Hash API?
What's the rate limit for Perceptual Image Hash API?
How much does Perceptual Image Hash API cost?
Can I cancel my subscription anytime?
Is Perceptual Image Hash API GDPR-compliant?
Pick an endpoint from the list on the left to see its details and try it.
Code snippets
Sign up to get an API key, then call any path under your slug.
curl https://api.oanor.com/imghash-api/SOME_PATH \
-H "x-oanor-key: oanor_test_..."
const res = await fetch("https://api.oanor.com/imghash-api/SOME_PATH", {
headers: { "x-oanor-key": "oanor_test_..." }
});
const data = await res.json();
$ch = curl_init("https://api.oanor.com/imghash-api/SOME_PATH");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, ["x-oanor-key: oanor_test_..."]);
$response = curl_exec($ch);
import requests
r = requests.get(
"https://api.oanor.com/imghash-api/SOME_PATH",
headers={"x-oanor-key": "oanor_test_..."},
)
print(r.json())
Ratings
Sign in to rate.
No reviews yet.
Discussion
Ask questions, share usage tips, get answers from the provider and other developers. Public — anyone can read.
Sign in to start a thread or reply.
Sign inNew thread
·
-
Provider answer
🔒 This thread is locked — no new replies.
-
·
- No threads yet — start the discussion.
Support
Private 1:1 support with the provider — billing questions, integration issues, account problems. Only you and the provider team can see these threads.
Sign in to open a support ticket.
Sign inOpen new ticket
Describe what you need help with. The provider team gets an email and replies on the ticket page.
-
·
Urgent - No tickets yet for this API.