Newsletter
Join the Community
Subscribe to our newsletter for the latest news and updates
Browsable web APIs for Flask.

A quick and easy way to generate markup for mailto links without having to worry about the annoying formatting.
Flask API is a Python library that extends Flask to serve browsable, content-negotiated web APIs, letting view functions return lists and dictionaries that render as JSON or an interactive HTML page.
Flask API is a drop-in replacement for Flask that provides an implementation of browsable APIs similar to what Django REST framework offers. It accepts the same routing and view function patterns as Flask, but adds automatic response rendering based on the client's Accept header. The library requires Python 3.6+ and Flask 1.1+, and is distributed on PyPI as Flask-API. It was created by Tom Christie, and is currently maintained by Jace Browning in maintenance mode.
app = Flask(__name__) with app = FlaskAPI(__name__) to enable API behavior without rewriting existing route logic.request.data automatically parses JSON and form-encoded bodies, so view functions read cleanly from one attribute.list or dict directly; Flask API serializes it to the negotiated format.status constants (e.g., HTTP_201_CREATED, HTTP_204_NO_CONTENT) and a NotFound exception to map HTTP errors.Install via pip install Flask-API, then import FlaskAPI and initialize with app = FlaskAPI(__name__). Define routes with the normal Flask decorator, and return a list or dict from the view — content negotiation automatically determines whether to serialize as JSON or render the browsable HTML interface.
Flask API is a free, open-source package distributed on PyPI, installable with pip. No pricing tiers or usage limits are mentioned in the project documentation.
Run pip install Flask-API. The package requires Python 3.6 or newer and Flask 1.1 or newer to function.
Yes, it is a drop-in replacement. Only the app initialization changes to FlaskAPI, while existing @app.route views continue to work. Returning a list or dict automatically gets serialized.
request.data returns the parsed request body, supporting both JSON and form-urlencoded payloads by default. This removes the need to manually parse incoming data in each view.
The original author has moved on to API Star, but the maintainer Jace Browning still reviews and accepts passing pull requests. Expect slower feature development but continued bug-fix support.
