Skip to content

Your account

Create and remove price alerts

List, create, and remove price alerts. Up to 20 active per account.

GET lists your alerts, newest first, active and triggered alike. POST arms one. DELETE ?id=N removes one by id, idempotently. A cron sweep evaluates active alerts and fires each once, notifying you when the price crosses your threshold.

GET, POST, DELETE /api/alerts · requires a Privy bearer token, 401 without one. Base URL, rate limits, and error shapes: conventions.

Field Type Required Description
symbol string (1 to 12 chars) yes A ticker from the 95-asset catalog, per GET /api/market.
direction "above" or "below" yes Fire when the price rises above or falls below threshold.
threshold number (> 0, ≤ 10000000) yes The USD price that arms it.

DELETE takes one query parameter, id, a positive integer from GET.

Field Type Description
id number Stable id, used for delete.
symbol string The ticker the alert watches.
direction "above" | "below" Which crossing fires it.
threshold number The USD price that arms it.
active boolean true until it fires, then false.
createdAt number Unix seconds when created.
triggeredAt number | null Unix seconds when it fired, else null.
Terminal window
# list
curl https://monvera.best/api/alerts -H "Authorization: Bearer $MONVERA_TOKEN"
# arm: notify when NVDA falls below $120
curl -X POST https://monvera.best/api/alerts \
-H "Authorization: Bearer $MONVERA_TOKEN" \
-H "Content-Type: application/json" \
-d '{"symbol":"NVDA","direction":"below","threshold":120}'
# remove
curl -X DELETE "https://monvera.best/api/alerts?id=42" \
-H "Authorization: Bearer $MONVERA_TOKEN"

POST and DELETE return {"ok":true}. GET returns:

{
"alerts": [
{ "id": 42, "symbol": "AAPL", "direction": "above", "threshold": 250,
"active": true, "createdAt": 1751884800, "triggeredAt": null }
]
}
Status Body When
400 {"error":"Invalid alert."} POST body fails validation: bad direction, non-positive threshold, or symbol over 12 chars.
400 {"error":"Unknown symbol."} symbol is not one of the 95 catalog assets.
400 {"error":"Alert limit reached (20)."} You already hold 20 active alerts.
400 {"error":"Invalid id."} DELETE id is missing or not a positive integer.

The 20-alert cap counts only alerts where active is true, so a triggered alert frees a slot.

© 2026 Aibora · Documentation interface. Original Monvera materials retain their upstream attribution andMIT license.