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

# Create Schedule

> Run an agent on a cron schedule.

Every time the schedule fires, the agent receives `message` as if a user had sent it. The schedule is active as soon as it is created.

`cron_expression` uses standard five-field cron syntax, evaluated in `timezone`. See [Cron expressions](/enterprise/api/scheduler/introduction#cron-expressions) for the format and examples.

To test the schedule without waiting for the next cron time, call [Trigger Schedule Now](/enterprise/api/scheduler/schedules/trigger).


## OpenAPI

````yaml openapi/scheduler.yaml POST /schedules/
openapi: 3.0.3
info:
  title: Lyzr Scheduler and Webhooks API
  version: 1.1.0
  description: >-
    Scheduler service for running Lyzr agents on cron schedules, triggering
    agents from external systems through signed webhooks, and calling arbitrary
    HTTP endpoints on a cron schedule.
servers:
  - url: https://scheduler.studio.lyzr.ai
security:
  - ApiKeyAuth: []
tags:
  - name: Schedules
    description: Run an agent on a cron schedule.
  - name: Agent Webhooks
    description: Create and manage webhook URLs that trigger an agent.
  - name: Webhook Trigger
    description: Public endpoint external services call to trigger an agent.
  - name: HTTP Schedules
    description: Call any HTTP endpoint on a cron schedule.
paths:
  /schedules/:
    post:
      tags:
        - Schedules
      summary: Create schedule
      description: Run an agent on a cron schedule.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ScheduleCreate'
      responses:
        '201':
          description: Schedule created.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ScheduleResponse'
        '403':
          $ref: '#/components/responses/Forbidden'
        '422':
          $ref: '#/components/responses/ValidationError'
components:
  schemas:
    ScheduleCreate:
      type: object
      required:
        - user_id
        - agent_id
        - cron_expression
      properties:
        user_id:
          type: string
          description: >-
            User ID the agent runs on behalf of. Used to scope the agent's
            session and memory.
          example: user@example.com
        agent_id:
          type: string
          description: ID of the agent to run.
          example: 66e9b0f2a1c3d4e5f6a7b8c9
        message:
          type: string
          default: ''
          description: Message sent to the agent on every run.
          example: Summarize yesterday's support tickets and flag anything urgent.
        cron_expression:
          $ref: '#/components/schemas/CronExpression'
        timezone:
          type: string
          default: UTC
          description: IANA timezone the cron expression is evaluated in.
          example: Asia/Kolkata
        max_retries:
          type: integer
          minimum: 0
          maximum: 5
          default: 3
          description: Number of retry attempts if a run fails (0-5).
        retry_delay:
          type: integer
          minimum: 10
          maximum: 3600
          default: 60
          description: Seconds to wait between retry attempts (10-3600).
    ScheduleResponse:
      type: object
      required:
        - id
        - user_id
        - agent_id
        - message
        - cron_expression
        - timezone
        - created_at
      properties:
        id:
          type: string
          description: Unique schedule ID.
          example: 66f1c2a9e4b0a1b2c3d4e5f6
        user_id:
          type: string
          example: user@example.com
        agent_id:
          type: string
          example: 66e9b0f2a1c3d4e5f6a7b8c9
        message:
          type: string
          example: Summarize yesterday's support tickets and flag anything urgent.
        cron_expression:
          type: string
          example: 0 9 * * 1-5
        timezone:
          type: string
          example: Asia/Kolkata
        max_retries:
          type: integer
          default: 3
        retry_delay:
          type: integer
          default: 60
        is_active:
          type: boolean
          default: true
          description: '`false` when the schedule is paused.'
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
          nullable: true
        next_run_time:
          type: string
          format: date-time
          nullable: true
          description: When the schedule will next fire. `null` while paused.
        last_run_at:
          type: string
          format: date-time
          nullable: true
        last_run_success:
          type: boolean
          nullable: true
          description: >-
            Outcome of the most recent run. `null` if the schedule has never
            run.
    CronExpression:
      type: string
      description: >-
        Five-field cron expression: `minute hour day month day_of_week`.
        Day-of-week follows standard cron numbering (0 or 7 = Sunday, 1 =
        Monday, ..., 6 = Saturday).
      example: 0 9 * * 1-5
    Error:
      type: object
      properties:
        detail:
          type: string
          example: Schedule not found
    HTTPValidationError:
      type: object
      properties:
        detail:
          type: array
          items:
            type: object
            properties:
              loc:
                type: array
                description: Path to the invalid field.
                items:
                  oneOf:
                    - type: string
                    - type: integer
              msg:
                type: string
                description: Human-readable error message.
              type:
                type: string
                description: Error type identifier.
  responses:
    Forbidden:
      description: The `x-api-key` header is missing or the key is invalid.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          examples:
            missing:
              summary: Missing API key
              value:
                detail: API key missing
            invalid:
              summary: Invalid API key
              value:
                detail: Invalid Permission
    ValidationError:
      description: The request failed validation. The body lists each invalid field.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/HTTPValidationError'
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: Lyzr API key. Required on every endpoint except Trigger Webhook.

````