We just open-sourced SpecLynx ApiDOM.
Think of it as Babel.js, but for API specifications.
ApiDOM is the semantic core behind SpecLynx. It powers every layer of the stack: the Language Service, VS Code extension, browser editor, and CLI.
It parses OpenAPI, AsyncAPI, JSON Schema, Arazzo, and Overlay specs into a unified semantic tree you can traverse, transform, and serialize back out.
The goal is simple:
Let developers work with API specs programmatically without losing the structure, style, and intent of the original file.
Because that part matters.
You should be able to modify a spec and get back something that still looks like your file, not a machine-generated rewrite.
What you can build on it
SpecLynx ApiDOM is Apache-2.0 licensed, and you can use it to build your own:
- ✅ Linters
- ✅ Transforms
- ✅ Code generators
- ✅ Migration tools
- ✅ Spec-aware automation
What we did to make it ready
- Tree-sitter based parsing: so tooling stays useful even while specs are incomplete
- A semantic data model: not generic objects, but one that understands OpenAPI Operations and Schema Objects
- Lossless roundtrip: comments, indentation, and key ordering are preserved across transformations
- Performance and memory efficiency for large specs
Why open source it
We open-sourced ApiDOM to build trust. Every line of source code is now auditable and viewable, which also makes it usable in regulated environments where that’s not a nice-to-have but a requirement.
Try it
npm install @speclynx/apidom-reference
Parse an API specification and access its data model right away:
import { parse } from '@speclynx/apidom-reference';
import { toValue } from '@speclynx/apidom-core';
const result = await parse('/path/to/openapi.json');
toValue(result.api.info.title); // document title
toValue(result.api.info.version); // document version
Get started
- GitHub: speclynx/apidom
- Documentation: speclynx.com/apidom
If you’ve ever had to parse, rewrite, or generate API specs: what broke first? Tell us in the discussions 👇