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

# Schedules

> Create and manage recurring pentest schedules

export const ScarfPixel = () => <img referrerPolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=831669b6-b4bd-42cb-8832-2122c03e1d5f" alt="" width="1" height="1" style={{
  position: "absolute",
  width: 0,
  height: 0,
  opacity: 0,
  pointerEvents: "none"
}} />;

<ScarfPixel />

## List schedules

```bash theme={null}
curl -X GET "https://app.strix.ai/api/v1/schedules" \
  -H "Authorization: Bearer <YOUR_API_TOKEN>"
```

**Required scope:** `schedules:read`

## Create a schedule

A schedule requires `cron_expression`, `timezone`, and at least one target in `domain_ids`, `repository_ids`, `upload_ids`, or `internal_targets`.

```bash theme={null}
curl -X POST "https://app.strix.ai/api/v1/schedules" \
  -H "Authorization: Bearer <YOUR_API_TOKEN>" \
  -H "Idempotency-Key: schedule-$(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Weekly production pentest",
    "cron_expression": "0 9 * * 1",
    "timezone": "America/New_York",
    "domain_ids": ["<DOMAIN_ID>"],
    "also_run_now": false
  }'
```

**Required scope:** `schedules:write`

With `also_run_now: false`, this creates the recurring schedule without launching or charging a scan. With `also_run_now: true`, the immediate run goes through the same pre-launch credit check as an ordinary scan. If a non-Enterprise workspace lacks the estimated credits, the endpoint returns HTTP `402 Payment Required`; neither the schedule nor the immediate scan is created, and no credits are consumed. Enterprise scans are plan-included.

Set `supply_chain: true` for a free dependency scan schedule. Supply-chain schedules accept repository targets only and require the Enterprise Supply Chain entitlement, but their runs do not consume scan credits.

When `also_run_now` starts a billable scan, retain the `Idempotency-Key` and
reuse the exact request after an interrupted or retryable response. The key is
bound to the actor and request for 24 hours, so a retry cannot create or charge
a second immediate run. The CLI supplies this key automatically.

## Get schedule detail

```bash theme={null}
curl -X GET "https://app.strix.ai/api/v1/schedules/<SCHEDULE_ID>" \
  -H "Authorization: Bearer <YOUR_API_TOKEN>"
```

**Required scope:** `schedules:read`

## Get a schedule's editable configuration

This endpoint returns the full stored configuration of the schedule in a format that you can edit with PATCH. The configuration includes targets, prompts, test users, headers, scope, timing, notifications, and uploads. The response gives stored secrets (passwords, TOTP seeds, and header values) as metadata only, not in plaintext.

```bash theme={null}
curl -X GET "https://app.strix.ai/api/v1/schedules/<SCHEDULE_ID>/template" \
  -H "Authorization: Bearer <YOUR_API_TOKEN>"
```

**Required scope:** `schedules:read`

## Pause a schedule

```bash theme={null}
curl -X PATCH "https://app.strix.ai/api/v1/schedules/<SCHEDULE_ID>" \
  -H "Authorization: Bearer <YOUR_API_TOKEN>" \
  -H "Content-Type: application/json" \
  -d '{"action": "pause"}'
```

To resume, use `{"action": "resume"}`.

You can also update the schedule configuration (name, cron\_expression, timezone, targets) in the same PATCH request.

**Required scope:** `schedules:write`

## Delete a schedule

```bash theme={null}
curl -X DELETE "https://app.strix.ai/api/v1/schedules/<SCHEDULE_ID>" \
  -H "Authorization: Bearer <YOUR_API_TOKEN>"
```

**Required scope:** `schedules:write`

## Trigger a schedule immediately

Run a scheduled pentest configuration immediately, before the next cron interval:

```bash theme={null}
curl -X POST "https://app.strix.ai/api/v1/schedules/<SCHEDULE_ID>/trigger" \
  -H "Authorization: Bearer <YOUR_API_TOKEN>" \
  -H "Idempotency-Key: trigger-$(uuidgen)"
```

**Required scope:** `schedules:write`

The trigger uses the stored scope estimate. If a non-Enterprise workspace lacks enough credits, it returns HTTP `402 Payment Required`, creates no scan, and consumes no credits. The CLI reports this as exit code `5`. Enterprise runs are credit-exempt.

Recurring fires also check the wallet before launch. A run that cannot be funded is skipped rather than launched without a charge. If automatic top-up is enabled, Strix may first try the configured top-up policy; otherwise add credits before the next fire.

Manual triggers use the same 24-hour idempotency contract as scan creation.
Reuse the exact key and request after an ambiguous response. A delayed or
duplicate queue delivery is collapsed before billing or launch.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.