Scheduling
Every workflow starts with a trigger — the event that kicks off execution. NickAI supports three trigger modes.
Manual
The default. Click the Play button in the editor toolbar whenever you want to run the workflow. Best for testing, one-off tasks, or workflows you trigger on demand.
Scheduled
Set your workflow to run automatically at recurring intervals. When you select Schedule as the trigger type, you get five scheduling options:
Interval
Repeat every N minutes, hours, or days. The most flexible option for high-frequency strategies.
Schedule Configuration
Interval
Repeat on a fixed interval
Minimum interval is 2 minutes is enforced on infrastructure level to prevent excessive API usage and resource abuse.
Daily
Run once per day at a specific time. Great for morning market scans or end-of-day portfolio summaries.
Weekly
Run on a specific day of the week at a set time. Ideal for weekly portfolio rebalancing or recap reports.
Monthly
Run on a specific day of the month. Useful for monthly performance reviews or billing-cycle alerts.
Custom (Cron)
For advanced users. Write a standard 5-field cron expression for full control over scheduling.
Schedule Configuration
Cron Expression
Standard 5-field format: minute hour day month weekday
Common cron examples:
| Pattern | Meaning |
|---|---|
0 9 * * * | Every day at 9:00 AM |
*/15 * * * * | Every 15 minutes |
0 */4 * * * | Every 4 hours |
0 9 * * 1-5 | Weekdays at 9:00 AM |
*/30 9-17 * * 1-5 | Every 30 min during market hours (Mon-Fri) |
0 0 1 * * | First day of every month at midnight |
All times are converted to UTC for execution. The system auto-detects your browser timezone and handles the conversion.
Enabling and Disabling
After configuring a schedule, you need to enable it for the workflow to run automatically.
There are two ways to toggle a schedule:
- Toggle switch in the workflow header — click the switch next to the schedule description
- Pause / Resume from the workflow dropdown menu on the dashboard
When enabled, the dashboard shows a countdown to the next scheduled run (e.g., "Scheduled in 2h 45m"). When paused, your schedule configuration is preserved — just re-enable when ready.
A workflow must be enabled for its schedule to be active. Saving a schedule configuration alone doesn't start automatic execution.
Webhook
Fire a workflow from any external system over HTTP. Set the Start node's trigger type to Webhook and NickAI generates a unique URL — POST to it and the workflow runs.
Generating a URL
- Open the workflow and select the Start node.
- In the trigger picker, choose Webhook.
- Click Generate webhook URL.
- Copy the URL — that's the only place it's shown in full.
You need the execute permission on the workflow to see or manage the URL. Viewers see the panel with a message explaining they don't have permission to view the webhook URL.
Calling the webhook
curl -X POST https://app.getnick.ai/api/webhooks/<your-token>
A successful call returns 202 Accepted immediately and includes the new execution's id plus a stream URL for live progress:
{
"executionId": "exe_abc123",
"streamUrl": "https://app.getnick.ai/api/webhooks/<your-token>/stream/exe_abc123"
}
Only POST is accepted — GET returns 405 so link previewers and scanners can't accidentally trigger a run.
Getting execution results
The streamUrl adapts to the execution's state — no need to poll or guess.
If the execution is still running, the endpoint returns a Server-Sent Events stream with live progress and logs:
curl -N https://app.getnick.ai/api/webhooks/<your-token>/stream/<executionId>
Events you'll see:
| Event | When |
|---|---|
execution_started | The worker has picked up the job and begun running |
execution_log | A log line from a node — includes nodeId, level, message, timestamp |
progress | A node has finished — includes nodeId, nodeLabel, executed, total |
execution_result | Final event with the complete results (see below) |
The stream auto-closes after execution_result. If the execution hasn't appeared within 30 seconds (invalid ID or the job was never queued), the stream sends an error event and closes.
If the execution has already finished, the endpoint returns a plain JSON response (not SSE) with the full results:
curl https://app.getnick.ai/api/webhooks/<your-token>/stream/<executionId>
{
"executionId": "exe_abc123",
"workflowId": "wfl_xyz789",
"status": "completed",
"duration": 4521,
"startedAt": "2025-01-15T09:00:00.000Z",
"completedAt": "2025-01-15T09:00:04.521Z",
"error": null,
"logs": [
{ "nodeId": "node_1", "level": "info", "message": "Fetching BTC price...", "timestamp": "..." }
],
"nodeData": [
{ "nodeId": "node_1", "inputs": {}, "outputs": { "price": 43250.00 } }
]
}
The execution_result SSE event (for live runs) carries the same payload, so you always get complete results regardless of when you connect.
Tip: You can open the streamUrl directly in a browser. If the run is done, you'll see JSON with the full results. If it's still going, the browser's native EventSource rendering shows live events as they arrive.
Limits
| Constraint | Default | How to change |
|---|---|---|
| Requests per minute, per token | 60 | WEBHOOK_RATE_LIMIT_PER_MINUTE env var |
| Concurrent runs of the same workflow | 1 | Not configurable — second call returns 409 |
The 429 response includes a Retry-After header and standard X-RateLimit-* headers; the 202 responses include the same X-RateLimit-* headers so callers can self-throttle.
Treat the webhook URL as a secret. Anyone who has it can trigger this workflow. There is no signing or HMAC — the URL itself is the credential. If you suspect it's leaked, click Regenerate in the Start node panel to invalidate it and produce a new one, or Revoke to disable webhook access entirely.
The POST body is currently ignored — workflows can't yet read incoming request data. Use the webhook as a "go now" trigger; the workflow does its own data fetching.
Next Steps
- Workflows — learn more about building and running workflows
- Nodes — explore all available node types
- Sharing & Remixing — share your scheduled workflows with others