Need help with apisprout?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

538 Stars 64 Forks MIT License 95 Commits 29 Opened issues


Lightweight, blazing fast, cross-platform OpenAPI 3 mock server with validation

Services available


Need anything else?

Contributors list

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
      or generates examples from
  • Load from a URL or local file (auto reload with
  • 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
    • Validates scheme, hostname/port, and base path
    • Supports
      out of the box
    • Use the
      flag, in conjunction with
      , to dynamically include more servers in the validation logic
  • Request parameter & body validation (enabled with
  • Configuration via:
    • Files (
    • Environment (prefixed with
      , e.g.
    • 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

Dynamically Include a new server / path in the validation

apisprout --add-server http://localhost:8080/mock --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

, 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

Extra Features

Remote Reload

If your API spec is loaded from a remote URL, you can live-reload it by hitting the


Health Check

A simple endpoint which returns status code

is available at
. This endpoint successfully returns
even if
is turned on, and the endpoint is being accessed from a non-validated host.


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

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.