API documentation

Run visual checks from CI, tools and webhooks.

RenderLog public API covers one-off renders, saved Check Suite runs, jobs, runs and artifacts. Workspace setup stays in the dashboard at launch.

Base URL

https://renderlog.com

Endpoints

8

Auth

Bearer

Quickstart

Start a Check Suite run

Create a token in workspace settings, run a saved suite from CI and poll the job until it completes. Token creation, suite setup, storage and notification destinations are dashboard workflows, not public API endpoints at launch.

Download OpenAPI spec
Create runcURL
curl -X POST https://renderlog.com/api/check-suites/suite_01J/runs \
  -H "Authorization: Bearer rl_live_xxx" \
  -H "Content-Type: application/json" \
  -d '{
    "format": "png",
    "labels": {
      "branch": "main",
      "commit": "8f4a7f2"
    }
  }'
Poll jobcURL
curl https://renderlog.com/api/jobs/job_01J \
  -H "Authorization: Bearer rl_live_xxx"

Use cases

Start with the API path that matches the job

Use the dashboard for setup and reuse the API for work that should run from CI, deploy hooks or backend jobs.

Authentication

API tokens are workspace-scoped, so requests do not need a workspace id. Create tokens in Settings, choose narrow scopes and use separate tokens for GET URLs that may be copied into logs or browser history.

Authorization: Bearer rl_live_xxx

Billing rules

A run is billable only when it succeeds and returns a real result. Failed or bad runs without a useful artifact are not billable.

Supported public outputs: screenshot, PDF, HTML, Markdown and generated file. Video is async and priced separately when enabled.

Methods

GET or POST

Both methods can start a render. GET is easy to share for simple URL renders. POST is the better default for sensitive or large requests.

GET

GET is convenient

Use GET for shareable render URLs and simple query parameters. If a URL carries sensitive values, use a narrow short-lived key.

curl "https://renderlog.com/api/render?url=https%3A%2F%2Fexample.com&format=png&width=1366&height=768&dpr=1&selector=%23app" \
  -H "Authorization: Bearer rl_live_xxx"
POST

POST is safer for secrets

Use POST for headers, cookies, HTML, Markdown, longer flow steps, storage settings and webhooks.

curl -X POST https://renderlog.com/api/render \
  -H "Authorization: Bearer rl_live_xxx" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://example.com/account",
    "format": "png",
    "headers": { "X-RenderLog-Access": "secret" },
    "failureRules": [
      { "type": "preset", "preset": "cloudflare_challenge" },
      { "type": "selector_missing", "selector": "#app" }
    ]
  }'

Render API

Create one-off renders by GET or POST. GET is convenient. POST is recommended for sensitive values.

GET/api/render

Render by URL

Starts a URL-based render from query parameters. Sensitive values in URLs can appear in logs, browser history and analytics. Use a narrow short-lived token when you intentionally send them through GET.

API token

Job

{
  "id": "job_01J",
  "status": "passed",
  "result": [
    {
      "id": "run_01J",
      "status": "passed",
      "format": "png",
      "billable": true,
      "artifacts": [
        {
          "id": "artifact_01J",
          "url": "/api/runs/run_01J/artifacts/artifact_01J",
          "contentType": "image/png"
        }
      ]
    }
  ]
}

Path and query parameters

urlqueryRequiredTarget URL.
formatqueryOptionalpng, jpeg, webp, pdf, html or markdown. Default: png
widthqueryOptionalViewport width in CSS pixels. Default: 1366
heightqueryOptionalViewport height in CSS pixels. Default: 768
dprqueryOptionalDevice scale factor from 1 to 3. Default: 1
selectorqueryOptionalCSS selector for element capture.
fullPagequeryOptionalSet true for full-page capture. Default: false

Response fields

idRequiredJob id. Use it with GET /api/jobs/{id}.
statusRequiredqueued, running, passed, failed or canceled.
resultOptionalNull while queued or running. Contains result rows after completion. Default: null
POST/api/render

Render with body

Starts a render with full settings such as headers, cookies, HTML, Markdown, flow steps, storage and failure rules.

API token

Render request

{
  "url": "https://example.com/account",
  "format": "png",
  "headers": {
    "X-RenderLog-Access": "secret"
  },
  "failureRules": [
    {
      "type": "preset",
      "preset": "cloudflare_challenge"
    },
    {
      "type": "selector_missing",
      "selector": "#app"
    }
  ]
}

Job

{
  "id": "job_01J",
  "status": "passed",
  "result": [
    {
      "id": "run_01J",
      "status": "passed",
      "format": "png",
      "billable": true,
      "artifacts": [
        {
          "id": "artifact_01J",
          "url": "/api/runs/run_01J/artifacts/artifact_01J",
          "contentType": "image/png"
        }
      ]
    }
  ]
}

Request fields

urlRequiredPage URL to render. Required unless you send HTML or Markdown content.
formatOptionalResult format: png, jpeg, webp, pdf, html, markdown, file or webm. Default: png
headersOptionalExtra request headers. Use POST for secrets. Default: {}
cookiesOptionalCookies sent before opening the page. Default: []
failureRulesOptionalRules that mark a result as bad, such as CAPTCHA, Cloudflare challenge or missing selector. Default: []
asyncOptionalReturn immediately and poll GET /api/jobs/{id} when the result may take longer. Default: false

Response fields

idRequiredJob id. Use it with GET /api/jobs/{id}.
statusRequiredqueued, running, passed, failed or canceled.

Check Runs

Start saved Check Suites or one Check Case from CI, deploy hooks or internal tools.

POST/api/check-suites/{id}/runs

Run suite

Starts all active Check Cases in a saved suite. Use labels for branch, build or environment context.

API token

Run suite

{
  "format": "png",
  "labels": {
    "environment": "production",
    "build": "142",
    "commit": "8f4a7f2"
  },
  "delaySeconds": 30
}

Job

{
  "id": "job_01J",
  "status": "queued",
  "result": null
}

Path and query parameters

idpathRequiredCheck Suite id.

Request fields

formatOptionalResult format for every Check Case in this run. Default: png
labelsOptionalKey/value labels for filtering later, such as branch, build or environment. Default: {}
delaySecondsOptionalWait before starting the run. Useful after deploys that need warm-up time. Default: 0
asyncOptionalReturn immediately and poll GET /api/jobs/{id}. Default: false
POST/api/check-cases/{id}/runs

Run one Check Case

Starts one saved target. Use this when a deploy changed only one page or component.

API token

Run case

{
  "format": "png",
  "labels": {
    "branch": "main",
    "commit": "8f4a7f2"
  },
  "delaySeconds": 0
}

Job

{
  "id": "job_01J",
  "status": "passed",
  "summary": {
    "total": 1,
    "passed": 1,
    "failed": 0,
    "errored": 0,
    "skipped": 0
  },
  "result": [
    {
      "id": "run_01J",
      "status": "passed",
      "format": "png",
      "billable": true
    }
  ]
}

Path and query parameters

idpathRequiredCheck Case id.

Request fields

formatOptionalResult format for this Check Case. Default: png
labelsOptionalKey/value labels for filtering later. Default: {}
delaySecondsOptionalWait before starting the run. Default: 0

Results

Poll jobs, inspect runs and download generated artifacts.

GET/api/runs

List runs

Returns recent Runs with labels, artifacts and billing state.

API token

Runs

{
  "runs": [
    {
      "id": "run_01J",
      "status": "passed",
      "format": "png",
      "billable": true,
      "bytes": 128420
    }
  ]
}
GET/api/jobs/{id}

Get job

Returns status and result rows for one render or suite run.

API token

Job

{
  "id": "job_01J",
  "status": "passed",
  "summary": {
    "total": 4,
    "passed": 4,
    "failed": 0,
    "errored": 0,
    "skipped": 0
  },
  "result": [
    {
      "id": "run_01J",
      "status": "passed",
      "format": "png",
      "billable": true,
      "artifacts": [
        {
          "id": "artifact_01J",
          "url": "/api/runs/run_01J/artifacts/artifact_01J",
          "contentType": "image/png"
        }
      ]
    }
  ]
}

Path and query parameters

idpathRequiredJob id returned when you start a render or Check Suite run.
GET/api/runs/{id}

Get Run

Returns status, labels and artifact links for one run.

API token

Run

{
  "id": "run_01J",
  "status": "passed",
  "format": "png",
  "billable": true,
  "artifacts": [
    {
      "id": "artifact_01J",
      "kind": "primary",
      "contentType": "image/png",
      "url": "/api/runs/run_01J/artifacts/artifact_01J"
    }
  ]
}

Path and query parameters

idpathRequiredRun id.
GET/api/runs/{id}/artifacts/{artifactId}

Download artifact

Downloads a generated screenshot, PDF, HTML, Markdown, file or video artifact.

API token

Artifact

"Binary artifact response with the stored content type."

Path and query parameters

idpathRequiredRun id.
artifactIdpathRequiredArtifact id.