This page guides you through the steps of configuring your Litestar application to work with Apitally. If you don’t have an account yet, now would be a good time to sign up.

Once you’re done with this guide, you will be able to:

  • Monitor traffic to your application on our simple dashboard
  • Keep track of errors, response times and payload sizes
  • Understand how individual API consumers use your application
  • Monitor your application’s uptime and receive alerts when it’s down

Create app

To get started, create a new app in the Apitally dashboard and select as your framework.

Create app

Here you can also configure the environments (e.g. prod and dev) for your app, or simply accept the defaults.

Take a note of the client ID displayed after submitting. You will need it in the next step.

Add plugin

Next, install the Apitally client library in your project with the extra.

pip install "apitally[litestar]"

Add the Apitally plugin to your Litestar application and provide the client_id for your app. You’ll find the client_id on the Setup instructions page for your app in the Apitally dashboard, which is displayed immediately after creating the app.

from litestar import Litestar
from apitally.litestar import ApitallyPlugin

apitally_plugin = ApitallyPlugin(
    client_id="your-client-id",
    env="dev",  # or "prod" etc.
)
app = Litestar(route_handlers=[...], plugins=[apitally_plugin])

Deploy your application with these changes, or restart if you're testing locally.

At this point your application is sending data to Apitally and you are able to monitor requests, errors, response times etc. However, you aren't able to filter by consumers yet.

Identify consumers

In order to analyze API traffic by consumers in Apitally, your application must identify which consumers requests are coming from.

How you identify API consumers depends on your application and use case. If your application uses authentication, it would make sense to use the authenticated identity (e.g. username) as the consumer identifier.

To associate requests with consumers, provide a to the ApitallyPlugin that takes a Request object as an argument and returns a consumer identifier or None.

Alternatively, you can set the consumer_identifier attribute on the request.state object, for example in a before_request life cycle hook or directly in your route handler functions.

from litestar.connection import Request
from apitally.litestar import ApitallyPlugin

def identify_consumer(request: Request) -> str | None:
    if request.user.is_authenticated:
        return request.user.identity
    return None

apitally_plugin = ApitallyPlugin(
    client_id="your-client-id",
    env="dev",  # or "prod" etc.
    identify_consumer_callback=identify_consumer,
)

The consumer identifier should be a string that uniquely identifies the consumer of the API, e.g. customer-123. Once the first request is received from a consumer, it will show up in the Apitally dashboard and you can assign a more descriptive name to it.

Now the Consumers page in the Apitally dashboard shows you information about all consumers that have made requests to your application. You can also filter insights on the Traffic page by consumer and better understand how each of them use your application and what issues they might be experiencing.