Agent Automations API
The Agent Automations API lets you manage the same scheduled agent automations that are available in the Quave ONE dashboard: list options, create or edit automations, pause/resume, delete, run once, and inspect run history.
Make sure to read the Get Started document to understand authentication and base URLs.
Security and validation
- All endpoints require account membership for
accountId. - Automations are private to the user who created them; account membership does not expose another user's automations.
- Create and update use the same backend validation as the UI: cron expression validation, enabled MCP key ownership, accessible LLM provider key checks, contact point ownership checks, and delivery-mode validation.
- New and updated automations with
deliveryMode: "on-trigger"require a non-emptytriggerCondition; this prevents saving an empty conditional-notification setup. Existing legacy records remain readable so owners can repair them in the dashboard. - When called by MCP, the selected automation MCP key must have the same or fewer scopes than the calling MCP key. This prevents a limited MCP key from creating or inspecting automations that use a more powerful MCP key.
- Run lists return summary metadata only. Use the single-run endpoint for transcripts and step details.
includeToolResults=truefor run details can expose sensitive tool output, records a secret-decrypt audit event, and requiresquave:read:secretsfor MCP callers.
List agent library profiles
GET /agent/profiles?accountId=ACC_ID returns the full library catalog with
per-account eligibility and account-wide enabled state. Each profile includes
publishedAt, the publication timestamp of its current published revision.
To suggest the latest unused profiles, filter for eligible profiles with no
enabledAutomation, sort by publishedAt descending, then take the desired
number of results. The endpoint itself does not limit the catalog.
List create/edit options
curl -H 'Authorization: YOUR_TOKEN' \
'https://api.quave.cloud/api/public/v1/agent/automation-options?accountId=ACC_ID'
Returns enabled MCP key metadata, accessible LLM provider key metadata, contact points, delivery modes, run statuses, trigger sources, and cron presets. It never returns key plaintext.
Create an automation
curl -X POST \
-H 'Authorization: YOUR_TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"accountId": "ACC_ID",
"name": "Actionable production anomaly watcher",
"prompt": "Compare the last hour of production with the seven-day baseline. Trigger only when the finding has current impact, an evidence-backed immediate action, and a measurable recovery check.",
"triggerCondition": "Notify only for a new or escalated actionable production anomaly. Do not trigger on relative delta alone or a low-volume new error signature.",
"cronExpression": "0 * * * *",
"timezone": "UTC",
"mcpKeyId": "MCP_KEY_ID",
"llmProviderKeyId": "LLM_PROVIDER_KEY_ID",
"deliveryMode": "on-trigger",
"contactPointIds": ["CONTACT_POINT_ID"],
"enabled": true
}' \
https://api.quave.cloud/api/public/v1/agent/automation
Response:
{
"automationId": "AUTOMATION_ID",
"message": "Automation created successfully"
}
Fallback model
With your own OpenRouter or OpenAI-compatible provider key, you can set an optional
fallbackModelId. Automation runs give each model request up to 4 minutes.
When a request runs past that, the single retry asks fallbackModelId instead
of repeating the same slow request. To clear it, send an empty string on
update. The saved value is returned as llmFallbackModelId.
A failed run still reports the tokens, tool calls, cost, and steps it completed before the failure.
For a production-ready prompt with absolute metric and error-volume floors, deploy correlation, 24-hour deduplication, and a concise incident handoff, use the actionable anomaly watcher guide.
List automations
curl -H 'Authorization: YOUR_TOKEN' \
'https://api.quave.cloud/api/public/v1/agent/automations?accountId=ACC_ID&limit=50&sortBy=createdAt'
sortBy can be createdAt, lastRunAt, or name.
Get an automation
curl -H 'Authorization: YOUR_TOKEN' \
'https://api.quave.cloud/api/public/v1/agent/automation?accountId=ACC_ID&automationId=AUTOMATION_ID'
Update an automation
Send only the fields to change. Omitted fields are merged with the existing automation and then validated with the same backend logic used by the UI.
curl -X PATCH \
-H 'Authorization: YOUR_TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"accountId": "ACC_ID",
"automationId": "AUTOMATION_ID",
"cronExpression": "0 * * * *",
"enabled": true
}' \
https://api.quave.cloud/api/public/v1/agent/automation
Toggle or delete
curl -X POST \
-H 'Authorization: YOUR_TOKEN' \
-H 'Content-Type: application/json' \
-d '{ "accountId": "ACC_ID", "automationId": "AUTOMATION_ID", "enabled": false }' \
https://api.quave.cloud/api/public/v1/agent/automation/toggle
curl -X DELETE \
-H 'Authorization: YOUR_TOKEN' \
'https://api.quave.cloud/api/public/v1/agent/automation?accountId=ACC_ID&automationId=AUTOMATION_ID'
Run once and inspect runs
curl -X POST \
-H 'Authorization: YOUR_TOKEN' \
-H 'Content-Type: application/json' \
-d '{ "accountId": "ACC_ID", "automationId": "AUTOMATION_ID" }' \
https://api.quave.cloud/api/public/v1/agent/automation/run-once
Response includes jobId, which can be used to poll the resulting run:
{ "ok": true, "jobId": "JOB_ID" }
List runs:
curl -H 'Authorization: YOUR_TOKEN' \
'https://api.quave.cloud/api/public/v1/agent/automation-runs?accountId=ACC_ID&automationId=AUTOMATION_ID&limit=20'
Get one run by runId or jobId:
curl -H 'Authorization: YOUR_TOKEN' \
'https://api.quave.cloud/api/public/v1/agent/automation-run?accountId=ACC_ID&jobId=JOB_ID&includeSteps=true'