> ## Documentation Index
> Fetch the complete documentation index at: https://docs.getinteract.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Jobs

> Jobs are scheduled or on-demand agent runs — they let you automate recurring analyses and reports.

## What is a job?

A **job** is a named, repeatable run of an agent. Instead of opening the chat and typing the same question every Monday morning, you define the question once as a job — and Interact takes care of running it.

Jobs can:

* Run automatically on a **cron schedule** (e.g. every weekday at 8:00 AM)
* Be triggered **manually** from the Interact UI at any time
* Be triggered **via the API** from an external system (e.g. your data pipeline)

## Job types

### Scheduled jobs

Scheduled jobs use a **cron expression** to define when to run. Interact supports standard cron syntax as well as some plain-language shortcuts:

| Expression       | Meaning                             |
| ---------------- | ----------------------------------- |
| `0 8 * * 1`      | Every Monday at 8:00 AM             |
| `0 9 * * 1-5`    | Weekdays at 9:00 AM                 |
| `0 8 1 * *`      | First day of every month at 8:00 AM |
| `@first-weekday` | First business day of every month   |

<Tip>
  Not familiar with cron syntax? Use [crontab.guru](https://crontab.guru) to build and test cron expressions in plain language.
</Tip>

### Manual jobs

You can run any job manually at any time from the **Jobs** tab in your agent settings. This is useful for:

* Testing a job before it goes on schedule
* One-off analyses you want to track in the job history
* Re-running a job that failed

### API-triggered jobs

Jobs can be triggered via the Interact REST API. This is useful when you want to kick off an analysis as part of a larger automation — for example, after a data pipeline finishes loading new data.

```bash theme={null}
curl -X POST https://interact.turntwo.com/api/agents/jobs/{job_id}/trigger \
  -H "X-API-Key: your_api_key" \
  -H "X-Organization-Id: your_org_id"
```

[Full API reference →](/api-reference/quickstart)

## Parameterised runs

Jobs can accept **parameters** — variables that change the query without changing the job definition. For example, a job that analyses a specific campaign can take `campaign_id` as a parameter so you can run it for different campaigns without duplicating the job.

You can define multiple parameter combinations and run them all at once (a **fan-out run**), creating one chat result per combination in parallel.

## Preventing duplicate runs

Interact prevents a job from running again if a previous run of the same job is still in progress. This avoids duplicated work and conflicting results if a run takes longer than expected.

## Job results

Each run of a job creates a **chat** — a permanent record of the questions asked, queries run, and results returned. You can browse past runs from the job's history view.

If you've set up a notification channel, Interact will send you an alert when a job completes (or fails).

[Set up notifications →](/org-settings/notifications/overview)

## Jobs vs. chat

|                   | Chat                        | Job                                |
| ----------------- | --------------------------- | ---------------------------------- |
| **Purpose**       | Ad-hoc exploration          | Recurring, automated analysis      |
| **Trigger**       | Manual (you type a message) | Schedule, manual, or API           |
| **History**       | Stored in chat history      | Stored as a run in the job history |
| **Notifications** | None                        | Optional (email, Slack, Teams)     |

[Learn how to create and schedule jobs →](/agents/jobs-scheduling)
