Here are the main steps to implement in your integration:
📘 To continue reading this guide, you must have already created at least one route and one application.
If you haven't done so yet, we recommend starting with the first section of this guide: Getting Started with ID360
curl -X POST "https://id360docaposte.com/api/1.0.0/user/login/" \ -H "accept: application/json" \ -d '{ "username": "string", "password": "string", "token": "string" }'
curl -X POST "https://preprod.id360docaposte.com/api/1.0.0/user/login/" \ -H "accept: application/json" \ -d '{ "username": "string", "password": "string", "token": "string" }'
| Parameter | Required | Details |
|---|---|---|
username | Yes | Login identifier |
password | Yes | Password |
token | No (except for admin) | Unnecessary for `application` accounts. Required only for `admin` accounts with two-factor authentication |
HTTP Status: `200 OK`
Response Body:
{ "token": "0123456789abcdef01234567" }
Authorization: Token 0123456789abcdef01234567Essential header for your API calls:
`Authorization` → must contain:
Example:
Authorization: Token 0123456789abcdef01234567
To test calls in Swagger:
You will then be authenticated to run API calls directly from Swagger.
The login token is valid for 15 minutes, and its lifespan is reset with every call using the token (*except `logIn` itself*).
If you are not connected or the token is expired, you will receive a 401 Unauthorized for any operation requiring authentication.
To extend token lifespan, you may call this method every 13 minutes: `/api/1.0.0/user/whoami`
This method:
Authorization: Token 0123456789abcdef01234567
ℹ️ Reminder: integrate this call automatically into your process to avoid repeatedly calling the logIn method, as this may be interpreted by ID360 as abnormal or aggressive behavior.
curl -X POST \ "https://id360docaposte.com/api/1.0.0/process/{id}/enrollment" \ -H "Authorization: Token 0123456789abcdef01234567"
curl -X POST \ "https://preprod.id360docaposte.com/api/1.0.0/process/{id}/enrollment" \ -H "Authorization: Token 0123456789abcdef01234567"
Replace the {id} part with the UUID of a process.
Process objects are configurable through the admin UI (their UUID is displayed there).
{
"browser_callback_url": "https://www.example.com/browser_callback_url",
"client_reference": "any_string",
"callback_endpoints": [{
"url": "https://www.example.com/callback_url1",
"on": ["E","F","C"],
"headers": [{"name": "string", "value": "string"}]
},{
"url": "https://www.example.com/callback_url2",
"on": [],
"headers": [{"name": "string", "value": "string"}]
}],
"callback_headers": {
"header_name_1": "header_value_1",
"header_name_2": "header_value_2"
},
"last_name": "Users last name",
"first_name": "Users first name",
"email": "Users email",
"address_line_1": "Users address line 1",
"address_line_2": "Users address line 2",
"address_line_3": "Users address line 3",
"zip_code": "Users zip code",
"city": "Users city",
"country": "Users country",
"phone_number": "Users phone number",
"group": "string"
}
browser_callback_url: required – URL triggered by the user's browser at the end of the process (used for redirection only).client_reference: optional – Allows you to associate an internal ID from your system. Useful for reconciliation in case of cancellation or failure.callback_endpoints: required – A callback endpoint allows ID360 to automatically notify your system when an enrollment reaches a certain status (e.g., failure, cancellation, completion), via an HTTP POST request sent to the provided URL. Headers are optional and can be used for identification when receiving callbacks.last_name, first_name, address_line_1/2/3, zip_code, city, country, phone_number, email: optional – User information provided for informational purposes only (no validation is performed).group: optional – Enables consumption exports grouped by logical units.For more details on callback_endpoints, refer to this dedicated guide.
HTTP Status: 200 OK
{
"url": "https://www.id360docaposte.com/api/1.0.0/enrollment/{id}",
"id": "{id}",
"process": 1,
"api_key": "0123456789abcdef0123456789abcde",
"browser_callback_url": "yyy",
"client_reference": "any_string",
"status": "NEW",
"reason": null,
"creation_time": "2021-12-17T15:01:49.013906",
"starting_time": null,
"finished_time": null;
"callback_endpoints": [{
"url": "https://dev.webhook.id360docaposte.com/66b905f6-ac91-4a2c-8b1b-752d2393ac3b",
"on": ["E","F","C"],
"headers": [{"name": "string"}]
},{
"url": "https://dev.webhook.id360docaposte.com/66b905f6-ac91-4a2c-8b1b-752d2393ac3b",
"on": [],
"headers": [{"name": "string"}]
}]
}
id and the api_key for the rest of the process.In some processes, two identification methods may be offered to the end user, such as:
In our specific process, only the Docaposte Customizable Online Process has been selected, offering a single authentication channel.
This guide outlines the steps to retrieve the route identifier and select it within this process.
curl -X GET \ "https://id360docaposte.com/api/1.0.0/enrollment/flow/enrollment_info/" \ -H "accept: application/json" \ -H "x-api-key: <your_api_key>"
curl -X GET \ "https://preprod.id360docaposte.com/api/1.0.0/enrollment/flow/enrollment_info/" \ -H "accept: application/json" \ -H "x-api-key: <your_api_key>"
"routes": [
{
"id": 275128
}
]
curl -X POST \ "https://id360docaposte.com/api/1.0.0/enrollment/flow/route/{route_id}/select/" \ -H "accept: application/json" \ -H "x-api-key: <your_api_key>" \ -H "Content-Type: text/plain"
curl -X POST \ "https://preprod.id360docaposte.com/api/1.0.0/enrollment/flow/route/{route_id}/select/" \ -H "accept: application/json" \ -H "x-api-key: <your_api_key>" \ -H "Content-Type: text/plain"
HTTP Status: `204 No Content`
curl -X POST \ "https://id360docaposte.com/api/1.0.0/enrollment/flow/consent/?accepted_cgu=true&accepted_biometry=true" \ -H "accept: */*" \ -H "x-api-key: <your_api_key>" \ -d ''
curl -X POST \ "https://preprod.id360docaposte.com/api/1.0.0/enrollment/flow/consent/?accepted_cgu=true&accepted_biometry=true" \ -H "accept: */*" \ -H "x-api-key: <your_api_key>" \ -d ''
HTTP Status: `204 No Content`
In the process configuration, it is mandatory to select at least one data field to compare.
To do so, go to the Information Entry block and choose the elements to compare.
curl -X POST \ "https://id360docaposte.com/api/1.0.0/enrollment/{id}/control/data/{data_name}/?locked=true" \ -H "accept: text/plain" \ -H "Authorization: Token 0123456789abcdef01234567"
curl -X POST \ "https://preprod.id360docaposte.com/api/1.0.0/enrollment/{id}/control/data/{data_name}/?locked=true" \ -H "accept: text/plain" \ -H "Authorization: Token 0123456789abcdef01234567"
{id}: enrollment identifier, obtained during the creation of the user enrollment.{data_name}: name of the data field to compare.name → last namefirst_name → first namebirth_date → date of birthhttps://preprod.id360docaposte.com/api/1.0.0/enrollment/flow/enrollment_info
| Parameter | Value | Description |
|---|---|---|
locked | true | Locks the data once submitted (prevents further modification) |
The body must contain only the value to be checked, in raw format (plain text or simple value).
HTTP Status: 204 No Content
This indicates that the comparison was successfully processed and no response body is returned.
curl -X POST \ "https://id360docaposte.com/api/1.0.0/enrollment/flow/document/id_document_image/?total_pages=2&uploaded_page=0" \ -H "accept: */*" \ -H "x-api-key: <your_api_key>" \ --data-binary "@CNIRecto.PNG"
curl -X POST \ "https://preprod.id360docaposte.com/api/1.0.0/enrollment/flow/document/id_document_image/?total_pages=2&uploaded_page=0" \ -H "accept: */*" \ -H "x-api-key: <your_api_key>" \ --data-binary "@CNIRecto.PNG"
HTTP Status: `204 No Content`
curl -X POST \ "https://id360docaposte.com/api/1.0.0/enrollment/flow/document/selfie_image_upload/?total_pages=1&uploaded_page=0" \ -H "accept: */*" \ -H "x-api-key: <your_api_key>" \ --data-binary "@selfie.PNG"
curl -X POST \ "https://preprod.id360docaposte.com/api/1.0.0/enrollment/flow/document/selfie_image_upload/?total_pages=1&uploaded_page=0" \ -H "accept: */*" \ -H "x-api-key: <your_api_key>" \ --data-binary "@selfie.PNG"
HTTP Status: `204 No Content`
curl -X POST \ "https://id360docaposte.com/api/1.0.0/enrollment/flow/finalize_enrollment" \ -H "accept: application/json" \ -H "x-api-key: <your_api_key>"
curl -X POST \ "https://preprod.id360docaposte.com/api/1.0.0/enrollment/flow/finalize_enrollment" \ -H "accept: application/json" \ -H "x-api-key: <your_api_key>"
HTTP Status: `204 No Content`
curl -X GET \ "https://id360docaposte.com/api/1.0.0/enrollment/{id}/report" \ -H "accept: application/json" \ -H "Authorization: Token 0123456789abcdef01234567"
curl -X GET \ "https://preprod.id360docaposte.com/api/1.0.0/enrollment/{id}/report" \ -H "accept: application/json" \ -H "Authorization: Token 0123456789abcdef01234567"
{id}: user enrollment ID, obtained during its creation.
HTTP Status: 200 OK
Response format: JSON
login method.The report is also accessible from the console, under the “User Enrollments” tab, for a duration of two months. The identifier corresponds to the enrollment ID generated at the end of step 2. By selecting “View Details,” you can view the identification report and download the evidence file in JSON format at the bottom of the page.
A temporary report is available before the final report is issued.
This report can be retrieved using the allow_draft = true parameter, but must not be used in production.
⚠️ The report can only be retrieved after receiving the callback_url notifying you of the enrollment's processing completion.
Warning: Calling a temporary report may cause slowdowns or blockages for your users.
Applications and users can retrieve all evidence files using the report method.
- An enrollment with the status:
NEWSTARTEDCANCELED
will return a temporary evidence file if draft = true is added to the request.
Users can retrieve all finalized evidence files (with a verdict OK or KO) using the report method.
Only users can access archived reports using the report/archive method.
▶️ Retrieval via an application: Login using your *application credentials* (application ID + password set at creation).
▶️ Retrieval via a user: Login using your *user credentials*:
See the dedicated method: Download the PDF report
curl -X GET \ "https://id360docaposte.com/api/1.0.0/enrollment/{id}/idclaim" \ -H "accept: application/json" \ -H "Authorization: Token 0123456789abcdef01234567"
curl -X GET \ "https://preprod.id360docaposte.com/api/1.0.0/enrollment/{id}/idclaim" \ -H "accept: application/json" \ -H "Authorization: Token 0123456789abcdef01234567"
{id} : user file identifier, retrieved when it is created.
HTTP Status : 200 OK
Response format : ASIC-E
login method.Authorization: Token token_returned_by_login