curl --request GET \
--url https://flatbay.fr/fr/api/document/{id}import requests
url = "https://flatbay.fr/fr/api/document/{id}"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://flatbay.fr/fr/api/document/{id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://flatbay.fr/fr/api/document/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://flatbay.fr/fr/api/document/{id}"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://flatbay.fr/fr/api/document/{id}")
.asString();require 'uri'
require 'net/http'
url = URI("https://flatbay.fr/fr/api/document/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"document": {
"id": 123,
"type": "document.type.caution => Acte de cautionnement personne physique",
"typeSlug": "acte-cautionnement-physique",
"typeLabel": "<string>",
"name": "<string>",
"status": "draft => Brouillon",
"statusLabel": "<string>",
"generated": true,
"draft": true,
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z",
"nbPages": 123,
"size": 123,
"extension": "<string>",
"signature": {
"provider": "yousign",
"procedureId": "<string>",
"signed": true,
"signedAt": "2023-11-07T05:31:56Z"
},
"lease": {
"locName": "<string>",
"bailName": "<string>",
"bailAddress": "<string>",
"locAddress": "<string>",
"rentAmountNumber": "<string>",
"rentAmountLetter": "<string>",
"chargeAmountNumber": "<string>",
"chargeAmountLetter": "<string>",
"periodicity": "<string>",
"revisionDate": "<string>",
"indiceTrimester": "<string>",
"duration": "<string>",
"date": "<string>",
"cautionName": "<string>",
"cautionDate": "2023-11-07T05:31:56Z",
"cautionAddress": "<string>",
"cautionType": "<string>",
"cautionType2": "<string>",
"maxAmountNumber": "<string>",
"maxAmountLetter": "<string>",
"monthAmountNumber": "<string>",
"monthAmountLetter": "<string>"
},
"tva": {
"loyer": {
"assujetti": true,
"taux": 10,
"montantHt": 850,
"montantTva": 85,
"montantTtc": 935
},
"charges": {
"assujetti": true,
"taux": 2.1,
"montantHt": 60,
"montantTva": 1.26,
"montantTtc": 61.26
}
},
"fieldValues": {}
},
"property": {
"id": 123,
"type": "property.type.appart => Appartement",
"address": "<string>",
"cp": "<string>",
"city": "<string>",
"country": "<string>",
"lat": "<string>",
"lng": "<string>",
"surface": 123,
"nbPiece": 123,
"etage": 123,
"meuble": 123,
"lot": "<string>",
"lots": [
{
"lotNumber": "<string>",
"lotDesignation": "<string>",
"lotTantiemes": "<string>"
}
],
"room": {
"id": 123,
"name": "<string>",
"surface": 123,
"loyer": "<string>",
"charge": "<string>"
},
"rooms": [
{
"id": 123,
"name": "<string>",
"loyer": 123,
"charge": 123,
"depot": 123,
"loyerCc": 123,
"quotePartLoyerCc": 123
}
]
},
"etablissement": {
"id": 123,
"name": "<string>",
"address": "<string>",
"cp": "<string>",
"city": "<string>",
"siret": "<string>",
"ape": "<string>",
"capital": 123,
"phone": "<string>",
"email": "<string>"
},
"intervenants": {
"agent": {
"flatbayId": 123,
"civility": "user.civility.m => M",
"firstName": "<string>",
"lastName": "<string>",
"email": "<string>",
"phone": "<string>"
},
"bailleurs": [
{
"flatbayId": "<string>",
"qualite": "proprietaire.qualite.physique => Personne(s) physique(s)",
"civility": "user.civility.m => M",
"firstName": "<string>",
"lastName": "<string>",
"email": "<string>",
"phone": "<string>",
"address": "<string>",
"cp": "<string>",
"city": "<string>",
"birthDate": "2023-12-25",
"birthPlace": "<string>",
"nationality": "<string>",
"maritalStatus": "user.situationfamiliale.celib => Célibataire",
"companyName": "<string>",
"legalForm": "proprietaire.type.sci => SCI",
"companySiret": "<string>",
"companyApe": "<string>",
"companyCapital": "<string>",
"companyAddress": "<string>",
"companyCp": "<string>",
"companyCity": "<string>",
"representants": [
{
"flatbayId": "<string>",
"civility": "user.civility.m => M",
"firstName": "<string>",
"lastName": "<string>",
"email": "<string>",
"phone": "<string>",
"quality": "<string>",
"isReferent": true
}
]
}
],
"locataires": [
{
"flatbayId": "<string>",
"civility": "user.civility.m => M",
"firstName": "<string>",
"lastName": "<string>",
"email": "<string>",
"phone": "<string>",
"address": "<string>",
"cp": "<string>",
"city": "<string>",
"birthDate": "2023-12-25",
"birthPlace": "<string>",
"nationality": "<string>",
"maritalStatus": "user.situationfamiliale.celib => Célibataire",
"ribs": [
{
"id": 123,
"name": "<string>",
"fileUrl": "<string>"
}
]
}
],
"garants": [
{
"flatbayId": "<string>",
"garantType": "physique => Garant personne physique",
"civility": "user.civility.m => M",
"firstName": "<string>",
"lastName": "<string>",
"email": "<string>",
"phone": "<string>",
"address": "<string>",
"cp": "<string>",
"city": "<string>",
"birthDate": "2023-12-25",
"birthPlace": "<string>",
"nationality": "<string>",
"maritalStatus": "user.situationfamiliale.celib => Célibataire",
"organismeName": "<string>",
"organismeContractNumber": "<string>"
}
]
},
"annexes": [
{
"id": 123,
"name": "<string>",
"fileType": "<string>",
"sortOrder": 123,
"createdAt": "2023-11-07T05:31:56Z",
"fileUrl": "<string>"
}
],
"pdf": {
"available": true,
"url": "<string>"
}
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}Détail d'un bail
Renvoie toutes les données d’un bail ou d’un acte de cautionnement généré via l’éditeur de documents, à partir de son identifiant sur la table document : le bien et ses lots, les intervenants réellement présents sur le bail (agent, bailleurs, locataires, garants), la TVA sur le loyer et les charges (document.tva), les variables du document, le statut, les annexes, les RIB des locataires (intervenants.locataires[].ribs) et l’URL de téléchargement du PDF.
curl --request GET \
--url https://flatbay.fr/fr/api/document/{id}import requests
url = "https://flatbay.fr/fr/api/document/{id}"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://flatbay.fr/fr/api/document/{id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://flatbay.fr/fr/api/document/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://flatbay.fr/fr/api/document/{id}"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://flatbay.fr/fr/api/document/{id}")
.asString();require 'uri'
require 'net/http'
url = URI("https://flatbay.fr/fr/api/document/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"document": {
"id": 123,
"type": "document.type.caution => Acte de cautionnement personne physique",
"typeSlug": "acte-cautionnement-physique",
"typeLabel": "<string>",
"name": "<string>",
"status": "draft => Brouillon",
"statusLabel": "<string>",
"generated": true,
"draft": true,
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z",
"nbPages": 123,
"size": 123,
"extension": "<string>",
"signature": {
"provider": "yousign",
"procedureId": "<string>",
"signed": true,
"signedAt": "2023-11-07T05:31:56Z"
},
"lease": {
"locName": "<string>",
"bailName": "<string>",
"bailAddress": "<string>",
"locAddress": "<string>",
"rentAmountNumber": "<string>",
"rentAmountLetter": "<string>",
"chargeAmountNumber": "<string>",
"chargeAmountLetter": "<string>",
"periodicity": "<string>",
"revisionDate": "<string>",
"indiceTrimester": "<string>",
"duration": "<string>",
"date": "<string>",
"cautionName": "<string>",
"cautionDate": "2023-11-07T05:31:56Z",
"cautionAddress": "<string>",
"cautionType": "<string>",
"cautionType2": "<string>",
"maxAmountNumber": "<string>",
"maxAmountLetter": "<string>",
"monthAmountNumber": "<string>",
"monthAmountLetter": "<string>"
},
"tva": {
"loyer": {
"assujetti": true,
"taux": 10,
"montantHt": 850,
"montantTva": 85,
"montantTtc": 935
},
"charges": {
"assujetti": true,
"taux": 2.1,
"montantHt": 60,
"montantTva": 1.26,
"montantTtc": 61.26
}
},
"fieldValues": {}
},
"property": {
"id": 123,
"type": "property.type.appart => Appartement",
"address": "<string>",
"cp": "<string>",
"city": "<string>",
"country": "<string>",
"lat": "<string>",
"lng": "<string>",
"surface": 123,
"nbPiece": 123,
"etage": 123,
"meuble": 123,
"lot": "<string>",
"lots": [
{
"lotNumber": "<string>",
"lotDesignation": "<string>",
"lotTantiemes": "<string>"
}
],
"room": {
"id": 123,
"name": "<string>",
"surface": 123,
"loyer": "<string>",
"charge": "<string>"
},
"rooms": [
{
"id": 123,
"name": "<string>",
"loyer": 123,
"charge": 123,
"depot": 123,
"loyerCc": 123,
"quotePartLoyerCc": 123
}
]
},
"etablissement": {
"id": 123,
"name": "<string>",
"address": "<string>",
"cp": "<string>",
"city": "<string>",
"siret": "<string>",
"ape": "<string>",
"capital": 123,
"phone": "<string>",
"email": "<string>"
},
"intervenants": {
"agent": {
"flatbayId": 123,
"civility": "user.civility.m => M",
"firstName": "<string>",
"lastName": "<string>",
"email": "<string>",
"phone": "<string>"
},
"bailleurs": [
{
"flatbayId": "<string>",
"qualite": "proprietaire.qualite.physique => Personne(s) physique(s)",
"civility": "user.civility.m => M",
"firstName": "<string>",
"lastName": "<string>",
"email": "<string>",
"phone": "<string>",
"address": "<string>",
"cp": "<string>",
"city": "<string>",
"birthDate": "2023-12-25",
"birthPlace": "<string>",
"nationality": "<string>",
"maritalStatus": "user.situationfamiliale.celib => Célibataire",
"companyName": "<string>",
"legalForm": "proprietaire.type.sci => SCI",
"companySiret": "<string>",
"companyApe": "<string>",
"companyCapital": "<string>",
"companyAddress": "<string>",
"companyCp": "<string>",
"companyCity": "<string>",
"representants": [
{
"flatbayId": "<string>",
"civility": "user.civility.m => M",
"firstName": "<string>",
"lastName": "<string>",
"email": "<string>",
"phone": "<string>",
"quality": "<string>",
"isReferent": true
}
]
}
],
"locataires": [
{
"flatbayId": "<string>",
"civility": "user.civility.m => M",
"firstName": "<string>",
"lastName": "<string>",
"email": "<string>",
"phone": "<string>",
"address": "<string>",
"cp": "<string>",
"city": "<string>",
"birthDate": "2023-12-25",
"birthPlace": "<string>",
"nationality": "<string>",
"maritalStatus": "user.situationfamiliale.celib => Célibataire",
"ribs": [
{
"id": 123,
"name": "<string>",
"fileUrl": "<string>"
}
]
}
],
"garants": [
{
"flatbayId": "<string>",
"garantType": "physique => Garant personne physique",
"civility": "user.civility.m => M",
"firstName": "<string>",
"lastName": "<string>",
"email": "<string>",
"phone": "<string>",
"address": "<string>",
"cp": "<string>",
"city": "<string>",
"birthDate": "2023-12-25",
"birthPlace": "<string>",
"nationality": "<string>",
"maritalStatus": "user.situationfamiliale.celib => Célibataire",
"organismeName": "<string>",
"organismeContractNumber": "<string>"
}
]
},
"annexes": [
{
"id": 123,
"name": "<string>",
"fileType": "<string>",
"sortOrder": 123,
"createdAt": "2023-11-07T05:31:56Z",
"fileUrl": "<string>"
}
],
"pdf": {
"available": true,
"url": "<string>"
}
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}/api/document/:id?apiKey=xxxxx
document (un bail ou un acte de cautionnement généré via l’éditeur de documents), cette route renvoie toutes les données du bail : le bien et ses lots, les intervenants, la TVA, les variables du document, le statut, les annexes, les RIB des locataires et les URL de téléchargement du PDF signé, des annexes et des RIB.
Intervenants
intervenants liste les parties réellement présentes sur le bail, telles que figées au moment de la génération — et non l’ensemble des locataires / bailleurs rattachés au bien. Elles sont groupées par rôle : agent, bailleurs, locataires, garants.
Chaque partie porte un flatbayId : l’identifiant flatbay de la partie (proprietaire pour un bailleur, locataire pour un locataire, utilisateur pour un représentant, l’agent ou un garant) lorsqu’elle a été choisie depuis le carnet d’adresses flatbay, ou un identifiant local si elle a été saisie manuellement dans l’éditeur.
garants n’est renseigné que pour les baux qui portent des garants. Pour l’acte de cautionnement, les informations de la caution sont dans document.lease (champs caution*) et document.fieldValues.
Données du bail
document.lease: le sous-ensemble stable des données du bail (montants, dates, caution), figé à la génération — fiable même si le brouillon a été supprimé.document.tva: la TVA sur le loyer et sur les charges (voir ci-dessous).document.fieldValues: toutes les variables du document. Le jeu de clés dépend du type de document.
Colocation
Deux formes de bail, deux champs distincts sousproperty :
- Bail individuel de colocation — un bail par chambre :
property.roomporte la chambre louée (nullsinon), etproperty.roomsvaut[]. - Bail collectif de colocation — un seul bail pour toutes les chambres :
property.roomvautnulletproperty.roomsporte le détail par chambre. Les montants par chambre sont la clé de répartition convenue entre les colocataires, imprimée dans le bail sous le titre « Quotes-parts ».
property.rooms vaut [] sur tout autre type de bail. Les montants y sont ceux figés à la
génération : ils peuvent avoir été corrigés depuis sur la fiche du bien, c’est le bail signé qui
fait foi. loyerCc et quotePartLoyerCc sont dérivés (loyer + charges, puis part du loyer charges
comprises du bail) ; la somme des quotes-parts peut ne pas retomber exactement sur 100 après arrondi
au centième.
"rooms": [
{ "id": 7, "name": "1", "loyer": 420, "charge": 30, "depot": 420, "loyerCc": 450, "quotePartLoyerCc": 52.63 },
{ "id": 8, "name": "2", "loyer": 380, "charge": 25, "depot": 380, "loyerCc": 405, "quotePartLoyerCc": 47.37 }
]
TVA
document.tva porte, pour la ligne loyer et pour la ligne charges, l’assujettissement (assujetti), le taux en %, et les montants montantHt, montantTva, montantTtc. Ce sont des nombres, jamais des chaînes.
document.tva vaut null quand le type de bail ne gère pas la TVA — seuls les baux résidence étudiante la portent. C’est une valeur distincte d’un bloc rempli de zéros, qui signifierait « bail assujetti, montants nuls ».
Sur une ligne assujettie, le montant saisi est le HT ; montantTva et montantTtc en sont dérivés. Sur une ligne non assujettie, taux, montantTva et montantTtc valent null — montantHt reste renseigné.
"tva": {
"loyer": { "assujetti": true, "taux": 10, "montantHt": 850, "montantTva": 85, "montantTtc": 935 },
"charges": { "assujetti": true, "taux": 2.1, "montantHt": 60, "montantTva": 1.26, "montantTtc": 61.26 }
}
RIB des locataires
Chaque locataire porte un tableauribs : les RIB déposés sur sa fiche flatbay. Le champ est toujours présent — il vaut [] (et non null) quand le locataire n’a pas de RIB, quand il a été saisi manuellement dans l’éditeur (il n’a alors pas de fiche flatbay) ou quand le bail n’a pas été produit par l’éditeur de documents.
"locataires": [
{
"flatbayId": "4521",
"firstName": "Camille",
"lastName": "Martin",
"ribs": [{ "id": 78, "name": "rib.pdf", "fileUrl": "https://.../api/document/12345/ribs/78/file?apiKey=xxxxx" }]
}
]
Téléchargements
Le PDF final, chaque annexe et chaque RIB se téléchargent via des routes dédiées, dont les URL (clé d’API incluse) sont fournies danspdf.url, annexes[].fileUrl et intervenants.locataires[].ribs[].fileUrl :
/api/document/:id/pdf?apiKey=xxxxx
/api/document/:id/annexes/:annexeId/file?apiKey=xxxxx
/api/document/:id/ribs/:ribId/file?apiKey=xxxxx
Path Parameters
Identifiant du document (bail ou acte de cautionnement) sur la table document
12345
Query Parameters
Mot de passe pour l'accès sécurisé
"api_key_here"
Response
Détail du bail
Détail complet d'un bail généré via l'éditeur de documents
Métadonnées du document + données figées du bail
Show child attributes
Show child attributes
Bien objet du bail. Adresse non masquée (partenaire authentifié).
Show child attributes
Show child attributes
Établissement (agence mandataire) gérant le bien
Show child attributes
Show child attributes
Parties réellement présentes sur le bail, figées à la génération (et non l'ensemble des locataires / bailleurs rattachés au bien)
Show child attributes
Show child attributes
Annexes du bail (le binaire est servi via fileUrl)
Show child attributes
Show child attributes
PDF final du bail
Show child attributes
Show child attributes

