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

# Helpful tips

> Resolve common generation failures and choose the right portrait asset workflow.

Pay attention to the complete API response when a request fails. The tips below cover common
generation failures and the fastest next action for each case.

<AccordionGroup>
  <Accordion title="Which portrait asset flow should I use?">
    **Virtual Portrait** is the usual choice when you already have permission to use the source
    material. If an uploaded image or video may contain a real person, add it to a Virtual
    Portrait Asset Group first, wait for the asset to become active, and then use its asset URI in
    video generation.

    **Real-Person Verification** is intended for situations where another person needs to provide
    explicit authorization. Create a verification link and send it to that person. After they
    complete liveness verification, you can upload authorized images, videos, or audio associated
    with them.

    In most cases, the Virtual Portrait flow is sufficient. See
    [Generate videos with face assets](/face-assets-video-generation) for the full workflow.
  </Accordion>

  <Accordion title="The input image may contain a real person">
    Follow the [face asset workflow](/face-assets-video-generation):

    1. Create or reuse a Virtual Portrait Asset Group.
    2. Add the image or video to the group.
    3. Poll the asset until its status is `Active`.
    4. Generate with an `asset://<ASSET_ID>` URI instead of the original media URL.
  </Accordion>

  <Accordion title="The output video may be related to copyright restrictions">
    Replace the source material or rewrite the request so it does not reproduce protected content.
    One practical approach is to ask a multimodal model to describe the high-level composition,
    motion, lighting, and camera treatment of your source, then write an original prompt from that
    description.

    Do not submit content unless you have the rights and permissions required to use it.
  </Accordion>

  <Accordion title="The output audio may contain sensitive information">
    Disable `controls.generateAudio`, then submit the generation request again.
  </Accordion>

  <Accordion title="The error is not listed here">
    Save the complete JSON response, HTTP status, request time, and task ID if one was returned.
    Send those details to your administrator or support contact, but never include your API key.

    See [Errors](/help/errors) for the standard error envelope and retry guidance.
  </Accordion>
</AccordionGroup>

<Tip>
  When reporting a failed asynchronous task, include the public GENGEN task ID. It helps identify
  the task without exposing your API key or upstream provider credentials.
</Tip>
