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.
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}
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
}
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.