---
title: "Control a character"
method: POST
path: "/v1/character_performance"
tags: ["Start generating"]
---

# Control a character

`POST /v1/character_performance`

This endpoint will start a new task to control a character's facial expressions and body movements using a reference video.

## Headers

- `X-Runway-Version` '2024-11-06', required

## Request body

- object
  - `seed` integer — If unspecified, a random number is chosen. Varying the seed integer is a way to get different results for the same other request parameters. Using the same seed integer for an identical request will produce similar results.
  - `character` union, required — The character to control. You can either provide a video or an image. A visually recognizable face must be visible and stay within the frame.
    - object — An image of your character. In the output, the character will use the reference video performance in its original static environment.
      - `type` 'image', required
      - `uri` union, required — A HTTPS URL, Runway or data URI containing an encoded image. See [our docs](/assets/inputs#images) on image inputs for more information.
        - string — A HTTPS URL, Runway upload URI, or base64 data URI (e.g. `data:image/png;base64,...`, up to 5MB) containing an encoded image. See [our docs](/assets/inputs#images) on image inputs for more information.
        - string — A Runway upload URI. See https://docs.dev.runwayml.com/assets/uploads for more information.
        - string — A data URI containing encoded media.
    - object — A video of your character. In the output, the character will use the reference video performance in its original animated environment and some of the character's own movements.
      - `type` 'video', required
      - `uri` union, required — A HTTPS URL, Runway or data URI containing an encoded video. See [our docs](/assets/inputs#videos) on video inputs for more information.
        - string — A HTTPS URL, Runway upload URI, or base64 data URI (e.g. `data:video/mp4;base64,...`, up to 16MB) containing an encoded video. See [our docs](/assets/inputs#videos) on video inputs for more information.
        - string — A Runway upload URI. See https://docs.dev.runwayml.com/assets/uploads for more information.
        - string — A data URI containing encoded media.
  - `reference` object, required — A video of a person performing in the manner that you would like your character to perform. The video must be between 3 and 30 seconds in duration.
    - `type` 'video', required
    - `uri` union, required — A video of a person performing in the manner that you would like your character to perform. The video must be between 3 and 30 seconds in duration. See [our docs](/assets/inputs#videos) on video inputs for more information.
      - string — A HTTPS URL, Runway upload URI, or base64 data URI (e.g. `data:video/mp4;base64,...`, up to 16MB) containing an encoded video. See [our docs](/assets/inputs#videos) on video inputs for more information.
      - string — A Runway upload URI. See https://docs.dev.runwayml.com/assets/uploads for more information.
      - string — A data URI containing encoded media.
  - `bodyControl` boolean — A boolean indicating whether to enable body control. When enabled, non-facial movements and gestures will be applied to the character in addition to facial expressions.
  - `expressionIntensity` integer — An integer between 1 and 5 (inclusive). A larger value increases the intensity of the character's expression.
  - `ratio` '1280:720' | '720:1280' | '960:960' | '1104:832' | '832:1104' | '1584:672' — The resolution of the output video.
  - `contentModeration` object — Settings that affect the behavior of the content moderation system.
    - `publicFigureThreshold` 'auto' | 'low' — When set to `low`, the content moderation system will be less strict about preventing generations that include recognizable public figures.
  - `model` 'act_two', required

## Response `200`

The task that was created.

- object
  - `id` string, uuid, required — The ID of the task that was created. Use this to retrieve the task later.
  - `estimatedCost` object, required — The maximum credits this task may charge. The final amount may be lower after the task completes.
    - `credits` number, required — Estimated cost of the generation in credits.

## Other responses

- `400` — The request was rejected. Inspect `error` or `issues` (when present) and retry with a corrected request.
- `429` — You have exceeded the rate limit for this endpoint.

---

[API](https://skmtc.net/runwayml/apis/runwayml-api.md) · [All operations](https://skmtc.net/runwayml/apis/runwayml-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/runwayml/runwayml-api/revisions/cbbe796a13a0/schema)
