openapi: 3.1.0 info: title: Screenshots description: Renders a webpage exactly as a real browser would, including all its scripts and dynamic content, then takes a picture of it. You can capture just the visible area or the whole scrollable page, choose the screen size, wait for slow-loading images to finish, and hide cookie banners or popups before the picture is taken. version: 1.0.0 contact: name: _done url: https://forms.gle/5KzuSFH7p8hHtDmz7 email: info@underscoredone.com x-openapi-url: https://screenshots.underscoredone.com/openapi.json x-logo: url: https://underscoredone.com/logo.png altText: _done x-guidance: Send the target url plus any optional capture settings. Set load_lazy true and wait_until to networkidle0 or networkidle2 for pages that load content as you scroll, such as image galleries or social feeds. Set allow_popups false (default) to automatically hide cookie banners and chat widgets. The response gives a short-lived link to the captured image, not the image itself, so download it promptly if you need to keep it. x-ai-instructions: Send the target url plus any optional capture settings. Set load_lazy true and wait_until to networkidle0 or networkidle2 for pages that load content as you scroll, such as image galleries or social feeds. Set allow_popups false (default) to automatically hide cookie banners and chat widgets. The response gives a short-lived link to the captured image, not the image itself, so download it promptly if you need to keep it. x-provider: _done — single-purpose utility APIs for developers and AI agents. Pay per call with USDC on Base Mainnet or Solana Mainnet. x-pricing: model: pay-per-call currency: USDC network: Base Mainnet or Solana Mainnet price: $0.02 x-keywords: - network - screenshots - url-to-screenshot - url to secreenshot - webpage capture - browser rendering - full page screenshot - website image - puppeteer - headless browser - utility - api - ai-agent - pay-per-call - usdc - x402 x-category: website screenshot x-provider-url: https://underscoredone.com x-agentcash-auth: mode: paid x-402: price: $0.02 network: eip155:8453 asset: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913' pay_to: '0xE9740820225B3918b4ddd1292C7cA4Ca0e2C2F08' facilitator: https://api.cdp.coinbase.com/platform/v2/x402 scheme: exact description: Renders a webpage exactly as a real browser would, including all its scripts and dynamic content, then takes a picture of it. You can capture just the visible area or the whole scrollable page, choose the screen size, wait for slow-loading images to finish, and hide cookie banners or popups before the picture is taken. mime_type: application/json networks: - network: eip155:8453 asset: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913' pay_to: '0xE9740820225B3918b4ddd1292C7cA4Ca0e2C2F08' - network: solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp asset: EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v pay_to: 8ugAWAXDB8V18kiUrGZTq1oMvU3C6Fxs8hfC6rvzQT3b paths: /capture: post: tags: - website screenshot - screenshot - capture webpage - screenshot api - webpage screenshot - full page screenshot - render website - capture website image - headless browser screenshot - url to image - web page capture - screenshot url - site screenshot - browser screenshot summary: Takes a screenshot of any webpage after it fully loads. description: Loads a webpage in a real browser, waits for it to be ready, and returns a link to a picture of it. operationId: handler_capture_post requestBody: content: application/json: schema: $ref: '#/components/schemas/Request' required: true responses: '200': description: Successful response content: application/json: schema: $ref: '#/components/schemas/Response' examples: success: summary: Successful response value: api_version: 1.0.0 url: https://example.com image: https://r2.example.com/shot-abc123.png format: png width: 1920 height: 1080 captured_at: '2026-07-20T04:12:33Z' '422': description: Unprocessable — a required field is missing or the wrong type. Check the detail field for specifics. content: application/json: schema: type: object properties: detail: type: array '402': description: Payment required. Send a signed USDC payment on Base Mainnet or Solana Mainnet using the x402 protocol. headers: X-Payment-Response: description: x402 payment challenge — base64-encoded JSON with payment details. schema: type: string '400': description: Bad request — your input failed validation or could not be processed. Check the detail field for specifics. content: application/json: schema: type: object properties: detail: type: string x-ai-instructions: Send the target url plus any optional capture settings. Set load_lazy true and wait_until to networkidle0 or networkidle2 for pages that load content as you scroll, such as image galleries or social feeds. Set allow_popups false (default) to automatically hide cookie banners and chat widgets. The response gives a short-lived link to the captured image, not the image itself, so download it promptly if you need to keep it. x-guidance: Send the target url plus any optional capture settings. Set load_lazy true and wait_until to networkidle0 or networkidle2 for pages that load content as you scroll, such as image galleries or social feeds. Set allow_popups false (default) to automatically hide cookie banners and chat widgets. The response gives a short-lived link to the captured image, not the image itself, so download it promptly if you need to keep it. x-payment-info: price: fixed: mode: fixed currency: USD amount: '0.02' protocols: - x402: {} components: schemas: HTTPValidationError: properties: detail: items: $ref: '#/components/schemas/ValidationError' type: array title: Detail type: object title: HTTPValidationError Request: properties: url: type: string title: Url description: The web address of the page you want a picture of. full_page: type: boolean title: Full Page description: If true, captures the entire scrollable page instead of just what is visible on screen. default: false viewport: anyOf: - $ref: '#/components/schemas/Viewport' - type: 'null' description: The width and height of the browser window used to show the page, in pixels. wait_until: type: string enum: - load - domcontentloaded - networkidle0 - networkidle2 title: Wait Until description: When to consider the page ready to capture. default: load allow_popups: type: boolean title: Allow Popups description: If false, cookie banners, consent popups, and chat widgets are hidden before the picture is taken. default: false load_lazy: type: boolean title: Load Lazy description: If true, scrolls through the page first so slow-loading images finish loading before the picture is taken. default: false type: object required: - url title: Request example: allow_popups: false full_page: false load_lazy: true url: https://example.com viewport: height: 1080 width: 1920 wait_until: networkidle0 Response: properties: api_version: type: string title: Api Version description: The version of this service that answered the request. default: 1.0.0 url: type: string title: Url description: The web address that was captured. image: type: string title: Image description: A short-lived link to the captured picture. Download it promptly if you need to keep it. format: type: string title: Format description: The picture file type, such as png. width: type: integer title: Width description: The width of the captured picture, in pixels. height: type: integer title: Height description: The height of the captured picture, in pixels. captured_at: type: string title: Captured At description: The date and time the picture was taken. type: object required: - url - image - format - width - height - captured_at title: Response example: api_version: 1.0.0 captured_at: '2026-07-20T04:12:33Z' format: png height: 1080 image: https://r2.example.com/shot-abc123.png url: https://example.com width: 1920 ValidationError: properties: loc: items: anyOf: - type: string - type: integer type: array title: Location msg: type: string title: Message type: type: string title: Error Type input: title: Input ctx: type: object title: Context type: object required: - loc - msg - type title: ValidationError Viewport: properties: width: type: integer maximum: 7680.0 minimum: 1.0 title: Width description: How wide the browser window should be, in pixels. height: type: integer maximum: 4320.0 minimum: 1.0 title: Height description: How tall the browser window should be, in pixels. additionalProperties: false type: object required: - width - height title: Viewport example: height: 1080 width: 1920 securitySchemes: siwx: type: apiKey in: header name: SIGN-IN-WITH-X description: CAIP-122 wallet signature for repeat access after payment servers: - url: https://screenshots.underscoredone.com description: Production tags: - name: website screenshot - name: screenshot - name: capture webpage - name: screenshot api - name: webpage screenshot - name: full page screenshot - name: render website - name: capture website image - name: headless browser screenshot - name: url to image - name: web page capture - name: screenshot url - name: site screenshot - name: browser screenshot x402Version: 2 x-payment-accepts: - scheme: exact network: eip155:8453 payTo: '0xE9740820225B3918b4ddd1292C7cA4Ca0e2C2F08' asset: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913' - scheme: exact network: solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp payTo: 8ugAWAXDB8V18kiUrGZTq1oMvU3C6Fxs8hfC6rvzQT3b asset: EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v