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

# Capture a screenshot



## OpenAPI

````yaml /api-reference/openapi.json get /render/screenshot
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/screenshot:
    get:
      tags:
        - Rendering
      summary: Capture a screenshot
      operationId: getScreenshot
      parameters:
        - $ref: '#/components/parameters/SnapshotUrl'
        - $ref: '#/components/parameters/Format'
        - $ref: '#/components/parameters/Quality'
        - $ref: '#/components/parameters/Width'
        - $ref: '#/components/parameters/Height'
        - $ref: '#/components/parameters/FullPage'
        - $ref: '#/components/parameters/Theme'
        - $ref: '#/components/parameters/Design'
        - $ref: '#/components/parameters/Async'
        - $ref: '#/components/parameters/Store'
        - $ref: '#/components/parameters/Timeout'
      responses:
        '200':
          $ref: '#/components/responses/ScreenshotResult'
        '202':
          $ref: '#/components/responses/JobAccepted'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '402':
          $ref: '#/components/responses/PaymentRequired'
        '403':
          $ref: '#/components/responses/Forbidden'
      security:
        - BearerAuth: []
        - LegacyQueryKey: []
components:
  parameters:
    SnapshotUrl:
      name: url
      in: query
      required: true
      schema:
        $ref: '#/components/schemas/HttpUrl'
    Format:
      name: format
      in: query
      schema:
        type: string
        enum:
          - jpg
          - png
        default: jpg
    Quality:
      name: quality
      in: query
      schema:
        type: integer
        minimum: 1
        maximum: 100
        default: 80
    Width:
      name: width
      in: query
      schema:
        type: integer
        minimum: 100
        maximum: 3840
        default: 1920
    Height:
      name: height
      in: query
      schema:
        type: integer
        minimum: 100
        maximum: 2160
        default: 1080
    FullPage:
      name: fullPage
      in: query
      schema:
        type: boolean
        default: false
    Theme:
      name: theme
      in: query
      schema:
        type: string
        enum:
          - light
          - dark
        default: light
    Design:
      name: design
      in: query
      schema:
        type: boolean
        default: false
    Async:
      name: async
      in: query
      schema:
        type: boolean
        default: false
    Store:
      name: store
      in: query
      schema:
        type: boolean
        default: false
    Timeout:
      name: timeout
      in: query
      schema:
        type: integer
        minimum: 10
        maximum: 60
        default: 30
  responses:
    ScreenshotResult:
      description: Raw image bytes, or JSON when storage or design extraction is enabled.
      headers:
        X-Credits-Charged:
          $ref: '#/components/headers/CreditsCharged'
        X-Credits-Remaining:
          $ref: '#/components/headers/CreditsRemaining'
      content:
        image/jpeg:
          schema:
            type: string
            contentEncoding: binary
        image/png:
          schema:
            type: string
            contentEncoding: binary
        application/json:
          schema:
            $ref: '#/components/schemas/ScreenshotStoredResponse'
    JobAccepted:
      description: Job accepted for asynchronous processing.
      headers:
        X-Credits-Charged:
          $ref: '#/components/headers/CreditsCharged'
        X-Credits-Remaining:
          $ref: '#/components/headers/CreditsRemaining'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/JobAccepted'
    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'
    Forbidden:
      description: Account is deactivated
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  schemas:
    HttpUrl:
      type: string
      format: uri
      maxLength: 2048
      pattern: ^https?://
    ScreenshotStoredResponse:
      type: object
      required:
        - success
        - type
        - url
        - media
        - renderTime
      properties:
        success:
          const: true
        type:
          const: screenshot
        url:
          $ref: '#/components/schemas/HttpUrl'
        media:
          $ref: '#/components/schemas/StoredMedia'
        design:
          $ref: '#/components/schemas/Design'
        renderTime:
          type: integer
          minimum: 0
    JobAccepted:
      type: object
      required:
        - success
        - id
        - status
        - statusUrl
      properties:
        success:
          const: true
        id:
          type: string
          format: uuid
        status:
          const: queued
        statusUrl:
          type: string
          examples:
            - /status/6a8bc66a-0000-4000-8000-000000000000
    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'
    StoredMedia:
      type: object
      required:
        - stored
        - url
      properties:
        stored:
          const: true
        url:
          type: string
          format: uri
        location:
          type: string
        contentType:
          type: string
          enum:
            - image/jpeg
            - image/png
    Design:
      type: object
      description: Deterministic extraction of authored tokens and observed design signals.
      properties:
        tokens:
          type: object
          additionalProperties: true
        color:
          type: object
          additionalProperties: true
        typography:
          type: object
          additionalProperties: true
        breakpoints:
          type: array
          items:
            type: object
            additionalProperties: true
        motion:
          type: object
          additionalProperties: true
        libraries:
          type: array
          items:
            type: object
            additionalProperties: true
        coverage:
          type: object
          additionalProperties: true
      additionalProperties: true
    FieldError:
      type: object
      properties:
        field:
          type: string
        message:
          type: string
      required:
        - field
        - message
  headers:
    CreditsCharged:
      description: Credits charged before refunds.
      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.
    LegacyQueryKey:
      type: apiKey
      in: query
      name: api_key
      description: >-
        Discouraged compatibility fallback. Query credentials can leak into
        histories, logs, proxies, and analytics.

````