{"openapi":"3.1.0","info":{"title":"String Similarity API","version":"1.0.0","description":"A fast, fully-local string similarity and fuzzy-matching toolkit: edit distances (Levenshtein, Damerau-Levenshtein, Hamming), normalized 0-1 similarity scores (Levenshtein ratio, Jaro, Jaro-Winkler, Dice and Jaccard), Soundex phonetic codes, and best-match ranking of a query against a candidate list. Every endpoint accepts input via the query string or the request body. Pure server-side compute, no third-party upstream, so responses are instant and always available. Ideal for record matching and deduplication, search and autocomplete, spell-checking, data cleaning and entity resolution.","contact":{"name":"PremiumApi","url":"https://www.oanor.com/by/premiumapi"}},"servers":[{"url":"https://api.oanor.com/similarity-api","description":"oanor gateway"}],"tags":[{"name":"Similarity"}],"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/distance":{"get":{"operationId":"get_v1_distance","tags":["Similarity"],"summary":"Edit distance","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":"algorithm","in":"query","required":false,"description":"levenshtein, damerau, hamming","schema":{"type":"string"},"example":"levenshtein"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"a":"kitten","b":"sitting","distance":3,"algorithm":"levenshtein"},"meta":{"timestamp":"2026-05-30T09:00:23.542Z","request_id":"087185c4-c529-4c76-9357-8adc6465617d"},"status":"ok","message":"OK","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/match":{"get":{"operationId":"get_v1_match","tags":["Similarity"],"summary":"Best-match ranking","description":"","parameters":[{"name":"query","in":"query","required":true,"description":"Query string","schema":{"type":"string"},"example":"appl"},{"name":"candidates","in":"query","required":true,"description":"Pipe- or comma-separated list","schema":{"type":"string"},"example":"apple|grape|maple"},{"name":"algorithm","in":"query","required":false,"description":"Default jaro-winkler","schema":{"type":"string"},"example":"jaro-winkler"},{"name":"limit","in":"query","required":false,"description":"Max results 1-100","schema":{"type":"string"},"example":"10"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"query":"appl","matches":[{"score":0.96,"candidate":"apple"},{"score":0.7833,"candidate":"maple"},{"score":0.4833,"candidate":"grape"}],"algorithm":"jaro-winkler","best_match":"apple"},"meta":{"timestamp":"2026-05-30T09:00:23.611Z","request_id":"38fe6518-46b6-4f36-b35b-9600f1da45a0"},"status":"ok","message":"OK","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/similarity":{"get":{"operationId":"get_v1_similarity","tags":["Similarity"],"summary":"Similarity scores","description":"","parameters":[{"name":"a","in":"query","required":true,"description":"First string","schema":{"type":"string"},"example":"martha"},{"name":"b","in":"query","required":true,"description":"Second string","schema":{"type":"string"},"example":"marhta"},{"name":"algorithm","in":"query","required":false,"description":"Omit for all: levenshtein, jaro, jaro-winkler, dice, jaccard","schema":{"type":"string"}}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"a":"martha","b":"marhta","scores":{"dice":0.4,"jaro":0.9444,"jaccard":0.25,"levenshtein":0.6667,"jaro_winkler":0.9611}},"meta":{"timestamp":"2026-05-30T09:00:23.683Z","request_id":"f8f52f31-6014-48e6-a38e-56bf4f5d8892"},"status":"ok","message":"OK","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":["Similarity"],"summary":"Soundex phonetic codes","description":"","parameters":[{"name":"text","in":"query","required":true,"description":"One or more words","schema":{"type":"string"},"example":"Robert Rupert"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"text":"Robert Rupert","codes":[{"word":"Robert","soundex":"R163"},{"word":"Rupert","soundex":"R163"}]},"meta":{"timestamp":"2026-05-30T09:00:23.750Z","request_id":"67a2e0a0-d874-4768-86e5-f82d9720d652"},"status":"ok","message":"OK","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":16000,"rps_limit":3,"hard_limit":true},{"slug":"basic","name":"Basic","price_cents_month":500,"monthly_call_quota":280000,"rps_limit":12,"hard_limit":true},{"slug":"pro","name":"Pro","price_cents_month":1500,"monthly_call_quota":1500000,"rps_limit":35,"hard_limit":true},{"slug":"mega","name":"Mega","price_cents_month":4000,"monthly_call_quota":7500000,"rps_limit":120,"hard_limit":true}],"x-oanor-marketplace-url":"https://www.oanor.com/api/similarity-api"}