asset://<AssetId>.
The “real-person verification” here means liveness detection and same-person comparison — not ID card, name, or police-database identity verification. Verification must be completed by the real person themselves on the returned H5 page.
1. Endpoints and models
All asset library requests use the same entry point:model field in the request body is only used by GregAPI to select the domestic or overseas official channel and is not sent to the ByteDance upstream. We recommend using the same model and ProjectName throughout the entire verification and asset workflow.
Real-person assets are not automatically migrated or downgraded across domestic, overseas, or third-party channels. After creating a real-person Group/Asset, continue using the original model region and Project.
2. Full workflow
- Call
CreateVisualValidateSessionto create a one-time verification session. - Save the
BytedTokenin the response and have the real person openH5Linkto complete liveness verification. - After the H5 page redirects to
CallbackURL, the server callsGetVisualValidateResult. - Obtain
GroupIdfrom the successful result. This group’s type is fixed toLivenessFace. - Use
CreateAssetto add images, videos, or audio to the group. - Poll with
GetAssetuntil the asset becomesActiveorFailed. - Only
Activeassets can be used for Seedance viaasset://<AssetId>.
resultCode=10000, the server must still call GetVisualValidateResult to obtain the trusted GroupId.
When a domestic request hits the ZLHub channel with real-person capability enabled, H5Link is a GregAPI-hosted verification page: it hosts the vendor H5, and after the trusted Group is bound successfully it redirects to CallbackURL with the same ByteDance parameters. The caller’s flow does not need to distinguish channels.
3. Create a real-person verification session
If you do not have your own callback page, you can use the GregAPI-provided
https://api.gregapi.com/real-person/callback. This page only indicates that the H5 operation has finished; it does not store or display callback parameters and does not represent successful verification. You must still call GetVisualValidateResult with the original BytedToken afterward.
To specify the H5 language, append lng=zh, lng=en, or lng=zh-Hant after H5Link.
4. Query the verification result
After the real person completes the H5 flow, query with the originalBytedToken:
GroupId is bound by GregAPI to the current API user, official channel, region, and Project. Real-person Groups cannot be created via CreateAssetGroup, nor used as the asset group for other users or other regions.
5. Create a real-person asset
Each real-person Group can correspond to only one real person. Assets containing multiple people, differing from the verified person, or failing same-person comparison will enter
Failed.
Common media limits:
Moderation.Strategy=Skip is not available.
6. Query asset status
CreateAsset is asynchronous. Query using the official Id field until it reaches a terminal state:
The asset URL in the query response is a short-lived address; do not store it or use it in Seedance requests.
7. List, update, and delete
The following Actions are supported:
List example:
asset:// inference. If the upstream deletion fails, retry with the same official Id. Delete only accepts the Id field — not ID, AssetId, AssetID, or asset_id.
8. Use real-person assets to generate video
OnlyActive assets can be used for video. Native Seedance task example:
dreamina-* and continue using the Asset created by the overseas verification flow. Do not mix IDs between domestic and overseas Assets.
The OpenAI-style /v1/videos endpoint also accepts asset:// reference assets:
9. Error responses
Errors keep the ByteDanceResponseMetadata.Error structure:
Upstream errors for real-person assets use neutral error messages to avoid echoing one-time credentials or temporary media URLs into responses and logs.
10. Billing and compliance
- Real-person verification and asset Create/Get/List/Update/Delete currently do not deduct the GregAPI model balance.
- When generating video with a real-person
asset://, billing still occurs once based on the actual Seedance tokens returned by the successful task. - Real-person verification is currently marked by the official channel as time-limited free; the future price and end time are not disclosed. Do not treat this status as a long-term free commitment.
- The caller must obtain explicit, proactive, and revocable separate consent from the real person before verification, and provide deletion and withdrawal options.
- Do not store face content, full
H5Link,BytedToken, AK/SK, Authorization, or temporary asset URLs in logs, issues, support tickets, or databases. - The availability of the real-person H5, Group, and Asset depends on the corresponding domestic or overseas official channel entitlement. If the API returns permission or quota errors, contact the GregAPI administrator to confirm the activation status.