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

# Get account-owned job status



## OpenAPI

````yaml /api-reference/openapi.json get /status/{jobId}
openapi: 3.1.0
info:
  title: Scrinly Browser API
  version: 1.0.0
  description: >-
    Public screenshot, region, Visual Style Guide, visual diff, monitoring,
    batch, job-status, and usage API.
servers:
  - url: https://api.scrinly.com
    description: Production
security:
  - BearerAuth: []
tags:
  - name: Screenshots
  - name: Batches
  - name: Diffs
  - name: Jobs
  - name: Usage
  - name: Monitors
  - name: Recipients
paths:
  /status/{jobId}:
    get:
      tags:
        - Jobs
      summary: Get account-owned job status
      operationId: getJobStatus
      parameters:
        - $ref: '#/components/parameters/JobId'
      responses:
        '200':
          description: Job status
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JobStatus'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
components:
  parameters:
    JobId:
      name: jobId
      in: path
      required: true
      schema:
        type: string
        format: uuid
  schemas:
    JobStatus:
      type: object
      required:
        - id
        - status
        - progress
      properties:
        id:
          type: string
          format: uuid
        status:
          type: string
          enum:
            - queued
            - in_progress
            - completed
            - failed
        progress:
          type: integer
          minimum: 0
          maximum: 100
        result:
          oneOf:
            - $ref: '#/components/schemas/ScreenshotResponse'
            - $ref: '#/components/schemas/ScreenshotPartialResponse'
            - $ref: '#/components/schemas/DiffResponse'
            - $ref: '#/components/schemas/TransformSuccess'
            - $ref: '#/components/schemas/TransformBatch'
        error:
          $ref: '#/components/schemas/Error'
        createdAt:
          type: string
          format: date-time
        startedAt:
          type:
            - string
            - 'null'
          format: date-time
        completedAt:
          type:
            - string
            - 'null'
          format: date-time
    ScreenshotResponse:
      type: object
      required:
        - success
        - type
        - media
      properties:
        success:
          type: boolean
          const: true
        type:
          type: string
          const: screenshot
        screenshotId:
          type: string
          pattern: ^scr_[a-f0-9-]{36}$
          description: >-
            Opaque account-owned reference for newly completed stored captures.
            Historical results may omit it; no public lookup route is provided.
        referenceExpiresAt:
          type: string
          format: date-time
          description: >-
            Original reference expiry. Cache hits do not renew it; expiry does
            not delete the delivered image.
        url:
          type: string
          format: uri
        media:
          $ref: '#/components/schemas/Media'
        design:
          type: object
          additionalProperties: true
        regions:
          $ref: '#/components/schemas/Regions'
        styleGuide:
          $ref: '#/components/schemas/StyleGuide'
        credits:
          $ref: '#/components/schemas/Credits'
        renderTime:
          type: integer
        startedAt:
          type: string
          format: date-time
        completedAt:
          type: string
          format: date-time
    ScreenshotPartialResponse:
      allOf:
        - $ref: '#/components/schemas/ScreenshotResponse'
        - type: object
          required:
            - status
            - credits
          properties:
            status:
              type: string
              const: partial
            regions:
              oneOf:
                - $ref: '#/components/schemas/Regions'
                - type: 'null'
            regionError:
              $ref: '#/components/schemas/ComponentError'
            styleGuide:
              oneOf:
                - $ref: '#/components/schemas/StyleGuide'
                - type: 'null'
            styleGuideError:
              $ref: '#/components/schemas/ComponentError'
    DiffResponse:
      type: object
      required:
        - success
        - type
        - before
        - after
        - diff
        - credits
      properties:
        success:
          type: boolean
          const: true
        type:
          type: string
          const: diff
        before:
          type: object
          properties:
            width:
              type: integer
            height:
              type: integer
            contentType:
              type: string
            sha256:
              type: string
        after:
          type: object
          properties:
            width:
              type: integer
            height:
              type: integer
            contentType:
              type: string
            sha256:
              type: string
        diff:
          type: object
          properties:
            version:
              type: string
              const: screenshot-diff-v2
            mode:
              type: string
              enum:
                - pixel
                - perceptual
            visualization:
              type: string
              enum:
                - overlay
                - heatmap
                - mask
                - none
            changed:
              type: boolean
            changedPixels:
              type: integer
            comparedPixels:
              type: integer
            differenceRatio:
              type: number
            similarity:
              type: number
            comparisonCoverage:
              type: number
            changedBounds:
              type: array
              maxItems: 128
              items:
                allOf:
                  - $ref: '#/components/schemas/Bounds'
                  - type: object
                    properties:
                      status:
                        type: string
                        enum:
                          - changed
                          - added
                          - removed
                      coordinateSpace:
                        type: string
                        enum:
                          - before
                          - after
            boundsTruncated:
              type: boolean
            omittedBounds:
              type: integer
            regionMatching:
              type: object
              properties:
                status:
                  type: string
                  enum:
                    - available
                    - unavailable
            regions:
              type: array
              items:
                $ref: '#/components/schemas/DiffRegion'
        media:
          oneOf:
            - $ref: '#/components/schemas/Media'
            - type: 'null'
        credits:
          $ref: '#/components/schemas/Credits'
    TransformSuccess:
      type: object
      required:
        - success
        - type
        - assetId
        - screenshotId
        - source
        - executedPlan
        - provenance
        - media
        - credits
        - referenceExpiresAt
        - cacheHit
      properties:
        success:
          const: true
        type:
          const: transform
        assetId:
          type: string
          pattern: ^ast_
        screenshotId:
          type: string
          pattern: ^scr_
        source:
          type: object
          required:
            - type
            - bounds
          properties:
            type:
              enum:
                - screenshot
                - region
                - part
                - stored-part
                - bounds
            regionId:
              type: string
            partId:
              type: string
            bounds:
              $ref: '#/components/schemas/TransformBounds'
        executedPlan:
          type: array
          minItems: 1
          maxItems: 4
          items:
            type: object
            description: 'One executed step: `resize` or `format`.'
          description: >-
            Ordered crop/resize and optional encoding. Format may occur once,
            last. Otherwise retain source format, lossy quality 80.
        provenance:
          type: object
          required:
            - sourceSha256
            - sourceBounds
            - engine
            - outputSha256
          properties:
            sourceSha256:
              type: string
              pattern: ^[a-f0-9]{64}$
            sourceBounds:
              $ref: '#/components/schemas/TransformBounds'
            sourceKind:
              const: stored-part
            parentScreenshotSha256:
              type: string
              pattern: ^[a-f0-9]{64}$
            sourceCoordinateSpace:
              const: screenshot
            operationCoordinateSpace:
              const: stored-part
            outputSha256:
              type: string
              pattern: ^[a-f0-9]{64}$
            engine:
              type: object
              properties:
                backend:
                  const: browser-v1
                version:
                  const: screenshot-transform-v1
                browser:
                  type: string
                codec:
                  const: canvas-2d-v1
              required:
                - backend
                - version
                - browser
                - codec
              additionalProperties: false
        media:
          $ref: '#/components/schemas/TransformMedia'
        credits:
          $ref: '#/components/schemas/Credits'
        referenceExpiresAt:
          type: string
          format: date-time
        cacheHit:
          type: boolean
    TransformBatch:
      type: object
      required:
        - success
        - type
        - screenshotId
        - results
        - credits
      properties:
        success:
          type: boolean
        type:
          const: transform
        screenshotId:
          type: string
        results:
          type: array
          minItems: 1
          maxItems: 16
          items:
            allOf:
              - oneOf:
                  - $ref: '#/components/schemas/TransformSuccess'
                  - $ref: '#/components/schemas/Error'
              - type: object
                required:
                  - index
                properties:
                  index:
                    type: integer
                    minimum: 0
                    maximum: 15
        credits:
          $ref: '#/components/schemas/Credits'
        error:
          type: string
        code:
          type: string
        retryable:
          type: boolean
    Error:
      type: object
      required:
        - success
        - error
      properties:
        success:
          type: boolean
          const: false
        error:
          type: string
        type:
          type: string
        code:
          type: string
        retryable:
          type: boolean
        fields:
          type: array
          items:
            $ref: '#/components/schemas/ErrorField'
        credits:
          $ref: '#/components/schemas/Credits'
    Media:
      type: object
      required:
        - stored
        - url
        - contentType
      properties:
        stored:
          type: boolean
          const: true
        url:
          type: string
          format: uri
          description: Direct B2, S3, or R2 URL.
        key:
          type: string
        location:
          type: string
        contentType:
          type: string
          enum:
            - image/jpeg
            - image/png
        width:
          type: integer
        height:
          type: integer
        bytes:
          type: integer
        sha256:
          type: string
          pattern: ^[a-f0-9]{64}$
      additionalProperties: true
    Regions:
      type: object
      required:
        - version
        - coordinateSpace
        - screenshot
        - limits
        - items
        - coverage
      properties:
        version:
          type: string
          enum:
            - regions-v1
            - regions-v2
          description: >-
            New captures return regions-v2. Saved v1 manifests remain valid diff
            inputs, including mixed-version comparisons.
        coordinateSpace:
          type: string
          const: screenshot_pixels
        screenshot:
          type: object
          properties:
            width:
              type: integer
            height:
              type: integer
            sha256:
              type: string
          required:
            - width
            - height
            - sha256
        limits:
          type: object
          properties:
            maxRegionHeight:
              type: integer
              const: 1600
            maxAssets:
              type: integer
              const: 32
          required:
            - maxRegionHeight
            - maxAssets
        items:
          type: array
          maxItems: 32
          items:
            $ref: '#/components/schemas/Region'
        coverage:
          $ref: '#/components/schemas/Coverage'
    StyleGuide:
      type: object
      required:
        - version
        - summary
        - document
        - promptVersion
        - schemaVersion
        - projectionVersion
        - visionVersion
        - grounding
        - coverage
        - source
        - provider
        - usage
        - cache
      properties:
        version:
          type: string
          const: style-guide-v1
        summary:
          type: string
        document:
          type: string
          description: Fixed-heading Markdown.
        promptVersion:
          type: string
        schemaVersion:
          type: string
          const: style-guide-v1
        projectionVersion:
          type: string
        visionVersion:
          type: string
        sections:
          type: object
          additionalProperties:
            type: string
        grounding:
          type: object
          required:
            - status
            - unknownLiteralCount
          properties:
            status:
              type: string
              enum:
                - clean
                - flagged
            reason:
              type:
                - string
                - 'null'
            unknownLiteralCount:
              type: integer
              minimum: 0
            diagnostics:
              type: object
              additionalProperties: true
        coverage:
          $ref: '#/components/schemas/Coverage'
        source:
          type: object
          properties:
            screenshotSha256:
              type: string
            regionParts:
              type: array
              items:
                type: object
                properties:
                  id:
                    type: string
                  sha256:
                    type: string
                required:
                  - id
                  - sha256
          required:
            - screenshotSha256
            - regionParts
        provider:
          type: object
          properties:
            label:
              type: string
              const: openai
            model:
              type: string
              const: gpt-5.6-luna
            credentialMode:
              type: string
              enum:
                - platform
                - byok
            inputMode:
              type: string
              const: overview_and_region_crops
            dataResidency:
              type: string
            dataPolicy:
              type: object
              additionalProperties:
                type: string
            settings:
              type: object
              additionalProperties: true
            latencyMs:
              type: integer
            finishReason:
              type: string
          required:
            - label
            - model
            - credentialMode
            - inputMode
        usage:
          $ref: '#/components/schemas/TokenUsage'
        cache:
          type: object
          required:
            - hit
          properties:
            hit:
              type: boolean
    Credits:
      type: object
      required:
        - charged
        - refunded
        - net
      properties:
        charged:
          type: integer
          minimum: 0
        refunded:
          type: integer
          minimum: 0
        net:
          type: integer
          minimum: 0
    ComponentError:
      type: object
      required:
        - type
        - message
        - retryable
      properties:
        type:
          type: string
        message:
          type: string
        retryable:
          type: boolean
        reason:
          type: string
        unknownLiteralCount:
          type: integer
        missingRegionCount:
          type: integer
    Bounds:
      type: object
      required:
        - x
        - 'y'
        - width
        - height
      properties:
        x:
          type: integer
          minimum: 0
        'y':
          type: integer
          minimum: 0
        width:
          type: integer
          minimum: 1
        height:
          type: integer
          minimum: 1
    DiffRegion:
      type: object
      properties:
        status:
          type: string
          enum:
            - unchanged
            - changed
            - added
            - removed
        kind:
          type: string
        beforeId:
          type:
            - string
            - 'null'
        afterId:
          type:
            - string
            - 'null'
        differenceRatio:
          type: number
        similarity:
          type: number
        positionChanged:
          type: boolean
        sizeChanged:
          type: boolean
        bounds:
          $ref: '#/components/schemas/Bounds'
    TransformBounds:
      type: object
      properties:
        x:
          type: integer
          minimum: 0
        'y':
          type: integer
          minimum: 0
        width:
          type: integer
          minimum: 1
          maximum: 32768
        height:
          type: integer
          minimum: 1
          maximum: 32768
      required:
        - x
        - 'y'
        - width
        - height
      additionalProperties: false
    TransformMedia:
      type: object
      required:
        - stored
        - url
        - contentType
        - width
        - height
        - bytes
        - sha256
      properties:
        stored:
          type: boolean
          const: true
        url:
          type: string
          format: uri
          description: Direct B2, S3, or R2 URL.
        key:
          type: string
        location:
          type: string
        contentType:
          type: string
          enum:
            - image/jpeg
            - image/png
            - image/webp
        width:
          type: integer
        height:
          type: integer
        bytes:
          type: integer
        sha256:
          type: string
          pattern: ^[a-f0-9]{64}$
      additionalProperties: true
    ErrorField:
      type: object
      required:
        - field
        - message
      properties:
        field:
          type: string
        message:
          type: string
    Region:
      type: object
      required:
        - id
        - order
        - kind
        - label
        - confidence
        - evidenceKinds
        - bounds
        - parts
      properties:
        id:
          type: string
        order:
          type: integer
          minimum: 0
        kind:
          type: string
          enum:
            - navigation
            - hero
            - content
            - features
            - pricing
            - testimonials
            - faq
            - logos
            - cta
            - footer
        label:
          type: string
        confidence:
          type: string
          enum:
            - high
            - medium
            - low
        evidenceKinds:
          type: array
          items:
            type: string
        bounds:
          $ref: '#/components/schemas/Bounds'
        parts:
          type: array
          items:
            $ref: '#/components/schemas/RegionPart'
        spec:
          $ref: '#/components/schemas/RegionSpec'
    Coverage:
      type: object
      properties:
        ratio:
          type: number
          minimum: 0
          maximum: 1
        truncated:
          type: boolean
        omittedAssets:
          type: integer
          minimum: 0
        segmentationDegraded:
          type: boolean
          description: >-
            True when unresolved geometry fallback was needed. Included in new
            v2 captures; absent from historical v1 manifests.
        safeCuts:
          type: integer
          minimum: 0
        forcedCuts:
          type: integer
          minimum: 0
      additionalProperties: true
    TokenUsage:
      type: object
      properties:
        inputTokens:
          type: integer
        outputTokens:
          type: integer
        totalTokens:
          type: integer
        cacheHitTokens:
          type: integer
        cacheMissTokens:
          type: integer
        reasoningTokens:
          type: integer
        providerDetails:
          type: object
          additionalProperties:
            type: integer
    RegionPart:
      type: object
      required:
        - id
        - index
        - bounds
        - media
      properties:
        id:
          type: string
        index:
          type: integer
          minimum: 0
        bounds:
          $ref: '#/components/schemas/Bounds'
        media:
          $ref: '#/components/schemas/Media'
    RegionSpec:
      type: object
      required:
        - summary
        - claims
        - confidence
        - evidencePartIds
      properties:
        summary:
          type: string
        claims:
          type: array
          items:
            $ref: '#/components/schemas/StyleClaim'
        confidence:
          type: string
          enum:
            - high
            - medium
            - low
        evidencePartIds:
          type: array
          items:
            type: string
    StyleClaim:
      type: object
      required:
        - category
        - basis
        - statement
      properties:
        category:
          type: string
          enum:
            - visual_role
            - layout
            - hierarchy
            - color
            - typography
            - spacing
            - components
            - states
            - motion
            - responsive
        basis:
          type: string
          enum:
            - observed
            - inferred
        statement:
          type: string
  responses:
    Unauthorized:
      description: Invalid or missing Scrinly key
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    NotFound:
      description: Unknown or cross-account resource
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      bearerFormat: Scrinly API key

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.