> ## Documentation Index
> Fetch the complete documentation index at: https://eurusys-6c0957fa.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Quickstart

> From zero to a verified Emirates ID in five steps — onboard, get the SDK, configure, and validate.

This walkthrough takes you from nothing to a working verification. Each step links to the full reference.

<Steps>
  <Step title="Onboard and create an API key">
    Sign in to the **[Client Portal](/dashboard/onboarding)**, create an **API key**, and note the **key ID** and **key secret**. The secret is shown **once** — store it in your backend's secret manager. Scope the key to the [verification methods](/dashboard/methods) your app uses (e.g. `eid_manual`, `eid_card_read_finger`).
  </Step>

  <Step title="Get the SDK from Nexus">
    Configure your package manager for the MBKYC Nexus repositories and add the dependency for your platform. See **[Get the SDK](/distribution/nexus-overview)** and the **[package matrix](/distribution/package-matrix)**.

    <Tabs>
      <Tab title="Android (Gradle)">
        ```kotlin theme={null}
        dependencies {
            implementation("ae.gov.icp.mbkyc:mbkyc-android:0.7.0")
            implementation("ae.gov.icp.mbkyc:service-smartcard-ccid-android:0.4.0")
            implementation("ae.gov.icp.mbkyc:service-fingerprint-morpho-android:0.4.0")
        }
        ```
      </Tab>

      <Tab title="Web (npm)">
        ```bash theme={null}
        npm install @mbkyc/sdk
        ```
      </Tab>

      <Tab title=".NET (NuGet)">
        ```xml theme={null}
        <PackageReference Include="MBKYC.Sdk" Version="0.5.0" />
        ```
      </Tab>

      <Tab title="Swift (macOS)">
        ```bash theme={null}
        # Download the XCFramework and link it in Xcode — no SPM/CocoaPods
        curl -fsSLO https://repo.client.ae/repository/mbkyc-raw/mbkyc/swift-sdk/0.5.0/MBKYCSDK.xcframework.zip
        ```
      </Tab>
    </Tabs>
  </Step>

  <Step title="Implement a token signer">
    The SDK never holds your API secret. When it needs to authenticate, it hands you some bytes to sign; you forward them to your backend, which holds the secret and signs them. See **[Authentication](/concepts/authentication)**.

    ```text theme={null}
    # Runs wherever your API secret lives (your backend).
    function sign(bytes):
        return yourBackend.sign(bytes)   # returns the signature
    ```
  </Step>

  <Step title="Initialize and register the device">
    ```text theme={null}
    mbkyc = MBKYC.create(
        baseUrl  = "https://api.client.ae",   # your proxy / VG endpoint
        apiKeyId = "your-key-id",
        signer   = sign,                            # from the previous step
    )

    mbkyc.registerDevice("lobby-kiosk")             # once per device
    ```
  </Step>

  <Step title="Validate an identity">
    ```text theme={null}
    result = mbkyc.validate(
        EmiratesIdManual(
            idNumber       = "784-XXXX-XXXXXXX-X",
            documentNumber = "...",
            nationality    = "ARE",
        )
    )

    print(result.success, result.message)
    ```

    Add a fingerprint to also run biometric matching — see **[Biometrics](/concepts/biometrics)**.
  </Step>
</Steps>

<Card title="Next: per-platform guides" icon="book" href="/sdks/android">
  Every platform (Android, Desktop JVM, Swift, C#, C, Web) has a full reference with real, idiomatic code.
</Card>
