# Rursus Delta Snapshot Monitor

> Rursus Delta Snapshot Monitor is a paid API for AI agents from delta.rursus.app, paid per call via x402, $0.01/call, status unknown (last checked 2026-09-15).

Takes a normalized snapshot of a public JSON, RSS, or Atom feed and returns a signed cursor, enabling free polling and paid retrieval of only changed items (added, updated, or removed).

## Facts

- Endpoint: POST https://delta.rursus.app/v1/snapshots
- Price: $0.01/call
- Payment: x402
- Status: unknown
- Last checked: 2026-09-15
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/rursus-delta-snapshot-monitor-7016bc15
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_ulA2ODXcTnWA3zStSErd-

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 rursus-delta-snapshot-monitor-7016bc15 -d '<json body>'
```

Example prompt: Start monitoring this JSON endpoint https://api.example.com/posts for new, updated, or removed items — the records are in the 'data' array, each item has an 'id' field as its unique identifier, and I want to track the 'title' and 'published_at' fields so I get a signed cursor back and only pay when the delta actually changes.

## When to prefer this

Use this endpoint when you need to track changes in a public JSON API, RSS feed, or Atom feed over time without paying on every poll. It is ideal for automation workflows that need to react to new, updated, or removed items while minimizing cost — paying only when a real change delta is retrieved. Prefer this over general-purpose web scrapers when your source is a structured feed with stable item identifiers.

## Known failure modes

- Source URL is not publicly accessible or requires authentication — returns an error indicating the URL could not be fetched
- Invalid itemsPath or idPath that does not resolve to expected structure in the JSON document — returns a schema mismatch error
- Feed format mismatch (e.g. specifying 'json' for an RSS URL) — returns a parse error
- URL exceeds 2048 characters or contains credentials/query parameters/fragments — returns a validation error
- Source returns non-200 HTTP status — returns a fetch failure error
- Payment of $0.01 USDC not provided or insufficient — returns a 402 Payment Required response

## How this service works

Normalize a bounded public JSON, RSS, or Atom source and return a signed monitoring cursor

## Output

Returns a normalized snapshot of the feed at the time of the call along with a signed cursor. On subsequent polls the cursor can be used for free to check if anything has changed; paying only when retrieving the actual delta of new, updated, and removed items with their field values.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "properties": {
  "source": {
   "oneOf": [
    {
     "type": "object",
     "required": [
      "url",
      "format",
      "itemsPath",
      "idPath",
      "fields"
     ],
     "properties": {
      "url": {
       "type": "string",
       "maxLength": 2048,
       "description": "Public HTTPS JSON, RSS, or Atom URL without credentials, query parameters, or fragments"
      },
      "fields": {
       "type": "object",
       "propertyNames": {
        "type": "string",
        "pattern": "^[A-Za-z][A-Za-z0-9_-]*$",
        "maxLength": 64,
        "minLength": 1
       },
       "additionalProperties": {
        "type": "array",
        "items": {
         "type": "string",
         "pattern": "^[A-Za-z0-9_.:@-]+$",
         "maxLength": 64,
         "minLength": 1
        },
        "maxItems": 8,
        "minItems": 1
       }
      },
      "format": {
       "type": "string",
       "const": "json"
      },
      "idPath": {
       "type": "array",
       "items": {
        "type": "string",
        "pattern": "^[A-Za-z0-9_.:@-]+$",
        "maxLength": 64,
        "minLength": 1
       },
       "maxItems": 8,
       "minItems": 1,
       "description": "Property path to a stable unique string or safe-integer item identifier"
      },
      "itemsPath": {
       "type": "array",
       "items": {
        "type": "string",
        "pattern": "^[A-Za-z0-9_.:@-]+$",
        "maxLength": 64,
        "minLength": 1
       },
       "maxItems": 8,
       "description": "Property path to the record array; use an empty array when the JSON document root is the array"
      }
     },
     "additionalProperties": false
    },
    {
     "type": "object",
     "required": [
      "url",
      "format"
     ],
     "properties": {
      "url": {
       "type": "string",
       "maxLength": 2048,
       "description": "Public HTTPS JSON, RSS, or Atom URL without credentials, query parameters, or fragments"
      },
      "format": {
       "enum": [
        "rss",
        "atom"
       ],
       "type": "string"
      }
     },
     "additionalProperties": false
    }
   ]
  }
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/rursus-delta-snapshot-monitor-7016bc15/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from delta.rursus.app](https://www.zero.xyz/host/delta.rursus.app/llms.txt)
