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

# Schedule multiple one-time renders



## OpenAPI

````yaml /api-reference/openapi.json post /render/bulk-scheduled
openapi: 3.1.0
info:
  title: Scrinly Browser API
  version: '2026-08-14'
  description: >-
    Public API for browser rendering, screenshots, structured extraction,
    grounded page-reconstruction blueprints, batches, jobs, crawls, schedules,
    and usage.
servers:
  - url: https://api.scrinly.com
    description: Production
security:
  - BearerAuth: []
tags:
  - name: Rendering
    description: Synchronous and asynchronous browser renders.
  - name: Batches
    description: Create multiple asynchronous render jobs.
  - name: Jobs
    description: Inspect and retry account-owned jobs.
  - name: Crawls
    description: Traverse a site and collect page results.
  - name: Schedules
    description: Create and manage account-owned render schedules.
  - name: Usage
    description: Read account credit usage.
paths:
  /render/bulk-scheduled:
    post:
      tags:
        - Schedules
      summary: Schedule multiple one-time renders
      operationId: createBulkScheduledRenders
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BulkScheduleRequest'
      responses:
        '200':
          description: All schedules created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BulkScheduleResponse'
        '207':
          description: Some schedules were rejected
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BulkScheduleResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
components:
  schemas:
    BulkScheduleRequest:
      type: object
      description: >-
        One `scheduleAt` per job, not one for the whole request — the point of
        this endpoint is scheduling different URLs for different times in one
        call.
      required:
        - jobs
      properties:
        jobs:
          type: array
          minItems: 1
          maxItems: 100
          items:
            allOf:
              - $ref: '#/components/schemas/RenderOptions'
              - type: object
                required:
                  - url
                  - scheduleAt
                properties:
                  url:
                    $ref: '#/components/schemas/HttpUrl'
                  scheduleAt:
                    type: string
                    format: date-time
                    description: Must be in the future.
    BulkScheduleResponse:
      type: object
      description: >-
        Per-item scheduling results. `success` is false on a 207: some jobs were
        rejected and the rest were scheduled.
      required:
        - success
        - total
        - scheduled
        - failed
        - jobs
      properties:
        success:
          type: boolean
          description: True only when every job was scheduled.
        total:
          type: integer
          minimum: 0
          description: Jobs submitted.
        scheduled:
          type: integer
          minimum: 0
        failed:
          type: integer
          minimum: 0
        jobs:
          type: array
          description: >-
            The jobs that were scheduled, each keyed back to its index in the
            request.
          items:
            type: object
            properties:
              index:
                type: integer
                minimum: 0
              id:
                type: string
                format: uuid
              url:
                $ref: '#/components/schemas/HttpUrl'
              scheduledFor:
                type: string
                format: date-time
        errors:
          type: array
          description: Present only when at least one job was rejected.
          items:
            type: object
            properties:
              index:
                type: integer
                minimum: 0
              url:
                type: string
              error:
                type: string
    RenderOptions:
      type: object
      properties:
        url:
          $ref: '#/components/schemas/HttpUrl'
        timeout:
          type: integer
          minimum: 10
          maximum: 60
          default: 30
        waitUntil:
          type: string
          enum:
            - load
            - domcontentloaded
            - networkidle0
            - networkidle2
          default: networkidle2
        width:
          type: integer
          minimum: 100
          maximum: 3840
        height:
          type: integer
          minimum: 100
          maximum: 2160
        device:
          type: string
          description: Supported device preset; overrides width and height.
        theme:
          type: string
          enum:
            - light
            - dark
          default: light
        blockCookieBanners:
          type: boolean
          default: true
        blockAds:
          type: boolean
          default: true
        blockChatWidgets:
          type: boolean
          default: true
        blockPopups:
          type: boolean
          default: true
        blockAccessibilityWidgets:
          type: boolean
          default: true
        hideSelectors:
          type: array
          items:
            type: string
            minLength: 1
        clickSelectors:
          type: array
          items:
            type: string
            minLength: 1
        scrollToElement:
          type: string
          minLength: 1
        headers:
          type: object
          additionalProperties:
            type: string
          writeOnly: true
        cookies:
          type: array
          items:
            $ref: '#/components/schemas/Cookie'
          writeOnly: true
        priority:
          type: string
          enum:
            - low
            - normal
            - high
          default: normal
        cache:
          type: boolean
          default: false
        webhookUrl:
          $ref: '#/components/schemas/HttpUrl'
        webhookSecret:
          type: string
          writeOnly: true
        store:
          type: boolean
          default: false
        storage_provider:
          type: string
          enum:
            - b2
            - s3
            - r2
        storage_path:
          type: string
        storage_bucket:
          type: string
        storage_endpoint:
          type: string
          format: uri
        storage_region:
          type: string
          default: auto
        storage_access_key_id:
          type: string
          writeOnly: true
        storage_secret_access_key:
          type: string
          writeOnly: true
        storage_public_domain:
          type: string
          format: uri
        storage_return_location:
          type: boolean
    HttpUrl:
      type: string
      format: uri
      maxLength: 2048
      pattern: ^https?://
    Error:
      type: object
      properties:
        success:
          type: boolean
          const: false
        error:
          type: string
        type:
          type: string
        message:
          type: string
        fields:
          type: array
          items:
            $ref: '#/components/schemas/FieldError'
    Cookie:
      type: object
      additionalProperties: false
      required:
        - name
        - value
      properties:
        name:
          type: string
          minLength: 1
        value:
          type: string
        domain:
          type: string
        path:
          type: string
        expires:
          type: number
        httpOnly:
          type: boolean
        secure:
          type: boolean
        sameSite:
          type: string
          enum:
            - Strict
            - Lax
            - None
    FieldError:
      type: object
      properties:
        field:
          type: string
        message:
          type: string
      required:
        - field
        - message
  responses:
    BadRequest:
      description: Invalid request
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    Unauthorized:
      description: Missing, unknown, or revoked API key
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      bearerFormat: Scrinly API key
      description: Customer API key from the Scrinly dashboard.

````