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

# Start an eID check

> Required scope: `kyc:eid`.

Start an eID check: the eID provider emails the client right away.

The request is filed, pending, on the case for (environment, reference):
that record, completed by `GET /eid/{key}`, is what the policy's eID
requirement reads. Nothing the partner sends to /verify can stand in for it.

Guide: [eID check](/guides/eid). The provider emails the client as soon as this call succeeds, in sandbox too.



## OpenAPI

````yaml /openapi.json post /v1/kyc/eid
openapi: 3.1.0
info:
  title: Sahl Partner API
  version: 0.2.0
  description: >-
    Server-to-server API for lenders and banks: document reading, verification,
    risk assessment and eID checks. Authenticate with `Authorization: Bearer
    <API key>`. Paths are relative to the server URL. New workspaces start in
    sandbox.
servers:
  - url: https://app.sahlfinancial.com/api
    description: Single API host. Send environment=sandbox (the default) for test data.
security:
  - bearerAuth: []
tags:
  - name: KYC
    description: Read documents, verify a profile, assess risk, start an eID check.
  - name: Bank connections (Growth)
    description: >-
      Growth plan, switched on per workspace by Sahl. Sandbox simulation today;
      production answers 409 until a bank data provider is live.
paths:
  /v1/kyc/eid:
    post:
      tags:
        - KYC
      summary: Start an eID check
      description: >-
        Required scope: `kyc:eid`.


        Start an eID check: the eID provider emails the client right away.


        The request is filed, pending, on the case for (environment, reference):

        that record, completed by `GET /eid/{key}`, is what the policy's eID

        requirement reads. Nothing the partner sends to /verify can stand in for
        it.


        Guide: [eID check](/guides/eid). The provider emails the client as soon
        as this call succeeds, in sandbox too.
      operationId: eid_create
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EidRequestIn'
        required: true
      responses:
        '201':
          description: Created. The client has been emailed.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EidCreated'
              example:
                key: 123456
                reference: client-0001
        '401':
          description: Missing, invalid, revoked or expired API key.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                detail: Invalid or revoked API key
        '403':
          description: >-
            Key lacks the scope, or the workspace is not enabled for the partner
            KYC API.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                detail:
                  code: kyc_scope_not_allowed
                  message: This workspace is not enabled for the partner KYC API.
        '404':
          description: The workspace has no eID provider account.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                detail: identity verification is not set up for this tenant
        '422':
          description: Validation error, or a client that is not Canadian.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                detail: identity verification is available for Canadian clients only
        '429':
          description: >-
            Per-IP rate limit: 100 requests a minute on these routes. Carries
            `Retry-After`, `X-RateLimit-Limit`, `X-RateLimit-Remaining`.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorFlat'
              example:
                code: rate_limit_exceeded
                message: Too many requests. Please slow down.
        '500':
          description: Unexpected server error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorFlat'
              example:
                code: internal_error
                message: An unexpected error occurred
                details: null
        '502':
          description: The eID provider did not answer.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                detail: the identity verification service did not answer
      security:
        - bearerAuth: []
components:
  schemas:
    EidRequestIn:
      properties:
        reference:
          type: string
          maxLength: 64
          minLength: 1
          pattern: ^[A-Za-z0-9_.:-]+$
          title: Reference
          description: >-
            Your own id for the client, 1 to 64 characters of `A-Z a-z 0-9 _ . :
            -`.
        first_name:
          type: string
          maxLength: 100
          minLength: 1
          title: First Name
        last_name:
          type: string
          maxLength: 100
          minLength: 1
          title: Last Name
        email:
          type: string
          format: email
          title: Email
          description: >-
            The provider emails the client a PIN and a link to this address as
            soon as the request is created.
        country:
          type: string
          maxLength: 3
          minLength: 2
          title: Country
          description: 'Country of the client. Only Canada is accepted: `CA` or `CAN`.'
        language:
          type: string
          enum:
            - en
            - fr
          title: Language
          default: en
          description: 'Language of the client''s email and screens: `en` or `fr`.'
        documents:
          type: integer
          enum:
            - 1
            - 2
          title: Documents
          default: 1
          description: 'How many pieces of ID the client must scan: 1 or 2.'
        environment:
          type: string
          enum:
            - sandbox
            - production
          title: Environment
          default: sandbox
          description: >-
            Picks the case the request is filed on. It does not stop the
            provider from emailing the client.
      type: object
      required:
        - reference
        - first_name
        - last_name
        - email
        - country
      title: EidRequestIn
      example:
        reference: client-0001
        first_name: Test
        last_name: Client
        email: test.client@example.com
        country: CA
        language: en
        documents: 1
        environment: sandbox
    EidCreated:
      type: object
      title: EidCreated
      properties:
        key:
          type: integer
          description: Id of the eID request. Use it to poll.
        reference:
          type: string
      required:
        - key
        - reference
    Error:
      type: object
      title: Error
      description: >-
        FastAPI error body. `detail` is a string, or an object with `code` and
        `message` (extra keys possible).
      properties:
        detail:
          oneOf:
            - type: string
            - type: object
              additionalProperties: true
              properties:
                code:
                  type: string
                message:
                  type: string
      required:
        - detail
    ErrorFlat:
      type: object
      title: ErrorFlat
      description: >-
        Body of a rate-limit 429, an unknown route 404 and a 500: `code` and
        `message` at the top level, with no `detail`.
      properties:
        code:
          type: string
        message:
          type: string
        details:
          type:
            - string
            - 'null'
          description: Present on a 500 only; null unless the server runs in debug mode.
      required:
        - code
        - message
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: >-
        API key created in the console. Scopes: kyc:extract, kyc:verify,
        kyc:eid; bank:read, bank:write (Growth plan, enabled per workspace by
        Sahl).

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.