From 77115465cdd15308db790912574c1fc652ccb24c Mon Sep 17 00:00:00 2001 From: Adam Altman Date: Thu, 18 Dec 2025 10:05:35 -0600 Subject: [PATCH 1/2] blog: Catalog as AI substrate --- blog/api-catalog-ai-substrate.md | 258 +++++++++++++++++++++++++++ blog/api-ecosystem-characters.md | 2 +- blog/images/catalog-ai-substrate.png | Bin 0 -> 43873 bytes 3 files changed, 259 insertions(+), 1 deletion(-) create mode 100644 blog/api-catalog-ai-substrate.md create mode 100644 blog/images/catalog-ai-substrate.png diff --git a/blog/api-catalog-ai-substrate.md b/blog/api-catalog-ai-substrate.md new file mode 100644 index 00000000..739390c1 --- /dev/null +++ b/blog/api-catalog-ai-substrate.md @@ -0,0 +1,258 @@ +--- +template: '../@theme/templates/BlogPost' +title: API catalog is the AI substrate of the future +description: As AI agents join human developers, enterprise alignment becomes critical. API catalogs aren't just organization tools—they're the substrate that makes AI-human collaboration possible at scale. +seo: + title: API catalog as the AI substrate of the future | Redocly + description: Discover how API catalogs become essential infrastructure when AI agents work alongside developers. Learn why catalogs must extend beyond APIs to include services, people, and AI agents. + image: ./images/catalog-ai-substrate.png +author: adam-altman +publishedDate: 2025-12-18 +categories: + - api-catalog +image: catalog-ai-substrate.png +--- + +# API catalog is the AI substrate of the future + +_Why enterprise alignment becomes critical when AI agents join the team—and how catalogs become the substrate that makes it possible._ + +In recent articles, we've explored the hidden costs of building redundant APIs and the acceleration capability of an internal API ecosystem when reuse becomes easier than rebuilding. + +But what happens when AI agents join the team? + +When developers work alongside AI assistants, when AI agents orchestrate workflows, when AI systems make autonomous decisions about which APIs to call—what does that ecosystem look like? + +The answer: It looks like chaos, unless there's a substrate that provides coherence. + +## The acceleration problem + +AI doesn't just accelerate development. +It accelerates everything—including problems. + +Every large organization is struggling with: +- **Shadow APIs** — services built without visibility or governance +- **Fragmented governance** — different standards, different processes, different tools +- **Unclear ownership** — who owns what, who's responsible, who to contact +- **Poor versioning discipline** — breaking changes, deprecated APIs still in use, version confusion +- **Developer fatigue** — too many tools, too many processes, too much cognitive overhead +- **Slow integration loops** — weeks to discover, days to integrate, hours to debug + +AI accelerates all of these problems. + +**Without a unified substrate:** +- AI agents make decisions based on incomplete information +- AI assistants suggest APIs that don't exist or are deprecated +- AI workflows break because dependencies aren't clear +- AI systems create shadow APIs faster than humans can track them +- AI agents can't distinguish between production and experimental APIs + +The result: AI amplifies chaos instead of creating order. + +## The substrate solution + +The real opportunity is enterprise-wide alignment. + +An API catalog isn't just a directory of APIs. +It's the substrate that provides coherence across the entire organization. + +When AI models plug into a unified fabric, they deliver transformational productivity. + +**Governance in one place:** +- Standards, rules, and policies are centralized +- AI agents can check compliance before suggesting APIs +- Breaking changes are detected automatically +- Quality gates are enforced consistently + +**Documentation in one place:** +- APIs are documented with current, accurate information +- AI agents can read schemas, examples, and guides +- Versioning is clear and discoverable +- Integration patterns are documented and reusable + +**Catalog in one place:** +- All APIs are discoverable and searchable +- AI agents can find the right API for the right use case +- Dependencies are mapped and visible +- Ownership and lifecycle are clear + +**Workflows in one place:** +- API design, review, and release workflows are standardized +- AI agents can participate in governance processes +- Change management is automated and consistent +- Integration patterns are reusable across teams + +This isn't a point solution. +This is a platform. + +## How catalogs enable AI-human collaboration + +When an API catalog provides a unified substrate, AI and humans can collaborate effectively. + +**AI agents can:** +- Discover APIs based on natural language queries +- Suggest the right API for a use case +- Check compliance before integration +- Detect breaking changes automatically +- Generate integration code from schemas +- Orchestrate workflows across multiple APIs + +**Humans can:** +- Trust AI suggestions because they're based on accurate catalog data +- Focus on business logic instead of API discovery +- Rely on AI to handle routine integration tasks +- Use AI to navigate complex dependency graphs +- Leverage AI to maintain documentation and schemas + +**Together, they:** +- Move faster than either could alone +- Maintain quality and compliance automatically +- Reduce errors and breaking changes +- Create reusable patterns and workflows +- Build on a foundation of trust and accuracy + +But this only works if the catalog is comprehensive, accurate, and trusted. + +## Beyond APIs: The extended catalog + +Here's where it gets interesting. + +An API catalog that only tracks APIs isn't enough. + +To provide true enterprise-wide alignment, catalogs need to extend beyond APIs to include: + +**Services:** +- Microservices, functions, and serverless endpoints +- Data pipelines and ETL processes +- Message queues and event streams +- Infrastructure components and configurations + +**People:** +- API owners and maintainers +- Domain experts and subject matter specialists +- Teams and organizational structures +- Contact information and escalation paths + +**AI Agents:** +- AI assistants and copilots +- Autonomous AI systems and workflows +- AI models and their capabilities +- AI decision-making patterns and policies + +When catalogs include all of these entities, they become the true substrate of the enterprise. + +AI agents can discover not just APIs, but the services that expose them, the people who own them, and the other AI agents that use them. + +Humans can understand not just what APIs exist, but who built them, who uses them, and how AI agents interact with them. + +The entire organization—people, services, APIs, and AI agents—becomes discoverable, governable, and aligned. + +## The future is already here + +This isn't theoretical. +It's happening now. + +Organizations are already deploying AI agents that: +- Generate API integration code +- Suggest API designs based on requirements +- Automate API testing and validation +- Orchestrate workflows across multiple APIs +- Monitor API health and performance + +But these agents are only as good as the substrate they're built on. + +**Without a unified catalog:** +- AI agents make mistakes because information is incomplete +- AI workflows break because dependencies aren't clear +- AI suggestions are wrong because APIs are deprecated +- AI systems create technical debt faster than humans can track + +**With a unified catalog:** +- AI agents have complete, accurate information +- AI workflows are reliable because dependencies are mapped +- AI suggestions are current because lifecycle is tracked +- AI systems create value instead of debt + +The difference is the substrate. + +## Building the substrate + +Building an API catalog that serves as the AI substrate requires: + +**Automation:** +- APIs, services, and dependencies are discovered automatically +- Documentation and schemas are kept current automatically +- Ownership and lifecycle are tracked automatically +- Changes are detected and cataloged automatically + +**Comprehensiveness:** +- All APIs are cataloged, not just the official ones +- Services, people, and AI agents are included +- Dependencies and relationships are mapped +- Historical data and change history are preserved + +**Trust:** +- Information is accurate and current +- Ownership and responsibility are clear +- Lifecycle stages are reliable +- Governance policies are enforced + +**Extensibility:** +- New entity types can be added (services, people, AI agents) +- New relationships can be discovered and mapped +- New governance rules can be applied +- New workflows can be automated + +When these elements come together, the catalog becomes more than a directory. +It becomes the substrate that enables AI-human collaboration at scale. + +## The competitive advantage + +Organizations that build this substrate first will have a significant competitive advantage. + +**They'll move faster:** +- AI agents can discover and integrate APIs autonomously +- Developers can focus on business logic instead of integration +- Workflows can be automated end-to-end +- Time-to-value accelerates dramatically + +**They'll maintain quality:** +- Governance is automated and consistent +- Breaking changes are detected before deployment +- Compliance is checked automatically +- Technical debt is tracked and managed + +**They'll scale better:** +- New teams can onboard faster with AI assistance +- New APIs can be discovered and integrated automatically +- Dependencies can be managed at scale +- Complexity can be navigated systematically + +**They'll innovate more:** +- AI agents can suggest new API patterns +- Developers can experiment with confidence +- Reuse becomes easier than rebuilding +- Velocity compounds across the organization + +The substrate enables all of this. + +## The takeaway + +API catalogs aren't just organization tools. +They're the substrate that makes AI-human collaboration possible at scale. + +As AI agents join development teams, as AI systems orchestrate workflows, as AI assistants help developers build faster—the need for enterprise-wide alignment becomes critical. + +A unified catalog that includes APIs, services, people, and AI agents provides that alignment. + +It's not a point solution. +It's a platform. + +And organizations that build this platform first will have a significant competitive advantage. + +Because when AI accelerates everything—including problems—you need a substrate that provides coherence. + +The catalog is that substrate. + +The future is already here. +The question is: Are you building the substrate that makes it possible? diff --git a/blog/api-ecosystem-characters.md b/blog/api-ecosystem-characters.md index eb98b2e2..b05ec0df 100644 --- a/blog/api-ecosystem-characters.md +++ b/blog/api-ecosystem-characters.md @@ -7,7 +7,7 @@ seo: description: Discover the three behavioral archetypes in enterprise API ecosystems—the Benefactor, the Amplifier, and the Redundancer—and how they impact cost, velocity, and architectural health. image: ./images/api-ecosystem-characters.png author: adam-altman -publishedDate: 2025-12-18 +publishedDate: 2025-12-17 categories: - api-catalog image: api-ecosystem-characters.png diff --git a/blog/images/catalog-ai-substrate.png b/blog/images/catalog-ai-substrate.png new file mode 100644 index 0000000000000000000000000000000000000000..76350c3b4c9b6eade379084cbfa019a1b70d66f3 GIT binary patch literal 43873 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 A8~^|S literal 0 HcmV?d00001 From 3705a5cf9931a39919c70a74dcc8dc6fad9b27d1 Mon Sep 17 00:00:00 2001 From: Adam Altman Date: Fri, 19 Dec 2025 09:55:11 -0600 Subject: [PATCH 2/2] blog: update to reflect AI creators too --- blog/api-catalog-ai-substrate.md | 51 ++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) diff --git a/blog/api-catalog-ai-substrate.md b/blog/api-catalog-ai-substrate.md index 739390c1..5d15647d 100644 --- a/blog/api-catalog-ai-substrate.md +++ b/blog/api-catalog-ai-substrate.md @@ -95,6 +95,7 @@ When an API catalog provides a unified substrate, AI and humans can collaborate - Check compliance before integration - Detect breaking changes automatically - Generate integration code from schemas +- Create Arazzo workflows that orchestrate multiple APIs into business processes - Orchestrate workflows across multiple APIs **Humans can:** @@ -113,6 +114,53 @@ When an API catalog provides a unified substrate, AI and humans can collaborate But this only works if the catalog is comprehensive, accurate, and trusted. +## The AI-catalog feedback loop + +Here's where it gets even more interesting. + +AI agents don't just consume the catalog—they can also extend it. + +**AI agents can:** +- Generate new API descriptions based on requirements +- Create API workflows described with Arazzo (orchestrating multiple APIs into business processes) +- Create service definitions from code analysis +- Build catalog entities from infrastructure discovery +- Extend existing APIs with new endpoints +- Propose new workflows and integrations + +But here's the critical part: **Scorecards check their governance**. + +When AI agents create or extend catalog entities, scorecards automatically evaluate: +- **Compliance** — Do the APIs meet organizational standards? +- **Quality** — Are the schemas well-designed and documented? +- **Security** — Are security best practices followed? +- **Consistency** — Do the APIs follow naming conventions and patterns? +- **Completeness** — Is all required metadata present? +- **Workflow correctness** — Do Arazzo workflows correctly orchestrate APIs and handle errors? + +This creates a feedback loop: + +1. **AI builds** — AI agents create or extend catalog entities (APIs, services, workflows) +2. **Scorecards evaluate** — Governance scorecards automatically check what AI created +3. **Catalog improves** — Issues are flagged, quality is measured, compliance is verified +4. **AI learns** — AI agents learn from scorecard feedback and improve future outputs + +The result: AI agents become better contributors to the catalog over time, and the catalog maintains quality even as AI accelerates creation. + +**Without scorecards:** +- AI agents create APIs that don't meet standards +- Quality degrades as AI generates more content +- Compliance issues multiply +- Technical debt accumulates faster + +**With scorecards:** +- AI agents create APIs that meet governance standards +- Quality is maintained automatically +- Compliance is checked before deployment +- Technical debt is prevented, not just tracked + +The scorecard becomes the quality gate that ensures AI acceleration doesn't become AI chaos. + ## Beyond APIs: The extended catalog Here's where it gets interesting. @@ -154,6 +202,8 @@ It's happening now. Organizations are already deploying AI agents that: - Generate API integration code +- Create new API descriptions and catalog entities +- Generate Arazzo workflows that orchestrate multiple APIs into business processes - Suggest API designs based on requirements - Automate API testing and validation - Orchestrate workflows across multiple APIs @@ -196,6 +246,7 @@ Building an API catalog that serves as the AI substrate requires: - Ownership and responsibility are clear - Lifecycle stages are reliable - Governance policies are enforced +- Scorecards evaluate quality and compliance automatically **Extensibility:** - New entity types can be added (services, people, AI agents)