<!-- Source : https://tjmetre.fr/api-doc -->
# API publique

Accédez aux données TJM du TJMètre par métier, spécialité et ville.

## Endpoint

 `GET https://tjmetre.fr/api/tjm`

## Paramètres

| Paramètre | Type | Obligatoire | Description |
| --- | --- | --- | --- |
| `metier` | string | **Oui** | Slug du métier (ex : `developpeur`, `designer`) |
| `specialite` | string | Non | Slug de la spécialité (ex : `react`, `php`) |
| `ville` | string | Non | Slug de la ville (ex : `paris`, `lyon`). Sans ce paramètre, toutes les villes sont agrégées. |

Si le métier n'est pas trouvé, l'API renvoie la liste des slugs disponibles.

## Exemple de requête

 `GET https://tjmetre.fr/api/tjm?metier=developpeur&specialite=react&ville=paris`

## Exemple de réponse

```
{
 "metier": "Développeur",
 "specialite": "React",
 "ville": "Paris",
 "reponses": 173,
 "tjm_p25": 550,
 "tjm_median": 610,
 "tjm_p75": 660,
 "source": "tjmetre.fr"
}
```

| Champ | Description |
| --- | --- |
| `metier` | Nom du métier |
| `specialite` | Nom de la spécialité (null si non spécifiée) |
| `ville` | Nom de la ville ou « Toutes » |
| `reponses` | Nombre de réponses dans l'échantillon |
| `tjm_p25` | TJM au 25e percentile (en €/jour) |
| `tjm_median` | TJM médian — 50e percentile (en €/jour) |
| `tjm_p75` | TJM au 75e percentile (en €/jour) |
| `source` | Source des données |

## Exemples d'utilisation

### curl

```
curl "https://tjmetre.fr/api/tjm?metier=developpeur&ville=paris"
```

### JavaScript (fetch)

```
fetch("https://tjmetre.fr/api/tjm?metier=developpeur&ville=paris")
 .then(response => response.json())
 .then(data => {
 console.log(`TJM médian : ${data.tjm_median} €/jour`);
 console.log(`Basé sur ${data.reponses} réponses`);
 });
```

### PHP

```
$url = "https://tjmetre.fr/api/tjm?metier=developpeur&ville=paris";
$json = file_get_contents($url);
$data = json_decode($json, true);

echo "TJM médian : " . $data['tjm_median'] . " €/jour";
echo "Basé sur " . $data['reponses'] . " réponses";
```

## Erreurs

| Code HTTP | Cas | Réponse |
| --- | --- | --- |
| `400` | Paramètre `metier` manquant | `{"error": "Paramètre metier requis. Ex: /api/tjm?metier=developpeur&specialite=react&ville=paris"}` |
| `404` | Métier non trouvé | `{"error": "Métier 'xxx' non trouvé", "metiers_disponibles": [...]}` |

## Conditions d'utilisation

- L'API est **gratuite** et sans authentification.
- La mention **Source : TJMètre** est obligatoire dans toute utilisation publique des données.
- Pas de limite de débit explicite, mais merci de rester raisonnable (quelques requêtes par minute).
- Les données sont mises à jour quotidiennement.
- Le format de réponse est JSON (Content-Type: application/json).

## Alternative : widget embarquable

Si vous souhaitez simplement afficher le TJM médian sur votre site sans code backend, utilisez notre [widget embarquable](https://tjmetre.fr/widget) (iframe ou script en une ligne).
