# VisionFlow Match – Homography

> VisionFlow Match – Homography 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-22).

Locate a pattern image inside a larger image using ORB or SIFT feature matching with RANSAC homography, returning match status, transformation matrix, corners, bounding box, and confidence.

## Facts

- Endpoint: POST https://visionflow-match.saastemly.com/v1/homography?utm_source=zero.xyz
- Price: $0.004/call
- Payment: x402
- Status: unknown
- Last checked: 2026-10-22
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/visionflow-match-homography-03d65deb
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_j8oKdho37f6N1UUBz-mt7

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-homography-03d65deb -d '<json body>'
```

Example prompt: Can you check if this 'Submit' button image appears somewhere in this full-page screenshot? Use SIFT for better accuracy and require at least 15 inlier matches to confirm it's found.

## When to prefer this

Choose this endpoint when you need to locate a specific pattern, logo, UI element, or cropped object within a larger image and need the precise geometric transform (homography/corners/bounding box), not just a bounding box from a deep-learning detector. It is especially useful for UI automation (finding buttons on screenshots), logo detection, and any task requiring scale/rotation/perspective-invariant template matching without training a custom model.

## Known failure modes

- Pattern not found: `found` is false when fewer than `min_inliers` RANSAC inliers are obtained — can occur with flat-coloured/textureless patterns
- Image too large: rejected if scene image exceeds ~4 million pixels or ~2 MB
- Template too large: rejected if pattern exceeds ~1 million pixels or ~1 MB
- Unsupported format: non-PNG/JPEG/BMP/WebP images cause an error
- Degenerate homography: heavily repeated patterns or low-texture images may produce invalid or unstable homographies
- Ratio too loose: a very high ratio threshold (close to 0.95) may introduce false matches

## How this service works

Locate a pattern image inside a larger image even when it is scaled, rotated or viewed at an angle: ORB or SIFT feature matching plus cv2.findHomography with RANSAC. Returns whether it was found, the 3x3 homography (pattern pixels to image pixels), the four projected corners, the bounding box, and the inlier count as confidence. Use it to find a UI element, logo or object in a screenshot or photo.

## Output

Returns a JSON object with: `found` (boolean indicating match success), `homography` (3x3 matrix mapping pattern pixels to scene pixels), `corners` (four projected corner points of the pattern in the scene), `bounding_box` (axis-aligned rectangle around the match), and `inliers` (count of RANSAC inliers used as confidence).

## 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. Needs visible texture or corners; a flat-coloured pattern has no features."
  },
  "min_inliers": {
   "type": "integer",
   "description": "Fewest RANSAC inliers for found to be true, 4-200 (default 10)"
  },
  "max_features": {
   "type": "integer",
   "description": "Most keypoints kept per image, 100-5000 (default 2000)"
  },
  "reproj_threshold": {
   "type": "number",
   "description": "RANSAC reprojection error in pixels below which a match is an inlier, 0.5-20 (default 3)"
  }
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/visionflow-match-homography-03d65deb/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)
