> ## Documentation Index
> Fetch the complete documentation index at: https://docs.topyappers.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Upload Video for Remix

> Process a video from a provided URL. The API will download the video, apply transformations, and remove invisible watermarks.



## OpenAPI

````yaml POST /api/v1/remix
openapi: 3.1.0
info:
  title: Video Remix API
  description: >-
    TopYappers Video Remix API for processing video content. Provide a video URL
    and optional transformation parameters to remove invisible watermarks and
    apply effects.
  license:
    name: MIT
  version: 2.0.0
servers:
  - url: https://api.topyappers.com
security:
  - apiKeyAuth: []
paths:
  /api/v1/remix:
    post:
      summary: Process Video
      description: >-
        Process a video from a provided URL. The API will download the video,
        apply transformations, and remove invisible watermarks.
      operationId: processVideo
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ProcessVideoRequest'
      responses:
        '200':
          description: Video processed successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RemixSuccessResponse'
              examples:
                success:
                  summary: Successful processing
                  value:
                    metadata:
                      tool_time: 55.67
                    data:
                      url: >-
                        https://vidrework.topyappers.com/your-processed-video.mp4
                      applied_params:
                        brightness: 0.0059
                        contrast: 1.0037
                        saturation: 0.9836
                        hue: -0.1822
                        gamma: 1.0032
                        temperature: -0.0077
                        noise: 0.8
                        sharpness: 0.9872
                        zoom_factor: 1.0009
                        device_model: Ray-Ban Meta Smart Glasses
                        playback_speed: 0.9938
                        volume: 0.9897
                        remove_audio: null
                        algorithm_fingerprint: null
                        hue_shift: -0.0182
                        blend: 0.0048
                        bitrate_variation: 0.9898
                        frame_blending: 0.0051
                        time_shift: 0.0029
        '400':
          description: Bad request - invalid video URL or parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                noVideoUrl:
                  summary: No video URL provided
                  value:
                    error: video_url is required
                invalidUrl:
                  summary: Invalid video URL
                  value:
                    error: Invalid or inaccessible video URL
                invalidParameters:
                  summary: Invalid parameters
                  value:
                    error: >-
                      Invalid parameter: playbackSpeed must be between 0.1 and
                      5.0
        '401':
          description: Unauthorized - invalid or missing API key
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                missingKey:
                  summary: Missing API key
                  value:
                    error: Missing API key. Please provide x-ty-api-key header.
                invalidKey:
                  summary: Invalid API key
                  value:
                    error: Invalid API key
        '413':
          description: Payload too large - video file exceeds 150MB
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                error: Video file too large. Maximum size is 150MB
        '429':
          description: Rate limit exceeded
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RateLimitError'
      x-codeSamples:
        - lang: typescript
          label: TypeScript
          source: |-
            async function processVideo(
              videoUrl: string,
              parameters: object,
              apiKey: string
            ): Promise<any> {
              const baseUrl = 'https://api.topyappers.com';
              
              const response = await fetch(`${baseUrl}/api/v1/remix`, {
                method: 'POST',
                headers: {
                  'x-ty-api-key': apiKey,
                  'Content-Type': 'application/json',
                },
                body: JSON.stringify({
                  video_url: videoUrl,
                  parameters: parameters,
                }),
              });

              if (!response.ok) {
                throw new Error(`API error: ${response.status}`);
              }

              return await response.json();
            }

            // Usage
            const result = await processVideo(
              'https://example.com/video.mp4',
              { playbackSpeed: 1.2 },
              'YOUR_API_KEY'
            );
        - lang: python
          label: Python
          source: |-
            import requests

            API_KEY = "your-api-key-here"
            BASE_URL = "https://api.topyappers.com"
            VIDEO_URL = "https://example.com/video.mp4"

            parameters = {
                "playbackSpeed": 1.2,
                "brightness": 0.1,
                "contrast": 1.1
            }

            response = requests.post(
                f"{BASE_URL}/api/v1/remix",
                headers={
                    "x-ty-api-key": API_KEY,
                    "Content-Type": "application/json"
                },
                json={
                    "video_url": VIDEO_URL,
                    "parameters": parameters
                }
            )

            if response.status_code == 200:
                result = response.json()
                print(f"Success: {result}")
            else:
                print(f"Error: {response.text}")
        - lang: shell
          label: cURL
          source: |-
            curl -X POST https://api.topyappers.com/api/v1/remix \
              -H "x-ty-api-key: YOUR_API_KEY" \
              -H "Content-Type: application/json" \
              -d '{
                "video_url": "https://example.com/video.mp4",
                "parameters": {
                  "playbackSpeed": 1.2,
                  "brightness": 0.1,
                  "contrast": 1.1
                }
              }'
components:
  schemas:
    ProcessVideoRequest:
      type: object
      required:
        - video_url
      properties:
        video_url:
          type: string
          format: uri
          description: Publicly accessible URL to the video file (MP4, MOV, AVI, WebM)
          example: https://example.com/video.mp4
        parameters:
          $ref: '#/components/schemas/ProcessingParameters'
    RemixSuccessResponse:
      type: object
      required:
        - metadata
        - data
      properties:
        metadata:
          type: object
          properties:
            tool_time:
              type: number
              description: Processing time in seconds
              example: 55.67
        data:
          type: object
          required:
            - url
            - applied_params
          properties:
            url:
              type: string
              description: URL of the processed video file
              example: >-
                https://vidrework.topyappers.com/812f78a286833e339b27d0524bb68402-cdb5b98ad25ed592.mp4
            applied_params:
              $ref: '#/components/schemas/AppliedParams'
    Error:
      type: object
      required:
        - error
      properties:
        error:
          type: string
          description: Error message describing what went wrong
    RateLimitError:
      type: object
      required:
        - error
      properties:
        error:
          type: string
          example: Daily limit exceeded. Upgrade your plan or try in 24 hours.
        retryAfter:
          type: integer
          description: Number of seconds to wait before retrying
          example: 86400
        limit:
          type: integer
          description: Daily rate limit
          example: 100
      example:
        error: Daily limit exceeded. Upgrade your plan or try in 24 hours.
        retryAfter: 86400
        limit: 100
    ProcessingParameters:
      type: object
      description: >-
        Optional video processing parameters. All parameters have default
        values.
      properties:
        zoomFactor:
          type: number
          minimum: 0.1
          maximum: 5
          default: 1
          description: Zoom level for the video
        hue:
          type: number
          minimum: -180
          maximum: 180
          default: 0
          description: Hue adjustment in degrees
        playbackSpeed:
          type: number
          minimum: 0.1
          maximum: 5
          default: 1
          description: Video playback speed multiplier
        saturation:
          type: number
          minimum: 0
          maximum: 3
          default: 1
          description: Color saturation multiplier
        brightness:
          type: number
          minimum: -1
          maximum: 1
          default: 0
          description: Brightness adjustment
        contrast:
          type: number
          minimum: 0
          maximum: 3
          default: 1
          description: Contrast multiplier
        volume:
          type: number
          minimum: 0
          maximum: 2
          default: 1
          description: Audio volume multiplier
        removeAudio:
          type: boolean
          default: false
          description: Whether to remove audio from the video
        algorithmFingerprint:
          type: string
          default: Fingerprint
          description: Algorithm identifier for processing
        deviceMedia:
          type: string
          description: Target device profile for media optimization
          enum:
            - iPhone 17 Pro Max
            - iPhone 17 Pro
            - iPhone 17
            - iPhone 16 Pro Max
            - iPhone 16 Pro
            - iPhone 16
            - iPhone 15 Pro Max
            - iPhone 15 Pro
            - iPhone 15
            - iPhone 14 Pro Max
            - iPhone 14 Pro
            - iPhone 14
            - iPhone 13 Pro Max
            - iPhone 13 Pro
            - iPhone 13
            - Ray-Ban Meta Smart Glasses
          x-enum-values:
            - value: iPhone 17 Pro Max
              weight: 6
            - value: iPhone 17 Pro
              weight: 6
            - value: iPhone 17
              weight: 5
            - value: iPhone 16 Pro Max
              weight: 9
            - value: iPhone 16 Pro
              weight: 9
            - value: iPhone 16
              weight: 8
            - value: iPhone 15 Pro Max
              weight: 7
            - value: iPhone 15 Pro
              weight: 7
            - value: iPhone 15
              weight: 6
            - value: iPhone 14 Pro Max
              weight: 5
            - value: iPhone 14 Pro
              weight: 5
            - value: iPhone 14
              weight: 4
            - value: iPhone 13 Pro Max
              weight: 3
            - value: iPhone 13 Pro
              weight: 3
            - value: iPhone 13
              weight: 3
            - value: Ray-Ban Meta Smart Glasses
              weight: 1
        hueShift:
          type: number
          minimum: -180
          maximum: 180
          default: 0
          description: Additional hue shift in degrees
        gamma:
          type: number
          minimum: 0.1
          maximum: 3
          default: 1
          description: Gamma correction value
        temperature:
          type: number
          minimum: 0.5
          maximum: 2
          default: 1
          description: Color temperature adjustment
        noise:
          type: number
          minimum: 0
          maximum: 1
          default: 0
          description: Amount of noise to add
        sharpness:
          type: number
          minimum: 0
          maximum: 3
          default: 1
          description: Sharpness multiplier
        blend:
          type: number
          minimum: 0
          maximum: 1
          default: 0
          description: Blending amount
        bilateVariation:
          type: number
          minimum: 0
          maximum: 2
          default: 1
          description: Bilateral filter variation
        frameBlending:
          type: number
          minimum: 0
          maximum: 1
          default: 0
          description: Amount of frame blending
        timeShift:
          type: number
          minimum: -10
          maximum: 10
          default: 0
          description: Time shift in seconds
      example:
        playbackSpeed: 1.2
        brightness: 0.1
        contrast: 1.1
        saturation: 1.2
        hue: 15
        zoomFactor: 1.05
    AppliedParams:
      type: object
      description: The actual parameters that were applied to the video
      properties:
        brightness:
          type: number
          description: Applied brightness adjustment
        contrast:
          type: number
          description: Applied contrast multiplier
        saturation:
          type: number
          description: Applied saturation multiplier
        hue:
          type: number
          description: Applied hue adjustment
        gamma:
          type: number
          description: Applied gamma correction
        temperature:
          type: number
          description: Applied color temperature adjustment
        noise:
          type: number
          description: Applied noise amount
        sharpness:
          type: number
          description: Applied sharpness multiplier
        zoom_factor:
          type: number
          description: Applied zoom level
        device_model:
          type: string
          nullable: true
          description: Device model used for optimization
        playback_speed:
          type: number
          description: Applied playback speed
        volume:
          type: number
          description: Applied volume multiplier
        remove_audio:
          type: boolean
          nullable: true
          description: Whether audio was removed
        algorithm_fingerprint:
          type: string
          nullable: true
          description: Algorithm fingerprint used
        hue_shift:
          type: number
          description: Applied hue shift
        blend:
          type: number
          description: Applied blend amount
        bitrate_variation:
          type: number
          description: Applied bitrate variation
        frame_blending:
          type: number
          description: Applied frame blending
        time_shift:
          type: number
          description: Applied time shift
  securitySchemes:
    apiKeyAuth:
      type: apiKey
      in: header
      name: x-ty-api-key
      description: API key for TopYappers API authentication

````