L'API publique(donnée d'urbanisme, à l'usage) et la marque blanche (génération de dossiers complets sous votre marque, via la route dossier).
De l'open data structuré et agrégé par nos soins, prêt à consommer.
Toutes les pièces d'un dossier, sous votre marque. Incluses à 0 € — sous un token de dossier. Vous ne payez que le dossier.
Un solde en euros qui se débite par appel, rechargeable automatiquement. Pas d'abonnement, pas d'engagement.
Générez des clés Production ou Test, limitées aux familles d'endpoints que vous autorisez.
Rechargez votre solde par carte. Il se débite au prix réel de chaque appel. Recharge auto sous un seuil.
Rate-limiting par clé et par endpoint, en-têtes X-RateLimit-* sur chaque réponse.
Une clé API suffit — pas de dossier. Le cadastre, les risques et les taux de taxe sont gratuits (comptés, jamais débités). Les règles PLU structurées — notre donnée la plus rare — sont au barème.
| Endpoint | Prix / appel |
|---|---|
GET /api/v1/cadastre Parcelles cadastrales sous un point ou une adresse | Gratuit |
GET /api/v1/risques Rapport de risques d'un point ou d'une adresse | Gratuit |
GET /api/v1/taxe/taux Taux de taxe d'aménagement d'une commune | Gratuit |
GET /api/v1/plu Règles PLU structurées d'une commune | 0,30 € |
Spécification machine-lisible : /api/v1/openapi (OpenAPI 3.1) — directement exploitable par un agent IA ou un générateur de SDK.
Vous gardez la relation client et la facturation. Notre moteur produit les pièces réglementaires ; vous les revendez à votre réseau, à votre prix.
Toutes les routes de génération sont incluses à 0 € — mais elles exigent un token de dossier.
On obtient ce token via POST /api/v1/dossiers (création gratuite). Sans token, les routes de génération répondent 402. Un seul événement est facturé : le dossier, au palier dégressif ci-dessous.
| 0 – 50 dossiers / mois | 15 € HT |
| 51 – 200 | 13 € HT |
| 201 – 500 | 11 € HT |
| 501 et + (contrat volume) | 8 € HT |
Un appel « dossier » = un dossier assemblé, facturé une fois. Régénérations incluses (fair-use par dossier). Le plancher 6 € est réservé aux revendeurs de volume sous contrat.
La marque blanche s'ouvre progressivement. Vous accompagnez vos artisans dès aujourd'hui ? Parlons intégration — on vous accompagne sur le code (parcelle, placement du modèle, mini-interface) et la formation de vos équipes.
Cliquez sur une route pour déplier ses paramètres et exemples — ou naviguez par l'arborescence.
/api/v1/taxe/tauxTaux de taxe d'aménagement d'une communeGratuitRenvoie les taux de taxe d'aménagement (part communale et départementale) d'une commune. Identifiez-la de l'UNE de ces façons (au moins une) : par `insee` (code commune), `adresse` (texte libre, géocodé via la BAN), ou `lon`/`lat` (coordonnées WGS84, reverse-géocodées en commune).
taxe:read| Nom | Type | Requis | Description |
|---|---|---|---|
inseeex. 27587 | string | optionnel | Code INSEE de la commune (5 caractères). |
adresseex. 8 bd du port 80000 Amiens | string | optionnel | Adresse en texte libre, géocodée en commune via la BAN. |
lonex. 2.35 | number | optionnel | Longitude (WGS84), reverse-géocodée en commune. |
latex. 48.85 | number | optionnel | Latitude (WGS84), reverse-géocodée en commune. |
curl "https://www.permis-construire-rapide.fr/api/v1/taxe/taux?insee=27587" \ -H "Authorization: Bearer pcr_live_xxx"
{
"tauxCommunalFraction": 0.05,
"hasSecteurs": false,
"libelleCommune": "Pacy-sur-Eure",
"annee": 2025,
"tauxDepartementalFraction": 0.025,
"departement": "27",
"departementalAnnee": 2025
}/api/v1/cadastreParcelles cadastrales sous un point ou une adresseGratuitRenvoie les parcelles cadastrales (géométrie, contenance, commune) contenant le point fourni. Désignez ce point de l'UNE de ces deux façons : par `adresse` (texte libre, que nous géocodons côté serveur via la BAN — Base Adresse Nationale — vous évitant de coder votre propre géocodeur), OU par `lon`/`lat` (coordonnées WGS84, le plus précis). Pour une adresse ambiguë, nous retenons le meilleur résultat BAN : fournissez l'adresse la plus précise possible (numéro, voie, code postal, commune).
cadastre:read| Nom | Type | Requis | Description |
|---|---|---|---|
adresseex. 8 bd du port 80000 Amiens | string | optionnel | Adresse en texte libre, géocodée via la BAN. À fournir à la place de lon/lat. Donnez la plus précise possible (n° + voie + CP + ville). |
lonex. 2.35 | number | optionnel | Longitude (WGS84). Requis si `adresse` absent. |
latex. 48.85 | number | optionnel | Latitude (WGS84). Requis si `adresse` absent. |
citycodeex. 75056 | string | optionnel | Code INSEE (mode lon/lat ; sinon résolu par reverse-geocoding). |
curl "https://www.permis-construire-rapide.fr/api/v1/cadastre?adresse=8+bd+du+port+80000+Amiens" \ -H "Authorization: Bearer pcr_live_xxx"
[
{
"numero": "0001",
"section": "AB",
"prefixe": "",
"codeDep": "75",
"commune": "Paris",
"codeInsee": "75056",
"contenance": 412,
"geometry": {
"type": "Polygon",
"coordinates": [
[
[
2.3499,
48.8501
],
[
2.3501,
48.8501
],
[
2.3501,
48.8499
],
[
2.3499,
48.8499
],
[
2.3499,
48.8501
]
]
]
}
}
]/api/v1/risquesRapport de risques d'un point ou d'une adresseGratuitRenvoie le rapport de risques (inondation, PPR, séisme, sécheresse) pour le point fourni (source GeoRisques). Désignez ce point de l'UNE de ces deux façons : par `adresse` (texte libre, que nous géocodons côté serveur via la BAN — Base Adresse Nationale), OU par `lon`/`lat` (coordonnées WGS84, le plus précis). Pour une adresse ambiguë, nous retenons le meilleur résultat BAN : fournissez l'adresse la plus précise possible (numéro, voie, code postal, commune).
risques:read| Nom | Type | Requis | Description |
|---|---|---|---|
adresseex. 8 bd du port 80000 Amiens | string | optionnel | Adresse en texte libre, géocodée via la BAN. À fournir à la place de lon/lat. Donnez la plus précise possible (n° + voie + CP + ville). |
lonex. 2.35 | number | optionnel | Longitude (WGS84). Requis si `adresse` absent. |
latex. 48.85 | number | optionnel | Latitude (WGS84). Requis si `adresse` absent. |
curl "https://www.permis-construire-rapide.fr/api/v1/risques?adresse=8+bd+du+port+80000+Amiens" \ -H "Authorization: Bearer pcr_live_xxx"
{
"adresse": {
"label": "2 Rue de Rivoli, 75004 Paris",
"longitude": 2.35,
"latitude": 48.85
},
"commune": {
"libelle": "Paris",
"codeInsee": "75056",
"codePostal": "75004"
},
"rapportUrl": "https://www.georisques.gouv.fr/rapport?lon=2.35&lat=48.85",
"naturels": [
{
"key": "inondation",
"libelle": "Inondation",
"present": true,
"statutCommune": "Commune soumise",
"statutAdresse": "Zone potentiellement soumise"
},
{
"key": "secheresse",
"libelle": "Retrait-gonflement des argiles",
"present": true,
"statutCommune": "Aléa moyen",
"statutAdresse": "Aléa moyen"
}
],
"technologiques": [
{
"key": "icpe",
"libelle": "Installations classées (ICPE)",
"present": false
}
],
"pprList": []
}/api/v1/pluRègles PLU structurées d'une commune0,30 € / appelRenvoie les règles PLU structurées (zones, reculs, hauteur, emprise, servitudes, normes, stationnement) de la commune. Identifiez-la de l'UNE de ces façons (au moins une) : `insee`, `parcelle` (code cadastral), `adresse` (texte libre, BAN), ou `lon`/`lat` (WGS84). Si le règlement n'est pas encore structuré, renvoie 404 (extraction déclenchée, sans débit) — réessayez quelques minutes plus tard.
plu:read| Nom | Type | Requis | Description |
|---|---|---|---|
inseeex. 21231 | string | optionnel | Code INSEE de la commune (5 caractères). |
parcelleex. 21231000AB0001 | string | optionnel | Code cadastral (les 5 premiers caractères = code INSEE). |
adresseex. 8 bd du port 80000 Amiens | string | optionnel | Adresse en texte libre (géocodée via la BAN). |
lonex. 5.04 | number | optionnel | Longitude (WGS84), reverse-géocodée en commune. |
latex. 47.32 | number | optionnel | Latitude (WGS84), reverse-géocodée en commune. |
curl "https://www.permis-construire-rapide.fr/api/v1/plu?parcelle=21231000AB0001" \ -H "Authorization: Bearer pcr_live_xxx"
{
"insee": "21231",
"commune": "Dijon",
"resolvedBy": "adresse",
"source": {
"idurba": "DU_21231_xxx",
"approvedAt": "2020-01-01T00:00:00.000Z",
"modelUsed": null
},
"zones": [
{
"libelle": "UB",
"reculVoieMin": 5,
"reculLatMin": 3,
"hauteurMaxM": 12,
"empriseSolMax": 0.5
}
],
"servitudes": [],
"normes": [],
"stationnement": []
}/api/v1/noticeNotice descriptive (PCMI4) générée par IA — incluse au dossierGratuitGénère la notice descriptive du projet (article R.431-8). Pièce de dossier : EXIGE un `dossierToken` (ouvert via POST /api/v1/dossiers) — sans lui, 402. Incluse (0 € additionnel) : le débit est le dossier, pas la pièce. Le contexte du projet est fourni EN PAYLOAD (champs optionnels).
notice:write| Nom | Type | Requis | Description |
|---|---|---|---|
dossierToken | string | requis | Token de dossier (POST /api/v1/dossiers). Requis. |
projectType | string | optionnel | Type de projet (ex. piscine, abri de jardin, extension, carport). |
address | string | optionnel | Adresse du terrain. |
floorSurface | string | optionnel | Surface de plancher / emprise créée, en m². |
height | string | optionnel | Hauteur du projet, en mètres. |
floors | string | optionnel | Nombre de niveaux. |
roofType | string | optionnel | Type de toiture (ex. tuiles, bac acier, sans). |
facadeMaterial | string | optionnel | Matériau de façade (ex. enduit, bardage bois). |
facadeColor | string | optionnel | Teinte de façade (ex. ton pierre, gris anthracite). |
projectName | string | optionnel | Nom du projet (libre). |
clientName | string | optionnel | Nom du demandeur. |
cerfaDescription | string | optionnel | Description libre reprise du CERFA, pour enrichir le contexte. |
cadastreData | object | optionnel | Contexte cadastral optionnel (réponse de GET /cadastre) pour préciser la notice. |
pluData | object | optionnel | Règles PLU optionnelles (réponse de GET /plu) pour préciser la notice. |
risquesData | object | optionnel | Rapport de risques optionnel (réponse de GET /risques) pour préciser la notice. |
curl -X POST "https://www.permis-construire-rapide.fr/api/v1/notice" \
-H "Authorization: Bearer pcr_live_xxx" \
-H "Content-Type: application/json" \
-d '{
"dossierToken": "clx2ab3cd0000xyz",
"projectType": "piscine",
"address": "12 rue des Lilas, 21000 Dijon",
"floorSurface": "32",
"height": "1.5",
"facadeMaterial": "enduit",
"facadeColor": "ton pierre",
"roofType": "sans"
}'{
"notice": "Le terrain, situé en zone urbaine, accueille la construction d'une piscine de plain-pied. L'implantation respecte les reculs imposés par le règlement de la zone. Les abords sont traités en enduit ton pierre, en harmonie avec le bâti environnant. Les eaux pluviales sont gérées à la parcelle."
}/api/v1/taxe/estimationEstimation de la taxe d'aménagement (+ cases CERFA) — incluse au dossierGratuitCalcule la taxe d'aménagement (assiette × forfait × taux, exonérations, parts communale / départementale / régionale, total arrondi officiel) et renvoie les montants prêts à reporter dans le CERFA. Pièce de dossier : EXIGE un `dossierToken` (POST /api/v1/dossiers) — sans lui, 402. Incluse (0 € additionnel) : le débit est le dossier, pas la pièce. Calcul PUR et déterministe, sans I/O — récupérez les taux via GET /api/v1/taxe/taux.
taxe:read| Nom | Type | Requis | Description |
|---|---|---|---|
dossierToken | string | requis | Token de dossier (POST /api/v1/dossiers). Requis. |
projectType | string | requis | Type : maison, extension, surelevation, piscine, abri, cloture, panneaux_photovoltaiques, volets, carport, autre. |
assietteM2 | number | requis | Assiette taxable en m² (piscine → surface du bassin ; construction → surface taxable). |
tauxCommunal | number | requis | Taux communal voté, en fraction (0.05 = 5 %). null si inconnu (le résultat le signale). |
tauxDepartemental | number | requis | Taux départemental voté, en fraction. null si inconnu. |
nbPlacesStationnement | number | optionnel | Nombre de places de stationnement extérieur (forfait par place). |
surfacePvSolM2 | number | optionnel | Surface de panneaux PV au sol (m²), pour les cas mixtes. |
iledeFrance | boolean | optionnel | Terrain en Île-de-France (change le forfait construction + part régionale). |
tauxRegionalIdf | number | optionnel | Taux régional IDF, en fraction (IDF uniquement). |
annee | number | optionnel | Millésime du barème (défaut = année courante connue). |
exonere | boolean | optionnel | Exonération locale déclarée (délibération communale) → montant nul. |
curl -X POST "https://www.permis-construire-rapide.fr/api/v1/taxe/estimation" \
-H "Authorization: Bearer pcr_live_xxx" \
-H "Content-Type: application/json" \
-d '{
"dossierToken": "clx2ab3cd0000xyz",
"projectType": "piscine",
"assietteM2": 32,
"tauxCommunal": 0.05,
"tauxDepartemental": 0.025
}'{
"assietteM2": 32,
"valeurForfaitaire": 262,
"partForfaitaire": 8384,
"montantCommunal": 419,
"montantDepartemental": 209,
"montantRegional": 0,
"totalExact": 628.8,
"total": 629,
"tauxManquants": false,
"exonere": false,
"baremeAnnee": 2025,
"avertissements": []
}/api/v1/dossiersOuvrir un dossier (mint du token)GratuitOuvre un dossier et renvoie un TOKEN. Ce token est REQUIS par toutes les routes de génération (plans, cerfa, photomontage, notice, situation, dxf, score…) : sans lui, elles répondent 402. La création est GRATUITE — le dossier est facturé une seule fois, au 1er usage engageant, au palier dégressif. Le token est scellé à votre organisation, se verrouille à une adresse au 1er usage, et reste valable 30 jours.
dossier:write| Nom | Type | Requis | Description |
|---|---|---|---|
name | string | optionnel | Libellé interne du dossier. |
address | string | optionnel | Adresse du terrain (peut être renseignée plus tard). |
projectType | string | optionnel | Type de projet (piscine, carport, extension…). |
curl -X POST "https://www.permis-construire-rapide.fr/api/v1/dossiers" \
-H "Authorization: Bearer pcr_live_xxx" \
-H "Content-Type: application/json" \
-d '{
"address": "12 rue des Lilas, 21000 Dijon",
"projectType": "piscine"
}'{
"token": "clx2ab3cd0000xyz",
"status": "BROUILLON",
"expiresAt": "2026-07-31T10:00:00.000Z"
}/api/v1/dossiersÉtat d'un dossierGratuitRenvoie l'état d'un dossier : pièces produites, statut, verrou, date d'expiration. Lecture non facturée et non engageante. Identifiez le dossier par son `token`.
dossier:read| Nom | Type | Requis | Description |
|---|---|---|---|
tokenex. clx2ab3cd0000xyz | string | requis | Le token de dossier (renvoyé par POST /api/v1/dossiers). |
curl "https://www.permis-construire-rapide.fr/api/v1/dossiers?token=clx2ab3cd0000xyz" \ -H "Authorization: Bearer pcr_live_xxx"
{
"token": "clx2ab3cd0000xyz",
"status": "BROUILLON",
"expiresAt": "2026-07-31T10:00:00.000Z",
"expired": false,
"engaged": false,
"locked": false,
"pieces": {
"plans": false,
"photomontage": false,
"cerfa": false,
"notice": false
}
}/api/v1/locateEnrichir le dossier depuis une adresse — usage ENGAGEANTGratuitLA route fondation du dossier : à partir d’une seule adresse, enrichit le dossier côté serveur (parcelle cadastrale, règles PLU, rapport de risques, emprise bâtie existante) et PERSISTE ce contexte. Toutes les routes de génération (plans, cerfa, notice, situation…) le relisent ensuite : plus l’appel est tôt, moins votre utilisateur saisit. Pièce de dossier : EXIGE un `dossierToken` (POST /api/v1/dossiers) — sans lui, 402. C’est le PREMIER USAGE ENGAGEANT : il déclenche le débit du dossier (palier dégressif) et scelle son adresse.
projects:write| Nom | Type | Requis | Description |
|---|---|---|---|
dossierToken | string | requis | Token de dossier (POST /api/v1/dossiers). Requis. |
address | string | requis | Adresse du terrain en texte libre (géocodée via la BAN). La plus précise possible : numéro, voie, code postal, commune. |
curl -X POST "https://www.permis-construire-rapide.fr/api/v1/locate" \
-H "Authorization: Bearer pcr_live_xxx" \
-H "Content-Type: application/json" \
-d '{
"dossierToken": "clx2ab3cd0000xyz",
"address": "12 rue des Lilas, 21000 Dijon"
}'{
"dossier": {
"token": "clx2ab3cd0000xyz",
"engaged": true,
"locked": true,
"expiresAt": "2026-07-31T10:00:00.000Z"
},
"address": {
"input": "12 rue des Lilas, 21000 Dijon",
"normalized": "12 Rue des Lilas 21000 Dijon",
"coordinates": [
5.04,
47.32
],
"citycode": "21231",
"city": "Dijon",
"confidence": "high"
},
"cadastre": {
"parcelle": {
"section": "AB",
"numero": "0001",
"contenance": 412,
"codeInsee": "21231",
"codeDep": "21"
},
"strategy": "point"
},
"plu": {
"municipality": {
"nom": "Dijon",
"insee": "21231",
"isRnu": false
},
"zones": [
{
"libelle": "UB",
"typeZone": "U"
}
],
"documentsCount": 1,
"prescriptionsCount": 2,
"informationsCount": 0,
"servitudesCount": 1
},
"risques": {
"naturelsPresents": [
"inondation",
"secheresse"
],
"technologiquesPresents": [],
"pprCount": 1,
"rapportUrl": "https://www.georisques.gouv.fr/rapport?lon=5.04&lat=47.32"
},
"emprise": {
"m2": 92.5,
"source": "rnb",
"confidence": "high"
},
"warnings": []
}/api/v1/cerfaCERFA pré-rempli (13409 PC / 16702 DP) — inclus au dossierGratuitGénère le formulaire CERFA pré-rempli (PDF officiel éditable) : 13409 pour le permis de construire, 16702 pour la déclaration préalable. Pièce de dossier : EXIGE un `dossierToken` — sans lui, 402. Incluse (0 € additionnel). Contrat « payload prioritaire, dossier en repli » : tout champ envoyé gagne ; le volet TERRAIN (adresse, parcelles, superficie) se remplit automatiquement depuis le dossier enrichi par /locate quand vous le laissez vide. Les appels successifs fusionnent (complétion progressive) : envoyez les champs au fil de votre tunnel, le dernier appel produit le PDF le plus complet.
cerfa:write| Nom | Type | Requis | Description |
|---|---|---|---|
dossierToken | string | requis | Token de dossier (POST /api/v1/dossiers). Requis. |
cerfaFormType | string | optionnel | `"13409"` (permis de construire) ou `"16702"` (déclaration préalable). Défaut : selon le type de projet du dossier (piscine/carport/volets → DP), sinon 13409. |
nom | string | optionnel | Nom du demandeur (particulier). Irréductiblement utilisateur. |
prenom | string | optionnel | Prénom du demandeur (particulier). |
denomination | string | optionnel | Dénomination (personne morale) — avec `siret`, `representantNom`, `representantPrenom`. |
adresseNumero | string | optionnel | Adresse du DEMANDEUR : numéro (avec `adresseVoie`, `adresseLocalite`, `adresseCodePostal`). |
telephone | string | optionnel | Téléphone du demandeur. |
email | string | optionnel | Email du demandeur (réparti automatiquement dans les cases du formulaire). |
terrainNumero | string | optionnel | Adresse du TERRAIN : numéro (avec `terrainVoie`, `terrainLocalite`, `terrainCodePostal`). Auto-rempli depuis le dossier si vide. |
parcelles | array | optionnel | Parcelles cadastrales `{prefixe, section, numero, superficie}` (max 3 reportées). Auto-remplies depuis le dossier si vides. |
situationCU | string | optionnel | Situation juridique : certificat d'urbanisme — `"oui"`, `"non"` ou `"nsp"`. Idem `situationLotissement`, `situationZAC`, `situationAFU`, `situationPUP`. |
descriptionProjet | string | optionnel | Description courte du projet (case 4.1). |
surfaceCreee | string | optionnel | Surface de plancher créée (m²). Voir aussi `empriseCreee`, `surfaceTotale`. |
lieuSignature | string | optionnel | Lieu de signature (engagement). Requis pour un dépôt valide. |
dateSignature | string | optionnel | Date de signature JJ/MM/AAAA. Requis pour un dépôt valide. |
curl -X POST "https://www.permis-construire-rapide.fr/api/v1/cerfa" \
-H "Authorization: Bearer pcr_live_xxx" \
-H "Content-Type: application/json" \
-d '{
"dossierToken": "clx2ab3cd0000xyz",
"cerfaFormType": "16702",
"nom": "Durand",
"prenom": "Marie",
"adresseNumero": "4",
"adresseVoie": "place de la République",
"adresseLocalite": "Dijon",
"adresseCodePostal": "21000",
"telephone": "0612345678",
"email": "marie.durand@example.fr",
"descriptionProjet": "Piscine enterrée de 32 m² (8 × 4 m)",
"lieuSignature": "Dijon",
"dateSignature": "15/07/2026"
}'{
"formType": "16702",
"filename": "cerfa-16702.pdf",
"generatedAt": "2026-07-02T10:00:00.000Z",
"pdfBase64": "JVBERi0xLjQKJy4uLg== (tronqué)",
"prefilledFromDossier": true
}/api/v1/photomontageInsertion paysagère IA (PCMI6) « 4 points » — incluse au dossierGratuitInsère la piscine dans la PHOTO du terrain, photoréaliste et à l’emplacement EXACT que vous désignez. Vous fournissez : la photo, un QUAD de 4 points (les coins du bassin posés sur la photo, en pixels) et le MODÈLE paramétrique (forme, dimensions, teintes). Notre serveur calcule l’homographie, peint une piscine déterministe à cette empreinte exacte, puis l’IA se contente de la rendre photoréaliste — elle ne réinvente JAMAIS la géométrie. Pièce de dossier : EXIGE un `dossierToken` (402 sans). Génération en 30 s à quelques minutes → réponse 202 + polling GET.
photomontage:write| Nom | Type | Requis | Description |
|---|---|---|---|
dossierToken | string | requis | Token de dossier (POST /api/v1/dossiers). Requis. |
photoBase64 | string | requis | Photo du terrain en base64 SANS préfixe data: (JPEG/PNG, ≤ ~8 Mo décodés). |
width | number | requis | Largeur de la photo en pixels (≤ 2048). |
height | number | requis | Hauteur de la photo en pixels (≤ 2048). |
quad | object | requis | Les 4 coins du bassin posés sur la photo, EN PIXELS PHOTO : `{tl, tr, br, bl}`, chacun `{x, y}`. tl = arrière-gauche, tr = arrière-droit, br = avant-droit, bl = avant-gauche. L'ORIENTATION du bassin est portée par cet ordre : l'axe long suit l'arête tl→tr — réorienter = permuter les coins. |
pool | object | requis | Modèle paramétrique : `{shape, lengthM, widthM, waterColor?, copingColor?}`. shape ∈ rectangle | carre | l-shape | oval | rond | haricot | couloir | romaine. Dimensions en mètres, teintes en hex. |
description | string | optionnel | Contexte libre pour guider l’harmonisation (ex. « margelles en pierre claire »). |
curl -X POST "https://www.permis-construire-rapide.fr/api/v1/photomontage" \
-H "Authorization: Bearer pcr_live_xxx" \
-H "Content-Type: application/json" \
-d '{
"dossierToken": "clx2ab3cd0000xyz",
"photoBase64": "…(photo jardin en base64)…",
"width": 1024,
"height": 768,
"quad": {
"tl": {
"x": 210,
"y": 402
},
"tr": {
"x": 805,
"y": 415
},
"br": {
"x": 860,
"y": 655
},
"bl": {
"x": 160,
"y": 640
}
},
"pool": {
"shape": "rectangle",
"lengthM": 8,
"widthM": 4,
"waterColor": "#3f97c0"
}
}'{
"status": "running",
"mode": "single",
"token": "clx2ab3cd0000xyz",
"poll": "GET /api/v1/photomontage?token=clx2ab3cd0000xyz"
}/api/v1/photomontageStatut / résultat du photomontage (polling)GratuitRenvoie l'état de la génération lancée par POST /api/v1/photomontage : `running`, `complete` (avec l’image en base64) ou `failed` (avec l'erreur). Lecture non facturée, non engageante — interrogez toutes les 5 à 10 secondes.
photomontage:write| Nom | Type | Requis | Description |
|---|---|---|---|
tokenex. clx2ab3cd0000xyz | string | requis | Le token de dossier (renvoyé par POST /api/v1/dossiers). |
curl "https://www.permis-construire-rapide.fr/api/v1/photomontage?token=clx2ab3cd0000xyz" \ -H "Authorization: Bearer pcr_live_xxx"
{
"status": "complete",
"startedAt": "2026-07-02T10:00:00.000Z",
"finishedAt": "2026-07-02T10:01:45.000Z",
"imageBase64": "…(photomontage PNG en base64)…"
}Créez une clé depuis votre espace, puis appelez l'API avec un en-tête Authorization: Bearer.
curl https://www.permis-construire-rapide.fr/api/v1/plu?adresse=8+bd+du+port+Amiens \ -H "Authorization: Bearer pcr_live_xxx"
Les clés Test renvoient des réponses sandbox déterministes, sans appel réel ni débit — idéal pour développer votre intégration avant de passer en production.
Créez votre compte, générez une clé et appelez l'API dès aujourd'hui.
Obtenir une clé APIBranchez la donnée d'urbanisme et notre moteur de génération directement dans votre produit : CRM du bâtiment, proptech, pisciniste, constructeur, place de marché. Paiement à l'usage, sans abonnement.