API Assets

L’API Assets te permet d’importer et de gérer les images utilisées dans YouThumbAI. Les assets sont la base des profils de visage et des templates personnalisés.

Types d’assets

TypeDescriptionStocké en base
faceImages de référence du visage pour les personnesOui
templateTemplates de référence de styleOui
bucketImport 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ètreTypeObligatoireDéfautDescription
typestringNon-Filtre par type : face, template, bucket
pagenumberNon1Numéro de page
limitnumberNon20É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)

ChampTypeObligatoireDescription
fileFileOuiFichier image (le type MIME doit commencer par image/)
typestringOuiface, template ou bucket
descriptionstringNonDescription
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)

ChampTypeObligatoireDéfautDescription
base64stringOui-Image encodée en base64 (avec ou sans préfixe data:)
typestringOui-face, template ou bucket
filenamestringNongénéré automatiquementNom du fichier
mimeTypestringNonimage/jpegimage/jpeg, image/png, image/webp, image/gif
descriptionstringNon-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ètreTypeDescription
idstring (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ètreTypeDescription
idstring (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.