---
title: "Create or update a cron schedule"
method: POST
path: "/api/queue/{project_id}/schedule"
tags: ["Queue"]
---

# Create or update a cron schedule

`POST /api/queue/{project_id}/schedule`

## Request

- Base URL: `https://core.blink.new`
- URL: `https://core.blink.new/api/queue/{project_id}/schedule`
- Auth: HTTP bearer

Create or upsert a named cron schedule. If a schedule with the same `name` already exists, it is atomically replaced. Billed at 0.001 credits per create or update. Pro+ required (50 schedules max on Pro, 200 on Max, unlimited on Team).

## Path parameters

- `project_id` string, required

## Request body

- object
  - `name` string, required: Schedule name — also used as the task name delivered to your handler. Must be unique per project.
  - `cron` string, required: Standard 5-field cron expression
  - `payload` object: Arbitrary JSON passed to the handler on each tick
  - `options` object
    - `timezone` string: IANA timezone for cron evaluation
    - `retries` integer: Max retry attempts per tick

## Response `201`

Schedule created

- object
  - `scheduleId` string
  - `name` string
  - `cron` string
  - `timezone` string

## Other responses

- `400`: Missing name or cron
- `401`: Authentication required or invalid API key
- `402`: Insufficient credits
- `429`: Schedule limit exceeded for this plan

---

[API](https://skmtc.dev/blink/apis/blink-apis.md) - [All operations](https://skmtc.dev/blink/apis/blink-apis/llms.txt) - [OpenAPI document](https://skmtc.dev/blink/apis/blink-apis/revisions/4c59c706078e?raw)
