Skip to content

How to add custom routes

When deploying agents on the LangGraph platform, your server automatically exposes routes for creating runs and threads, interacting with the long-term memory store, managing configurable assistants, and other core functionality (see all default API endpoints).

You can add custom routes by providing your own Starlette app (including FastAPI, FastHTML and other compatible apps). You make LangGraph Platform aware of this by providing a path to the app in your langgraph.json configuration file. ("http": {"app": "path/to/app.py:app"}).

Defining a custom app object lets you add any routes you'd like, so you can do anything from adding a /login endpoint to writing an entire full-stack web-app, all deployed in a single LangGraph deployment.

Below is an example using FastAPI.

Python only

We currently only support custom authentication and authorization in Python deployments with langgraph-api>=0.0.26.

Create app

Starting from an existing LangGraph Platform application, add the following custom route code to your webapp.py file. If you are starting from scratch, you can create a new app from a template using the CLI.

langgraph new --template=new-langgraph-project-python my_new_project

Once you have a LangGraph project, add the following app code:

# ./src/agent/webapp.py
from fastapi import FastAPI

app = FastAPI()


@app.get("/hello")
def read_root():
    return {"Hello": "World"}

Configure langgraph.json

Add the following to your langgraph.json file. Make sure the path points to the app.py file you created above.

{
  "dependencies": ["."],
  "graphs": {
    "agent": "./src/agent/graph.py:graph"
  },
  "env": ".env",
  "http": {
    "app": "./src/agent/webapp.py:app"
  }
  // Other configuration options like auth, store, etc.
}

Start server

Test the server out locally:

langgraph dev --no-browser

If you navigate to localhost:2024/hello in your browser (2024 is the default development port), you should see the hello endpoint returning {"Hello": "World"}.

Shadowing default endpoints

The routes you create in the app are given priority over the system defaults, meaning you can shadow and redefine the behavior of any default endpoint.

Deploying

You can deploy this app as-is to the managed langgraph cloud or to your self-hosted platform.

Next steps

Now that you've added a custom route to your deployment, you can use this same technique to further customize how your server behaves, such as defining custom custom middleware and custom lifespan events.

Comments