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

# Video Remix

> Submit a remix based on an existing Grok video task using `POST /v1/videos/{video_id}/remix`.

# Video Remix

OpenAI-format entry point. For unified video, use [Video Remix (Unified Video)](./unified-remix) (`POST /v1/video/remix`, pass `task_id` in the Body).

Based on an existing Grok video task, submit a remix task via `POST /v1/videos/{video_id}/remix` to generate variants with new prompts and aspect ratio parameters.

* The path parameter `video_id` is the original video task ID.
* The request body is JSON and must include `model`, `prompt`, `size`, and `aspect_ratio`.
* After a successful submission, the new task `id` and `status` are returned. Please poll using [Grok Task Query](./query) or [Query Task](./unified-query) for unified video, depending on which pipeline the original task belongs to.

## Method and Path

```http theme={null}
POST /v1/videos/{video_id}/remix
```

## Request Example

<CodeGroup>
  ```bash theme={null}
  curl -X POST https://octopusx.ai/v1/videos/grok:48a67431-0708-46d1-9ab9-83cb84700153/remix \
    -H "Authorization: Bearer YOUR_API_KEY" \
    -H "Content-Type: application/json" \
    -H "Accept: application/json" \
    -d '{
      "model": "grok-video-3",
      "prompt": "play with another white cat",
      "aspect_ratio": "3:2",
      "size": "1080P",
      "parent_post_id": "5afc6f67-23fe-4a74-a073-727ff662f870"
    }'
  ```

  ```python theme={null}
  import requests

  video_id = "grok:48a67431-0708-46d1-9ab9-83cb84700153"

  resp = requests.post(
      f"https://octopusx.ai/v1/videos/{video_id}/remix",
      headers={
          "Authorization": "Bearer YOUR_API_KEY",
          "Content-Type": "application/json",
          "Accept": "application/json",
      },
      json={
          "model": "grok-video-3",
          "prompt": "play with another white cat",
          "aspect_ratio": "3:2",
          "size": "1080P",
          "parent_post_id": "5afc6f67-23fe-4a74-a073-727ff662f870",
      },
      timeout=60,
  )
  print(resp.json())
  ```

  ```javascript theme={null}
  const videoId = "grok:48a67431-0708-46d1-9ab9-83cb84700153";

  const response = await fetch(
    `https://octopusx.ai/v1/videos/${encodeURIComponent(videoId)}/remix`,
    {
      method: "POST",
      headers: {
        Authorization: "Bearer YOUR_API_KEY",
        "Content-Type": "application/json",
        Accept: "application/json",
      },
      body: JSON.stringify({
        model: "grok-video-3",
        prompt: "play with another white cat",
        aspect_ratio: "3:2",
        size: "1080P",
        parent_post_id: "5afc6f67-23fe-4a74-a073-727ff662f870",
      }),
    }
  );

  console.log(await response.json());
  ```
</CodeGroup>

## Response Example

<ResponseExample>
  ```json 200 theme={null}
  {
    "id": "grok:48a67431-0708-46d1-9ab9-83cb84700153",
    "status": "processing",
    "status_update_time": 1762685256
  }
  ```
</ResponseExample>

## Authentication

```http theme={null}
Authorization: Bearer YOUR_API_KEY
```

## Path Parameters

<ParamField path="video_id" type="string" required>
  Source video task ID, consistent with the `id` returned by [Grok Video Generation](./generation) or the query interface.
</ParamField>

## Body

<ParamField body="model" type="string" required>
  Model name, for example `grok-video-3`.
</ParamField>

<ParamField body="prompt" type="string" required>
  Remix prompt describing how to rewrite or continue the original video content.
</ParamField>

<ParamField body="size" type="string" required>
  Resolution specification, pass `720P` or `1080P`.
</ParamField>

<ParamField body="aspect_ratio" type="string" required>
  Video aspect ratio, optional values: `2:3`, `3:2`, `1:1`.
</ParamField>

<ParamField body="parent_post_id" type="string">
  Parent task ID.
</ParamField>

## Response

<ResponseField name="id" type="string">
  New remix task ID.
</ResponseField>

<ResponseField name="status" type="string">
  Task status, common values include `processing`, `completed`, `failed`.
</ResponseField>

<ResponseField name="status_update_time" type="integer">
  Most recent status update time (Unix timestamp).
</ResponseField>

## Related APIs

* [Grok Video Overview](./overview)
* [Grok Video Generation](./generation)
* [Video Extend](./extend)
* [Video Extensions](./extensions)
* [Grok Task Query](./query)
* [Video Remix (Unified Video)](./unified-remix)
