> ## 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.

# Submit a render batch



## OpenAPI

````yaml /api-reference/openapi.json post /render/batch
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/batch:
    post:
      tags:
        - Batches
      summary: Submit a render batch
      operationId: submitRenderBatch
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BatchRequest'
      responses:
        '200':
          $ref: '#/components/responses/BatchResult'
        '207':
          $ref: '#/components/responses/BatchResult'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '402':
          $ref: '#/components/responses/PaymentRequired'
components:
  schemas:
    BatchRequest:
      allOf:
        - $ref: '#/components/schemas/RenderOptions'
        - type: object
          required:
            - urls
          properties:
            urls:
              type: array
              minItems: 1
              maxItems: 100
              items:
                $ref: '#/components/schemas/HttpUrl'
            screenshot:
              type: boolean
              default: false
            format:
              type: string
              enum:
                - jpg
                - png
              default: jpg
            extractMarkdown:
              type: boolean
            extractHtml:
              type: boolean
            extractLinks:
              type: boolean
            extractStructure:
              type: boolean
    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?://
    BatchResponse:
      type: object
      required:
        - success
        - results
      properties:
        success:
          type: boolean
        results:
          type: array
          items:
            $ref: '#/components/schemas/BatchItem'
        credits:
          $ref: '#/components/schemas/Credits'
    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
    BatchItem:
      type: object
      properties:
        url:
          type: string
        success:
          type: boolean
        id:
          type: string
          format: uuid
        statusUrl:
          type: string
        batch:
          type: string
          description: Domain grouping on smart batches.
        error:
          type: string
      required:
        - url
        - success
    Credits:
      type: object
      required:
        - charged
        - refunded
        - net
      properties:
        charged:
          type: integer
          minimum: 0
        refunded:
          type: integer
          minimum: 0
        net:
          type: integer
          minimum: 0
    FieldError:
      type: object
      properties:
        field:
          type: string
        message:
          type: string
      required:
        - field
        - message
  responses:
    BatchResult:
      description: Per-item batch acceptance or validation results.
      headers:
        X-Credits-Charged:
          $ref: '#/components/headers/CreditsCharged'
        X-Credits-Refunded:
          $ref: '#/components/headers/CreditsRefunded'
        X-Credits-Remaining:
          $ref: '#/components/headers/CreditsRemaining'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/BatchResponse'
    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'
    PaymentRequired:
      description: Credit limit reached
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  headers:
    CreditsCharged:
      description: Credits charged before refunds.
      schema:
        type: integer
        minimum: 0
    CreditsRefunded:
      description: Credits refunded by this request.
      schema:
        type: integer
        minimum: 0
    CreditsRemaining:
      description: Credits left in the current account period.
      schema:
        type: integer
        minimum: 0
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      bearerFormat: Scrinly API key
      description: Customer API key from the Scrinly dashboard.

````