{"openapi":"3.1.0","info":{"title":"RenderLog API","version":"2026-05-04","description":"Public API for one-off renders, saved Check Suite runs, jobs, runs and artifacts. Workspace setup stays in the dashboard at launch."},"servers":[{"url":"https://renderlog.com","description":"Production"}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer"}}},"tags":[{"name":"Render API","description":"Create one-off renders by GET or POST. GET is convenient. POST is recommended for sensitive values."},{"name":"Check Runs","description":"Start saved Check Suites or one Check Case from CI, deploy hooks or internal tools."},{"name":"Results","description":"Poll jobs, inspect runs and download generated artifacts."}],"paths":{"/api/render":{"get":{"tags":["Render API"],"operationId":"getRender","summary":"Render by URL","description":"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.","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Job","content":{"application/json":{"schema":{"type":"object","additionalProperties":true},"examples":{"default":{"value":{"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"}]}]}}}}}},"401":{"description":"Missing or invalid API token."},"422":{"description":"Request validation failed."}},"parameters":[{"name":"url","in":"query","required":true,"description":"Target URL.","schema":{"type":"string"}},{"name":"format","in":"query","required":false,"description":"png, jpeg, webp, pdf, html or markdown.","schema":{"type":"string","default":"png"}},{"name":"width","in":"query","required":false,"description":"Viewport width in CSS pixels.","schema":{"type":"string","default":"1366"}},{"name":"height","in":"query","required":false,"description":"Viewport height in CSS pixels.","schema":{"type":"string","default":"768"}},{"name":"dpr","in":"query","required":false,"description":"Device scale factor from 1 to 3.","schema":{"type":"string","default":"1"}},{"name":"selector","in":"query","required":false,"description":"CSS selector for element capture.","schema":{"type":"string"}},{"name":"fullPage","in":"query","required":false,"description":"Set true for full-page capture.","schema":{"type":"string","default":"false"}}]},"post":{"tags":["Render API"],"operationId":"postRender","summary":"Render with body","description":"Starts a render with full settings such as headers, cookies, HTML, Markdown, flow steps, storage and failure rules.","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Job","content":{"application/json":{"schema":{"type":"object","additionalProperties":true},"examples":{"default":{"value":{"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"}]}]}}}}}},"401":{"description":"Missing or invalid API token."},"422":{"description":"Request validation failed."}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["url"],"properties":{"url":{"description":"Page URL to render. Required unless you send HTML or Markdown content."},"format":{"description":"Result format: png, jpeg, webp, pdf, html, markdown, file or webm.","default":"png"},"headers":{"description":"Extra request headers. Use POST for secrets.","default":"{}"},"cookies":{"description":"Cookies sent before opening the page.","default":"[]"},"failureRules":{"description":"Rules that mark a result as bad, such as CAPTCHA, Cloudflare challenge or missing selector.","default":"[]"},"async":{"description":"Return immediately and poll GET /api/jobs/{id} when the result may take longer.","default":"false"}},"additionalProperties":true},"examples":{"default":{"value":{"url":"https://example.com/account","format":"png","headers":{"X-RenderLog-Access":"secret"},"failureRules":[{"type":"preset","preset":"cloudflare_challenge"},{"type":"selector_missing","selector":"#app"}]}}}}}}}},"/api/check-suites/{id}/runs":{"post":{"tags":["Check Runs"],"operationId":"postCheckSuitesIdRuns","summary":"Run suite","description":"Starts all active Check Cases in a saved suite. Use labels for branch, build or environment context.","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Job","content":{"application/json":{"schema":{"type":"object","additionalProperties":true},"examples":{"default":{"value":{"id":"job_01J","status":"queued","result":null}}}}}},"401":{"description":"Missing or invalid API token."},"422":{"description":"Request validation failed."}},"parameters":[{"name":"id","in":"path","required":true,"description":"Check Suite id.","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":[],"properties":{"format":{"description":"Result format for every Check Case in this run.","default":"png"},"labels":{"description":"Key/value labels for filtering later, such as branch, build or environment.","default":"{}"},"delaySeconds":{"description":"Wait before starting the run. Useful after deploys that need warm-up time.","default":"0"},"async":{"description":"Return immediately and poll GET /api/jobs/{id}.","default":"false"}},"additionalProperties":true},"examples":{"default":{"value":{"format":"png","labels":{"environment":"production","build":"142","commit":"8f4a7f2"},"delaySeconds":30}}}}}}}},"/api/check-cases/{id}/runs":{"post":{"tags":["Check Runs"],"operationId":"postCheckCasesIdRuns","summary":"Run one Check Case","description":"Starts one saved target. Use this when a deploy changed only one page or component.","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Job","content":{"application/json":{"schema":{"type":"object","additionalProperties":true},"examples":{"default":{"value":{"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}]}}}}}},"401":{"description":"Missing or invalid API token."},"422":{"description":"Request validation failed."}},"parameters":[{"name":"id","in":"path","required":true,"description":"Check Case id.","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":[],"properties":{"format":{"description":"Result format for this Check Case.","default":"png"},"labels":{"description":"Key/value labels for filtering later.","default":"{}"},"delaySeconds":{"description":"Wait before starting the run.","default":"0"}},"additionalProperties":true},"examples":{"default":{"value":{"format":"png","labels":{"branch":"main","commit":"8f4a7f2"},"delaySeconds":0}}}}}}}},"/api/runs":{"get":{"tags":["Results"],"operationId":"getRuns","summary":"List runs","description":"Returns recent Runs with labels, artifacts and billing state.","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Runs","content":{"application/json":{"schema":{"type":"object","additionalProperties":true},"examples":{"default":{"value":{"runs":[{"id":"run_01J","status":"passed","format":"png","billable":true,"bytes":128420}]}}}}}},"401":{"description":"Missing or invalid API token."},"422":{"description":"Request validation failed."}}}},"/api/jobs/{id}":{"get":{"tags":["Results"],"operationId":"getJobsId","summary":"Get job","description":"Returns status and result rows for one render or suite run.","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Job","content":{"application/json":{"schema":{"type":"object","additionalProperties":true},"examples":{"default":{"value":{"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"}]}]}}}}}},"401":{"description":"Missing or invalid API token."},"422":{"description":"Request validation failed."}},"parameters":[{"name":"id","in":"path","required":true,"description":"Job id returned when you start a render or Check Suite run.","schema":{"type":"string"}}]}},"/api/runs/{id}":{"get":{"tags":["Results"],"operationId":"getRunsId","summary":"Get Run","description":"Returns status, labels and artifact links for one run.","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Run","content":{"application/json":{"schema":{"type":"object","additionalProperties":true},"examples":{"default":{"value":{"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"}]}}}}}},"401":{"description":"Missing or invalid API token."},"422":{"description":"Request validation failed."}},"parameters":[{"name":"id","in":"path","required":true,"description":"Run id.","schema":{"type":"string"}}]}},"/api/runs/{id}/artifacts/{artifactId}":{"get":{"tags":["Results"],"operationId":"getRunsIdArtifactsArtifactId","summary":"Download artifact","description":"Downloads a generated screenshot, PDF, HTML, Markdown, file or video artifact.","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Artifact","content":{"application/json":{"schema":{"type":"string"},"examples":{"default":{"value":"Binary artifact response with the stored content type."}}}}},"401":{"description":"Missing or invalid API token."},"422":{"description":"Request validation failed."}},"parameters":[{"name":"id","in":"path","required":true,"description":"Run id.","schema":{"type":"string"}},{"name":"artifactId","in":"path","required":true,"description":"Artifact id.","schema":{"type":"string"}}]}}}}