# run_site_cron

Source: https://modulify.ai/docs/api/scheduled-jobs/run-site-cron

Fires one scheduled job on a site immediately, without waiting for its schedule.

- Title: Run a scheduled job now
- Scope: `config:write`
- Access: Makes changes
- Endpoint: `POST /v1/run_site_cron`

It runs even when the job is switched off, and it does whatever the job is configured to do, including calling external URLs, so the tool tells the client to run it only when you ask.

If the job is already running, nothing starts and the call is refused with `This cron is already running. Try again once it finishes!` Otherwise the call succeeds whether the request itself succeeded or failed, with the outcome in the returned run status. A run started by hand is recorded in the history without moving the job's last run or its failure count. See [Scheduled jobs](https://modulify.ai/docs/automations/scheduled-jobs#run-pause-and-edit).

## Request

Call it with a `POST` to `https://api.modulify.ai/v1/run_site_cron`, sending the inputs below as a JSON object. The token needs the `config:write` scope.

It makes changes, so send an [Idempotency-Key](https://modulify.ai/docs/api/idempotency) header whenever you might retry it. A retry with the same key gets the first answer back instead of running again.

```bash
curl -X POST https://api.modulify.ai/v1/run_site_cron \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"projectId":"PROJECT_ID","cronId":"CRON_ID"}'
```

Over MCP, the same method is the [run_site_cron tool](https://modulify.ai/docs/mcp/scheduled-jobs/run-site-cron).

## Inputs

| Input | Type | Required | Description |
| --- | --- | --- | --- |
| `projectId` | string | Yes | The site id. |
| `cronId` | string | Yes | The job to run. |

## Response

Every call answers with the [JSON envelope](https://modulify.ai/docs/api/requests-and-responses#the-response) of `success`, `message`, `data`, `code` and `version`. `data` holds the result described above, and on a method that returns a total, `count` carries it. The [response headers](https://modulify.ai/docs/api/requests-and-responses#headers-on-every-method-call) carry the call's `X-Request-Id` and what is left of your per-minute budget in `X-RateLimit-Limit`, `X-RateLimit-Remaining` and `X-RateLimit-Reset`. [Errors](https://modulify.ai/docs/api/errors) explains every status code a call can answer with.