Simply build and
manage REST APIs

Fusio is an open source API management platform which helps to build and manage REST APIs. Fusio provides all tools to quickly build an API from different data sources yet it is possible to create complete customized responses.

API analytics
Fusio monitors all API activities and shows them on a dashboard so you always know what is happening with your API.
Action handling
Fusio provides already many actions to handle common use cases. I.e. to execute SQL queries or send data into a message queue.
Schema definition
Fusio gives you the option to describe the data schema of the request and response in the flexible JsonSchema format.
Secure authorization
Fusio uses OAuth2 for API authorization. Each app can be limited to scopes to request only specific endpoints of the API.

App powered

Fusio provides already some apps which help you to solve a specific use case. These apps are written in javascript and connect directly to the Fusio API.

The developer app provides a basic developer portal where new developers can register and create new apps which can connect to your API.

Since it is a simple javascript app it is easy possible to customize the look and feel. It can also be used as starting point to integrate Fusio into an existing app.

The documentation app shows all available endpoints of the API. It provides also a way to test each API endpoint.

Through this app new developers can quickly get an overview about all available endpoints and can directly start to build new apps.

Easy customizable

Behind every route and request method there is an action which produces the response. If the provided actions do not solve your problem it is easy possible to develop custom actions to build the desired response. All custom actions can be simply shared through composer.


namespace Fusio\Custom\Action;

use Fusio\Engine\ActionAbstract;
use Fusio\Engine\ContextInterface;
use Fusio\Engine\Form\BuilderInterface;
use Fusio\Engine\Form\ElementFactoryInterface;
use Fusio\Engine\ParametersInterface;
use Fusio\Engine\RequestInterface;

class AcmeAction extends ActionAbstract
    public function getName()
        return 'Acme-Action';

    public function handle(RequestInterface $request, ParametersInterface $configuration, ContextInterface $context)
        // @TODO handle request and return response

        return $this->response->build(200, [], [
            'message' => $configuration->get('message'),

    public function configure(BuilderInterface $builder, ElementFactoryInterface $elementFactory)
        $builder->add($elementFactory->newInput('message', 'Message', 'text', 'Message of the day'));