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

# SD2 Manxue: Submit Image, Video, or Audio for Review

> Batch submit image, video, and audio URLs for SD2 Manxue review. At least one array must be non-empty. Returns an assetId per submitted item.

Before using face images, virtual avatars, or other media in SD2 Manxue video generation tasks, submit them through this endpoint for moderation review. After review passes, reference each asset using the `asset://{assetId}` format in your generation requests.

**Base URL:** `https://zcbservice.aizfw.cn/kyyReactApiServer`

**Endpoint:** `POST /asset/sd2Manxue/assetUpload`

***

## Request Parameters

<ParamField body="imageUrls" type="array">
  A list of image URLs to submit for moderation review. Images should have an aspect ratio between `0.4` and `2.5`, and dimensions between `300 px` and `6000 px` on each side.
</ParamField>

<ParamField body="videoUrls" type="array">
  A list of video URLs to submit for moderation review.
</ParamField>

<ParamField body="audioUrls" type="array">
  A list of audio URLs to submit for moderation review.
</ParamField>

At least one of `imageUrls`, `videoUrls`, or `audioUrls` must be provided and non-empty.

***

## Response Fields

<ResponseField name="code" type="string">
  Response status code. `"0"` indicates success; any other value indicates failure.
</ResponseField>

<ResponseField name="msg" type="string">
  Response message. Returns `null` on success, or an error description on failure.
</ResponseField>

<ResponseField name="data" type="object">
  The response data object, returned on success.

  <Expandable title="data object properties">
    <ResponseField name="data.items" type="array">
      The list of assets that were successfully submitted for review.

      <Expandable title="items[] properties">
        <ResponseField name="data.items[].assetType" type="string">
          The type of the submitted asset: `Image`, `Video`, or `Audio`.
        </ResponseField>

        <ResponseField name="data.items[].originalUrl" type="string">
          The original URL that was submitted for this asset.
        </ResponseField>

        <ResponseField name="data.items[].assetId" type="string">
          The assigned asset ID. Use this value as `asset://{assetId}` when referencing the asset in a generation task after it has been approved.
        </ResponseField>

        <ResponseField name="data.items[].status" type="string">
          The submission status. Immediately after submission this will be `submitted`. Use the [Asset Status](/api-reference/assets/sd2-manxue-asset-status) endpoint to track review progress.
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="data.failedItems" type="array">
      A list of assets from the request that failed to submit. May be empty if all assets were submitted successfully.
    </ResponseField>
  </Expandable>
</ResponseField>

***

## Example Request

```bash theme={null}
curl -X POST https://zcbservice.aizfw.cn/kyyReactApiServer/asset/sd2Manxue/assetUpload \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "imageUrls": ["https://example.com/portrait.jpg"],
    "videoUrls": ["https://example.com/reference.mp4"],
    "audioUrls": []
  }'
```

**Success response:**

```json theme={null}
{
  "code": "0",
  "msg": null,
  "data": {
    "items": [
      {
        "assetType": "Image",
        "originalUrl": "https://example.com/portrait.jpg",
        "assetId": "asset_img_001",
        "status": "submitted"
      },
      {
        "assetType": "Video",
        "originalUrl": "https://example.com/reference.mp4",
        "assetId": "asset_video_001",
        "status": "submitted"
      }
    ],
    "failedItems": []
  }
}
```

<Note>
  After submitting your assets, poll the [Asset Status](/api-reference/assets/sd2-manxue-asset-status) endpoint until each asset's status changes to `Active`. Only assets with `Active` status can be used in generation tasks.
</Note>

## Workflow

Follow these steps to use submitted assets in a generation task:

1. **Submit assets** — Call this endpoint with your media URLs. Collect the `assetId` for each item in `data.items`.
2. **Poll for Active status** — Call the [Asset Status](/api-reference/assets/sd2-manxue-asset-status) endpoint with your asset IDs until all required assets show `Active`.
3. **Reference in generation** — Use `asset://{assetId}` in your generation task request for the appropriate parameter (`referenceImages`, `referenceVideos`, or `referenceAudios`).
