Spec vs. your real API — the half no spec-diff tool can do

oasdiff and api2spec only diff two specs (or code vs. spec). DriftWire's check probes a live API and validates every response against your OpenAPI spec — catching type mismatches, enum violations and undocumented fields the moment your deployed server drifts. This is the exact driftwire check engine, running against a demo API served alongside this page.

YOUR SPEC — what the API promisescontract

openapi: 3.0.0
info: {title: Demo Users API, version: 1.0.0}
paths:
  /demoapi/users/{id}:
    get:
      responses:
        "200":
          content:
            application/json:
              schema:
                type: object
                required: [id, name, role]
                properties:
                  id:   {type: integer}
                  name: {type: string}
                  role: {type: string, enum: [user, admin]}
                additionalProperties: false
  /demoapi/status:
    get:
      responses:
        "200":
          content:
            application/json:
              schema:
                type: object
                required: [status, uptime]
                properties:
                  status: {type: string, enum: [ok, degraded]}
                  uptime: {type: integer}

LIVE API — what it actually returnsreality

GET /demoapi/users/42  →  200
{
  "id": "42",              // string, not integer
  "name": 123,             // number, not string
  "role": "superadmin",    // not in [user, admin]
  "extraField": true       // not in the spec
}

GET /demoapi/status     →  200
{
  "status": "down",        // not in [ok, degraded]
  "uptime": "two days"     // string, not integer
}
Probes the demo API in real time and validates each response against the spec.

Why a spec-diff tool can't see this. Every finding above comes from comparing a live response to the spec — the spec alone never changed, so diff old.yaml new.yaml would report zero drift. That's the gap DriftWire fills: driftwire check openapi.yaml --url https://your-api.example.com.