Consulter des centaines de lots à partir d'un fichier CSV
Envoyez à l'API un CSV de lots ou de matricules (POST /v1/batches), suivez le lot groupé, puis récupérez les inscriptions en CSV. 0,99 $ par index excluant frais du registre.
Cette page décrit la consultation en lot par l'API : un développeur envoie un fichier CSV de lots ou de matricules, suit le lot groupé, puis récupère les inscriptions de l'index en CSV. Le Studio n'a pas de téléversement en lot : cette route est réservée à l'API. Un cabinet sans développeur passe par le programme de consultation en lot de fonciq.ca.
Prérequis
- Une clé d'API et un compte du Registre de votre organisation. Voir Premier appel.
- Un fichier CSV avec une colonne
lotoumatricule, au plus 500 lignes de données par requête.
lot
1234567
76543211. Envoyer le CSV
POST /v1/batches (portée batches:write) accepte le corps text/csv. L'en-tête Idempotency-Key est obligatoire et conservé 24 heures.
curl -X POST https://api.fonciq.ca/v1/batches \
-H "Authorization: Bearer $FONCIQ_API_KEY" \
-H "Content-Type: text/csv" \
-H "Idempotency-Key: 8c2a1d4e-1b6f-4a90-9e3c-2f5d7a8b9c01" \
--data-binary @lots.csvLa réponse est 202 avec un job_id. Au-delà de 500 lots, la réponse est 409 avec le code batch_too_large. Avec un corps CSV, le lot groupé est réparti entre les comptes du Registre actifs de l'organisation. Pour épingler un compte, utilisez le corps JSON avec account_id : voir Lots groupés.
2. Suivre le lot groupé
Lisez GET /v1/jobs/{id} jusqu'à succeeded. Chaque compte garde son plafond de 540 index par jour : un lot groupé plus gros que la capacité restante attend (capacity_wait) que le compte retrouve de la capacité. Le jour est celui de Toronto : le compteur revient à zéro à minuit, heure de Toronto. La capacité de chaque compte est dans la réponse de la tâche.
3. Récupérer les inscriptions en CSV
curl "https://api.fonciq.ca/v1/jobs/job_batch_01HZX/results?format=csv" \
-H "Authorization: Bearer $FONCIQ_API_KEY" -o inscriptions.csvLe CSV compte une rangée par ligne d'index structurée. Colonnes : lot, matricule, inscription, date, nature, parties, document_url, read_method, confidence, needs_review, page_status.
lot,matricule,inscription,date,nature,parties,document_url,read_method,confidence,needs_review,page_status
1234567,,"21 014 436",2024-03-12,Vente,"Vendeur: EXEMPLE, MARIE",https://api.fonciq.ca/v1/documents/42,,unscored,,confidence vaut unscored. Le PDF de chaque index (document_url) fait foi. Sans format=csv, la même route renvoie le JSON : un bloc par lot dans indexes.
Python
import os, time, uuid, requests
BASE = "https://api.fonciq.ca"
HEADERS = {"Authorization": f"Bearer {os.environ['FONCIQ_API_KEY']}"}
with open("lots.csv", "rb") as handle:
job = requests.post(
f"{BASE}/v1/batches",
headers={**HEADERS, "Content-Type": "text/csv", "Idempotency-Key": str(uuid.uuid4())},
data=handle.read(),
).json()
while requests.get(f"{BASE}/v1/jobs/{job['job_id']}", headers=HEADERS).json()["status"] not in ("succeeded", "failed"):
time.sleep(30)
csv_text = requests.get(f"{BASE}/v1/jobs/{job['job_id']}/results", params={"format": "csv"}, headers=HEADERS).text
open("inscriptions.csv", "w", encoding="utf-8").write(csv_text)Node
import { readFile, writeFile } from 'node:fs/promises';
const BASE = 'https://api.fonciq.ca';
const headers = { Authorization: `Bearer ${process.env.FONCIQ_API_KEY}` };
const job = await fetch(`${BASE}/v1/batches`, {
method: 'POST',
headers: { ...headers, 'Content-Type': 'text/csv', 'Idempotency-Key': crypto.randomUUID() },
body: await readFile('lots.csv'),
}).then((r) => r.json());
let state;
do {
await new Promise((resolve) => setTimeout(resolve, 30_000));
state = await fetch(`${BASE}/v1/jobs/${job.job_id}`, { headers }).then((r) => r.json());
} while (!['succeeded', 'failed'].includes(state.status));
await writeFile('inscriptions.csv', await fetch(`${BASE}/v1/jobs/${job.job_id}/results?format=csv`, { headers }).then((r) => r.text()));Coût
Chaque index coûte 0,99 $ par lot excluant frais du registre, et consulte toujours le Registre (1,50 $ par index, facturé au titulaire du compte). Un index consulté coûte donc 2,49 $. Il n'y a pas de rabais de volume. Voir Coûts.
À voir aussi
- Comment extraire l'index des immeubles via l'API : le détail des lignes et du PDF source.
- Lots groupés : la référence, avec le corps JSON et le compte épinglé.
Comment extraire l'index des immeubles via l'API
Guide pas à pas : commander un index, suivre la tâche, lire les lignes en JSON ou en CSV. Exemples cURL, Python et Node.
Être avisé d'une nouvelle inscription sur un lot
Créez une surveillance quotidienne ou hebdomadaire et recevez un webhook signé (HMAC-SHA256) lorsqu'une inscription s'ajoute à l'index d'un lot.