Apprise API, Ported to Go
  • Go 98.4%
  • Dockerfile 1.1%
  • Makefile 0.5%
Find a file
Kohei Watanabe 76f4447ac6
All checks were successful
release / forgejo (push) Successful in 21s
release / docker (push) Successful in 1m13s
test / main (push) Successful in 4s
add release workflow
2026-06-07 23:34:57 +09:00
.forgejo/workflows add release workflow 2026-06-07 23:34:57 +09:00
internal stateless 2026-06-07 21:05:30 +09:00
testdata create apprize project 2026-06-07 20:55:31 +09:00
.dockerignore stateless 2026-06-07 21:05:30 +09:00
.gitignore stateless 2026-06-07 21:05:30 +09:00
Dockerfile stateless 2026-06-07 21:05:30 +09:00
go.mod stateless 2026-06-07 21:05:30 +09:00
go.sum stateless 2026-06-07 21:05:30 +09:00
goreleaser.yml add release workflow 2026-06-07 23:34:57 +09:00
LICENSE create apprize project 2026-06-07 20:55:31 +09:00
main.go stateless 2026-06-07 21:05:30 +09:00
Makefile create apprize project 2026-06-07 20:55:31 +09:00
mise.toml create apprize project 2026-06-07 20:55:31 +09:00
README.md stateless 2026-06-07 21:05:30 +09:00
renovate.json add test workflow and update renovate config 2026-06-07 21:39:13 +09:00

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}, and GET /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; /status reports attach_lock=true.
  • No recursion-header propagation — inbound X-Apprise-Recursion-Count is enforced, but it is not injected into outbound requests.
  • /details is simplified — returns supported schemas and version, not per-service templates.
  • No web UI — API only.

License

GNU AGPL-3.0