SnapAPI Video API

Video recording of webpages

OpenAPI Specification

snapapi-pics-video-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: SnapAPI - Screenshot & Web Data Analyze Video API
  version: 2.0.0
  description: 'Professional screenshot, PDF, video, scraping, content extraction, and AI analysis API. Convert any URL into structured data or visual captures with a single API call. Powered by headless Chromium.


    ## Authentication


    All API endpoints (except Auth and Health) require one of:

    - `X-Api-Key: sk_live_xxx` header (recommended for server-side)

    - `Authorization: Bearer sk_live_xxx` header

    - `?access_key=sk_live_xxx` query parameter (for GET endpoints)


    Dashboard endpoints use JWT Bearer tokens obtained from `/auth/login`.


    ## Rate Limits


    | Plan | Requests/month | Rate |

    |------|---------------|------|

    | Free | 100 | 10/min |

    | Starter | 5,000 | 60/min |

    | Pro | 50,000 | 300/min |


    Rate limit headers: `X-RateLimit-Limit`, `X-RateLimit-Remaining`, `X-RateLimit-Reset`'
  contact:
    email: support@snapapi.pics
    url: https://snapapi.pics
servers:
- url: https://api.snapapi.pics
  description: Production
security:
- ApiKeyAuth: []
tags:
- name: Video
  description: Video recording of webpages
paths:
  /v1/video:
    post:
      operationId: recordVideo
      summary: Record Video
      description: Record a video of a webpage with optional scrolling. Supports WebM, MP4, and GIF output. Costs 5 credits per recording.
      tags:
      - Video
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/VideoRequest'
            examples:
              basic:
                summary: 5-second recording
                value:
                  url: https://example.com
                  duration: 5
                  format: mp4
              scrolling:
                summary: Scrolling video
                value:
                  url: https://example.com
                  duration: 10
                  scrolling: true
                  scrollSpeed: 150
                  format: webm
      responses:
        '200':
          description: Video recorded
          headers:
            X-Request-Id:
              $ref: '#/components/headers/X-Request-Id'
          content:
            video/webm:
              schema:
                type: string
                format: binary
            video/mp4:
              schema:
                type: string
                format: binary
            image/gif:
              schema:
                type: string
                format: binary
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                  data:
                    type: string
                  format:
                    type: string
                  width:
                    type: integer
                  height:
                    type: integer
                  duration:
                    type: integer
                  fileSize:
                    type: integer
                  took:
                    type: integer
        '400':
          description: Validation error
        '429':
          description: Quota exceeded
        '503':
          description: Server busy (max concurrent videos reached)
components:
  headers:
    X-Request-Id:
      schema:
        type: string
      description: Unique request identifier for debugging
  schemas:
    VideoRequest:
      type: object
      required:
      - url
      properties:
        url:
          type: string
          format: uri
        format:
          type: string
          enum:
          - webm
          - mp4
          - gif
          default: webm
        width:
          type: integer
          minimum: 320
          maximum: 1920
          default: 1280
        height:
          type: integer
          minimum: 240
          maximum: 1080
          default: 720
        duration:
          type: integer
          minimum: 1
          maximum: 30
          default: 5
          description: Duration in seconds
        fps:
          type: integer
          minimum: 10
          maximum: 30
          default: 25
        scrolling:
          type: boolean
          default: false
        scrollSpeed:
          type: integer
          default: 100
        darkMode:
          type: boolean
          default: false
        blockAds:
          type: boolean
          default: false
        blockCookieBanners:
          type: boolean
          default: false
        delay:
          type: integer
          default: 0
        responseType:
          type: string
          enum:
          - binary
          - base64
          - json
          default: binary
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: Your SnapAPI API key
    BearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: JWT access token obtained from /auth/login or /auth/refresh