> ## Documentation Index
> Fetch the complete documentation index at: https://docs.steerai.autos/llms.txt
> Use this file to discover all available pages before exploring further.

# API d'inspection visuelle

> Détection visuelle des dommages et évaluation de l'état pilotées par l'IA

## POST /v1/inspections/visual

Soumettez des images de véhicules pour une inspection visuelle complète via une IA de vision par ordinateur avancée. Détecte rayures, bosses, dégâts de peinture, dommages aux vitres et plus encore avec 94 % de précision.

### Requête

```bash theme={null}
curl -X POST "https://api.steerai.autos/v1/inspections/visual" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "vehicle_id": "veh_1234567890abcdef",
    "images": [
      {
        "url": "https://storage.example.com/front.jpg",
        "angle": "front",
        "type": "exterior"
      },
      {
        "url": "https://storage.example.com/rear.jpg",
        "angle": "rear",
        "type": "exterior"
      },
      {
        "url": "https://storage.example.com/left-side.jpg",
        "angle": "left_side",
        "type": "exterior"
      },
      {
        "url": "https://storage.example.com/right-side.jpg",
        "angle": "right_side",
        "type": "exterior"
      }
    ],
    "options": {
      "detailed_analysis": true,
      "generate_report": true,
      "detect_hidden_damage": false
    }
  }'
```

### Corps de la requête

| Champ                          | Type    | Requis | Description                                                                                                                                                            |
| ------------------------------ | ------- | ------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `vehicle_id`                   | string  | Oui    | Identifiant du véhicule                                                                                                                                                |
| `images`                       | array   | Oui    | Tableau d'images (min 4, max 50)                                                                                                                                       |
| `images[].url`                 | string  | Oui    | URL publique de l'image                                                                                                                                                |
| `images[].angle`               | string  | Oui    | `front`, `rear`, `left_side`, `right_side`, `front_left`, `front_right`, `rear_left`, `rear_right`, `top`, `interior`, `dashboard`, `engine`, `trunk`, `undercarriage` |
| `images[].type`                | string  | Oui    | `exterior`, `interior`, `mechanical`                                                                                                                                   |
| `options.detailed_analysis`    | boolean | Non    | Inclure des mesures détaillées des dommages (par défaut : false)                                                                                                       |
| `options.generate_report`      | boolean | Non    | Générer un rapport PDF (par défaut : true)                                                                                                                             |
| `options.detect_hidden_damage` | boolean | Non    | Analyse avancée des dommages cachés (par défaut : false)                                                                                                               |

### Réponse

```json theme={null}
{
  "status": "success",
  "data": {
    "inspection_id": "vis_1234567890abcdef",
    "vehicle_id": "veh_1234567890abcdef",
    "status": "completed",
    "created_at": "2024-01-15T10:30:00Z",
    "completed_at": "2024-01-15T10:30:45Z",
    "processing_time": 45.2,
    "results": {
      "overall_condition": "fair",
      "condition_score": 7.2,
      "confidence": 0.94,
      "damages": [
        {
          "damage_id": "dmg_front_bumper_001",
          "type": "scratch",
          "severity": "minor",
          "location": {
            "part": "front_bumper",
            "side": "front",
            "coordinates": {
              "x": 245,
              "y": 180,
              "width": 85,
              "height": 12
            }
          },
          "measurements": {
            "length": 8.5,
            "width": 1.2,
            "depth": 0.3,
            "unit": "cm"
          },
          "confidence": 0.96,
          "image_url": "https://storage.example.com/front.jpg",
          "annotated_url": "https://results.steerai.autos/dmg_front_bumper_001_annotated.jpg",
          "estimated_repair": {
            "min": 150,
            "max": 300,
            "currency": "USD",
            "repair_type": "paint_touch_up"
          }
        },
        {
          "damage_id": "dmg_rear_door_left_002",
          "type": "dent",
          "severity": "moderate",
          "location": {
            "part": "rear_door_left",
            "side": "left",
            "coordinates": {
              "x": 320,
              "y": 240,
              "width": 120,
              "height": 95
            }
          },
          "measurements": {
            "diameter": 11.5,
            "depth": 2.8,
            "unit": "cm"
          },
          "confidence": 0.89,
          "image_url": "https://storage.example.com/left-side.jpg",
          "annotated_url": "https://results.steerai.autos/dmg_rear_door_left_002_annotated.jpg",
          "estimated_repair": {
            "min": 500,
            "max": 850,
            "currency": "USD",
            "repair_type": "pdr_and_paint"
          }
        }
      ],
      "damage_summary": {
        "total_damages": 2,
        "by_severity": {
          "minor": 1,
          "moderate": 1,
          "severe": 0,
          "critical": 0
        },
        "by_type": {
          "scratch": 1,
          "dent": 1,
          "rust": 0,
          "crack": 0,
          "paint_damage": 0
        },
        "total_estimated_repair": {
          "min": 650,
          "max": 1150,
          "currency": "USD"
        }
      },
      "parts_affected": [
        {
          "part": "front_bumper",
          "condition": "good",
          "damage_count": 1
        },
        {
          "part": "rear_door_left",
          "condition": "fair",
          "damage_count": 1
        }
      ]
    },
    "reports": {
      "pdf_url": "https://reports.steerai.autos/vis_1234567890abcdef.pdf",
      "json_url": "https://api.steerai.autos/v1/inspections/visual/vis_1234567890abcdef/report"
    }
  },
  "meta": {
    "request_id": "req_visual_abc123",
    "processing_time": 45.234,
    "images_processed": 4,
    "ai_model_version": "v3.2.1"
  }
}
```

### Champs de réponse

| Champ                       | Type   | Description                                                                        |
| --------------------------- | ------ | ---------------------------------------------------------------------------------- |
| `inspection_id`             | string | Identifiant unique d'inspection visuelle                                           |
| `status`                    | string | `processing`, `completed`, `failed`                                                |
| `results.overall_condition` | string | `excellent`, `good`, `fair`, `poor`, `critical`                                    |
| `results.condition_score`   | float  | Score de 0 à 10 (10 = état parfait)                                                |
| `results.confidence`        | float  | Score de confiance IA (0-1)                                                        |
| `damages[].type`            | string | `scratch`, `dent`, `rust`, `crack`, `paint_damage`, `glass_damage`, `panel_damage` |
| `damages[].severity`        | string | `minor`, `moderate`, `severe`, `critical`                                          |
| `damages[].measurements`    | object | Dimensions physiques du dommage                                                    |
| `damages[].annotated_url`   | string | Image avec dommage surligné                                                        |

### Types de dommages

<AccordionGroup>
  <Accordion icon="brush" title="Dommages de peinture et de surface">
    • **Scratch:** Dommage de peinture en surface
    • **Paint Damage:** Peinture écaillée, pelée ou décolorée
    • **Rust:** Corrosion sur les surfaces métalliques
    • **Oxidation:** Oxydation de surface et vieillissement
  </Accordion>

  <Accordion icon="car-burst" title="Dommages structurels">
    • **Dent:** Impact causant une déformation
    • **Panel Damage:** Panneaux de carrosserie pliés ou désalignés
    • **Crack:** Fissures dans les panneaux de carrosserie
    • **Frame Damage:** Problèmes de châssis structurel
  </Accordion>

  <Accordion icon="window-restore" title="Vitrage et garnitures">
    • **Glass Damage:** Fissures ou éclats dans les vitres
    • **Headlight Damage:** Phares ternes, fissurés ou cassés
    • **Trim Damage:** Garnitures manquantes ou endommagées
    • **Mirror Damage:** Rétroviseurs cassés ou fissurés
  </Accordion>
</AccordionGroup>

### Réponses d'erreur

#### 400 Bad Request

```json theme={null}
{
  "status": "error",
  "error": {
    "code": "INSUFFICIENT_IMAGES",
    "message": "Minimum 4 images required for visual inspection",
    "type": "validation_error",
    "field": "images"
  }
}
```

#### 422 Unprocessable Entity

```json theme={null}
{
  "status": "error",
  "error": {
    "code": "IMAGE_QUALITY_TOO_LOW",
    "message": "Image quality insufficient for analysis. Please provide higher resolution images (min 1280x720)",
    "type": "validation_error",
    "field": "images[2].url",
    "details": {
      "image_index": 2,
      "current_resolution": "640x480",
      "minimum_resolution": "1280x720"
    }
  }
}
```

### Exigences d'image

<Warning>
  **Normes de qualité des images**

  * **Résolution minimale :** 1280x720 pixels
  * **Résolution recommandée :** 1920x1080 pixels ou plus
  * **Format de fichier :** JPG, PNG, HEIC
  * **Taille maximale :** 10MB par image
  * **Éclairage :** Bon éclairage naturel ou artificiel
  * **Mise au point :** Images nettes et claires sans flou de mouvement
</Warning>

### Bonnes pratiques

<CardGroup cols={2}>
  <Card title="Capture d'images" icon="camera">
    **Directives photo optimales**

    • Capturez tous les angles requis
    • Utilisez un bon éclairage (évitez les ombres)
    • Gardez la caméra à 2-3 mètres du véhicule
    • Assurez-vous que le panneau est entièrement visible
    • Évitez les reflets et les éblouissements
  </Card>

  <Card title="Détection des dommages" icon="magnifying-glass">
    **Maximiser la précision**

    • Nettoyez le véhicule avant les photos
    • Prenez des gros plans des dommages
    • Plusieurs angles pour chaque dommage
    • Incluez des objets de référence pour l'échelle
    • Éclairage cohérent sur toutes les images
  </Card>
</CardGroup>

### Webhooks

Configurez des webhooks pour recevoir des mises à jour en temps réel lorsque l'inspection est terminée :

```json theme={null}
{
  "event": "visual_inspection.completed",
  "timestamp": "2024-01-15T10:30:45Z",
  "data": {
    "inspection_id": "vis_1234567890abcdef",
    "vehicle_id": "veh_1234567890abcdef",
    "status": "completed",
    "damages_detected": 2,
    "overall_condition": "fair",
    "condition_score": 7.2,
    "report_url": "https://reports.steerai.autos/vis_1234567890abcdef.pdf"
  }
}
```

### Exemple : Récupérer les résultats d'une inspection visuelle

```bash theme={null}
curl -X GET "https://api.steerai.autos/v1/inspections/visual/vis_1234567890abcdef" \
  -H "Authorization: Bearer YOUR_API_KEY"
```

### Exemple : Lister les inspections visuelles d'un véhicule

```bash theme={null}
curl -X GET "https://api.steerai.autos/v1/inspections/visual?vehicle_id=veh_1234567890abcdef&limit=10" \
  -H "Authorization: Bearer YOUR_API_KEY"
```

Paramètres de requête :

* `vehicle_id` (string) : Filtrer par véhicule
* `status` (string) : Filtrer par statut (`processing`, `completed`, `failed`)
* `created_after` (string) : Filtre date ISO 8601
* `created_before` (string) : Filtre date ISO 8601
* `limit` (integer) : Résultats par page (par défaut : 20, max : 100)
* `offset` (integer) : Décalage de pagination

<Tip>
  **Astuce performance :** Pour un traitement plus rapide, redimensionnez les images à la résolution recommandée (1920x1080) avant envoi. Des images plus grandes n'améliorent pas la précision et augmentent le temps de traitement.
</Tip>
