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

# Grok Imagine Edit Video

Edit source videos with xAI's Grok Imagine Video model


## OpenAPI

````yaml /openapi.json post /generation/xai/grok-imagine-video/edit-video
openapi: 3.1.0
info:
  title: skills.video OpenAPI
  version: 1.0.0
  description: OpenAPI schema for skills.video API endpoints.
servers:
  - url: https://open.skills.video/api/v1
security: []
paths:
  /generation/xai/grok-imagine-video/edit-video:
    post:
      summary: Grok Imagine Edit Video
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: >-
                #/components/schemas/xai_grok_imagine_video_edit_videoCreateRequest
          multipart/form-data:
            schema:
              $ref: >-
                #/components/schemas/xai_grok_imagine_video_edit_videoMultipartCreateRequest
      responses:
        '200':
          description: Generation submission accepted
          content:
            application/json:
              example:
                id: gen_123
                status: IN_QUEUE
                input:
                  prompt: a cat walking through neon rain
                  duration: 5
                  aspect_ratio: '16:9'
                  'n': 1
                usage:
                  total: 20
                  subscription: 20
                  permanent: 0
              schema:
                $ref: >-
                  #/components/schemas/xai_grok_imagine_video_edit_videoPrediction
        '400':
          description: >-
            Video generation request was rejected as invalid or model is not
            supported.
          content:
            application/json:
              example:
                error: VIDEO_GENERATION_INVALID_INPUT
                code: VIDEO_GENERATION_INVALID_INPUT
                message: '''prompt'' parameter is required'
              schema:
                anyOf:
                  - $ref: '#/components/schemas/VideoGenerationErrorResponse'
                  - $ref: '#/components/schemas/TemplateErrorResponse'
                  - $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Authentication required or failed
          content:
            application/json:
              example:
                error: UNAUTHORIZED
                code: UNAUTHORIZED
                message: Unauthorized
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '402':
          description: Workspace does not have enough credits to run this generation.
          content:
            application/json:
              example:
                error: INSUFFICIENT_CREDITS
                code: VIDEO_GENERATION_INSUFFICIENT_CREDITS
                message: Insufficient credits for this generation.
              schema:
                $ref: '#/components/schemas/VideoGenerationErrorResponse'
        '403':
          description: Workspace access is forbidden or Seedance verification is required.
          content:
            application/json:
              example:
                error: WORKSPACE_FORBIDDEN
                code: WORKSPACE_FORBIDDEN
                message: You do not have access to this workspace.
              schema:
                anyOf:
                  - $ref: '#/components/schemas/ErrorResponse'
                  - $ref: '#/components/schemas/SeedanceVerificationErrorResponse'
        '404':
          description: Resource, model, or template not found.
          content:
            application/json:
              example:
                error: TEMPLATE_NOT_FOUND
                code: TEMPLATE_NOT_FOUND
                message: Template not found.
              schema:
                anyOf:
                  - $ref: '#/components/schemas/ErrorResponse'
                  - $ref: '#/components/schemas/TemplateErrorResponse'
        '422':
          description: Upstream moderation rejected the request content.
          content:
            application/json:
              example:
                error: VIDEO_GENERATION_CONTENT_REJECTED
                code: VIDEO_GENERATION_CONTENT_REJECTED
                message: Request content was rejected by the moderation policy.
              schema:
                $ref: '#/components/schemas/VideoGenerationErrorResponse'
        '429':
          description: Generation rate limit exceeded upstream.
          content:
            application/json:
              example:
                error: VIDEO_GENERATION_RATE_LIMITED
                code: VIDEO_GENERATION_RATE_LIMITED
                message: Rate limit exceeded. Please retry later.
              schema:
                $ref: '#/components/schemas/VideoGenerationErrorResponse'
        '500':
          description: >-
            Video generation failed before provider execution completed.
            Response includes code and message fields.
          content:
            application/json:
              example:
                error: VIDEO_GENERATION_FAILED
                code: VIDEO_GENERATION_FAILED
                message: Generation failed.
              schema:
                anyOf:
                  - $ref: '#/components/schemas/VideoGenerationErrorResponse'
                  - $ref: '#/components/schemas/ErrorResponse'
        '502':
          description: >-
            Video generation failed. Returned when the upstream provider reports
            a generic failure.
          content:
            application/json:
              example:
                error: VIDEO_GENERATION_FAILED
                code: VIDEO_GENERATION_FAILED
                message: Generation failed.
              schema:
                $ref: '#/components/schemas/VideoGenerationErrorResponse'
        '503':
          description: Upstream generation provider is unavailable.
          content:
            application/json:
              example:
                error: VIDEO_GENERATION_PROVIDER_UNAVAILABLE
                code: VIDEO_GENERATION_PROVIDER_UNAVAILABLE
                message: Upstream generation provider is temporarily unavailable.
              schema:
                $ref: '#/components/schemas/VideoGenerationErrorResponse'
        '504':
          description: Video generation exceeded the upstream timeout.
          content:
            application/json:
              example:
                error: VIDEO_GENERATION_TIMEOUT
                code: VIDEO_GENERATION_TIMEOUT
                message: Generation timed out.
              schema:
                $ref: '#/components/schemas/VideoGenerationErrorResponse'
      security:
        - bearerAuth: []
components:
  schemas:
    xai_grok_imagine_video_edit_videoCreateRequest:
      type: object
      properties:
        prompt:
          description: Text description of the desired edit
          title: Prompt
          order: 0
          type: string
        video_url:
          description: >-
            URL of the input video to edit. The video will be resized to a
            maximum area of 854x480 pixels and truncated to 8 seconds.
          title: Video URL
          format: uri
          order: 1
          type: string
        resolution:
          description: Resolution of the output video
          title: Resolution
          order: 2
          default: auto
          type: string
          enum:
            - auto
            - 480p
            - 720p
        'n':
          default: 1
          description: Number of results to generate (1-4)
          type: integer
          minimum: 1
          maximum: 4
      required:
        - prompt
        - video_url
      additionalProperties: false
    xai_grok_imagine_video_edit_videoMultipartCreateRequest:
      type: object
      properties:
        prompt:
          description: Text description of the desired edit
          title: Prompt
          order: 0
          type: string
        video_url:
          description: >-
            URL of the input video to edit. The video will be resized to a
            maximum area of 854x480 pixels and truncated to 8 seconds. When
            using application/json, send a public URL. When using
            multipart/form-data, send either a public URL or a binary file
            upload.
          title: Video URL
          order: 1
          x-cli-aliases:
            - video
          anyOf:
            - format: uri
              type: string
            - format: binary
              type: string
        resolution:
          description: Resolution of the output video
          title: Resolution
          order: 2
          default: auto
          type: string
          enum:
            - auto
            - 480p
            - 720p
        'n':
          default: 1
          description: Number of results to generate (1-4)
          type: integer
          minimum: 1
          maximum: 4
      required:
        - prompt
        - video_url
      additionalProperties: false
    xai_grok_imagine_video_edit_videoPrediction:
      type: object
      properties:
        id:
          description: Generation id.
          type: string
        status:
          $ref: '#/components/schemas/QueueState'
        input:
          $ref: '#/components/schemas/xai_grok_imagine_video_edit_videoInput'
          title: Input
          xMeta:
            duration: video_url
            video_duration: video_url
            size: video_url
          description: Normalized input payload for the generation task.
        usage:
          $ref: '#/components/schemas/Usage'
        code:
          $ref: '#/components/schemas/__schema1'
        message:
          $ref: '#/components/schemas/__schema2'
      required:
        - id
        - status
        - input
        - usage
      additionalProperties: false
    VideoGenerationErrorResponse:
      type: object
      properties:
        error:
          description: >-
            Legacy machine-readable error field. Prefer `code` for new
            integrations.
          type: string
        code:
          description: >-
            Video generation error code. `*_FAILED` is the generic fallback;
            more specific codes (`*_TIMEOUT`, `*_RATE_LIMITED`,
            `*_PROVIDER_UNAVAILABLE`, `*_UNSUPPORTED_MODEL`, `*_INVALID_INPUT`,
            `*_INSUFFICIENT_CREDITS`, `*_CONTENT_REJECTED`) are surfaced when
            applicable.
          type: string
          enum:
            - VIDEO_GENERATION_FAILED
            - VIDEO_GENERATION_TIMEOUT
            - VIDEO_GENERATION_RATE_LIMITED
            - VIDEO_GENERATION_PROVIDER_UNAVAILABLE
            - VIDEO_GENERATION_UNSUPPORTED_MODEL
            - VIDEO_GENERATION_INVALID_INPUT
            - VIDEO_GENERATION_INSUFFICIENT_CREDITS
            - VIDEO_GENERATION_CONTENT_REJECTED
        message:
          description: Human readable error message. Upstream vendor names are redacted.
          type: string
        errors:
          description: Field-level validation errors when available.
          type: array
          items:
            type: object
            properties:
              path:
                type: string
              message:
                type: string
              code:
                type: string
            required:
              - path
              - message
              - code
            additionalProperties: false
        details:
          description: Additional structured error details when available.
        requested:
          description: Requested credits when the error is insufficient credits.
          type: number
        available:
          description: Available credits when the error is insufficient credits.
          type: number
      required:
        - code
        - message
      additionalProperties: false
    TemplateErrorResponse:
      type: object
      properties:
        error:
          description: >-
            Legacy machine-readable error field. Prefer `code` for new
            integrations.
          type: string
        code:
          description: Template error code.
          type: string
          enum:
            - TEMPLATE_NOT_FOUND
            - TEMPLATE_MODEL_MISMATCH
            - TEMPLATE_INVALID_INPUT
            - TEMPLATE_TRANSFORM_FAILED
        message:
          description: Human readable template error message.
          type: string
        errors:
          description: Field-level template validation errors when available.
          type: array
          items:
            type: object
            properties:
              path:
                type: string
              message:
                type: string
              code:
                type: string
            required:
              - path
              - message
              - code
            additionalProperties: false
        details:
          description: Additional structured error details when available.
      required:
        - code
        - message
      additionalProperties: false
    ErrorResponse:
      type: object
      properties:
        error:
          description: >-
            Legacy machine-readable error field. Prefer `code` for new
            integrations. This may contain an unprefixed compatibility code for
            older clients.
          type: string
        code:
          description: Machine-readable error code. Use this to branch in client code.
          type: string
        message:
          description: Human readable error message.
          type: string
        errors:
          description: Field-level validation errors when available.
          type: array
          items:
            type: object
            properties:
              path:
                type: string
              message:
                type: string
              code:
                type: string
            required:
              - path
              - message
              - code
            additionalProperties: false
        details:
          description: Additional structured error details when available.
      required:
        - code
        - message
      additionalProperties: false
    SeedanceVerificationErrorResponse:
      type: object
      properties:
        error:
          description: >-
            Legacy machine-readable error field. Prefer `code` for new
            integrations.
          type: string
        code:
          description: Seedance verification error code.
          type: string
          const: SEEDANCE_VERIFICATION_REQUIRED
        message:
          description: Human readable verification error message.
          type: string
        verification:
          description: Current Seedance verification state when available.
          anyOf:
            - {}
            - type: 'null'
      required:
        - code
        - message
      additionalProperties: false
    QueueState:
      description: Queue status
      type: string
      enum:
        - IN_QUEUE
        - IN_PROGRESS
        - COMPLETED
        - FAILED
        - CANCELED
    xai_grok_imagine_video_edit_videoInput:
      $ref: '#/components/schemas/__schema66'
      title: Input
      xMeta:
        duration: video_url
        video_duration: video_url
        size: video_url
    Usage:
      description: Credit usage breakdown for the request
      type: object
      properties:
        total:
          type: integer
          minimum: -9007199254740991
          maximum: 9007199254740991
        subscription:
          type: integer
          minimum: -9007199254740991
          maximum: 9007199254740991
        permanent:
          type: integer
          minimum: -9007199254740991
          maximum: 9007199254740991
      required:
        - total
        - subscription
        - permanent
      additionalProperties: false
    __schema1:
      description: >-
        Machine-readable generation error code. Present when `status` is
        `FAILED`.
      type: string
    __schema2:
      description: >-
        Sanitized human-readable failure message. Present when `status` is
        `FAILED`.
      type: string
    __schema66:
      title: Input
      xMeta:
        duration: video_url
        video_duration: video_url
        size: video_url
      type: object
      properties:
        prompt:
          description: Text description of the desired edit
          title: Prompt
          order: 0
          type: string
        video_url:
          description: >-
            URL of the input video to edit. The video will be resized to a
            maximum area of 854x480 pixels and truncated to 8 seconds.
          title: Video URL
          format: uri
          order: 1
          type: string
        resolution:
          description: Resolution of the output video
          title: Resolution
          order: 2
          default: auto
          type: string
          enum:
            - auto
            - 480p
            - 720p
      required:
        - prompt
        - video_url
      additionalProperties: {}
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: API Key
      description: API Key for API endpoints

````