DocsAllemagneAfficher la version internationale de la base de connaissances

Photos et plans

Dernière mise à jour: 2026-11-064 min de lecture

Les deux outils reçoivent un fichier en multipart/form-data.

Amélioration de photos

POST /photo/enhance - scope tools:photo, tâche. Une photo par requête.

Parties du formulaire :

PartieDescription
imagela photo - obligatoire ; JPEG, PNG ou WebP jusqu'à 25 MB
maskcleanup uniquement : un masque PNG, le blanc marque la zone à modifier
dataoptions sous forme d'une seule chaîne JSON - obligatoire

Options dans data :

ChampDescription
modeenhance - lumière, couleurs, netteté ; cleanup - supprimer des éléments ; staging - meubler une pièce vide. Par défaut cleanup
promptobligatoire pour cleanup et staging (3-500 caractères) : ce qu'il faut supprimer ou comment meubler ; facultatif pour enhance
intensitylight, medium (par défaut), strong
roomTypeliving, bedroom, kitchen, bathroom, dining, office, outdoor
furnitureStylepour staging : modern, scandinavian, industrial, luxury, minimalist, coastal
autoMaskcleanup sans votre propre masque : détecter la zone automatiquement
seedun nombre pour obtenir un résultat reproductible
negativePromptce qu'il faut éviter, jusqu'à 300 caractères
objectId, objectTypevotre bien auquel appartient la photo (property ou complex)
curl -X POST https://developers.grem.capital/api/v1/photo/enhance \
  -H "Authorization: Bearer gsk_live_xxx" \
  -F 'data={"mode":"cleanup","prompt":"remove the chair and the boxes"}' \
  -F "image=@room.jpg"

Un masque avec enhance ou staging est refusé - il n'y fonctionne pas, et rien n'est facturé. Le prix dépend du mode. Refus : un masque hors de cleanup - 422 avec code: MASK_NOT_SUPPORTED ; un autre type de fichier ou un fichier de plus de 25 MB - 422 avec code: JOB_CREATE_FAILED ; une clé inconnue dans data - 400. La réponse de démarrage contient sku et priceMinor, c'est-à-dire le montant facturé pour l'appel (absents lorsque le quota du forfait le couvre).

202 avec jobId. La tâche terminée (GET /photo/enhance/jobs/{id}) :

ChampDescription
resultsvariantes du résultat
results[].variantnuméro de la variante
results[].urladresse de l'image
results[].width, results[].heighttaille
metadata.errorpour une tâche échouée : la raison, sous forme de texte générique

Fichier d'une variante : GET /artifacts/v1/ai/photo-enhancement/jobs/{jobId}/download/{variant}. Événements : photo.completed / photo.failed.

Nettoyage de plans

POST /floorplan/create - scope tools:floorplan. Une photo ou un scan de plan devient un plan propre avec les noms des pièces et leurs surfaces. Le traitement est immédiat : la réponse 202 contient déjà le résultat.

PartieDescription
filel'image du plan (JPEG, PNG, WebP, HEIC ; jusqu'à 20 MB) - obligatoire ; le nom image est aussi accepté
objectIdrattacher le résultat à votre bien
objectTypeproperty, rental ou complex
curl -X POST https://developers.grem.capital/api/v1/floorplan/create \
  -H "Authorization: Bearer gsk_live_xxx" \
  -F "file=@plan.jpg"

Réponse :

ChampDescription
jobIdidentifiant de la tâche
statusdone - étiquettes acceptées automatiquement ; review - résultat prêt, étiquettes à vérifier ; rejected - l'image n'est pas un plan ; failed - échec
statecompleted pour done et review, failed pour rejected et failed
roomspièces : label, area (m², si indiquée), stable (l'étiquette a été lue de la même façon à chaque passage), placement (emplacement de l'étiquette sur le plan nettoyé)
totalAreasurface totale, m², si les surfaces sont indiquées sur le plan
cleanedFileIdl'image du plan nettoyé
sourceFileIdle plan que vous avez envoyé

Rapport : GET /artifacts/v1/ai/floor-plan/jobs/{id}/report.pdf. Récupérer à nouveau le résultat : GET /floorplan/create/jobs/{id}. Événements : floorplan.completed / floorplan.failed. Si l'image n'est pas un plan, rien n'est facturé.

Le traitement de l'envoi peut prendre plus d'une minute, et le réseau devant l'API coupe avec 524 toute réponse qui n'a pas commencé dans les ~100 secondes. Envoyez donc un Idempotency-Key et l'en-tête Prefer: respond-async : dès que le fichier est envoyé, vous recevez 202 avec une tâche de requête (jobId de la forme areq_…, en-têtes Preference-Applied: respond-async, Location et Retry-After). Interrogez GET /floorplan/create/jobs/{id} avec cet identifiant (gratuit) jusqu'à ce que state vaille completed (result contient exactement la réponse décrite ci-dessus, comme sans l'en-tête) ou failed. Une tâche échouée avec code: interrupted (redémarrage du service) n'est pas facturée et libère la clé : renvoyez la même requête avec la même clé - le fichier est envoyé à nouveau. Les événements floorplan.completed / floorplan.failed portent l'identifiant de la tâche de requête. Sans l'en-tête, la réponse reste la même qu'auparavant.

Voir aussi

Cet article vous a-t-il aidé ?