Configuring the HTTP API

Configuring the HTTP API

Using Rasa’s HTTP API

Note

The instructions below are relevant for configuring how a model is run within a Docker container or for testing the HTTP API locally. If you want to deploy your assistant to users, see Deploying Your Rasa Assistant.

You can run a simple HTTP server that handles requests using your trained Rasa model with:

rasa run -m models --enable-api --log-file out.log

All the endpoints this API exposes are documented in HTTP API.

The different parameters are:

Rasa can load your model in three different ways:

  1. Fetch the model from a server (see Fetching Models from a Server), or
  2. Fetch the model from a remote storage (see Cloud Storage).
  3. Load the model specified via -m from your local storage system,

Rasa tries to load a model in the above mentioned order, i.e. it only tries to load your model from your local storage system if no model server and no remote storage were configured.

Fetching Models from a Server

You can configure the HTTP server to fetch models from another URL:

rasa run --enable-api --log-file out.log --endpoints my_endpoints.yml

The model server is specified in the endpoint configuration (my_endpoints.yml), where you specify the server URL Rasa regularly queries for zipped Rasa models:

models:
  url: http://my-server.com/models/default@latest
  wait_time_between_pulls: 10   # [optional](default: 100)

Note

If you want to pull the model just once from the server, set wait_time_between_pulls to None.

Configuring SSL / HTTPS

By default the Rasa server is using HTTP for its communication. To secure the communication with SSL, you need to provide a valid certificate and the corresponding private key file.

You can specify these files as part of the rasa run command:

rasa run --ssl-certificate myssl.crt --ssl-keyfile myssl.key

Security Considerations

We recommend to not expose the Rasa Server to the outside world, but rather connect to it from your backend over a private connection (e.g. between docker containers).

Nevertheless, there are two authentication methods built in:

Token Based Auth:

rasa run \
    -m models \
    --enable-api \
    --log-file out.log \
    --auth-token thisismysecret

Requests should pass the token, in our case thisismysecret, as a parameter:

$ curl -XGET localhost:5005/conversations/default/tracker?token=thisismysecret

JWT Based Auth:

rasa run \
    -m models \
    --enable-api \
    --log-file out.log \
    --jwt-secret thisismysecret

Your requests should have set a proper JWT header:

"Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWx0IjoxNTE2MjM5MDIyfQ.qdrr2_a7Sd80gmCWjnDomOGl8eZFVfKXA6jhncgRn-I"

Endpoint Configuration

To connect Rasa to other endpoints, you can specify an endpoint configuration within a YAML file. Then run Rasa with the flag --endpoints <path to endpoint configuration.yml>.

rasa run \
    --m <Rasa model> \
    --endpoints <path to endpoint configuration>.yml

Connecting a Tracker Store

To configure a tracker store within your endpoint configuration, see Tracker Stores.

Connecting an Event Broker

To configure an event broker within your endpoint configuration, see Event Brokers.