# De l'adresse au lot, puis au plan cadastral

Résolvez une adresse ou un matricule en numéro de lot, lisez la fiche du lot et commandez le plan cadastral. 0,99 $ par appel excluant frais du registre.

Trois appels mènent d'une adresse au plan cadastral : résoudre l'adresse en numéro de lot, lire la fiche du lot, puis commander le plan. Les deux premiers lisent les jeux de données publics intégrés aux Données Fonciq (rôles d'évaluation foncière des municipalités du Québec, cadastre). Le plan est commandé sur le compte du Registre de votre organisation.

## 1. Résoudre l'adresse

`GET /v1/lots/resolve` (portée `lots:read`) prend `address` ou `matricule`. Il coûte 0,99 $ excluant frais du registre et ne consulte pas le Registre.

```bash
curl "https://api.fonciq.ca/v1/lots/resolve?address=100%20rue%20Saint-Paul%20Est%2C%20Montr%C3%A9al" \
  -H "Authorization: Bearer $FONCIQ_API_KEY"
```

```json
{
  "lots": [
    {
      "lot": "1234567",
      "cadastre": "Cadastre du Québec",
      "matricule": "1234-56-7890-1-234-5678",
      "role_matched": true
    }
  ]
}
```

`role_matched` indique si le rôle d'évaluation corrobore le lot. Une adresse peut renvoyer plusieurs lots : choisissez celui qui vous intéresse.

## 2. Lire la fiche du lot

`GET /v1/lots/{lot}` (portée `lots:read`) réunit le cadastre, l'évaluation du rôle (en cents) et les lignes d'index déjà conservées dans `registre.entries`. Il coûte 0,99 $ excluant frais du registre et ne tire pas un nouvel index.

```bash
curl https://api.fonciq.ca/v1/lots/1234567 \
  -H "Authorization: Bearer $FONCIQ_API_KEY"
```

```json
{
  "lot": "1234567",
  "cadastre": { "label": "Cadastre du Québec", "lot": "1234567" },
  "assessment": { "year": 2026, "value_cents": 45000000 },
  "registre": { "entries": [] }
}
```

`format=csv` renvoie les lignes d'index en CSV à la place de la fiche.

## 3. Commander le plan cadastral

`POST /v1/plans` (portée `registre:write`) exige `lot` et un en-tête `Idempotency-Key`. `cadastre` vaut Cadastre du Québec lorsqu'il est absent. `rf_account_id` épingle un compte du Registre ; absent, le compte par défaut est utilisé. La réponse est `200` et ne contient pas le PDF. Elle ne promet pas un tirage en direct. `registry_fee_cents` vaut 150 lorsque le Registre est consulté, et 0 pour un plan conservé. Un autre cadastre que le Cadastre du Québec échoue avec `409`.

```bash
curl -X POST https://api.fonciq.ca/v1/plans \
  -H "Authorization: Bearer $FONCIQ_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: 9a8b7c6d-5e4f-4a3b-8c2d-1e0f9a8b7c6d" \
  -d '{"lot":"1234567"}'
```

```json
{
  "document_type": "plan",
  "lot": "1234567",
  "cadastre": "Cadastre du Québec",
  "registry_fee_cents": 0
}
```

### Python

```python
import os, uuid, requests

BASE = "https://api.fonciq.ca"
HEADERS = {"Authorization": f"Bearer {os.environ['FONCIQ_API_KEY']}"}

lots = requests.get(f"{BASE}/v1/lots/resolve", params={"address": "100 rue Saint-Paul Est, Montréal"}, headers=HEADERS).json()["lots"]
lot = lots[0]["lot"]

profile = requests.get(f"{BASE}/v1/lots/{lot}", headers=HEADERS).json()
print(profile["cadastre"]["label"], profile["assessment"]["value_cents"] / 100)

plan = requests.post(
    f"{BASE}/v1/plans",
    headers={**HEADERS, "Idempotency-Key": str(uuid.uuid4())},
    json={"lot": lot},
).json()
print("frais du Registre (cents) :", plan["registry_fee_cents"])
```

### Node

```js
const BASE = 'https://api.fonciq.ca';
const headers = { Authorization: `Bearer ${process.env.FONCIQ_API_KEY}` };

const { lots } = await fetch(
  `${BASE}/v1/lots/resolve?address=${encodeURIComponent('100 rue Saint-Paul Est, Montréal')}`,
  { headers },
).then((r) => r.json());
const lot = lots[0].lot;

const profile = await fetch(`${BASE}/v1/lots/${lot}`, { headers }).then((r) => r.json());
console.log(profile.cadastre.label, profile.assessment.value_cents / 100);

const plan = await fetch(`${BASE}/v1/plans`, {
  method: 'POST',
  headers: { ...headers, 'Content-Type': 'application/json', 'Idempotency-Key': crypto.randomUUID() },
  body: JSON.stringify({ lot }),
}).then((r) => r.json());
console.log('frais du Registre (cents) :', plan.registry_fee_cents);
```

## Coût

Chaque appel coûte 0,99 $ excluant frais du registre. Pour le plan, les frais du Registre de 1,50 $ ne s'appliquent que si le Registre est consulté : un plan déjà conservé est renvoyé sans frais du Registre. Ces frais sont facturés par le Registre au titulaire du compte, pas par Fonciq. Une clé `fq_test_` ne débite pas. Voir [Coûts](/plateforme/couts-par-appel).

## À voir aussi

- [Résoudre une adresse ou un matricule](/donnees/api/lots/resolveLot), [Lire la fiche d'un lot](/donnees/api/lots/getLot) et [Commander un plan](/registre/api/registre/createPlan) dans la référence.
- [Comment extraire l'index des immeubles via l'API](/guides/index-des-immeubles-json).
