Aller au contenu

Requêtes de l'API identité

Paramètres

Le système API vous permet d’automatiser la validation des documents d’identité via une simple requête HTTP POST.

Les paramètres acceptés sont listés dans le tableau ci-dessous :

Paramètre Type Obligatoire Description
file Fichier Oui Pièce d’identité 1 page au format PDF ou image.
api_key string Oui Votre clé API.
format string Non Format de réponse : json (défaut) ou xml.

Exemples d'appels sur différents langages

cURL

curl -X POST 'https://api.app.trustdochub.com/api/identity/v1' \
  -F format=json \
  -F "api_key=<YOUR_API_KEY>" \
  -F "file=@/path/to/file.jpg"

Java

public String sendIdFileAndGetResults(MultipartFile file) {

WebClient client = WebClient.create();

MultipartBodyBuilder builder = new MultipartBodyBuilder();
builder.part("file", file.getResource());
builder.part("api_key", {{ YOUR_API_KEY }});

return client.post()
.uri(URI.create("https://api.app.trustdochub.com/api/identity/v1"))
.contentType(MediaType.MULTIPART_FORM_DATA)
.body(BodyInserters.fromMultipartData(builder.build()))
.retrieve()
.bodyToMono(String.class)
.block();
}

Python

import requests

url = 'https://api.app.trustdochub.com/api/identity/v1'
data = {'api_key': '{{ YOUR_API_KEY }}'}

with open('file.txt', 'rb') as file:
    response = requests.post(url, data=data, files={'file': file})

print(response.text)

Node

const axios = require('axios');
const FormData = require('form-data');
const fs = require('fs');

(async () => {
  const form = new FormData();
  form.append('file', fs.createReadStream('<PATH_TO_FILE>')); // ex: ./idcard.jpg
  form.append('api_key', '<YOUR_API_KEY>');
  form.append('format', 'json'); // ou 'xml'

  try {
    const res = await axios.post(
      'https://api.app.trustdochub.com/api/identity/v1',
      form,
      { headers: form.getHeaders(), timeout: 30000 }
    );
    console.log('Response:', res.data);
  } catch (err) {
    if (err.response) {
      console.error('Server error:', err.response.status, err.response.data);
    } else if (err.request) {
      console.error('No response:', err.request);
    } else {
      console.error('Request setup error:', err.message);
    }
  }
})();

PHP

<?php
// Installer: composer require guzzlehttp/guzzle
require 'vendor/autoload.php';

use GuzzleHttp\Client;
use GuzzleHttp\Exception\RequestException;

$endpoint = 'https://api.app.trustdochub.com/api/identity/v1';
$filePath = '<PATH_TO_FILE>';   // ex: /var/data/idcard.jpg
$apiKey   = '<YOUR_API_KEY>';   // votre clé API

if (!is_file($filePath)) {
  die('Fichier introuvable: ' . $filePath);
}

$client = new Client(['timeout' => 30.0]);

try {
  $response = $client->post($endpoint, [
    'multipart' => [
      [
        'name'     => 'file',
        'contents' => fopen($filePath, 'r'),
        // 'filename' => basename($filePath),           // optionnel
        // 'headers'  => ['Content-Type' => 'image/jpeg'] // optionnel
      ],
      [ 'name' => 'api_key', 'contents' => $apiKey ],
      [ 'name' => 'format',  'contents' => 'json' ]   // ou 'xml'
    ],
    'verify' => true, // laissez à true en prod (certificats SSL)
  ]);

  echo 'HTTP: ' . $response->getStatusCode() . PHP_EOL;
  echo $response->getBody();

} catch (RequestException $e) {
  if ($e->hasResponse()) {
    echo 'Erreur serveur: ' . $e->getResponse()->getStatusCode() . PHP_EOL;
    echo (string) $e->getResponse()->getBody();
  } else {
    echo 'Erreur requête: ' . $e->getMessage();
  }
}

Status codes

Les codes suivants sont retournés par l’API :

Codes de réponse API

Code Type Description
200 Vérification ok La vérification s’est bien déroulée.
401 Non autorisé La clé API n’est pas correcte.
402 Crédits insuffisants Il n’y a plus de crédits de vérification pour la période donnée.
422 Document illisible Le document n’est pas reconnu ou incorrect.

Réponses

Format JSON

Vous pouvez obtenir les résultats au format JSON.

Pour cela il suffit d’ajouter le paramètre « format=json » dans votre requête, ou de ne pas ajouter le paramètre « format ».

Voici les réponses possibles en fonction des documents :

Passeports

{
    "documentInfos": {
        "numberOfCharacters": "88",
        "documentType": "PASSPORT",
        "country": "NLD",
        "lastName": "DE BRUIJN",
        "firstNames": [
            "WILLEKE",
            "LISELOTTE"
        ],
        "dateOfBirth": "1965-03-10",
        "gender": "Female",
        "documentNumber": "SPECI2014",
        "nationality": "NLD",
        "personalNumber": "999999990<<<<<",
        "expirationDate": "2024-03-09"
    },
    "documentInfosValidation": {
        "numberOfCharactersValid": true,
        "documentTypeValid": true,
        "lastNameValid": true,
        "dateOfBirthValid": true,
        "genderValid": true,
        "expirationDateValid": true
    },
    "controlKeys": {
        "expirationDateControlKey": true,
        "personalNumberControlKey": true,
        "dateOfBirthControlKey": true,
        "globalControlKey": true,
        "line2ControlKey": true
    }
}

Titre de séjour / Permis de séjour

(exemple d'un document français)

{
  "documentInfos": {
    "numberOfCharacters": "90",
    "documentType": "FR_RESIDENCE_PERMIT",
    "country": "FRA",
    "lastName": "TRAORE",
    "firstNames": [
      "SALIMAH"
    ],
    "dateOfBirth": "1988-01-01",
    "gender": "Female",
    "documentNumber": "3MBMONSFJ",
    "personalNumber": "5903000242",
    "nationality": "SEN",
    "expirationDate": "2030-09-17"
  },
  "documentInfosValidation": {
    "numberOfCharactersValid": true,
    "documentTypeValid": true,
    "countryValid": true,
    "lastNameValid": true,
    "dateOfBirthValid": true,
    "genderValid": true,
    "documentNumberValid": true,
    "personalNumberValid": true,
    "nationalityValid": true,
    "expirationDateValid": true
  },
  "controlKeys": {
    "expirationDateControlKey": true,
    "documentNumberControlKey": true,
    "dateOfBirthControlKey": true,
    "globalControlKey": false
  }
}

Carte d'identité biométrique

(exemple d'une CNI espagnole)

{
  "documentInfos": {
    "numberOfCharacters": "90",
    "documentType": "ES_BIOMETRIC_ID_CARD",
    "country": "ESP",
    "lastName": "ESPANOLA ESPANOLA",
    "firstNames": [
      "CARMEN"
    ],
    "dateOfBirth": "1980-01-01",
    "gender": "Female",
    "documentNumber": "CAA000000",
    "dniNumber": "99999999R",
    "nationality": "ESP",
    "expirationDate": "2031-06-02"
  },
  "documentInfosValidation": {
    "numberOfCharactersValid": true,
    "documentTypeValid": true,
    "lastNameValid": true,
    "dateOfBirthValid": true,
    "genderValid": true,
    "countryValid": true,
    "documentNumberValid": true,
    "nationalityValid": true,
    "expirationDateValid": true
  },
  "controlKeys": {
    "expirationDateControlKey": true,
    "documentNumberControlKey": true,
    "dateOfBirthControlKey": true,
    "globalControlKey": true
  }
}

Permis de conduire biométrique

(exemple d'un permis de conduire français)

{
  "documentInfos": {
    "numberOfCharacters": "30",
    "documentType": "FR_DRIVING_LICENCE",
    "country": "FRA",
    "lastName": "MARTIN",
    "documentNumber": "13AA00002",
    "expirationDate": "2018-12-31"
  },
  "documentInfosValidation": {
    "numberOfCharactersValid": true,
    "documentTypeValid": true,
    "lastNameValid": true,
    "countryValid": true,
    "documentNumberValid": true,
    "expirationDateValid": true
  },
  "controlKeys": {
    "documentNumberControlKey": true,
    "globalControlKey": true
  }
}

US passport card

{
  "documentInfos": {
    "numberOfCharacters": "90",
    "documentType": "US_PASSPORT_CARD",
    "country": "USA",
    "lastName": "BARNES I",
    "firstNames": [
      "ARLO",
      "JAMES"
    ],
    "dateOfBirth": "1994-09-27",
    "gender": "Male",
    "documentNumber": "C13549388",
    "nationality": "USA",
    "expirationDate": "2026-11-21",
    "stateDepDocControlNumber": "792818960"
  },
  "documentInfosValidation": {
    "numberOfCharactersValid": true,
    "documentTypeValid": true,
    "countryValid": true,
    "lastNameValid": true,
    "dateOfBirthValid": true,
    "genderValid": true,
    "documentNumberValid": true,
    "nationalityValid": true,
    "expirationDateValid": true
  },
  "controlKeys": {
    "expirationDateControlKey": true,
    "documentNumberControlKey": true,
    "dateOfBirthControlKey": true,
    "globalControlKey": false
  }
}

US border crossing card

{
  "documentInfos": {
    "numberOfCharacters": "90",
    "documentType": "US_BORDER_CROSSING_CARD",
    "country": "USA",
    "lastName": "VIAJERA DE LA FRONTERA",
    "firstNames": [
      "F"
    ],
    "dateOfBirth": "1981-05-05",
    "gender": "Female",
    "documentNumber": "786000118",
    "visaNumber": "MEX004214033",
    "nationality": "MEX",
    "expirationDate": "2018-08-06"
  },
  "documentInfosValidation": {
    "numberOfCharactersValid": true,
    "documentTypeValid": true,
    "countryValid": true,
    "lastNameValid": true,
    "dateOfBirthValid": true,
    "genderValid": true,
    "documentNumberValid": true,
    "nationalityValid": true,
    "expirationDateValid": true
  },
  "controlKeys": {
    "expirationDateControlKey": true,
    "documentNumberControlKey": false,
    "dateOfBirthControlKey": true,
    "globalControlKey": false
  }
}

Format XML

Deuxième type de format disponible pour les réponses : le format XML.

Pour cela, il suffit d’ajouter le paramètre « format » « xml » à votre requête.

Voici les réponses possibles en fonction des documents :

Passeports

<Passport>
    <documentInfos>
        <numberOfCharacters>88</numberOfCharacters>
        <documentType>PASSPORT</documentType>
        <country>NLD</country>
        <lastName>DE BRUIJN</lastName>
        <firstNames>
            <firstNames>WILLEKE</firstNames>
            <firstNames>LISELOTTE</firstNames>
        </firstNames>
        <dateOfBirth>1965-03-10</dateOfBirth>
        <gender>Female</gender>
        <documentNumber>SPECI2014</documentNumber>
        <nationality>NLD</nationality>
        <personalNumber>999999990&lt;&lt;&lt;&lt;&lt;</personalNumber>
        <expirationDate>2024-03-09</expirationDate>
    </documentInfos>
    <documentInfosValidation>
        <numberOfCharactersValid>true</numberOfCharactersValid>
        <documentTypeValid>true</documentTypeValid>
        <lastNameValid>true</lastNameValid>
        <dateOfBirthValid>true</dateOfBirthValid>
        <genderValid>true</genderValid>
        <expirationDateValid>true</expirationDateValid>
    </documentInfosValidation>
    <controlKeys>
        <expirationDateControlKey>true</expirationDateControlKey>
        <personalNumberControlKey>true</personalNumberControlKey>
        <dateOfBirthControlKey>true</dateOfBirthControlKey>
        <globalControlKey>true</globalControlKey>
        <line2ControlKey>true</line2ControlKey>
    </controlKeys>
</Passport>

Titre de séjour / Permis de séjour

(exemple d'un document français)

<FrenchResidencePermit>
    <documentInfos>
        <numberOfCharacters>90</numberOfCharacters>
        <documentType>FR_RESIDENCE_PERMIT</documentType>
        <country>FRA</country>
        <lastName>TRAORE</lastName>
        <firstNames>
            <firstNames>SALIMAH</firstNames>
        </firstNames>
        <dateOfBirth>1988-01-01</dateOfBirth>
        <gender>Female</gender>
        <documentNumber>3MBMONSFJ</documentNumber>
        <personalNumber>5903000242</personalNumber>
        <nationality>SEN</nationality>
        <expirationDate>2030-09-17</expirationDate>
    </documentInfos>
    <documentInfosValidation>
        <numberOfCharactersValid>true</numberOfCharactersValid>
        <documentTypeValid>true</documentTypeValid>
        <countryValid>true</countryValid>
        <lastNameValid>true</lastNameValid>
        <dateOfBirthValid>true</dateOfBirthValid>
        <genderValid>true</genderValid>
        <documentNumberValid>true</documentNumberValid>
        <personalNumberValid>true</personalNumberValid>
        <nationalityValid>true</nationalityValid>
        <expirationDateValid>true</expirationDateValid>
    </documentInfosValidation>
    <controlKeys>
        <expirationDateControlKey>true</expirationDateControlKey>
        <documentNumberControlKey>true</documentNumberControlKey>
        <dateOfBirthControlKey>true</dateOfBirthControlKey>
        <globalControlKey>false</globalControlKey>
    </controlKeys>
</FrenchResidencePermit>

Carte d'identité biométrique

(exemple d'une CNI espagnole)

<SpanishBiometricIdCard>
    <documentInfos>
        <numberOfCharacters>90</numberOfCharacters>
        <documentType>ES_BIOMETRIC_ID_CARD</documentType>
        <country>ESP</country>
        <lastName>ESPANOLA ESPANOLA</lastName>
        <firstNames>
            <firstNames>CARMEN</firstNames>
        </firstNames>
        <dateOfBirth>1980-01-01</dateOfBirth>
        <gender>Female</gender>
        <documentNumber>CAA000000</documentNumber>
        <dniNumber>99999999R</dniNumber>
        <nationality>ESP</nationality>
        <expirationDate>2031-06-02</expirationDate>
    </documentInfos>
    <documentInfosValidation>
        <numberOfCharactersValid>true</numberOfCharactersValid>
        <documentTypeValid>true</documentTypeValid>
        <lastNameValid>true</lastNameValid>
        <dateOfBirthValid>true</dateOfBirthValid>
        <genderValid>true</genderValid>
        <countryValid>true</countryValid>
        <documentNumberValid>true</documentNumberValid>
        <nationalityValid>true</nationalityValid>
        <expirationDateValid>true</expirationDateValid>
    </documentInfosValidation>
    <controlKeys>
        <expirationDateControlKey>true</expirationDateControlKey>
        <documentNumberControlKey>true</documentNumberControlKey>
        <dateOfBirthControlKey>true</dateOfBirthControlKey>
        <globalControlKey>true</globalControlKey>
    </controlKeys>
</SpanishBiometricIdCard>

Permis de conduire biométrique

(exemple d'un permis de conduire français)

<FrenchBiometricDrivingLicense>
    <documentInfos>
        <numberOfCharacters>30</numberOfCharacters>
        <documentType>FR_DRIVING_LICENCE</documentType>
        <country>FRA</country>
        <lastName>MARTIN</lastName>
        <documentNumber>13AA00002</documentNumber>
        <expirationDate>2018-12-31</expirationDate>
    </documentInfos>
    <documentInfosValidation>
        <numberOfCharactersValid>true</numberOfCharactersValid>
        <documentTypeValid>true</documentTypeValid>
        <lastNameValid>true</lastNameValid>
        <countryValid>true</countryValid>
        <documentNumberValid>true</documentNumberValid>
        <expirationDateValid>true</expirationDateValid>
    </documentInfosValidation>
    <controlKeys>
        <documentNumberControlKey>true</documentNumberControlKey>
        <globalControlKey>true</globalControlKey>
    </controlKeys>
</FrenchBiometricDrivingLicence>

US passport card

<UsPassportCard>
    <documentInfos>
        <numberOfCharacters>90</numberOfCharacters>
        <documentType>US_PASSPORT_CARD</documentType>
        <country>USA</country>
        <lastName>BARNES I</lastName>
        <firstNames>
            <firstNames>ARLO</firstNames>
            <firstNames>JAMES</firstNames>
        </firstNames>
        <dateOfBirth>1994-09-27</dateOfBirth>
        <gender>Male</gender>
        <documentNumber>C13549388</documentNumber>
        <nationality>USA</nationality>
        <expirationDate>2026-11-21</expirationDate>
        <stateDepDocControlNumber>792818960</stateDepDocControlNumber>
    </documentInfos>
    <documentInfosValidation>
        <numberOfCharactersValid>true</numberOfCharactersValid>
        <documentTypeValid>true</documentTypeValid>
        <countryValid>true</countryValid>
        <lastNameValid>true</lastNameValid>
        <dateOfBirthValid>true</dateOfBirthValid>
        <genderValid>true</genderValid>
        <documentNumberValid>true</documentNumberValid>
        <nationalityValid>true</nationalityValid>
        <expirationDateValid>true</expirationDateValid>
    </documentInfosValidation>
    <controlKeys>
        <expirationDateControlKey>true</expirationDateControlKey>
        <documentNumberControlKey>true</documentNumberControlKey>
        <dateOfBirthControlKey>true</dateOfBirthControlKey>
        <globalControlKey>false</globalControlKey>
    </controlKeys>
</UsPassportCard>

US border crossing card

<UsBorderCrossingCard>
    <documentInfos>
        <numberOfCharacters>90</numberOfCharacters>
        <documentType>US_BORDER_CROSSING_CARD</documentType>
        <country>USA</country>
        <lastName>VIAJERA DE LA FRONTERA</lastName>
        <firstNames>
            <firstNames>F</firstNames>
        </firstNames>
        <dateOfBirth>1981-05-05</dateOfBirth>
        <gender>Female</gender>
        <documentNumber>786000118</documentNumber>
        <visaNumber>MEX004214033</visaNumber>
        <nationality>MEX</nationality>
        <expirationDate>2018-08-06</expirationDate>
    </documentInfos>
    <documentInfosValidation>
        <numberOfCharactersValid>true</numberOfCharactersValid>
        <documentTypeValid>true</documentTypeValid>
        <countryValid>true</countryValid>
        <lastNameValid>true</lastNameValid>
        <dateOfBirthValid>true</dateOfBirthValid>
        <genderValid>true</genderValid>
        <documentNumberValid>true</documentNumberValid>
        <nationalityValid>true</nationalityValid>
        <expirationDateValid>true</expirationDateValid>
    </documentInfosValidation>
    <controlKeys>
        <expirationDateControlKey>true</expirationDateControlKey>
        <documentNumberControlKey>false</documentNumberControlKey>
        <dateOfBirthControlKey>true</dateOfBirthControlKey>
        <globalControlKey>false</globalControlKey>
    </controlKeys>
</UsBorderCrossingCard>