Types d’assets
| Type | Description | Stocké en base |
|---|---|---|
face | Images de référence du visage pour les personnes | Oui |
template | Templates de référence de style | Oui |
bucket | Import de fichier temporaire (sans entrée en base) | Non |
Le type
bucket importe les fichiers dans un stockage temporaire sans créer d’entrée en base de données. Pratique pour les images éphémères nécessaires pendant un workflow de génération.Lister les assets
Récupère les assets partagés et publiés dans ton organisation.GET /api/assets
Paramètres de requête
| Paramètre | Type | Obligatoire | Défaut | Description |
|---|---|---|---|---|
type | string | Non | - | Filtre par type : face, template, bucket |
page | number | Non | 1 | Numéro de page |
limit | number | Non | 20 | Éléments par page (100 max) |
bash
# Lister tous les assets
curl https://youthumb.ai/api/assets \
-H "x-api-key: your_api_key"
# Lister uniquement les assets de visage
curl "https://youthumb.ai/api/assets?type=face" \
-H "x-api-key: your_api_key"
# Paginé
curl "https://youthumb.ai/api/assets?page=2&limit=10" \
-H "x-api-key: your_api_key"Réponse de la liste
json
{
"success": true,
"data": {
"assets": [
{
"id": "asset-uuid",
"type": "face",
"url": "https://...",
"name": "photo.jpg",
"description": "Front face photo",
"mimeType": "image/jpeg",
"size": 245000,
"width": 1920,
"height": 1080,
"createdAt": "2024-01-15T10:30:00.000Z"
}
],
"pagination": {
"page": 1,
"limit": 20
}
}
}Importer un asset
Importe une image. Deux modes sont pris en charge : multipart/form-data et JSON (base64).POST /api/assets
Mode 1 : multipart (FormData)
| Champ | Type | Obligatoire | Description |
|---|---|---|---|
file | File | Oui | Fichier image (le type MIME doit commencer par image/) |
type | string | Oui | face, template ou bucket |
description | string | Non | Description |
bash
curl -X POST https://youthumb.ai/api/assets \
-H "x-api-key: your_api_key" \
-F "file=@face-photo.jpg" \
-F "type=face" \
-F "description=Front face photo"Mode 2 : base64 (JSON)
| Champ | Type | Obligatoire | Défaut | Description |
|---|---|---|---|---|
base64 | string | Oui | - | Image encodée en base64 (avec ou sans préfixe data:) |
type | string | Oui | - | face, template ou bucket |
filename | string | Non | généré automatiquement | Nom du fichier |
mimeType | string | Non | image/jpeg | image/jpeg, image/png, image/webp, image/gif |
description | string | Non | - | Description (500 caractères max) |
bash
curl -X POST https://youthumb.ai/api/assets \
-H "x-api-key: your_api_key" \
-H "Content-Type: application/json" \
-d '{
"base64": "data:image/jpeg;base64,/9j/4AAQ...",
"type": "face",
"filename": "my-face.jpg",
"mimeType": "image/jpeg",
"description": "Front face photo"
}'Réponse de l’import
json
{
"success": true,
"data": {
"id": "new-asset-uuid",
"type": "face",
"url": "https://...",
"name": "my-face.jpg",
"description": "Front face photo",
"mimeType": "image/jpeg",
"size": 245000,
"width": 1920,
"height": 1080,
"createdAt": "2024-01-15T10:30:00.000Z"
}
}Pour les imports
bucket, la réponse contient un id vide et null pour width/height, car le fichier est stocké temporairement sans enregistrement en base de données.Obtenir un asset
Récupère un asset précis par son ID.GET /api/assets/{id}
| Paramètre | Type | Description |
|---|---|---|
id | string (UUID) | ID de l’asset |
bash
curl https://youthumb.ai/api/assets/asset-uuid \
-H "x-api-key: your_api_key"Réponse
json
{
"success": true,
"data": {
"id": "asset-uuid",
"type": "face",
"url": "https://...",
"name": "photo.jpg",
"description": "Front face photo",
"mimeType": "image/jpeg",
"size": 245000,
"width": 1920,
"height": 1080,
"createdAt": "2024-01-15T10:30:00.000Z"
}
}Supprimer un asset
Supprime un asset par son ID.DELETE /api/assets/{id}
| Paramètre | Type | Description |
|---|---|---|
id | string (UUID) | ID de l’asset |
bash
curl -X DELETE https://youthumb.ai/api/assets/asset-uuid \
-H "x-api-key: your_api_key"Réponse de suppression
json
{
"success": true,
"data": {
"message": "Asset deleted"
}
}Exemple complet : JavaScript
javascript
const API = 'https://youthumb.ai/api';
const headers = {
'x-api-key': process.env.YOUTHUMB_API_KEY,
'Content-Type': 'application/json',
};
// Importer une image de visage (base64)
async function uploadFaceImage(base64Data, filename) {
const response = await fetch(`${API}/assets`, {
method: 'POST',
headers,
body: JSON.stringify({
base64: base64Data,
type: 'face',
filename,
mimeType: 'image/jpeg',
}),
});
return response.json();
}
// Lister tous les assets de visage
async function listFaceAssets() {
const response = await fetch(`${API}/assets?type=face`, { headers });
return response.json();
}
// Importer les visages puis créer la personne
async function setupPerson(name, faceImages) {
// 1. Importer toutes les images de visage
const uploadResults = await Promise.all(
faceImages.map((img) => uploadFaceImage(img.base64, img.filename))
);
const imageIds = uploadResults.map((r) => r.data.id);
// 2. Créer la personne avec les images importées
const person = await fetch(`${API}/persons`, {
method: 'POST',
headers,
body: JSON.stringify({ name, imageIds }),
});
return person.json();
}Les assets sont le prérequis de l’API Persons. Importe d’abord les images de visage comme assets, puis passe leurs ID lors de la création ou de la mise à jour d’une personne.