Shape Detection API

Détecte les formes géométriques dans une image.

https://api.overcorp.fr


Authentification

Les endpoints /upload et /feedback nécessitent une authentification. Les autres endpoints restent publics.

POST /register

Crée un nouveau compte.

curl -X POST https://api.overcorp.fr/register \
  -H "Content-Type: application/json" \
  -d '{"email": "user@example.com", "password": "password123"}'
{"id": 1, "email": "user@example.com", "token": "eyJhbG..."}

POST /login

Authentifie un utilisateur existant.

curl -X POST https://api.overcorp.fr/login \
  -H "Content-Type: application/json" \
  -d '{"email": "user@example.com", "password": "password123"}'
{"id": 1, "email": "user@example.com", "token": "eyJhbG..."}

Les tokens expirent après 24h.


POST /upload (authentifié)

Envoie une image pour analyse. Requiert un token dans le header Authorization.

curl -X POST -F "image=@photo.png" https://api.overcorp.fr/upload \
  -H "Authorization: Bearer <token>"
{"id": 42}

Option ?wait=true

Attend la fin du traitement et renvoie directement l'image annotée.

curl -X POST -F "image=@photo.png" "https://api.overcorp.fr/upload?wait=true" -o result.jpg

GET /status/:id

Récupère le résultat de l'analyse.

{
  "completed": true,
  "detections": [
    {"class": "Rectangle", "confidence": 0.96, "bbox": [10, 20, 150, 200]},
    {"class": "Cercle", "confidence": 0.91, "bbox": [200, 50, 300, 150]}
  ]
}

Si completed: false, l'analyse est encore en cours. Poll toutes les 500ms.

Formes détectées : Carre, Cercle, Hexagone, Octogone, Pentagone, Rectangle, Triangle


GET /result/:id

Retourne l'image avec les bounding boxes dessinées (JPG).

https://api.overcorp.fr/result/42

POST /feedback/:id (authentifié)

Permet d'indiquer si l'analyse a été correcte. Seul l'utilisateur ayant uploadé l'image peut donner son feedback.

curl -X POST https://api.overcorp.fr/feedback/42 \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{"success": true}'
{"success": true}
Valeur success Signification
true L'analyse était correcte
false L'analyse était incorrecte

Erreurs possibles :


Exemples

Rapide (attendre le résultat)

curl -X POST -F "image=@photo.png" "https://api.overcorp.fr/upload?wait=true" \
  -H "Authorization: Bearer <token>" -o result.jpg

Async (polling)

const form = new FormData();
form.append("image", file);

// upload (avec token)
const { id } = await fetch("https://api.overcorp.fr/upload", {
  method: "POST",
  body: form,
  headers: { "Authorization": "Bearer " + token }
}).then(r => r.json());

// poll
let res;
do {
  await new Promise(r => setTimeout(r, 500));
  res = await fetch(`https://api.overcorp.fr/status/${id}`).then(r => r.json());
} while (!res.completed);

console.log(res.detections);

// image annotée
const img = `https://api.overcorp.fr/result/${id}`;

Playground