---
title: "Deploy Apprise API | (Just Updated) Notification Gateway for AI Agents, Password Generated"
description: "Easy for LLM agents: no setup, generated login, one curl sends alerts."
category: "Automation"
url: https://railway.com/deploy/apprise-api-or-just-updated-notification
---

# Deploy Apprise API | (Just Updated) Notification Gateway for AI Agents, Password Generated

Easy for LLM agents: no setup, generated login, one curl sends alerts.

**[Deploy Apprise API | (Just Updated) Notification Gateway for AI Agents, Password Generated on Railway](https://railway.com/template/apprise-api-or-just-updated-notification)**

Machine-readable deploy manifest (JSON, validated by TemplateCI): https://railway.com/deploy/apprise-api-or-just-updated-notification/manifest.json

- **Creator:** SuperSlowSloth
- **Category:** Automation

## Template content

### apprise-api

- **Image:** caronc/apprise@sha256:0b2913b15c8eb47c25345722985ffbfae701326edde21909c205d296d62dd52c
- **Start command:** `/bin/sh -c 'export HTTP_PORT=$PORT APPRISE_AUTH_REQUIRED=yes APPRISE_USER=admin APPRISE_STATEFUL_MODE=simple APPRISE_TRUSTED_ORIGINS="https://$RAILWAY_PUBLIC_DOMAIN"; echo "[railway] apprise uid=$(id -u) config_owner=$(stat -c %u:%g /config) port=$PORT"; exec /opt/apprise/webapp/supervisord-startup'`
- **Health check:** /login
- **Public domain:** Yes

## Documentation

# Deploy and Host Apprise API on Railway

Apprise API is easy for an LLM agent to use: it deploys with no manual step, the credentials are generated for you, the contract below lists every URL and variable name, and one `curl` call sends a notification to any of 100+ services (Slack, Discord, Telegram, email, ntfy, webhooks and more).

Apprise API is a self-hosted gateway that turns one HTTP call into a notification on any of those services. This template runs the official image with a persistent volume, a generated password, and a public HTTPS endpoint. Stock Apprise API ships with no authentication; this template turns it on from the first boot.

## About Hosting Apprise API

This template runs the official `caronc/apprise` image (pinned by digest). Configuration saved through the API lives on a volume mounted at `/config`, so saved notification targets survive redeploys. HTTP Basic auth is enabled at boot: the username is `admin` and the password is the `APPRISE_PASSWORD` variable, generated at deploy time and stable across redeploys. Unauthenticated requests get 401 on every API route. The server binds to Railway's `$PORT`, and the start command logs the owner of `/config` at boot so the volume permissions are visible in the deploy log (the image chowns the mount itself).

Agent contract:

- Base URL variable: `APPRISE_URL` (`https://`)
- Private host variable: `APPRISE_PRIVATE_HOST` (use `http://$APPRISE_PRIVATE_HOST:8080` from other services in the project)
- Username: `admin`
- Password variable: `APPRISE_PASSWORD`
- Health path: `/login` (open, returns 200; every API route returns 401 without credentials)
- Stateless notify: `POST /notify` with form fields `urls` and `body`
- Stateful mode (simple): `POST /add/` saves URLs under a key, `POST /notify/` sends to them

```bash
curl -s -u admin:$APPRISE_PASSWORD -X POST "$APPRISE_URL/notify" \
  -d "urls=jsons://postman-echo.com/post" -d "title=Deploy done" -d "body=Build 42 finished"
```

Save a target once, notify by key afterwards:

```bash
curl -s -u admin:$APPRISE_PASSWORD -X POST "$APPRISE_URL/add/ops" -d "urls=jsons://postman-echo.com/post"
curl -s -u admin:$APPRISE_PASSWORD -X POST "$APPRISE_URL/notify/ops" -d "body=Hello from the agent"
```

## Why Deploy Apprise API on Railway?

Railway is a singular platform to deploy your infrastructure stack. Railway will host your infrastructure so you don't have to deal with configuration, while allowing you to vertically and horizontally scale it.

By deploying Apprise API on Railway, you are one step closer to supporting a complete full-stack application with minimal burden. Host your servers, databases, AI agents, and more on Railway.

- **Easy for an LLM agent to use** — no manual step to deploy, generated credentials, a machine-readable contract, one working call.
- **Secure by default** — the password is generated per deploy and unauthenticated calls get 401.
- **Saved targets survive redeploys** — the volume is preconfigured and verified with a write, redeploy, read.
- **Zero configuration** — no variables to fill in.

## Common Use Cases

- **Agent alerts** — let an AI agent or script notify a human on any channel with one POST.
- **CI and deploy notices** — fan one event out to Slack, Discord, Telegram or email.
- **One gateway for many apps** — services in the project post to the private host and never hold per-channel secrets.

## Dependencies for Apprise API Hosting

- A volume mounted at `/config` (included in this template).

### Deployment Dependencies

- [caronc/apprise-api](https://github.com/caronc/apprise-api) — upstream project
- [caronc/apprise on Docker Hub](https://hub.docker.com/r/caronc/apprise) — the pinned image this template deploys


## Similar templates

- [N8N Main + Worker](https://railway.com/deploy/n8n-main-worker) — Deploy and Host N8N with Inactive worker.
- [Evolution API with n8n](https://railway.com/deploy/evolution-api-with-n8n) — Automate WhatsApp workflows with Evolution API, n8n, and Postgres.
- [Postgres Backup](https://railway.com/deploy/postgres-s3-backups) — Cron-based PostgreSQL backup to bucket storage

Open this page in a browser: https://railway.com/deploy/apprise-api-or-just-updated-notification
