> ## 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 HTTP Schedule

> Call any URL on a cron schedule.

Use an HTTP schedule to call an external API, kick off a refresh job, or hit another Lyzr endpoint on a fixed cadence. For running an agent, use [Create Schedule](/enterprise/api/scheduler/schedules/create) instead.

If `body` is an object or array, it is sent as JSON. Any other value is sent as a raw string. `cron_expression` uses standard five-field cron syntax. See [Cron expressions](/enterprise/api/scheduler/introduction#cron-expressions).


## OpenAPI

````yaml openapi/scheduler.yaml POST /http-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:
  /http-schedules/:
    post:
      tags:
        - HTTP Schedules
      summary: Create HTTP schedule
      description: Call any URL on a cron schedule.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/HttpScheduleCreate'
      responses:
        '201':
          description: HTTP schedule created.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HttpScheduleResponse'
        '403':
          $ref: '#/components/responses/Forbidden'
        '422':
          $ref: '#/components/responses/ValidationError'
components:
  schemas:
    HttpScheduleCreate:
      type: object
      required:
        - url
        - cron_expression
      properties:
        url:
          type: string
          description: Absolute URL to call.
          example: https://api.example.com/reports/refresh
        method:
          type: string
          enum:
            - GET
            - POST
            - PUT
            - PATCH
            - DELETE
          default: POST
          description: HTTP method.
        headers:
          type: object
          additionalProperties:
            type: string
          description: >-
            Extra request headers, for example an API key for the target
            service.
          example:
            Authorization: Bearer TARGET_TOKEN
        body:
          description: >-
            Request body. Objects and arrays are sent as JSON; any other value
            is sent as a raw string.
          example:
            report: daily
        timeout_seconds:
          type: number
          minimum: 1
          maximum: 600
          default: 120
          description: Per-request timeout in seconds (1-600).
        cron_expression:
          $ref: '#/components/schemas/CronExpression'
        timezone:
          type: string
          default: UTC
          description: IANA timezone the cron expression is evaluated in.
        max_retries:
          type: integer
          minimum: 0
          maximum: 5
          default: 3
          description: Number of retry attempts if a request fails (0-5).
        retry_delay:
          type: integer
          minimum: 10
          maximum: 3600
          default: 60
          description: Seconds to wait between retry attempts (10-3600).
        label:
          type: string
          nullable: true
          description: Optional human-readable name for the schedule.
          example: Nightly report refresh
    HttpScheduleResponse:
      type: object
      required:
        - id
        - url
        - method
        - timeout_seconds
        - cron_expression
        - timezone
        - created_at
      properties:
        id:
          type: string
          example: 66f1c4d2e4b0a1b2c3d4e5f8
        url:
          type: string
          example: https://api.example.com/reports/refresh
        method:
          type: string
          example: POST
        headers:
          type: object
          additionalProperties:
            type: string
        body:
          description: Stored request body.
        timeout_seconds:
          type: number
          example: 120
        cron_expression:
          type: string
          example: 0 2 * * *
        timezone:
          type: string
          example: UTC
        max_retries:
          type: integer
          default: 3
        retry_delay:
          type: integer
          default: 60
        label:
          type: string
          nullable: true
          example: Nightly report refresh
        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
        last_run_status:
          type: integer
          nullable: true
          description: HTTP status code returned by the target on the most recent run.
        last_attempt_count:
          type: integer
          nullable: true
          description: Number of attempts the most recent run took.
    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.

````