# Create a video task

Submit once and keep the returned task ID.

`POST /v1/videos`

<a id="authentication"></a>

## Authentication

Use Authorization: Bearer YOUR_API_KEY. The selected model must be enabled for that key’s group. JSON requests use Content-Type: application/json.

<a id="parameters"></a>

## Parameters



| Field | Type | Required | Description |
| --- | --- | --- | --- |
| model | string | Required | Example: seedance-2.0-fast. |
| prompt | string | Required | Text description for this minimal example. |
| seconds | number | Optional | This example requests 5 seconds; supported limits depend on the model. |
| resolution | string | Optional | This example uses 720p; check the chosen model. |

<a id="request"></a>

## Request example



```
export OHGROK_API_KEY='YOUR_API_KEY'

curl --fail-with-body --silent --show-error \
  'https://api.ohgrok.com/v1/videos' \
  -H "Authorization: Bearer $OHGROK_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{
    "model": "seedance-2.0-fast",
    "prompt": "Clouds moving slowly over a quiet mountain lake",
    "seconds": 5,
    "resolution": "720p"
  }' \
  -o video-response.json
```

<a id="response"></a>

## Response structure

Save the returned id. Query that same ID instead of creating another task. The configured route supports JSON and URL-reference multipart requests; local binary uploads, draft references and frames are not implemented. This page documents the minimal JSON flow.

```
{"id":"YOUR_VIDEO_ID","status":"queued"}
```

<a id="errors"></a>

## Error handling

Read the HTTP status together with the returned error message. Check your key and group for authentication or model-access failures. Inspect balance and upstream limits for quota/rate errors; retain task IDs on timeouts.

- [Troubleshoot a request](/docs/errors/)

