Skip to main content

SmartGarant Guarantee API

This page documents the partner-facing SmartGarant Guarantee (GLI) workflow for API v3: pre-scoring, project creation, document management, validation request, and rental information.

Before You Start

Environment URLs, API key provisioning, and the global response envelope are centralized in Getting Started. Authentication flow is documented in Authentication. For the functional lifecycle, see GLII Process.

Canonical Endpoint Paths

All endpoint paths on this page are documented without an extra service prefix and start directly with /v3.

1. Endpoint Summary​

OperationMethodEndpoint
Get a pre-scoringPOST/v3/score
Create a projectPOST/v3/projects
Get projectsGET/v3/projects
Get a projectGET/v3/projects/{id}
Get required documentsGET/v3/projects/{projectId}/required
Add documentsPOST/v3/projects/{id}/documents
Get project documentsGET/v3/projects/{id}/documents
Delete a documentDELETE/v3/projects/{id}/documents/{documentId}
Apply (request validation)POST/v3/projects/{id}/apply
Get eligibility certificateGET/v3/projects/{id}/documents/certificate
Add rental informationPOST/v3/projects/{id}/rent
Get project paymentGET/v3/projects/{id}/payment
Get organization statsGET/v3/projects/stats

2. Get a Pre-Scoring​

Returns the maximum guaranteed rent for a given financial profile, before creating a project.

POST /v3/score
POST /v3/score HTTP/1.1
Host: sandbox.api.smart-garant.fr
Authorization: Bearer {bearerToken}
Content-Type: application/json

{
"finance": {
"status": 1,
"monthlyIncome": 1800
}
}

3. Create a Project​

Creates a guarantee project for a tenant.

POST /v3/projects
POST /v3/projects HTTP/1.1
Host: sandbox.api.smart-garant.fr
Authorization: Bearer {bearerToken}
Content-Type: application/json

{
"profile": {
"firstName": "Cyril",
"lastName": "Blibi",
"gender": 1,
"dateOfBirth": "1986-01-02",
"phone": {
"phoneContryCode": "FR",
"phoneOrigin": "0606060606",
"phoneFormated": "+33606060606"
},
"email": "cyril.blibi@yopmail.com"
},
"finance": {
"status": 1,
"monthlyIncome": 1800
},
"metadata": {
"source": "partner-api",
"externalLeadId": "LD-20260630-001"
}
}

3.1 Business Rules​

  1. The tenant status (finance.status) is required.
  2. Below 250 € of rent (SmartGarant scoring), the project cannot be created (non-eligible).
  3. If the tenant status is retired (14), put the income in retirementPensionAmount and not in monthlyIncome.
  4. If the tenant status is student (12), a referent and the referent referentFinance are required.
  5. A referent cannot be a student nor retired.
  6. For CDD and interim statuses, contractPrecarious must be provided.

3.2 profile​

FieldDescription / NoteRequired
gender1 Homme, 2 Femmetrue
firstNametrue
lastNametrue
emailtrue
dateOfBirthFormat yyyy-MM-ddtrue
phone{ "phoneOrigin": "0666666666", "phoneContryCode": "FR", "phoneFormated": "+33666666666" } — uses libphonenumber-jstrue

3.3 finance (tenant finance)​

FieldDescription / NoteRequired
statusSee Status Typestrue
contractPrecariousOnly for CDD and interim — 0 superior to 6 months, 1 inferior to 6 months, 2 trial period
monthlyIncomeNet monthly income of the tenant
bonusesAmountBonuses of the tenant
savingsAmountTenant savings
socialSecurityAmountTenant social security
familyAllowanceAmountFamily allowances / grants of the tenant
foodSupportAmountAlimony of the tenant
landIncomeLand income of the tenant
unemploymentBenefitUnemployment benefit of the tenant
maternityLeaveMaternity/paternity leave of the tenant
retirementPensionAmountNet retirement pension of the tenant (retired only)

3.4 referent / referentFinance​

Required only when the tenant finance.status is student (12). referentFinance follows the same structure as finance, and the referent status cannot be student or retired.

3.5 Status Types​

ValueStatus
0Titulaire du public
1CDI Public
2CDD Public
3Militaire
4CDI privé
5CDD privé
6Intérimaire
7Intermittent
8Artisan / Commerçant
9Auto-entrepreneur
10Profession libérale
11Chef d'entreprise
12Étudiant
14Retraité
15Recherche d'emploi

3.6 Response Model​

FieldDescription
idUnique project id
userIdUnique user id
statusSee Project Status
createDateProject creation date
scoreMaximum guaranteed rent

3.7 Project Status​

ValueDescription
0Documents pending / missing
1Documents in validation, waiting for manager
2Documents validated, waiting for rental information
3Rental in validation, waiting for manager
4Project validated, waiting for payment
5Payment done, waiting for tenant signature
6Tenant signature ok, waiting for owner signature
7Project active — contract in progress
9Project suspended (no follow-up or too old)
12Contract will end at a defined date
13Contract ended, no longer active
14Project not eligible

3.8 Reuse a Project in the Partner Journey​

POST /v3/projects creates a new project. SmartGarant does not automatically match a project created through the API with a new project started from the generic partner page. Starting both flows can therefore create two projects for the same tenant.

To avoid duplicates:

  1. Store the returned id against the tenant in your system.
  2. Store or rebuild the returned publicUrl for that project.
  3. When the tenant resumes the journey, redirect them to that publicUrl instead of starting a new project from the generic partner page.
  4. Reuse the same project id for subsequent API calls.

The tenant email address alone must not be used as an idempotency key.

4. Get Projects​

GET /v3/projects
GET /v3/projects HTTP/1.1
Host: sandbox.api.smart-garant.fr
Authorization: Bearer {bearerToken}

5. Get a Project​

GET /v3/projects/{id}

6. Documents​

6.1 Get Required Documents​

Returns the list of expected documents for a project.

GET /v3/projects/{projectId}/required

6.2 Add a Document​

Uploads one document as multipart/form-data. Send one file per request.

POST /v3/projects/{id}/documents
Form fieldTypeRequiredDescription
filebinaryyesJPEG, GIF, PNG, or PDF file; maximum size: 10 MB.
documentTypeintegeryesDocument type expected by GET /v3/projects/{projectId}/required.

The project must be in status 0 (documents pending). Use the numeric document type returned by the required-documents endpoint; for example, 1 is an identity document and 2 is a tax notice.

POST /v3/projects/118c3582-c00d-49ed-a37d-5c6991c489e3/documents HTTP/1.1
Host: sandbox.api.smart-garant.fr
Authorization: ******
Content-Type: multipart/form-data; boundary=----SmartGarantBoundary

------SmartGarantBoundary
Content-Disposition: form-data; name="documentType"

2
------SmartGarantBoundary
Content-Disposition: form-data; name="file"; filename="tax-notice.pdf"
Content-Type: application/pdf

<binary file content>
------SmartGarantBoundary--

JavaScript with Axios​

When using FormData in a browser, do not set Content-Type manually: the browser adds the required boundary.

const input = document.querySelector('input[type="file"]');
const file = input.files[0];
const form = new FormData();

form.append('documentType', '2');
form.append('file', file);

const response = await axios.post(
`https://sandbox.api.smart-garant.fr/v3/projects/${projectId}/documents`,
form,
{
headers: {
Authorization: `Bearer ${token}`,
},
},
);

6.3 Get Project Documents​

GET /v3/projects/{id}/documents

6.4 Delete a Document​

DELETE /v3/projects/{id}/documents/{documentId}

6.5 Get Eligibility Certificate​

GET /v3/projects/{id}/documents/certificate

7. Apply — Request Validation​

Requests verification of the uploaded documents.

POST /v3/projects/{id}/apply

8. Rental Information​

Adds the rental information once documents are validated. The project must be in status 2.

POST /v3/projects/{id}/rent
POST /v3/projects/118c3582-c00d-49ed-a37d-5c6991c489e3/rent HTTP/1.1
Host: sandbox.api.smart-garant.fr
Authorization: ******
Content-Type: application/json

{
"owner": {
"firstName": "Jean-Pierre",
"lastName": "Dupont",
"email": "jean-pierre.dupont@example.com",
"phone": {
"phoneContryCode": "FR",
"phoneFormated": "+33606060606"
}
},
"ownerType": 1,
"ownerOrganizationName": "Agence des Champs",
"ownerAddress": {
"country": "France",
"zipCode": "75001",
"city": "Paris",
"address": "2365 rue des Champs"
},
"addressInformation": {
"country": "France",
"zipCode": "75002",
"city": "Paris",
"address": "1000 rue des Champs"
},
"rentAmount": 1005,
"personalRentAmount": 600,
"rentAlone": 1,
"securityDeposit": 2000.50,
"startLease": "2030-09-28",
"bailType": 0
}

8.1 Request Fields​

FieldTypeRequiredDescription
ownerobjectyesOwner contact. firstName, lastName, a valid email, and phone are required.
owner.phone.phoneContryCodestringyesISO 3166-1 alpha-2 country code, for example FR. The spelling is part of the API contract.
owner.phone.phoneFormatedstringyesInternational E.164 number, for example +33606060606. The spelling is part of the API contract.
ownerTypeintegeryes0: individual owner; 1: agency.
ownerOrganizationNamestringconditionalOrganization name when the owner is an agency.
ownerAddressobjectyesOwner address. country, zipCode, city, and address are required.
addressInformationobjectyesRented-property address. country, zipCode, city, and address are required.
rentAmountnumberyesTotal monthly rent including charges; must be greater than 0.
personalRentAmountnumberconditionalTenant's share including charges; required and greater than 0 for flatsharing or a couple.
rentAloneintegeryes0: alone; 1: flatsharing; 2: couple.
securityDepositnumbernoSecurity deposit amount.
startLeasestringyesLease start date in yyyy-MM-dd format; it cannot be in the past.
bailTypeintegeryesSee Lease Types.
theoreticalEndLeasestringconditionalExpected end date; required for a mobility lease.

The guaranteed score must cover rentAmount when rentAlone is 0, or personalRentAmount when rentAlone is 1 or 2.

8.2 Lease Types​

ValueDescription
0Classic three-year lease
1Furnished or unfurnished one-year lease
2Student lease
3Standard six-year lease
4Mobility lease of 1 to 10 months
5Two-year lease

9. Payment​

GET /v3/projects/{id}/payment

10. Organization Stats​

Returns statistics for the authenticated organization.

GET /v3/projects/stats