# VisionFlow Match – Feature Matching

> VisionFlow Match – Feature Matching is a paid API for AI agents from visionflow-match.saastemly.com, paid per call via x402, $0.004/call, status unknown (last checked 2026-10-21).

Detects ORB or SIFT keypoints in a template and a larger image, matches them with brute-force + Lowe's ratio test, and returns sorted point-pair matches showing where the pattern appears.

## Facts

- Endpoint: POST https://visionflow-match.saastemly.com/v1/feature-match?utm_source=zero.xyz
- Price: $0.004/call
- Payment: x402
- Status: unknown
- Last checked: 2026-10-21
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/visionflow-match-feature-matching-4bd9e96d
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_Uk7Ap5zoKc6WIJOxa24i7

Status and success rate cover calls made through Zero and Zero's own probes. Third-party monitors may report differently.

## How to call it through Zero

Zero handles the 402 payment challenge and records the run. With the Zero CLI installed (`npm i -g @zeroxyz/cli`):

```sh
zero fetch --capability visionflow-match-feature-matching-4bd9e96d -d '<json body>'
```

Example prompt: Use SIFT feature matching to find where this company logo (base64 attached) appears in this larger product photo (base64 attached) — use a ratio threshold of 0.7 and return up to 100 matches.

## When to prefer this

Choose this endpoint when you need to identify specific point-level correspondences between a template and scene image, especially when the pattern may be rotated or scaled. Use ORB for speed on binary-descriptor tasks; use SIFT for better scale/rotation invariance. Prefer this over homography (/v1/homography) when you want raw match pairs rather than an outline or bounding quad of the pattern in the scene.

## Known failure modes

- Image exceeds size limit (4MP or 2MB) — returns 400 error
- Template exceeds 1MP or 1MB limit — returns 400 error
- Too few keypoints detected (featureless or blurry images) — returns zero or very few matches
- Ratio value outside 0.5–0.95 range — returns validation error
- Unsupported image format — returns 400 error
- max_matches outside 1–200 range — returns validation error
- No good matches found — returns empty match list with goodMatches=0

## How this service works

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.

## Output

Returns a list of good matched point pairs sorted by match distance, each containing the coordinates in the template and in the scene image, along with the total count of good matches. Includes metadata about how many keypoints were detected in each image and the detector used.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "properties": {
  "image": {
   "type": "string",
   "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."
  },
  "ratio": {
   "type": "number",
   "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"
  },
  "detector": {
   "enum": [
    "orb",
    "sift"
   ],
   "type": "string",
   "description": "Keypoint detector and descriptor: orb (default, fast, binary descriptors, Hamming distance) or sift (slower, better with scale changes, L2 distance)"
  },
  "template": {
   "type": "string",
   "description": "Base64 of the pattern to find, same formats. At most 1 million pixels and about 1 MB."
  },
  "max_matches": {
   "type": "integer",
   "description": "Most matches listed, 1-200 (default 50); goodMatches always counts all of them"
  },
  "max_features": {
   "type": "integer",
   "description": "Most keypoints kept per image, 100-5000 (default 2000)"
  }
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/visionflow-match-feature-matching-4bd9e96d/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from visionflow-match.saastemly.com](https://www.zero.xyz/host/visionflow-match.saastemly.com/llms.txt)
