> ## Documentation Index
> Fetch the complete documentation index at: https://docs.smartcomply.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Passeport

> Extrayez les détails d'identité d'un passeport de Côte d'Ivoire à l'aide de l'OCR.

Vérifiez le passeport de Côte d'Ivoire d'un client en téléversant une photo de la page de données — aucune saisie manuelle du numéro de passeport requise. Extraction OCR plus une concordance faciale requise par rapport à un selfie — pas de vérification de vivacité (pas de vidéo, pas de défi de clignement/mouvement).

<Note>
  Le passeport est unilatéral — seul `document_front` est nécessaire.
</Note>

<Note>
  `selfie_image` est requis — le visage extrait du document est comparé à celui-ci. Il s'agit d'une comparaison d'image fixe (pas de vivacité).
</Note>

## Endpoint

```
POST /api/onboarding/document_verification/cote_d_ivoire/passport
```

## Requête

### En-têtes

| En-tête          | Valeur                | Requis |
| ---------------- | --------------------- | ------ |
| `x-access-token` | Votre clé secrète API | Oui    |
| `Content-Type`   | `multipart/form-data` | Oui    |

### Paramètres de corps

| Paramètre        | Type | Requis | Description                                                                    |
| ---------------- | ---- | ------ | ------------------------------------------------------------------------------ |
| `document_front` | file | Oui    | Photo de la page de données du passeport. JPG ou PNG, max 5 Mo                 |
| `selfie_image`   | file | Oui    | Un selfie à comparer avec la photo du visage du document. JPG ou PNG, max 5 Mo |

### Exemple

<CodeGroup>
  ```bash cURL theme={null}
  curl -X POST "https://adhere-api.smartcomply.com/api/onboarding/document_verification/cote_d_ivoire/passport" \
    -H "x-access-token: YOUR_SECRET_KEY" \
    -F "document_front=@/path/to/passport.jpg" \
    -F "selfie_image=@/path/to/selfie.jpg"
  ```

  ```javascript Node.js theme={null}
  const formData = new FormData();
  formData.append("document_front", fs.createReadStream("/path/to/passport.jpg"));
  formData.append("selfie_image", fs.createReadStream("/path/to/selfie.jpg"));

  const response = await fetch(
    "https://adhere-api.smartcomply.com/api/onboarding/document_verification/cote_d_ivoire/passport",
    {
      method: "POST",
      headers: { "x-access-token": "YOUR_SECRET_KEY" },
      body: formData,
    }
  );
  const data = await response.json();
  ```

  ```python Python theme={null}
  import requests

  response = requests.post(
      "https://adhere-api.smartcomply.com/api/onboarding/document_verification/cote_d_ivoire/passport",
      headers={"x-access-token": "YOUR_SECRET_KEY"},
      files={
          "document_front": open("/path/to/passport.jpg", "rb"),
          "selfie_image": open("/path/to/selfie.jpg", "rb"),
      },
  )
  data = response.json()
  ```
</CodeGroup>

## Réponse

### 200 OK

| Champ                                   | Type            | Description                                                                                                                                                                                                          |
| --------------------------------------- | --------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `status`                                | string          | `"success"` en cas d'extraction réussie                                                                                                                                                                              |
| `data.full_name`                        | string          | Nom complet extrait                                                                                                                                                                                                  |
| `data.first_name`                       | string          | Prénom extrait                                                                                                                                                                                                       |
| `data.last_name`                        | string          | Nom de famille extrait                                                                                                                                                                                               |
| `data.date_of_birth`                    | string          | Date de naissance au format `YYYY-MM-DD`                                                                                                                                                                             |
| `data.gender`                           | string          | Genre extrait                                                                                                                                                                                                        |
| `data.nationality`                      | string          | Nationalité extraite                                                                                                                                                                                                 |
| `data.id_number`                        | string          | Le numéro de passeport                                                                                                                                                                                               |
| `data.document_type`                    | string          | `"passport"`                                                                                                                                                                                                         |
| `data.expiry_date`                      | string          | Date d'expiration du passeport                                                                                                                                                                                       |
| `data.is_expired`                       | boolean         | Si `expiry_date` est déjà passée                                                                                                                                                                                     |
| `data.photo`                            | string          | Photo du visage extraite du document, encodée en base64                                                                                                                                                              |
| `data.extra_fields`                     | object          | Autres champs lus par l'OCR sur la page de données — `place_of_birth`, `issuing_authority`, `nin` (si intégré), et `mrz_line1`/`mrz_line2` si la zone lisible par machine était lisible, exactement tels qu'imprimés |
| `data.face_match`                       | object          | Résultat de la comparaison du visage du document avec `selfie_image` — voir ci-dessous                                                                                                                               |
| `data.face_match.attempted`             | boolean         | Si une comparaison a réellement été exécutée                                                                                                                                                                         |
| `data.face_match.verified`              | boolean \| null | `true`/`false` si la comparaison a été exécutée ; `null` si elle ne l'a pas pu (voir Notes de concordance faciale)                                                                                                   |
| `data.face_match.confidence_percentage` | number          | Confiance de correspondance, 0–100                                                                                                                                                                                   |
| `data.face_match.selfie_image`          | string          | URL du selfie téléversé                                                                                                                                                                                              |
| `message`                               | string          | Résumé du résultat lisible par l'homme                                                                                                                                                                               |

```json theme={null}
{
  "status": "success",
  "data": {
    "valid": true,
    "first_name": "KOFFI",
    "last_name": "YAO",
    "full_name": "YAO KOFFI",
    "date_of_birth": "1993-12-01",
    "gender": "M",
    "nationality": "IVORIAN",
    "id_number": "CI1234567",
    "document_type": "passport",
    "expiry_date": "2028-03-17",
    "is_expired": false,
    "photo": "/9j/4AAQSkZJRgABAQAAAQABAAD...",
    "extra_fields": {
      "place_of_birth": "ABIDJAN",
      "issuing_authority": "ABIDJAN"
    },
    "face_match": {
      "attempted": true,
      "verified": true,
      "confidence_percentage": 92.4,
      "selfie_image": "https://.../selfie.jpg"
    }
  },
  "message": "Document details retrieved successfully"
}
```

<Note>
  **Notes de concordance faciale** — si le service de comparaison lui-même échoue, `attempted` reflète si une comparaison a réellement été exécutée et `verified` revient `null` avec un champ `reason` expliquant pourquoi — c'est différent de `verified: false`, qui signifie que la comparaison a été exécutée et que les visages ne correspondaient pas. Un problème de concordance faciale ne bloque jamais les données du document sous-jacent — le reste de `data` est toujours renvoyé.
</Note>

### 400 Bad Request

```json theme={null}
{
  "status": "failed",
  "data": [],
  "message": "ID photo is too blurry — please retake in good lighting with a steady hand"
}
```

### 401 Unauthorized

```json theme={null}
{
  "status": "failed",
  "message": "Authentication credentials were not provided."
}
```

<Note>
  Pour une liste complète des codes d'erreur, consultez la référence [Codes d'erreur](/error_codes).
</Note>


## OpenAPI

````yaml POST /api/onboarding/document_verification/cote_d_ivoire/passport
openapi: 3.0.3
info:
  title: Adhere API
  description: >-
    Identity verification, credit checks, transaction monitoring, and loan fraud
    detection across Africa.
  version: 3.0.0
servers:
  - url: https://adhere-api.smartcomply.com
    description: Production
security:
  - ApiKeyAuth: []
tags:
  - name: Nigeria KYC
  - name: Kenya KYC
  - name: Ghana KYC
  - name: Rwanda KYC
  - name: Uganda KYC
  - name: Document Verification
  - name: Biometrics
  - name: Individual Credit
  - name: Business Credit
  - name: Transaction Monitoring
  - name: Transaction Screening
  - name: Transaction KYC
  - name: Loan Fraud
  - name: User Journey
paths:
  /api/onboarding/document_verification/cote_d_ivoire/passport:
    post:
      tags:
        - Document Verification
      summary: Document Verification — Cote d'Ivoire Passport
      description: >
        Extract identity details from a Cote d'Ivoire passport using OCR, plus a
        required face match against a selfie. document_type and country are
        fixed by this URL — no need to send them in the request body.
      operationId: documentVerificationCoteDIvoirePassport
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              type: object
              required:
                - document_front
              properties:
                document_front:
                  type: string
                  format: binary
                  description: Photo of the passport data page. JPG or PNG, max 5MB.
                selfie_image:
                  type: string
                  format: binary
                  description: >
                    A selfie to compare against the face extracted from the
                    document. JPG or PNG, max 5MB. Required.
      responses:
        '200':
          $ref: '#/components/responses/DocumentVerificationSuccess'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
components:
  responses:
    DocumentVerificationSuccess:
      description: Document details extracted successfully
      content:
        application/json:
          schema:
            type: object
            properties:
              status:
                type: string
                example: success
              data:
                type: object
                properties:
                  valid:
                    type: boolean
                  first_name:
                    type: string
                  last_name:
                    type: string
                  full_name:
                    type: string
                  date_of_birth:
                    type: string
                  gender:
                    type: string
                  nationality:
                    type: string
                  address:
                    type: string
                  id_number:
                    type: string
                  serial_number:
                    type: string
                  id_type:
                    type: string
                  document_type:
                    type: string
                  expiry_date:
                    type: string
                  issue_date:
                    type: string
                  is_expired:
                    type: boolean
                  photo:
                    type: string
                    description: >-
                      Base64-encoded face photo extracted from the document.
                      Absent for document types with no face photo
                      (cac_certificate, utility_bill).
                  extra_fields:
                    type: object
                    description: >-
                      Every other field OCR read from the document that doesn't
                      have its own dedicated field above. Varies by
                      document_type and country.
                  face_match:
                    type: object
                    description: Present only when selfie_image was supplied.
                    properties:
                      attempted:
                        type: boolean
                      verified:
                        type: boolean
                        nullable: true
                        description: >-
                          true/false if the comparison ran; null if it couldn't
                          (see reason).
                      confidence_percentage:
                        type: number
                      selfie_image:
                        type: string
                        description: URL of the uploaded selfie.
                      reason:
                        type: string
                        description: >-
                          Present when verified is null — explains why the
                          comparison couldn't run or complete.
              message:
                type: string
                example: Document details retrieved successfully
    BadRequest:
      description: Bad Request
      content:
        application/json:
          schema:
            type: object
            properties:
              status:
                type: string
                example: failed
              data:
                type: array
                items: {}
              message:
                type: string
    Unauthorized:
      description: Unauthorized
      content:
        application/json:
          schema:
            type: object
            properties:
              status:
                type: string
                example: failed
              message:
                type: string
                example: Authentication credentials were not provided.
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-access-token
      description: Your Adhere API secret key

````