Vérification du titulaire et ressources de portrait
Guide commun APIMaster pour la vérification, les ressources et la génération Seedance.
Vérification du titulaire et ressources de portrait
Les quatre modèles utilisent les mêmes interfaces APIMaster. Le serveur adapte les interfaces, identifiants et états des fournisseurs. La vérification officielle du titulaire, la validation de portraits par une filière et les ressources ordinaires ou virtuelles restent distinctes. Utilisez uniquement des photos expressément autorisées.
1. Capacités et portée
Interrogez les capacités avec votre clé APIMaster. Utilisez le channel_id renvoyé pour conserver le contexte. La disponibilité dépend des permissions, du projet et du routage du modèle. Un parcours non pris en charge est refusé sans changer de filière ou de modèle. SD1.0, SD1.5 et les alias personnalisés nécessitent une vérification séparée du protocole.
| model | duration | Image | Video | Audio |
|---|---|---|---|---|
| seedance-2.0 | 4–15 s | ≤9 | ≤3 / ≤15 s | ≤3 / ≤15 s |
| seedance-2.0-fast | 4–15 s | ≤9 | ≤3 / ≤15 s | ≤3 / ≤15 s |
| seedance-2.0-mini | 4–15 s | ≤9 | ≤3 / ≤15 s | ≤3 / ≤15 s |
| seedance-2.5 | 4–30 s / -1 | ≤30 | ≤10 / ≤30 s | ≤10 / ≤30 s |
2. Choisir le parcours
official_h5 exige une session et une vérification personnelle sur téléphone. channel_material_review utilise un groupe purpose=channel_portrait puis la soumission et la consultation des ressources ; owner_verified=false ne prouve pas une vérification officielle. purpose=ordinary concerne les ressources ordinaires lorsque cette capacité est disponible. virtual_or_ordinary ne propose pas la vérification officielle ; unverified signifie que la capacité reste non vérifiée. Sans purpose, la création de groupe conserve le comportement virtuel existant.
curl --fail-with-body 'https://apimaster.ai/v1/seedance2/private-avatar/groups' \
-H "Authorization: Bearer $APIMASTER_KEY" -H 'Content-Type: application/json' \
-d "{\"model\":\"seedance-2.5\",\"channel_id\":${APIMASTER_CHANNEL_ID},\"purpose\":\"channel_portrait\",\"name\":\"Authorized portrait materials\"}"
3. Vérification sur téléphone
Pour official_h5, créez une session puis ouvrez le h5_link sur le téléphone du titulaire. APIMaster héberge le rappel HTTPS : aucun serveur de rappel client n’est nécessaire. Omettez callback_url. Les clés durables et BytedToken restent sur le serveur. Le résultat du navigateur seul ne suffit pas : le serveur confirme le résultat auprès du fournisseur. Les rappels répétés ne créent pas de nouvelles ressources.
export APIMASTER_KEY='<your APIMaster key>'
export APIMASTER_CHANNEL_ID='<available channel ID from the capability API>'
curl --fail-with-body 'https://apimaster.ai/v1/seedance2/private-avatar/capabilities?model=seedance-2.5' -H "Authorization: Bearer $APIMASTER_KEY"
curl --fail-with-body 'https://apimaster.ai/v1/seedance2/private-avatar/verifications' \
-H "Authorization: Bearer $APIMASTER_KEY" -H 'Content-Type: application/json' \
-H 'Idempotency-Key: portrait-session-001' \
-d "{\"model\":\"seedance-2.5\",\"channel_id\":${APIMASTER_CHANNEL_ID},\"name\":\"My portrait\"}"
4. Confirmer le résultat
Après completed, utilisez le group_id public. Les états et délais ci-dessous sont distincts de la durée d’autorisation du portrait. Une erreur réseau temporaire conserve l’état ; n’ouvrez pas automatiquement une nouvelle session. Consultez aussi /console/seedance-materials. Une session, un groupe, une ressource et une tâche vidéo ont des identifiants distincts.
curl --fail-with-body 'https://apimaster.ai/v1/seedance2/private-avatar/verifications/verification_PUBLIC_ID' -H "Authorization: Bearer $APIMASTER_KEY"
| API | fields / values |
|---|---|
| capabilities | model, channel_id, method, configured, reason, hosted_callback, real_person_verified |
| verification | session_id (id), method, status, h5_link (verification_url), created_at, expires_at, group_id |
| verification.status | creating, pending, completed, failed, expired, failed_unconfirmed, submission_unknown |
| Idempotency-Key | 8–128; same request → original receipt; changed request → 409 |
| verification rate | ≤3 / user / minute; upstream limits also apply |
| H5 / BytedToken | single-use H5; query credential ≤30 min; expires_at ≠ portrait authorization expiry |
5. Importer et vérifier les ressources
POST /uploads héberge seulement le fichier source ; POST /assets est le point commun d’enregistrement et de validation. L’ancien POST /v1/seedance2/private-avatar est un alias du même traitement. Seul Active autorise la génération. Processing, Pending et Failed sont indisponibles. Chaque nouvelle photo d’un groupe officiel real_person fait l’objet d’une validation de correspondance ; channel_portrait reste une validation de ressources. Une réussite partielle conserve les ressources acceptées. Après un délai d’attente, consultez les ressources existantes ; ne répétez pas automatiquement le POST et n’inventez pas asset_id.
curl --fail-with-body 'https://apimaster.ai/v1/seedance2/private-avatar/uploads' \
-H "Authorization: Bearer $APIMASTER_KEY" -F 'file=@authorized-owner.png'
curl --fail-with-body 'https://apimaster.ai/v1/seedance2/private-avatar/assets' \
-H "Authorization: Bearer $APIMASTER_KEY" -H 'Content-Type: application/json' \
-H 'Idempotency-Key: portrait-asset-001' \
-d '{"model":"seedance-2.5","group_id":"group_PUBLIC_ID","asset_type":"Image","assets":[{"url":"<signed upload URL>","name":"Owner"}]}'
curl --fail-with-body 'https://apimaster.ai/v1/tasks/asset_task_PUBLIC_ID' -H "Authorization: Bearer $APIMASTER_KEY"
curl --fail-with-body 'https://apimaster.ai/v1/seedance2/private-avatar/assets?group_id=group_PUBLIC_ID' -H "Authorization: Bearer $APIMASTER_KEY"
curl --fail-with-body 'https://apimaster.ai/v1/seedance2/private-avatar/assets/asset_PUBLIC_ID' -H "Authorization: Bearer $APIMASTER_KEY"
| API | fields / values |
|---|---|
| uploads | JPEG / PNG ≤10 MB; upload_id, url, url_expires_at, delete_after |
| groups | public id; group_type=virtual / ordinary / channel_portrait / real_person |
| assets | public asset_id; status=Pending / Processing / Active / Failed |
| channel_material_review | verification_method, owner_verified=false, material_purpose, review.scope_model |
| review task | asset_task_*; GET /v1/tasks/{id} |
6. Générer et télécharger
Obtenez une estimation avec /v1/videos/quote avant de générer. Elle ne garantit pas un plafond de facturation. Le serveur conserve la filière, le compte et le projet compatibles avec les ressources. Les combinaisons incompatibles sont refusées. Le changement de modèle exige le contrôle de ses propres limites ; les nouvelles photos exigent une nouvelle validation. Après succès, consultez le reçu et téléchargez la vidéo.
curl --fail-with-body 'https://apimaster.ai/v1/videos' \
-H "Authorization: Bearer $APIMASTER_KEY" -H 'Content-Type: application/json' \
-H 'Idempotency-Key: portrait-video-001' \
-d '{"model":"seedance-2.5","prompt":"The person smiles naturally","image_urls":["asset://asset_PUBLIC_ID"],"resolution":"480p","duration":4,"generate_audio":false}'
curl --fail-with-body 'https://apimaster.ai/v1/seedance2/private-avatar/video-requests/video_request_PUBLIC_ID' -H "Authorization: Bearer $APIMASTER_KEY"
curl --fail-with-body 'https://apimaster.ai/v1/videos/task_PUBLIC_ID' -H "Authorization: Bearer $APIMASTER_KEY"
curl --fail-with-body 'https://apimaster.ai/v1/videos/task_PUBLIC_ID/billing' -H "Authorization: Bearer $APIMASTER_KEY"
curl --fail-with-body 'https://apimaster.ai/v1/videos/task_PUBLIC_ID/content' -H "Authorization: Bearer $APIMASTER_KEY" -o owner.mp4
| API | fields / values |
|---|---|
| generation | Idempotency-Key required; no automatic POST retry |
| receipt | video_request_*; X-Seedance-Request-Id; replay → 202 + original receipt |
| video task | task_*; separate from receipt, verification and asset IDs |
7. Confidentialité et suppression
Les liens signés sont sensibles : toute personne les détenant peut télécharger le fichier pendant leur validité. Ne journalisez pas les liens H5, les URL signées ou les identifiants de rappel. La suppression du fichier hébergé ne supprime pas la ressource fournisseur. La suppression d’une ressource retire son association APIMaster et utilise la suppression fournisseur si disponible ; aucune suppression distante non prise en charge n’est promise. Supprimez les ressources avant le groupe. Les vidéos déjà produites ne disparaissent pas automatiquement. Aucun modèle biométrique n’est conservé ; validation et autorisation d’usage sont distinctes.
| API / storage | values |
|---|---|
| signed original URL | 1 h |
| hosted original | access ≤24 h; hourly cleanup ≤25 h; private files 0600 |
| DELETE /uploads/{upload_id} | hosted original |
| DELETE /assets/{asset_id} | APIMaster mapping; upstream deletion if supported |
| DELETE /groups/{group_id} | empty group |
8. Coûts et erreurs
Vérifié le 2026-10-07 : la documentation officielle décrit la vérification comme temporairement gratuite. Les frais réels de session, validation, import, stockage et gestion dépendent du contexte et ne sont pas tous confirmés. Aucun achat de droits n’est automatique. La génération utilise les mécanismes existants de devis, réservation, règlement et remboursement ; consultez le reçu réel. Les erreurs distinguent permissions, capacité indisponible, validation en attente ou échouée, ressource incompatible et réponse fournisseur incertaine. Aucun accès interutilisateur n’est autorisé.
| HTTP | context |
|---|---|
| 400 | input / callback |
| 403 | permissions |
| 404 | resource |
| 409 | pending / failed review / incompatible context |
| 429 | rate limit |
| 502 / 503 | uncertain upstream result / unavailable |
