{"openapi":"3.1.0","info":{"title":"Shotlane API","version":"1.0.0","description":"Website screenshot and HTML-to-PDF API. Prepaid credits that never expire."},"servers":[{"url":"https://shotlane.dev"}],"security":[{"ApiKeyHeader":[]},{"ApiKeyQuery":[]}],"components":{"securitySchemes":{"ApiKeyHeader":{"type":"apiKey","in":"header","name":"X-API-Key"},"ApiKeyQuery":{"type":"apiKey","in":"query","name":"access_key"}},"schemas":{"Error":{"type":"object","properties":{"error":{"type":"string"}}}}},"paths":{"/v1/screenshot":{"get":{"summary":"Screenshot a URL or HTML","operationId":"screenshot","parameters":[{"name":"format","in":"query","schema":{"type":"string","enum":["png","jpeg","webp","pdf"],"default":"png"}},{"name":"url","in":"query","schema":{"type":"string"},"description":"Page to render (https:// assumed)."},{"name":"html","in":"query","schema":{"type":"string"},"description":"Raw HTML to render instead of url (prefer POST)."},{"name":"width","in":"query","schema":{"type":"integer","default":1280,"minimum":240,"maximum":3840},"description":"Viewport width."},{"name":"height","in":"query","schema":{"type":"integer","default":800,"minimum":240,"maximum":2160},"description":"Viewport height."},{"name":"full_page","in":"query","schema":{"type":"boolean","default":false},"description":"Capture the full scrollable page."},{"name":"scale","in":"query","schema":{"type":"number","default":1,"minimum":1,"maximum":3},"description":"Device scale factor."},{"name":"selector","in":"query","schema":{"type":"string"},"description":"Capture only the first element matching this CSS selector."},{"name":"dark_mode","in":"query","schema":{"type":"boolean","default":false},"description":"Emulate prefers-color-scheme: dark."},{"name":"hide_cookie_banners","in":"query","schema":{"type":"boolean","default":false},"description":"Hide cookie consent banners."},{"name":"block_ads","in":"query","schema":{"type":"boolean","default":false},"description":"Block ad and tracker requests."},{"name":"delay","in":"query","schema":{"type":"integer","default":0,"maximum":10000},"description":"Extra wait after load (ms)."},{"name":"wait_until","in":"query","schema":{"type":"string","enum":["load","domcontentloaded","networkidle"]},"description":"Navigation wait condition."},{"name":"quality","in":"query","schema":{"type":"integer","default":80},"description":"JPEG/WebP quality."},{"name":"cache_ttl","in":"query","schema":{"type":"integer","default":0,"maximum":2592000},"description":"Cache seconds; cache hits are free."},{"name":"device","in":"query","schema":{"type":"string","enum":["desktop","desktop_hd","laptop","ipad","iphone","iphone_se","pixel","galaxy"]},"description":"Viewport preset."},{"name":"css","in":"query","schema":{"type":"string"},"description":"CSS to inject."},{"name":"js","in":"query","schema":{"type":"string"},"description":"JavaScript to run before capture."},{"name":"hide_selectors","in":"query","schema":{"type":"string"},"description":"Comma-separated selectors to hide."},{"name":"click","in":"query","schema":{"type":"string"},"description":"Selector to click before capture."},{"name":"wait_for_selector","in":"query","schema":{"type":"string"},"description":"Selector to wait for."},{"name":"headers","in":"query","schema":{"type":"string"},"description":"JSON object of extra headers (target host only)."},{"name":"cookies","in":"query","schema":{"type":"string"},"description":"Cookies for the target URL, 'a=1; b=2'."}],"responses":{"200":{"description":"Rendered file","content":{"image/png":{},"image/jpeg":{},"image/webp":{},"application/pdf":{}}},"400":{"description":"Invalid parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"Out of credits","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Page could not be rendered","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/pdf":{"get":{"summary":"Render a URL or HTML to PDF","operationId":"pdf","parameters":[{"name":"url","in":"query","schema":{"type":"string"},"description":"Page to render (https:// assumed)."},{"name":"html","in":"query","schema":{"type":"string"},"description":"Raw HTML to render instead of url (prefer POST)."},{"name":"width","in":"query","schema":{"type":"integer","default":1280,"minimum":240,"maximum":3840},"description":"Viewport width."},{"name":"height","in":"query","schema":{"type":"integer","default":800,"minimum":240,"maximum":2160},"description":"Viewport height."},{"name":"full_page","in":"query","schema":{"type":"boolean","default":false},"description":"Capture the full scrollable page."},{"name":"scale","in":"query","schema":{"type":"number","default":1,"minimum":1,"maximum":3},"description":"Device scale factor."},{"name":"selector","in":"query","schema":{"type":"string"},"description":"Capture only the first element matching this CSS selector."},{"name":"dark_mode","in":"query","schema":{"type":"boolean","default":false},"description":"Emulate prefers-color-scheme: dark."},{"name":"hide_cookie_banners","in":"query","schema":{"type":"boolean","default":false},"description":"Hide cookie consent banners."},{"name":"block_ads","in":"query","schema":{"type":"boolean","default":false},"description":"Block ad and tracker requests."},{"name":"delay","in":"query","schema":{"type":"integer","default":0,"maximum":10000},"description":"Extra wait after load (ms)."},{"name":"wait_until","in":"query","schema":{"type":"string","enum":["load","domcontentloaded","networkidle"]},"description":"Navigation wait condition."},{"name":"quality","in":"query","schema":{"type":"integer","default":80},"description":"JPEG/WebP quality."},{"name":"cache_ttl","in":"query","schema":{"type":"integer","default":0,"maximum":2592000},"description":"Cache seconds; cache hits are free."},{"name":"device","in":"query","schema":{"type":"string","enum":["desktop","desktop_hd","laptop","ipad","iphone","iphone_se","pixel","galaxy"]},"description":"Viewport preset."},{"name":"css","in":"query","schema":{"type":"string"},"description":"CSS to inject."},{"name":"js","in":"query","schema":{"type":"string"},"description":"JavaScript to run before capture."},{"name":"hide_selectors","in":"query","schema":{"type":"string"},"description":"Comma-separated selectors to hide."},{"name":"click","in":"query","schema":{"type":"string"},"description":"Selector to click before capture."},{"name":"wait_for_selector","in":"query","schema":{"type":"string"},"description":"Selector to wait for."},{"name":"headers","in":"query","schema":{"type":"string"},"description":"JSON object of extra headers (target host only)."},{"name":"cookies","in":"query","schema":{"type":"string"},"description":"Cookies for the target URL, 'a=1; b=2'."},{"name":"paper","in":"query","schema":{"type":"string","enum":["A3","A4","A5","Letter","Legal","Tabloid"],"default":"A4"}},{"name":"landscape","in":"query","schema":{"type":"boolean","default":false}},{"name":"print_background","in":"query","schema":{"type":"boolean","default":true}}],"responses":{"200":{"description":"PDF","content":{"application/pdf":{}}},"400":{"description":"Invalid parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"Out of credits","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Page could not be rendered","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/extract":{"get":{"summary":"Page content as Markdown (JSON response)","operationId":"extract","parameters":[{"name":"url","in":"query","schema":{"type":"string"},"description":"Page to render (https:// assumed)."},{"name":"html","in":"query","schema":{"type":"string"},"description":"Raw HTML to render instead of url (prefer POST)."},{"name":"width","in":"query","schema":{"type":"integer","default":1280,"minimum":240,"maximum":3840},"description":"Viewport width."},{"name":"height","in":"query","schema":{"type":"integer","default":800,"minimum":240,"maximum":2160},"description":"Viewport height."},{"name":"full_page","in":"query","schema":{"type":"boolean","default":false},"description":"Capture the full scrollable page."},{"name":"scale","in":"query","schema":{"type":"number","default":1,"minimum":1,"maximum":3},"description":"Device scale factor."},{"name":"selector","in":"query","schema":{"type":"string"},"description":"Capture only the first element matching this CSS selector."},{"name":"dark_mode","in":"query","schema":{"type":"boolean","default":false},"description":"Emulate prefers-color-scheme: dark."},{"name":"hide_cookie_banners","in":"query","schema":{"type":"boolean","default":false},"description":"Hide cookie consent banners."},{"name":"block_ads","in":"query","schema":{"type":"boolean","default":false},"description":"Block ad and tracker requests."},{"name":"delay","in":"query","schema":{"type":"integer","default":0,"maximum":10000},"description":"Extra wait after load (ms)."},{"name":"wait_until","in":"query","schema":{"type":"string","enum":["load","domcontentloaded","networkidle"]},"description":"Navigation wait condition."},{"name":"cache_ttl","in":"query","schema":{"type":"integer","default":0,"maximum":2592000},"description":"Cache seconds; cache hits are free."},{"name":"device","in":"query","schema":{"type":"string","enum":["desktop","desktop_hd","laptop","ipad","iphone","iphone_se","pixel","galaxy"]},"description":"Viewport preset."},{"name":"css","in":"query","schema":{"type":"string"},"description":"CSS to inject."},{"name":"js","in":"query","schema":{"type":"string"},"description":"JavaScript to run before capture."},{"name":"hide_selectors","in":"query","schema":{"type":"string"},"description":"Comma-separated selectors to hide."},{"name":"click","in":"query","schema":{"type":"string"},"description":"Selector to click before capture."},{"name":"wait_for_selector","in":"query","schema":{"type":"string"},"description":"Selector to wait for."},{"name":"headers","in":"query","schema":{"type":"string"},"description":"JSON object of extra headers (target host only)."},{"name":"cookies","in":"query","schema":{"type":"string"},"description":"Cookies for the target URL, 'a=1; b=2'."},{"name":"main_content","in":"query","schema":{"type":"boolean","default":true}},{"name":"include_links","in":"query","schema":{"type":"boolean","default":true}},{"name":"include_images","in":"query","schema":{"type":"boolean","default":false}},{"name":"format","in":"query","schema":{"type":"string","enum":["json","markdown"],"default":"json"}}],"responses":{"200":{"description":"Extracted content","content":{"application/json":{},"text/markdown":{}}},"400":{"description":"Invalid parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"Out of credits","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Page could not be rendered","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/account":{"get":{"summary":"Remaining credits","operationId":"account","responses":{"200":{"description":"Account","content":{"application/json":{}}},"401":{"description":"Invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}}}