docs

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.

Start
ManualRun manually

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.

Start
ScheduleEvery 5 minutes

Schedule Configuration

Interval

Repeat on a fixed interval

Daily

Run once per day at a specific time. Great for morning market scans or end-of-day portfolio summaries.

Start
ScheduleDaily @ 09:00

Weekly

Run on a specific day of the week at a set time. Ideal for weekly portfolio rebalancing or recap reports.

Start
ScheduleMon @ 10:30

Monthly

Run on a specific day of the month. Useful for monthly performance reviews or billing-cycle alerts.

Start
Schedule15th @ 14:00

Custom (Cron)

For advanced users. Write a standard 5-field cron expression for full control over scheduling.

Start
ScheduleCron: */30 9-17 * * 1-5

Schedule Configuration

Cron Expression

Standard 5-field format: minute hour day month weekday

Common cron examples:

PatternMeaning
0 9 * * *Every day at 9:00 AM
*/15 * * * *Every 15 minutes
0 */4 * * *Every 4 hours
0 9 * * 1-5Weekdays at 9:00 AM
*/30 9-17 * * 1-5Every 30 min during market hours (Mon-Fri)
0 0 1 * *First day of every month at midnight

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:

  1. Toggle switch in the workflow header — click the switch next to the schedule description
  2. 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.

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.

Start
ManualWebhook

Generating a URL

  1. Open the workflow and select the Start node.
  2. In the trigger picker, choose Webhook.
  3. Click Generate webhook URL.
  4. 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:

EventWhen
execution_startedThe worker has picked up the job and begun running
execution_logA log line from a node — includes nodeId, level, message, timestamp
progressA node has finished — includes nodeId, nodeLabel, executed, total
execution_resultFinal 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.

Limits

ConstraintDefaultHow to change
Requests per minute, per token60WEBHOOK_RATE_LIMIT_PER_MINUTE env var
Concurrent runs of the same workflow1Not 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.

Next Steps

  • Workflows — learn more about building and running workflows
  • Nodes — explore all available node types
  • Sharing & Remixing — share your scheduled workflows with others