{"openapi":"3.1.0","info":{"title":"Soundex & Fuzzy Match API","version":"1.0.0","description":"Phonetic and fuzzy string-matching maths as an API, computed locally and deterministically. The soundex endpoint computes the American Soundex code of a word — the first letter followed by three digits that encode its consonant sounds, ignoring case and non-letters and applying the vowel-reset and adjacent-duplicate rules — so Robert and Rupert both code to R163, Smith and Smyth to S530, and the classic tricky cases Ashcraft (A261), Tymczak (T522) and Pfister (P236) come out right. The levenshtein endpoint computes the edit distance between two strings (the minimum insertions, deletions and substitutions, optionally case-sensitive) and a 0–100 % similarity, so kitten → sitting is three edits and about 57 % similar. The compare endpoint combines both: it reports whether two strings share a Soundex code (sound alike) and their Levenshtein similarity (spelled alike), and flags a likely match when the codes agree or the similarity is at least 80 %. Everything is computed locally and deterministically, so it is instant and private. Ideal for data-deduplication, CRM, fuzzy-search, autocomplete, genealogy and data-cleaning app developers, name-matching and record-linkage tools, and search software. Pure local computation — no key, no third-party service, instant. Live, nothing stored. 3 endpoints. This is phonetic and edit-distance matching; for full-text search use a search API.","contact":{"name":"PremiumApi","url":"https://www.oanor.com/by/premiumapi"}},"servers":[{"url":"https://api.oanor.com/soundex-api","description":"oanor gateway"}],"tags":[{"name":"Matching"},{"name":"Meta"}],"components":{"securitySchemes":{"oanorKey":{"type":"apiKey","in":"header","name":"x-oanor-key","description":"Get your key at https://www.oanor.com/developer/keys"}}},"security":[{"oanorKey":[]}],"paths":{"/v1/compare":{"get":{"operationId":"get_v1_compare","tags":["Matching"],"summary":"Combined fuzzy comparison","description":"","parameters":[{"name":"a","in":"query","required":true,"description":"First string","schema":{"type":"string"},"example":"Robert"},{"name":"b","in":"query","required":true,"description":"Second string","schema":{"type":"string"},"example":"Rupert"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"note":"Combines Soundex (sounds alike) and Levenshtein (spelled alike). likely_match is true if the Soundex codes agree or the similarity is at least 0.8.","inputs":{"a":"Robert","b":"Rupert"},"soundex_a":"R163","soundex_b":"R163","similarity":0.666667,"likely_match":true,"soundex_match":true,"similarity_percent":66.6667,"levenshtein_distance":2},"meta":{"timestamp":"2026-06-05T19:50:12.398Z","request_id":"125a7115-9b95-4aac-a588-e1de777f9e47"},"status":"ok","message":"Fuzzy compare","success":true}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}},"/v1/levenshtein":{"get":{"operationId":"get_v1_levenshtein","tags":["Matching"],"summary":"Edit distance & similarity","description":"","parameters":[{"name":"a","in":"query","required":true,"description":"First string","schema":{"type":"string"},"example":"kitten"},{"name":"b","in":"query","required":true,"description":"Second string","schema":{"type":"string"},"example":"sitting"},{"name":"case_sensitive","in":"query","required":false,"description":"true/false (default false)","schema":{"type":"string"}}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"note":"Levenshtein edit distance = minimum single-character insertions, deletions or substitutions. 'kitten' → 'sitting' is 3 edits; similarity = 1 − distance/max(len).","inputs":{"a":"kitten","b":"sitting","case_sensitive":false},"distance":3,"similarity":0.571429,"similarity_percent":57.1429},"meta":{"timestamp":"2026-06-05T19:50:12.510Z","request_id":"32ced954-13db-41a3-9468-efa12a1bd810"},"status":"ok","message":"Edit distance","success":true}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}},"/v1/soundex":{"get":{"operationId":"get_v1_soundex","tags":["Matching"],"summary":"Soundex code","description":"","parameters":[{"name":"word","in":"query","required":true,"description":"Word to encode","schema":{"type":"string"},"example":"Robert"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"note":"American Soundex: first letter + 3 digits encoding consonant sounds. Robert and Rupert both code to R163, Smith and Smyth to S530.","inputs":{"word":"Robert"},"soundex":"R163"},"meta":{"timestamp":"2026-06-05T19:50:12.632Z","request_id":"c69f9ca3-71f1-4187-9406-09562812164a"},"status":"ok","message":"Soundex code","success":true}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}},"/v1/meta":{"get":{"operationId":"get_v1_meta","tags":["Meta"],"summary":"Spec","description":"","parameters":[],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"notes":"Soundex ignores case and non-letters. Levenshtein is case-insensitive unless case_sensitive=true. Useful for deduplication, fuzzy search, name matching and genealogy.","service":"soundex-api","endpoints":{"GET /v1/meta":"This document.","GET /v1/compare":"Soundex + Levenshtein comparison with a likely-match flag.","GET /v1/soundex":"American Soundex code of a word.","GET /v1/levenshtein":"Edit distance and similarity between two strings."},"description":"Phonetic and fuzzy string matching: Soundex code, Levenshtein edit distance, and a combined comparison."},"meta":{"timestamp":"2026-06-05T19:50:12.764Z","request_id":"1a8cf773-123c-4cd6-bd0c-f2dcb74f0fd6"},"status":"ok","message":"Meta","success":true}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}}},"x-oanor-pricing":[{"slug":"free","name":"Free","price_cents_month":0,"monthly_call_quota":6100,"rps_limit":2,"hard_limit":true},{"slug":"starter","name":"Starter","price_cents_month":545,"monthly_call_quota":61000,"rps_limit":6,"hard_limit":true},{"slug":"pro","name":"Pro","price_cents_month":1520,"monthly_call_quota":285000,"rps_limit":15,"hard_limit":true},{"slug":"mega","name":"Mega","price_cents_month":4750,"monthly_call_quota":1490000,"rps_limit":40,"hard_limit":true}],"x-oanor-marketplace-url":"https://www.oanor.com/api/soundex-api"}