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
- 42
- 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.
Chimney & Flue API
Chimney and flue sizing maths as an API, computed locally and deterministically — the draft and dimension numbers a stove installer, sweep or builder runs so a fire pulls cleanly and safely. The flue-size endpoint gives the minimum flue cross-section for a fireplace opening: at least a tenth of the opening area for a square or rectangular liner, a twelfth for a round one (which draws better) — a 36 × 30 inch opening needs about 108 square inches of rectangular flue, or a 10.7-inch round. The draft endpoint gives the theoretical draft from the stack effect, ΔP ≈ 3465 × height × (1/T_outside − 1/T_flue) with temperatures in kelvin, so a 6-metre chimney with 200 °C flue gas on a freezing day pulls about 32 pascals (0.13 inches of water column) — taller and hotter draws harder. The height endpoint applies the 3-2-10 rule: a chimney must finish at least 3 feet above where it pierces the roof and at least 2 feet above anything within 10 feet, whichever is higher. Everything is computed locally and deterministically, so it is instant and private. Ideal for hearth and stove-installer apps, chimney-sweep and inspection tools, building-design calculators, and DIY-safety sites. Pure local computation — no key, no third-party service, instant. Live, nothing stored. 3 compute endpoints. Educational estimates — verify against your appliance listing and adopted code.
api.oanor.com/chimney-api
Fishing Tackle API
Angling and tackle maths as an API, computed locally and deterministically — the three numbers that decide how a reel is spooled and a lure is fished. The line-capacity endpoint works out how much line of a different diameter a reel will hold: line lies on the spool by cross-sectional area, so capacity scales with the inverse square of diameter — a reel rated for 100 yards of 0.30 mm holds about 73.5 yards of thicker 0.35 mm, or nearly 140 yards of a thinner 0.011-inch braid. The sink-time endpoint gives the countdown to fish a lure at depth: time = depth ÷ sink rate, so a minnow that sinks a foot a second reaches ten feet on a count of ten. The drag endpoint sets the reel: about 25–33 % of the line's breaking strength measured at the rod tip — a 20-pound line wants roughly 5 to 6.6 pounds of drag, enough to let a fish run before anything snaps. Everything is computed locally and deterministically, so it is instant and private. Ideal for fishing and tackle apps, reel-spooling and gear-shop tools, angler trip-planners, and learning sites. Pure local computation — no key, no third-party service, instant. Live, nothing stored. 3 compute endpoints. Unit-agnostic — keep your units consistent; rules of thumb, conditions vary.
api.oanor.com/fishing-api
Aquaculture API
Fish-farming (aquaculture) maths as an API, computed locally and deterministically — the stocking, feed and oxygen numbers a fish farmer or RAS designer runs a system on. The stocking endpoint turns a tank or pond volume and a target biomass density into a fish count: biomass = density × volume, count = biomass ÷ average fish weight — a 10 m³ tank at 30 kg/m³ holds 300 kg, about 1,200 fish at 250 g each, and you stock to the harvest weight, not the fingerling weight, so the tank does not overload as they grow. The feed endpoint gives the daily ration as a percentage of body weight, and the feed to reach a target weight gain through the feed conversion ratio — 300 kg fed at 2 % is 6 kg a day, and growing 100 kg of fish at an FCR of 1.2 takes 120 kg of feed. The oxygen endpoint gives the dissolved-oxygen demand of a stock — biomass × the per-kg consumption rate — so 300 kg at 300 mg O₂/kg/hr needs 90 g of oxygen an hour, the number your aeration must beat. Everything is computed locally and deterministically, so it is instant and private. Ideal for aquaculture and RAS-design apps, fish-farm management tools, hatchery and feed calculators, and ag-tech sites. Pure local computation — no key, no third-party service, instant. Live, nothing stored. 3 compute endpoints. Commercial-planning estimates — species and system vary. For a home aquarium use an aquarium API.
api.oanor.com/aquaculture-api
Climbing Fall API
Rock-climbing fall maths as an API, computed locally and deterministically — the safety numbers behind a lead fall, from the harshness of the catch to whether you hit the deck. The fall-factor endpoint gives the fall factor, distance fallen ÷ rope paid out, from 0 to a maximum of 2: it, not the absolute distance, decides how hard the catch is, so 4 metres on 2 metres of rope is a brutal factor-2 onto the anchor while the same fall on 10 metres of rope is a mild 0.4. The impact-force endpoint gives the peak force the rope transmits from the spring model F = mg + √((mg)² + 2·mg·k·f), where k is the rope modulus (~20 kN for a dynamic single rope) and f the fall factor — so an 80 kg climber on a factor-1 fall feels about 6.4 kN, and the top runner sees roughly 1.66× that from the pulley effect. The ground-fall endpoint adds it up: total drop = twice the height above the last piece, plus slack, plus the rope's stretch, and tells you whether that clears the ground or a ledge. Everything is computed locally and deterministically, so it is instant and private. Ideal for climbing apps, gym and guiding tools, route-planning and education sites, and gear calculators. Pure local computation — no key, no third-party service, instant. Live, nothing stored. 3 compute endpoints. Educational estimates — not a substitute for instruction and judgement.
api.oanor.com/climbing-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.