1. Get Authorized
The alarm API uses one bearer token stored as the secret Quave ONE environment variable ALARM_API_TOKEN. A client with proper access can retrieve it through Quave ONE MCP or API by identifying the account, app, and app environment, then requesting secrets.
| Account | filipenevola / KPADFfTBDQnk8J2Yv |
|---|---|
| App | alarm / dTWKedL4Jy7ddAtX4 |
| Environment | production / y6ryL8CppL84tk6f6 |
| Secret | ALARM_API_TOKEN |
Do not paste the token in chat, URLs, docs, logs, or committed files. Keep it in memory, a secret manager, or the current process environment.
2. Trigger Now
For an immediate alarm, omit scheduledAt. The server records the alarm immediately and expires it after ttlSeconds, defaulting to 900 seconds.
export ALARM_API_TOKEN="<value from authorized Quave ONE MCP/API access>"
curl -fsS -X POST https://alarm.quave.ai/api/alarms \
-H "Authorization: Bearer $ALARM_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"title": "Codex precisa de voce",
"body": "Filipe, olha o Codex: preciso da sua decisao para continuar.",
"severity": "critical",
"link": "https://chatgpt.com/codex",
"ttlSeconds": 900
}'
3. Schedule With Time Zone
For local wall-clock scheduling, send scheduledAt as YYYY-MM-DDTHH:mm:ss plus an IANA timeZone. Filipe's default is America/Campo_Grande, currently UTC-4. If timeZone is omitted for a local timestamp, the server defaults to America/Campo_Grande.
Best practice for agents: always include timeZone: "America/Campo_Grande" when scheduling by Filipe's local time. Use an explicit offset or Z when scheduling in absolute UTC time.
curl -fsS -X POST https://alarm.quave.ai/api/alarms \
-H "Authorization: Bearer $ALARM_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"title": "Follow-up",
"body": "Filipe, olha o Codex: horario combinado para revisar.",
"severity": "critical",
"link": "https://chatgpt.com/codex",
"scheduledAt": "YYYY-MM-DDT09:00:00",
"timeZone": "America/Campo_Grande",
"ttlSeconds": 900
}'
Absolute timestamp alternative
{
"scheduledAt": "YYYY-MM-DDT13:00:00Z",
"ttlSeconds": 900
}
Relative delay alternative
{
"delaySeconds": 300,
"body": "Filipe, olha o Codex em cinco minutos."
}
4. Payload Contract
| Field | Required | Notes |
|---|---|---|
title | No | Defaults to Quave Alarm. |
body | No | Use one concise sentence with the destination and blocker. |
severity | No | info, warning, or critical. Defaults to critical. |
link | No | Optional http:// or https:// destination. The native app shows an open action. url is accepted as an alias. |
scheduledAt | No | ISO timestamp. Local values use timeZone or the default America/Campo_Grande. |
timeZone | No | Valid IANA time zone. Recommended for local scheduling. |
delaySeconds | No | Relative scheduling. Do not combine with scheduledAt. |
ttlSeconds | No | Alarm delivery window after the scheduled time. Clamped from 30 seconds to 24 hours. |
deviceId | No | Omit to page every registered device. |