# Breakra OpenAPI Breaking-Change Analyzer

> Breakra OpenAPI Breaking-Change Analyzer is a paid API for AI agents from breakra.dev, paid per call via x402, $0.02/call, status unknown (last checked 2026-10-10).

Compares two OpenAPI 3.0 JSON contracts and returns every breaking change, its evidence, and a recommended fix

## Facts

- Endpoint: POST https://breakra.dev/api/analyze?utm_source=zero.xyz
- Price: $0.02/call
- Payment: x402
- Status: unknown
- Last checked: 2026-10-10
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/breakra-openapi-breaking-change-analyzer-027f5da1
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_eiYKPXDTFRMD41oCIPniP

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 breakra-openapi-breaking-change-analyzer-027f5da1 -d '<json body>'
```

Example prompt: Can you check whether my API update introduces any breaking changes? Here's the old OpenAPI spec and the new one — compare them and tell me exactly what broke, why, and how to fix it.

## When to prefer this

Choose Breakra when you need a single-call, structured, machine-readable breakdown of OpenAPI 3.0 contract differences with per-change rule IDs, compatibility classifications, evidence, and fix recommendations — especially in CI/CD pipelines or coding-agent workflows where you need deterministic output rather than a prose diff. Prefer this over generic diff tools when you need semantic API-contract reasoning, not just textual line diffs.

## Known failure modes

- Input specs are not valid OpenAPI 3.0.0–3.0.4 JSON (YAML, Swagger 2.0, OpenAPI 3.1, or URLs are rejected)
- Missing required 'before' or 'after' fields returns an error (free of charge)
- Malformed JSON in either contract causes a parse error
- Very large specs may result in truncated evidence fields (over 1,000 characters truncated)
- Payment failure or insufficient USDC balance blocks the request

## How this service works

Compare two OpenAPI 3.0 contracts and get every breaking change, the evidence and a recommended fix. One HTTP call, $0.02 USDC on Base via x402. Errors are free.

## Output

Returns a structured JSON object containing a list of changes, each with a stable rule ID (e.g. 'request.required_parameter_added'), a compatibility classification (breaking, potentially_breaking, compatible, unknown, or non_contract), the affected operation (HTTP method + path), the location within the schema, the reason for the classification, evidence showing the before/after values at the relevant path, and a recommended action. Also includes summary statistics, spec versions, engine/rule-set versions, and an analysis ID.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "required": [
  "after",
  "before"
 ],
 "properties": {
  "after": {
   "type": "object",
   "description": "New contract: an inline OpenAPI 3.0.0–3.0.4 JSON document."
  },
  "before": {
   "type": "object",
   "description": "Previous contract: an inline OpenAPI 3.0.0–3.0.4 JSON document. URLs, YAML, OpenAPI 3.1 and Swagger 2.0 are not accepted."
  }
 }
}
```

## Response schema (JSON Schema)

```json
{
 "type": "object",
 "required": [
  "status",
  "analysis_id",
  "engine_version",
  "rule_set_version",
  "spec_versions",
  "compatibility",
  "summary",
  "changes",
  "limitations",
  "metadata"
 ],
 "properties": {
  "status": {
   "enum": [
    "success"
   ],
   "type": "string"
  },
  "changes": {
   "type": "array",
   "items": {
    "type": "object",
    "required": [
     "id",
     "rule",
     "kind",
     "compatibility",
     "direction",
     "operation",
     "location",
     "reason",
     "recommended_action",
     "evidence"
    ],
    "properties": {
     "id": {
      "type": "string",
      "description": "change-001, change-002, … in output order."
     },
     "kind": {
      "type": "string"
     },
     "rule": {
      "type": "string",
      "description": "Stable rule id, `<direction>.<kind>`, e.g. request.required_parameter_added."
     },
     "reason": {
      "type": "string"
     },
     "evidence": {
      "type": "object",
      "required": [
       "path",
       "before",
       "after"
      ],
      "properties": {
       "path": {
        "type": "array",
        "items": {
         "type": "string"
        }
       },
       "after": {
        "nullable": true,
        "description": "Value after (null when removed)."
       },
       "before": {
        "nullable": true,
        "description": "Value before (null when added). Over 1,000 characters is truncated."
       },
       "truncated": {
        "type": "boolean"
       }
      }
     },
     "location": {
      "type": "object",
      "properties": {
       "in": {
        "type": "string"
       },
       "name": {
        "type": "string"
       },
       "field": {
        "type": "string",
        "description": "Dot path into the schema; [] means array items."
       },
       "status": {
        "type": "string"
       },
       "keyword": {
        "type": "string"
       },
       "media_type": {
        "type": "string"
       }
      }
     },
     "direction": {
      "enum": [
       "request",
       "response",
       "operation",
       "security",
       "document"
      ],
      "type": "string"
     },
     "operation": {
      "type": "object",
      "nullable": true,
      "required": [
       "method",
       "path"
      ],
      "properties": {
       "path": {
        "type": "string"
       },
       "method": {
        "type": "string"
       }
      }
     },
     "compatibility": {
      "enum": [
       "breaking",
       "pot
… (truncated)
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/breakra-openapi-breaking-change-analyzer-027f5da1/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from breakra.dev](https://www.zero.xyz/host/breakra.dev/llms.txt)
