Apprise API, Ported to Go
- Go 98.4%
- Dockerfile 1.1%
- Makefile 0.5%
| .forgejo/workflows | ||
| internal | ||
| testdata | ||
| .dockerignore | ||
| .gitignore | ||
| Dockerfile | ||
| go.mod | ||
| go.sum | ||
| goreleaser.yml | ||
| LICENSE | ||
| main.go | ||
| Makefile | ||
| mise.toml | ||
| README.md | ||
| renovate.json | ||
Apprize
A drop-in, single-binary reimplementation of the caronc/apprise-api HTTP API in Go. Speaks the same stateless routes and response shapes as Apprise API swagger.yaml v1.5.0, backed by unraid/apprise-go for delivery — pure Go, no cgo, no Python runtime.
Build & run
Requires Go 1.26+.
go build
./apprize --bind :8000
Docker
docker build -t apprize .
docker run --rm -p 8000:8000 apprize
The image runs apprize directly and defaults to:
APPRIZE_BIND=:8000
Configuration
Flags override environment variables. Names use the APPRIZE_ prefix; the
upstream HTTP_PORT is also honoured for the listen port.
| Env | Flag | Default | Purpose |
|---|---|---|---|
APPRIZE_BIND (or HTTP_PORT) |
--bind |
:8000 |
Listen address |
APPRIZE_API_KEY |
--api-key |
(none) | Enables simple auth only when set |
APPRIZE_STATELESS_URLS |
— | (none) | Default URLs for POST /notify |
APPRIZE_RECURSION_MAX |
— | 1 |
Inbound recursion limit |
APPRIZE_DENY_SERVICES |
— | (none) | Schemas to reject (comma/space separated) |
APPRIZE_ALLOW_SERVICES |
— | (none) | Allow-list of schemas (exclusive when set) |
API
| Method & path | Purpose |
|---|---|
GET /status |
Server status |
GET /details |
Version and supported schemas |
POST /notify |
Stateless notification |
Limitations
apprize intentionally diverges from upstream where apprise-go cannot match it, and omits the persistent-configuration half of the API entirely:
- No persistent config endpoints —
/add,/del,/get,/cfg,POST /notify/{key}, andGET /json/urls/{key}are not implemented. There is no storage layer; the server is fully stateless. - Attachments are not delivered — accepted then logged as unsupported;
/statusreportsattach_lock=true. - No recursion-header propagation — inbound
X-Apprise-Recursion-Countis enforced, but it is not injected into outbound requests. /detailsis simplified — returns supported schemas and version, not per-service templates.- No web UI — API only.