openapi: 3.2.0 info: title: S1 Dev Screenshot API version: 1.0.0 x-guidance: Search1API provides web search, news aggregation, URL crawling, webpage screenshots, sitemap extraction, trending topics, content extraction, and deep crawling. All paid endpoints accept POST with a JSON body. Use POST /search with a "query" field for web search. Use POST /news with a "query" field for news. Use POST /ask with a natural-language "query" to have Search1API choose the engines and time window and return only relevant results (API key only). Use POST /crawl with a "url" field to crawl a page. Use POST /screenshot with a "url" field to render a PNG, JPEG, or WebP image. Use POST /sitemap with a "url" field to extract sitemap URLs. Use POST /trending with a "search_service" field for trends. Use POST /extract with a "url" field for structured content extraction. Use POST /deepcrawl with a "url" field for deep multi-page crawling. description: 'Operations tagged Screenshot across 2 of this provider''s published API definitions: search1api-openapi.json, s1-dev-openapi.yml. Each path carries the servers of the definition it was published in.' servers: - url: https://api.search1api.com tags: - name: Screenshot paths: /screenshot: post: operationId: screenshot summary: Render a web page as a PNG, JPEG, or WebP image description: Render a public webpage as a PNG, JPEG, or WebP image. Use it when appearance is the point — layout checks, visual previews, or content that does not survive text extraction — and control the viewport, when the page counts as ready, and whether to capture the full document or a single element by CSS selector. When you want the page's text instead, call POST /crawl. Costs 2 credits per request. tags: - Screenshot x-codeSamples: - id: js lang: ts label: TypeScript SDK source: "import { writeFile } from 'node:fs/promises';\nimport { Search1API } from '@search1api/client';\n\nconst client = new Search1API();\nconst screenshot = await client.screenshot('https://example.com', {\n format: 'png',\n fullPage: true,\n});\n\nawait writeFile('screenshot.png', screenshot.data);" - id: python lang: python label: Python SDK source: "from pathlib import Path\nfrom search1api import Search1API\n\nclient = Search1API()\nscreenshot = client.screenshot(\n \"https://example.com\",\n format=\"png\",\n full_page=True,\n)\n\nPath(\"screenshot.png\").write_bytes(screenshot[\"data\"])" responses: '200': description: Successful response content: image/png: schema: type: string format: binary image/jpeg: schema: type: string format: binary image/webp: schema: type: string format: binary '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/ApiError' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/ApiError' '402': description: Payment Required content: application/problem+json: schema: $ref: '#/components/schemas/ApiError' '403': description: Forbidden content: application/json: schema: $ref: '#/components/schemas/ApiError' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/ApiError' '429': description: Too Many Requests content: application/json: schema: $ref: '#/components/schemas/ApiError' '500': description: Internal Server Error content: application/json: schema: $ref: '#/components/schemas/ApiError' '502': description: Bad Gateway content: application/json: schema: $ref: '#/components/schemas/ApiError' '503': description: Service Unavailable content: application/json: schema: $ref: '#/components/schemas/ApiError' '504': description: Gateway Timeout content: application/json: schema: $ref: '#/components/schemas/ApiError' security: - bearerAuth: [] x-payment-info: protocols: - mpp pricingMode: fixed price: '0.006' requestBody: required: true content: application/json: schema: type: object properties: url: type: string format: uri maxLength: 4096 format: type: string enum: - png - jpeg - webp default: png full_page: type: boolean default: false viewport: type: object properties: width: type: integer minimum: 320 maximum: 2560 default: 1440 height: type: integer minimum: 200 maximum: 1440 default: 900 device_scale_factor: type: number minimum: 1 maximum: 2 default: 1 additionalProperties: false default: width: 1440 height: 900 device_scale_factor: 1 wait_until: type: string enum: - domcontentloaded - load - networkidle default: load wait_for_selector: type: string minLength: 1 maxLength: 500 selector: type: string minLength: 1 maxLength: 500 delay_ms: type: integer minimum: 0 maximum: 5000 default: 0 timeout_ms: type: integer minimum: 1000 maximum: 30000 default: 20000 quality: type: integer minimum: 1 maximum: 100 omit_background: type: boolean default: false color_scheme: type: string enum: - light - dark default: light animations: type: string enum: - disabled - allow default: disabled required: - url additionalProperties: false examples: fullPage: summary: Full-page PNG description: Capture the complete document after the load event and a short stabilization delay. value: url: https://s1.dev format: png full_page: true wait_until: load delay_ms: 1000 timeout_ms: 30000 element: summary: Page element as WebP description: Wait for one visible element and return only that element as a compressed WebP image. value: url: https://example.com format: webp selector: h1 wait_for_selector: h1 quality: 85 darkViewport: summary: Dark-mode viewport description: Capture a high-density 1280 × 720 viewport with dark color-scheme emulation. value: url: https://s1.dev format: jpeg viewport: width: 1280 height: 720 device_scale_factor: 2 color_scheme: dark quality: 85 servers: - url: https://api.search1api.com components: schemas: ApiError: type: object description: 'Search1API error. Every JSON error carries `ok: false`, `error` (a short status-derived label) and `message` (human-readable detail); validation failures add `errors`. Payment challenges may use RFC 9457 problem detail fields.' properties: ok: type: boolean enum: - false error: type: string message: type: string errors: type: array items: type: object properties: field: type: string message: type: string code: type: string type: type: string format: uri title: type: string status: type: integer detail: type: string additionalProperties: true securitySchemes: bearerAuth: type: http scheme: bearer bearerFormat: API Key x-refined-from: - search1api-openapi.json - s1-dev-openapi.yml x-discovery: ownershipProofs: []