API

Announcements

Announcements are short messages Reseam Manager and the website can show their users: incident notices, release notes, deprecation warnings. They live in SQLite on the API host. Reads are public and cached; writes require the admin token.

Payload

{
	"title": "Patch downloads are slow",
	"content": "Our mirror is catching up after the 1.0.50 release.",
	"tags": ["status"],
	"level": 1,
	"author": "reseam"
}
  • title: one line. Shown in lists. Required, non-empty.
  • content: longer text. Optional. Markdown is allowed; clients render it.
  • tags: array of strings. Optional. Tags are lowercased and trimmed server-side; duplicates are dropped.
  • level: integer 0, 1, 2, or 3. Optional, defaults to 0. Clients style higher levels more prominently.
  • author: display name for the writer. Optional.

Response shape

Every read and every successful write returns the full record:

{
	"id": 42,
	"author": "reseam",
	"title": "Patch downloads are slow",
	"content": "Our mirror is catching up after the 1.0.50 release.",
	"level": 1,
	"created_at": "2026-04-19T08:22:00.033Z",
	"archived_at": null,
	"tags": ["status"]
}

archived_at is null while the announcement is live and an ISO-8601 UTC timestamp once archived.

Create

curl -X POST https://api.reseam.app/v1/announcements \
	-H "Authorization: Bearer $ADMIN_TOKEN" \
	-H "Content-Type: application/json" \
	-d '{
		"title": "Patch downloads are slow",
		"content": "Our mirror is catching up after the 1.0.50 release.",
		"tags": ["status"],
		"level": 1
	}'

Returns 201 with the full record. id, created_at, and archived_at: null are filled in by the server.

Update

curl -X PATCH https://api.reseam.app/v1/announcements/42 \
	-H "Authorization: Bearer $ADMIN_TOKEN" \
	-H "Content-Type: application/json" \
	-d '{ "archived_at": "2026-04-19T12:00:00Z" }'

Only the fields you send are changed. Archive with archived_at set to an ISO timestamp; unarchive by setting it back to null. tags replaces the full tag set.

List

curl https://api.reseam.app/v1/announcements
curl "https://api.reseam.app/v1/announcements?tag=status"
curl "https://api.reseam.app/v1/announcements?archived=true"

GET /v1/announcements hides archived entries by default. Pass ?archived=true to include them. The tag query parameter is singular and matches on a single tag name (case-insensitive).

Delete

curl -X DELETE https://api.reseam.app/v1/announcements/42 \
	-H "Authorization: Bearer $ADMIN_TOKEN"

Returns { "ok": true }. Prefer archiving; deletes are permanent.

Errors

Status When
401 Missing or wrong bearer token.
404 No announcement with that id.
503 ADMIN_TOKEN not set on the server. Happens on read-only deploys.
Reseam Reseam © 2026 Reseam Team