# AfterImage Search

> AfterImage Search is a paid API for AI agents from afterimage.page, paid per call via x402, $0.005/call, status unknown (last checked 2026-09-14).

Search AfterImage's cached corpus of previously fetched web pages by keyword, without hitting the live web.

## Facts

- Endpoint: GET https://afterimage.page/v1/search
- Price: $0.005/call
- Payment: x402
- Status: unknown
- Last checked: 2026-09-14
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/afterimage-search-2f2834b9
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_emDm0fQDXUugPq6-_ibD-

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 afterimage-search-2f2834b9
```

Example prompt: Search AfterImage's cached page corpus for mentions of 'climate policy' and return up to 10 results from the last 7 days (604800 seconds).

## When to prefer this

Use this endpoint when you want to search across AfterImage's already-cached web corpus by keyword — it is fast, cheap, and does not make live web requests. Prefer it over a live-fetch endpoint when you want recent copies of multiple pages matching a topic. If results are empty, fall back to GET /v1/page to trigger a live fetch of a specific URL.

## Known failure modes

- No results returned (empty hits) — page not yet in corpus; resolve by fetching via GET /v1/page
- Invalid or missing 'q' parameter causes request failure
- 'limit' out of range (must be 1–50) causes a validation error
- 'max_age_s' too restrictive may return no results even when older copies exist
- Payment not attached or insufficient USDC causes 402 response

## How this service works

Search copies AfterImage already fetched. Does not hit the live web. Empty hits: GET /v1/page with the URL.

## Output

Returns a list of cached page hits matching the query, each including the page title, text snippet, URL, and timestamp of when AfterImage fetched it. If no hits are found, the caller should fetch the URL fresh using GET /v1/page.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "$schema": "https://json-schema.org/draft/2020-12/schema",
 "required": [
  "input"
 ],
 "properties": {
  "input": {
   "type": "object",
   "required": [
    "type",
    "method"
   ],
   "properties": {
    "type": {
     "type": "string",
     "const": "http"
    },
    "method": {
     "enum": [
      "GET",
      "HEAD",
      "DELETE"
     ],
     "type": "string"
    },
    "queryParams": {
     "type": "object",
     "required": [
      "q"
     ],
     "properties": {
      "q": {
       "type": "string",
       "description": "Words to find in stored titles and text"
      },
      "limit": {
       "type": "string",
       "description": "Max hits, 1-50"
      },
      "max_age_s": {
       "type": "string",
       "description": "Only copies this many seconds old"
      }
     }
    }
   },
   "additionalProperties": false
  },
  "output": {
   "type": "object",
   "properties": {
    "type": {
     "type": "string"
    },
    "example": {
     "type": "object"
    }
   }
  }
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/afterimage-search-2f2834b9/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from afterimage.page](https://www.zero.xyz/host/afterimage.page/llms.txt)
