> ## 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 & scheduling

> Automate your agent to run on a schedule, trigger it manually, or call it from an external system via the API.

## What is a job?

A job is a saved, repeatable version of an agent run. Instead of opening the chat and typing the same question each week, you define the question once as a job — and Interact runs it automatically for you.

Jobs can be triggered in three ways:

<CardGroup cols={3}>
  <Card title="Scheduled" icon="clock">
    Runs automatically on a cron schedule — daily, weekly, monthly, or any custom interval.
  </Card>

  <Card title="Manual" icon="hand-pointer">
    Run at any time with a single click from the Interact interface.
  </Card>

  <Card title="API" icon="code">
    Triggered by an external system — for example, after a data pipeline finishes loading.
  </Card>
</CardGroup>

## Generating PDF reports

One of the most powerful uses of jobs is having your agent produce a **formatted, PDF-exportable report** on a schedule — no manual effort required.

When you include the `create_report` instruction in your job prompt, the agent structures its output as a branded report with sections, tables, charts, and highlights. The report appears in a dedicated panel alongside the chat and can be exported to PDF with one click.

**Example job prompt:**

> "Analyse paid search performance for the past 7 days. Create a report with an executive summary, a table of top campaigns by ROAS, a breakdown by market, and key recommendations. Highlight any campaigns where CPA exceeded the target."

Each scheduled run produces a fresh report, automatically stored in the job's history. Share the report with stakeholders, export it as PDF, or use it as a recurring Monday morning briefing.

<Tip>
  Writing the prompt once for a recurring report is one of the fastest time-saves Interact offers. Set it up once, and a polished report is waiting in your inbox every week.
</Tip>

## Creating a job

<Steps>
  <Step title="Open an agent">
    From the sidebar, click **Agents** and select the agent you want to schedule.
  </Step>

  <Step title="Go to the Jobs tab">
    Inside the agent, click the **Jobs** tab and then **Create job**.
  </Step>

  <Step title="Give the job a name">
    Use something descriptive, like *"Weekly Campaign Performance Report"*.
  </Step>

  <Step title="Write the job prompt">
    This is the question the agent will answer each time the job runs. Write it as you would in the chat:

    > "Analyse campaign performance for the past 7 days. Include impressions, clicks, spend, conversions, and ROAS by campaign. Highlight any campaigns where ROAS dropped below 2."
  </Step>

  <Step title="Set visibility">
    Choose who can see the job's results:

    * **Private** — only you
    * **Organisation** — all members of your workspace
  </Step>
</Steps>

## Scheduling a job

To enable automatic scheduling, toggle **Enable schedule** in the job settings.

### Cron expressions

Interact uses standard cron syntax. The format is:

| 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>

### Timezone

Jobs run relative to your organisation's configured timezone. Check **Settings → Organisation** to confirm or update this.

## Running a job manually

You can run any job at any time from the **Jobs** tab, regardless of its schedule. Click **Run now** next to the job.

This is useful for:

* Testing a job before putting it on schedule
* Running the analysis on demand for a stakeholder presentation
* Re-running a job that failed due to a temporary issue

## Triggering jobs via the API

To trigger a job from an external system, use the REST API:

```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"
```

You can find your `job_id` in the job settings page URL. API keys are created in **Settings → API**.

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

## Parameterised runs

Jobs can accept **parameters** that change what the job analyses without changing the job definition itself. For example, a job that analyses a specific market can take `market` as a parameter:

| Parameter | Values           |
| --------- | ---------------- |
| `market`  | `NL`, `BE`, `DE` |

When you run such a job, you can provide one value (single run) or multiple values at once (fan-out run). A fan-out creates one parallel chat result per value — you'd get three separate results, one per market.

## Preventing duplicate runs

If a scheduled job is still running when the next scheduled time arrives, Interact skips the new run and logs a warning. This prevents duplicate results and conflicting resource usage.

## Job history and results

Every job run creates a **chat** — a full record of the questions asked, queries run, and results returned. Browse run history from the **Jobs** tab by clicking on any job.

From there, you can:

* View any past result
* See which runs succeeded or failed
* Re-run any previous run manually

### Job run chats are read-only

Chats created by a job run (scheduled or API-triggered) are **read-only**. They represent a fixed, reproducible snapshot of what the agent returned at that point in time — you can't accidentally alter the result by continuing the conversation.

If you want to ask follow-up questions based on a job result, use the **personal follow-up chat** feature (see below).

## Personal follow-up chat

When viewing a read-only job run chat, the input area shows a **Start Follow-up Chat** button. Clicking it creates a new, editable copy of the chat — including all messages from the original run — that is private to you.

From there, you can continue the conversation, dig deeper into the results, or explore a different angle without affecting the original job result.

A **Show source** link in the follow-up chat header takes you back to the original job run at any time.

If you've already created a follow-up for a particular run, a **Go to follow-up chat** button appears alongside the **New Follow-up Chat** button so you can pick up where you left off.

## Notifications on job completion

Set up a notification channel to receive an alert when a job completes — or when it fails. Supported channels: email, Slack, and Microsoft Teams.

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