Skip to content
Lightweight, blazing fast, cross-platform OpenAPI 3 mock server with validation
Branch: master
Clone or download
Type Name Latest commit message Commit time
Failed to load latest commit information.
helm Added helm chart Jul 31, 2018
.gitignore Ignore output of `go build` Feb 28, 2019
apisprout.go Allow adding a custom server to validate against Mar 19, 2019
example_test.go Add readOnly/writeOnly support. Part 1 of #30 Mar 13, 2019
go.mod Revamp server validation feature Mar 13, 2019
logo.gvdesign First commit Jul 24, 2018 Add some additional features, add release scripts Jul 25, 2018

API Sprout

Go Report Card Build Status GitHub tag (latest SemVer) Docker Pulls

A simple, quick, cross-platform API mock server that returns examples specified in an API description document. Features include:

  • OpenAPI 3.x support
    • Uses operation examples or generates examples from schema
  • Load from a URL or local file (auto reload with --watch)
  • CORS headers enabled by default
  • Accept header content negotiation
    • Example: Accept: application/*
  • Prefer header to select response to test specific cases
    • Example: Prefer: status=409
  • Server validation (enabled with --validate-server)
    • Validates scheme, hostname/port, and base path
    • Supports localhost out of the box
  • Request parameter & body validation (enabled with --validate-request)
  • Configuration via:
    • Files (/etc/apisprout/config.json|yaml)
    • Environment (prefixed with SPROUT_, e.g. SPROUT_VALIDATE_SERVER)
    • Commandline flags

Usage is simple:

# Load from a local file
apisprout my-api.yaml

# Validate server name and use base path
apisprout --validate-server my-api.yaml

# Load from a URL

Docker Image

A hosted API Sprout Docker image is provided that makes it easy to deploy mock servers or run locally. For example:

docker pull danielgtaylor/apisprout
docker run -p 8000:8000 danielgtaylor/apisprout

Configuration can be passed via environment variables, e.g. setting SPROUT_VALIDATE_REQUEST=1, or by passing commandline flags. It is also possible to use a local API description file via Docker Volumes:

# Remember to put the full path to local archive YAML in -v
docker run -p 8000:8000 -v $FULLPATH/localfile.yaml:/api.yaml danielgtaylor/apisprout /api.yaml


Download the appropriate binary from the releases page.

Alternatively, you can use go get:

go get


Contributions are very welcome. Please open a tracking issue or pull request and we can work to get things merged in.

Release Process

The following describes the steps to make a new release of API Sprout.

  1. Merge open PRs you want to release.
  2. Select a new semver version number (major/minor/patch depending on changes).
  3. Update to describe changes.
  4. Create a commit for the release.
  5. Tag the commit with git tag -a -m 'Tagging x.y.z release' vx.y.z.
  6. Build release binaries with ./
  7. Push the commit and tags.
  8. Upload the release binaries.


Copyright © 2018-2019 Daniel G. Taylor

You can’t perform that action at this time.