# 402utils Cron Next Occurrences

> 402utils Cron Next Occurrences is a paid API for AI agents from 402utils.com, paid per call via x402, $0.002/call, status unknown (last checked 2026-09-16).

Returns the next N occurrences of a cron expression in a specified IANA time zone, with DST-aware scheduling and full ISO 8601 timestamps.

## Facts

- Endpoint: GET https://402utils.com/v1/cron-next
- Price: $0.002/call
- Payment: x402
- Status: unknown
- Last checked: 2026-09-16
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/402utils-cron-next-occurrences-b15a0a7d
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_nzqL6Ki81bDxxIdbUVlfD

Status and success rate cover calls made through Zero and Zero's own probes. Third-party monitors may report differently.

## How to call it through Zero

Zero handles the 402 payment challenge and records the run. With the Zero CLI installed (`npm i -g @zeroxyz/cli`):

```sh
zero fetch --capability 402utils-cron-next-occurrences-b15a0a7d
```

Example prompt: What are the next 10 times that the cron expression '0 9 * * 1-5' will fire, starting now, in the America/New_York timezone?

## When to prefer this

Use this endpoint when you need to preview, debug, or schedule based on a cron expression and require DST-aware results in a specific IANA timezone. It supports the extended croner dialect (5-7 fields, seconds, year, L/W/# modifiers, named months/days, @aliases), making it more expressive than basic 5-field cron parsers. Prefer it over general-purpose scheduling APIs when you only need occurrence calculation without side effects.

## Known failure modes

- Invalid cron expression → 400 error naming the offending field
- Unsupported or misspelled IANA timezone → 400 error
- count out of range (below 1 or above 50) → 400 error
- Malformed ISO 8601 'from' parameter → 400 error
- Missing required 'expr' query parameter → 400 error

## How this service works

Next occurrences of a cron expression in any IANA time zone, DST-aware via the runtime's ICU tzdb (times skipped by DST shift forward by the gap; ambiguous times fire once). Dialect (croner): 5-7 fields with optional seconds and year, ranges, steps, lists, JAN-DEC/SUN-SAT names, L, W, #, ? and @daily-style aliases. Each occurrence is returned as local ISO with offset plus UTC. Bad expression → 400 naming the offending field.

## Output

A JSON object containing the echoed expression, timezone, start instant, occurrence count, and an array of occurrences each with a local ISO timestamp (with UTC offset) and a UTC ISO timestamp. If fewer occurrences exist than requested, a note field is included.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "$schema": "https://json-schema.org/draft/2020-12/schema",
 "required": [
  "input"
 ],
 "properties": {
  "input": {
   "type": "object",
   "required": [
    "type",
    "method"
   ],
   "properties": {
    "type": {
     "type": "string",
     "const": "http"
    },
    "method": {
     "enum": [
      "GET"
     ],
     "type": "string"
    },
    "queryParams": {
     "type": "object",
     "required": [
      "expr"
     ],
     "properties": {
      "tz": {
       "type": "string",
       "description": "IANA zone for evaluation (default UTC)."
      },
      "expr": {
       "type": "string",
       "description": "Cron expression, e.g. */15 9-17 * * 1-5."
      },
      "from": {
       "type": "string",
       "description": "ISO 8601 start instant, exclusive (default now). Without an offset it is wall time in `tz`."
      },
      "count": {
       "type": "integer",
       "description": "Occurrences to return, 1-50 (default 5)."
      }
     },
     "description": "Query params. `expr` is required; the rest have defaults."
    }
   },
   "additionalProperties": false
  },
  "output": {
   "type": "object",
   "required": [
    "type"
   ],
   "properties": {
    "type": {
     "type": "string"
    },
    "example": {
     "type": "object",
     "required": [
      "expr",
      "timezone",
      "from",
      "count",
      "occurrences"
     ],
     "properties": {
      "expr": {
       "type": "string"
      },
      "from": {
       "type": "string",
       "description": "The start instant in `timezone`, ISO with offset."
      },
      "note": {
       "type": "string",
       "description": "Present when fewer occurrences exist than requested."
      },
      "count": {
       "type": "integer",
       "description": "Number of occurrences actually returned."
      },
      "timezone": {
       "type": "string"
      },
      "occurrences": {
       "type": "array",
       "items": {
        "type": "object",
        "required": [
         "local",
         "utc"
        ],
        "properties": {
         "utc": {
          "type": "string"
         },
         "local": {
          "type": "string",
          "description": "ISO in `timezone`, with offset."
         }
        }
       }
      }
     },
     "additionalProperties": false
    }
   }
  }
 }
}
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "example": {
  "expr": "*/15 9-17 * * 1-5",
  "from": "2026-07-03T18:50:00+02:00",
  "count": 2,
  "timezone": "Europe/Paris",
  "occurrences": [
   {
    "utc": "2026-07-06T07:00:00.000Z",
    "local": "2026-07-06T09:00:00+02:00"
   },
   {
    "utc": "2026-07-06T07:15:00.000Z",
    "local": "2026-07-06T09:15:00+02:00"
   }
  ]
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/402utils-cron-next-occurrences-b15a0a7d/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from 402utils.com](https://www.zero.xyz/host/402utils.com/llms.txt)
