Match local features between a pattern image and a larger image
Match local features between a pattern image and a larger image: detects ORB or SIFT keypoints in both, matches them with a brute-force matcher and Lowe's ratio test (OpenCV BFMatcher.knnMatch), and returns the good matches as point pairs sorted by distance. Use it to see which parts of a pattern are present and where, even when the pattern is scaled or rotated; for the pattern's outline use /v1/homography.
Answeringour last check, 2026-10-03
1 of 1checks answered this week
374 msmedian answer time
$0.004listed price per call
$0.004price it asked us
Paid test badge: not yet. The checks above are free: we call the tool without paying and read the payment request it sends back. The Verified badge needs paid calls whose answers match the promised output, and nobody can buy a badge.
Endpoint
POST https://visionflow-match.saastemly.com/v1/feature-match
| Category | Image and media |
|---|---|
| Provider host | visionflow-match.saastemly.com |
| Networks | eip155:8453 |
| Payment schemes | exact |
| Self-reported calls, 30 days | 0 from 0 payers (the provider's figure, not ours) |
Our checks, last 30 days
| Day | Result | HTTP | Asked | Time |
|---|---|---|---|---|
| 2026-10-03 | valid payment request | 402 | $0.004 | 374 ms |
Example input (from the provider)
{
"body": {
"detector": "sift",
"image": "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",
"max_matches": 10,
"ratio": 0.75,
"template": "iVBORw0KGgoAAAANSUhEUgAAAEAAAAAwCAAAAACEICPDAAADAklEQVRIx61UT0gUURz+Znfazdyx0Ex3U1smVqJCKwn6c5FCCaKDoYdOEh7WywQiQh6UisKgS7QgLLSXQrpIdPTPISIiiAqlSHJptbINRTR1E1m3fc0b58/OOjM7rv6YefPmzft9v+/73pvHPIUUftq0ARGYxSjQIHWiysggbRzyyzS2HFJ+twLgzzV9VOlEM/Obo46MOZYKoCjQ5YsS/PYI0Jg0yBc98PvptUHAUsEhCSGqz5dM1MpHctMI6PPhsGl5A0oN+OsA9BYGg1kIJvlmDILShVAoJA+MqW1Alx9grXjfS8Px0Iklgmb3shvJmaqkC31YZV3N6hzmtfEmoPXDV4uc6yvVB98TYKWmdOGL1/2r5zmZiVfe0Cw1YxCWRNytQM9ExWlg+WMxPlV7gZ6TX9NcfcaKqACRtsgmhLT4vPhdENt2rzORLge45JrPM/02DiEa2JjH6vdAr4ZQNgt0uP+tdYj9xflHvg/fLg0nnGyyyEO/hjAk5NoHZcAel/f8C7E7XOsDQ5AACDzK95AeYPEVxqfoBCkIkTrsrr/BqVmkhi4DvoUBYJX0CsLhswKtLugkpH78SU3UyekgjAjBUBHk5e4SvCk8BZS74pUkfq4gLUbKKSiFZYDV/jXHZOJnnSaAofcC8OQWi5Er4kvfkegYCvbh+hLeDTS1btoHgzWB+zeZXsKoHGjM0vXYGOkTV6WppL/Lo3dK9oAk57l5bh2qCYxqJOS/ohtoOVp2OytfYfB5eGnveqqg5TGRUhUeeg6GITM43l7ceeFMZ5VSmqhUwhoHKwCgHvuPZThIMkhYIigAhSfAezXtDKPmh61PGhsnkrUIO0eaghDLF0BGiBki2DtUJQQ+bwmailjeANtaBYVCmDeiwMI+wtYYcAZjvH0AjqOXQcS2ZyJvlwFnqmIThSwT78jPB7TpyncZ5yw1xHIs45x0t/4eaazNayOp1Rtt2ugwyRcPl3GTmrHt/Qt8FglTAFMKvJWJJv4/079eM2dwYCd/51pzG3f0QPkPRu/dDgU3nB4AAAAASUVORK5CYII="
},
"bodyType": "json",
"method": "POST",
"type": "http"
}
Promised output schema (from the provider)
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"input": {
"additionalProperties": false,
"properties": {
"body": {
"properties": {
"detector": {
"description": "Keypoint detector and descriptor: orb (default, fast, binary descriptors, Hamming distance) or sift (slower, better with scale changes, L2 distance)",
"enum": [
"orb",
"sift"
],
"type": "string"
},
"image": {
"description": "Base64 of a PNG, JPEG, BMP or WebP file (a data: URI also works). At most 4 million pixels and about 2 MB. Alpha is dropped.",
"type": "string"
},
"max_features": {
"description": "Most keypoints kept per image, 100-5000 (default 2000)",
"type": "integer"
},
"max_matches": {
"description": "Most matches listed, 1-200 (default 50); goodMatches always counts all of them",
"type": "integer"
},
"ratio": {
"description": "Lowe's ratio test threshold, 0.5-0.95 (default 0.75): a match is kept when its distance is below ratio times the second-best distance",
"type": "number"
},
"template": {
"description": "Base64 of the pattern to find, same formats. At most 1 million pixels and about 1 MB.",
"type": "string"
}
},
"required": [
"image",
"template"
]
},
"bodyType": {
"enum": [
"json",
"form-data",
"text"
],
"type": "string"
},
"method": {
"enum": [
"POST",
"PUT",
"PATCH"
],
"type": "string"
},
"type": {
"const": "http",
"type": "string"
}
},
"required": [
"type",
"method",
"bodyType",
"body"
],
"type": "object"
},
"output": {
"properties": {
"example": {
"type": "object"
},
"type": {
"type": "string"
}
},
"required": [
"type"
],
"type": "object"
}
},
"required": [
"input"
],
"type": "object"
}