Back to blog
Guides & Tutorials

Reva: Validate requests with OpenAPI in Node.js

Validating API requests shouldn't be a hassle. Why write validation code by hand when we have OpenAPI documents that describe every endpoint? To address this problem we built Reva, a simple Node.js request validator based on OpenAPI.

Elias MeireElias Meire

Elias Meire

2 min read
Reva: Validate requests with OpenAPI in Node.js

Validating API requests shouldn't be a hassle. Why write validation code by hand when we have OpenAPI documents that describe every endpoint? To address this problem we built Reva, a simple Node.js request validator based on OpenAPI.

As an API-first company, we try to deliver the best developer experience possible with our APIs. API validation has a huge role to play in DX. Developers should get immediate and precise feedback when their requests aren't valid. Reva leverages our public OpenAPI specifications to do exactly that.

Here are some highlights of @apideck/reva

  • Complete: Reva validates all OpenAPI parameter types and request body
  • 😄 Human-readable error messages powered by our better-ajv-errors package.
  • 🧩 Flexible: works with any Node.js framework and serverless provider
  • 🪶 Small footprint: < 50kB
  • 👩‍💻 High quality TypeScript definitions

Ready to try it out? Install Reva through npm.

npm i @apideck/reva

Using Reva

After installing Reva, import the Reva class, and create a new instance.

To validate a request you need a request object and an OpenAPI operation. No need to load a complete OpenAPI document to validate a single endpoint.

A request can have the following properties: body, queryParameters, pathParameters and headers. None of them are required. You can, for example, use Reva to only validate query parameters.

import { Reva } from '@apideck/reva';

const reva = new Reva();

const result = reva.validate({
  operation, // OpenAPI operation
  request: {
    headers: { 'X-My-Header': 'value', Cookie: 'Key=Value' },
    pathParameters; { id: 'ed55e7a3' },
    queryParameters; { search: 'foo' },
    body: {},
  },
});

if (result.ok) {
  // Valid request!
} else {
  // Invalid request, result.errors contains validation errors
  console.log(result.errors);
}

Detailed docs can be found on GitHub.

Feedback welcome

We built Reva to solve our own need for easy validation based on OpenAPI. We hope you find it useful too. Any feedback is welcome, looking forward to collaborate further on GitHub.

Ready to get started?

Scale your integration strategy and deliver the integrations your customers need in record time.

Ready to get started?
Trusted by
Nmbrs
Benefex
Principal Group
Invoice2go by BILL
Trengo
MessageMedia
Lever
Ponto | Isabel Group
Apideck Blog

Insights, guides, and updates from Apideck

Discover company news, API insights, and expert blog posts. Explore practical integration guides and tech articles to make the most of Apideck's platform.

Understanding Local and Remote Model Context Protocols
AIIndustry insights

Understanding Local and Remote Model Context Protocols

Curious about where your Model Context Protocol (MCP) server should live—on your machine or in the cloud? This article breaks down the core differences between local and remote MCP setups, including speed, privacy, ease of use, and scalability. Whether you're a developer building new AI tools or deploying services for end users, this guide will help you choose the right MCP setup for your use case.

Saurabh Rai

Saurabh Rai

7 min read
Breaking Down Unified API Pricing: Why API-Call Pricing Stands Out
Unified APIIndustry insightsGuides & Tutorials

Breaking Down Unified API Pricing: Why API-Call Pricing Stands Out

In this post, we’ll explore the most common pricing models for unified APIs, examine their pros and cons, and help you determine which one best fits your integration strategy. From account-based to API-call-based and hybrid pricing models like those offered by Apideck, we’ll unpack the business and technical tradeoffs to help you make informed decisions.

Sooter Saalu

Sooter Saalu

11 min read
Building a Local RAG Chat App with Reflex, LangChain, Huggingface, and Ollama
AIGuides & TutorialsIndustry insights

Building a Local RAG Chat App with Reflex, LangChain, Huggingface, and Ollama

Learn how to create a fully local, privacy-friendly RAG-powered chat app using Reflex, LangChain, Huggingface, FAISS, and Ollama. This step-by-step guide walks you through building an interactive chat UI, embedding search, and local LLM integration—all without needing frontend skills or cloud dependencies.

Saurabh Rai

Saurabh Rai

25 min read