# Catalog Update Gate

> Catalog Update Gate is a paid API for AI agents from api.pay-forge.online, paid per call via x402, $0.05/call, status unknown (last checked 2026-10-21).

Validates and gates catalog updates derived from Apify product scrapes by comparing current vs previous snapshots against a typed contract schema, extracting fields, and assessing cost before committing changes.

## Facts

- Endpoint: POST https://api.pay-forge.online/v2/catalog-update-gate?utm_source=zero.xyz
- Price: $0.05/call
- Payment: x402
- Status: unknown
- Last checked: 2026-10-21
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/catalog-update-gate-dabbcc79
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_0RCakSraWm4B0yzH4xsps

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 catalog-update-gate-dabbcc79 -d '<json body>'
```

Example prompt: I just ran an Apify scrape and have current and previous product records — can you run them through the Catalog Update Gate to validate the fields against my schema (identity by URL, price field 'price', currency field 'currency', allowed currencies USD and EUR) and preview what would change before I push anything live?

## When to prefer this

Choose this endpoint when you have raw Apify product scrape output that needs safe, schema-enforced gating before catalog writes — especially when you need to diff snapshots, enforce typed field contracts, validate currencies and identities, and preview costs without triggering any live purchases or external side effects. It is not suitable for live web search, scheduled monitoring, or third-party purchasing flows.

## Known failure modes

- Missing required contract fields (identity_field, price_field, currency_field, allowed_currencies) returns a validation error
- Records exceeding the 50-item limit per array are rejected
- Currency values not in allowed_currencies list are flagged as violations
- Identity field values failing URL parsing in 'url' mode cause identity resolution errors
- Fields declared as 'required: true' in the contract but absent from records produce missing-field errors
- Decimal fields with more than the specified decimal_places are rejected
- Malformed or non-JSON input bodies return parsing errors

## How this service works

Turn Apify product scrape results into safe catalog updates with Catalog Update Gate. Find evidence in supplied documents, compare snapshots, extract typed JSON fields, inspect x402 quotes and assess API migrations. Preview inputs, evidence and cost for free. No live web search, scheduled monitoring or third-party purchasing.

## Output

Returns a JSON object containing: validated field extractions per record, a diff between current and previous snapshots, schema violation details for non-conforming records, cost preview for the operation, and evidence summaries supporting each catalog update decision. No live web requests are made; all analysis is performed on supplied input data.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "properties": {
  "current": {
   "type": "array",
   "items": {
    "type": "object",
    "additionalProperties": true
   },
   "title": "Current",
   "maxItems": 50
  },
  "contract": {
   "type": "object",
   "title": "CatalogContract",
   "required": [
    "fields",
    "identity_field",
    "identity_mode",
    "price_field",
    "currency_field",
    "allowed_currencies"
   ],
   "properties": {
    "fields": {
     "type": "object",
     "title": "Fields",
     "maxProperties": 16,
     "minProperties": 1,
     "additionalProperties": {
      "type": "object",
      "title": "CatalogField",
      "required": [
       "type",
       "required"
      ],
      "properties": {
       "type": {
        "enum": [
         "string",
         "integer",
         "boolean",
         "decimal"
        ],
        "type": "string",
        "title": "Type"
       },
       "required": {
        "type": "boolean",
        "title": "Required"
       },
       "decimal_places": {
        "anyOf": [
         {
          "type": "integer",
          "maximum": 6,
          "minimum": 0
         },
         {
          "type": "null"
         }
        ],
        "title": "Decimal Places",
        "default": null
       }
      },
      "additionalProperties": false
     }
    },
    "unit_field": {
     "anyOf": [
      {
       "type": "string"
      },
      {
       "type": "null"
      }
     ],
     "title": "Unit Field",
     "default": null
    },
    "price_field": {
     "type": "string",
     "title": "Price Field"
    },
    "allowed_units": {
     "anyOf": [
      {
       "type": "array",
       "items": {
        "type": "string"
       },
       "maxItems": 10,
       "minItems": 1
      },
      {
       "type": "null"
      }
     ],
     "title": "Allowed Units",
     "default": null
    },
    "identity_mode": {
     "enum": [
      "url",
      "exact"
     ],
     "type": "string",
     "title": "Identity Mode"
    },
    "currency_field": {
     "type": "string",
     "title": "Currency Field"
    },
    "identity_field": {
     "type": "string",
     "title": "Identity Field"
    },
    "allowed_currencies": {
     "type": "array",
     "items": {
      "type": "string"
     },
     "title": "Allowed Currencies",
     "maxItems": 10,
     "minItems": 1
    }
   },
   "additionalProperties": false
  },
  "previous": {
   "type": "array",
   "items": {
    "type": "object",
    "additionalProperties": true
   },
   "title": 
… (truncated)
```

## Response schema (JSON Schema)

```json
{
 "type": "json"
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/catalog-update-gate-dabbcc79/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from api.pay-forge.online](https://www.zero.xyz/host/api.pay-forge.online/llms.txt)
