Smile Identity Biometric Authentication API

The Biometric Authentication API from Smile Identity — 1 operation(s) for biometric authentication.

Operations 1

POST /v3/authentication Submit biometric authentication #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/smile-identity-biometric-authentication-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

smile-identity-biometric-authentication-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Smile ID V3 Authentication Biometric Authentication API
  version: 1.0.0
  description: 'Smile ID V3 identity verification API for Africa: Biometric KYC, Document Verification, Enhanced KYC/Doc Verification, SmartSelfie enrollment/authentication/compare, plus core service and user resources. Assembled verbatim from the per-endpoint OpenAPI fragments published in the Smile ID GitBook API reference (docs.usesmileid.com/api-reference).'
  contact:
    name: Smile ID Support
    url: https://docs.usesmileid.com/
  x-logo:
    url: https://smileidentity.com
servers:
- url: https://api.smileidentity.com
  description: Production
- url: https://api.sandbox.smileidentity.com
  description: Sandbox
security:
- SmileIDToken: []
tags:
- name: Biometric Authentication
paths:
  /v3/authentication:
    post:
      summary: Submit biometric authentication
      operationId: v3BiometricAuthentication
      tags:
      - Biometric Authentication
      description: 'Authenticates a user by comparing a submitted selfie against their enrolled image. The selfie and liveness images are uploaded, validated at entry, then queued for async ML processing (passive liveness, active liveness, face matching). Results are delivered via callback URL.

        Supports `use_enrolled_image: true` to skip selfie/liveness upload and re-use the enrolled image for the comparison (useful for server-side re-verification).'
      parameters:
      - name: SmileID-Source-SDK
        in: header
        required: false
        description: Source SDK identifier.
        schema:
          type: string
      - name: SmileID-Source-SDK-Version
        in: header
        required: false
        description: Source SDK version.
        schema:
          type: string
      - name: SmileID-Timestamp
        in: header
        required: false
        description: ISO 8601 timestamp used as the salt when computing SmileID-Request-Signature.
        schema:
          type: string
          format: date-time
      - name: SmileID-Request-Signature
        in: header
        required: false
        description: HMAC signature of the raw HTTP request body.
        schema:
          type: string
      - name: User-ID
        in: header
        required: false
        description: Partner-provided user identifier override.
        schema:
          type: string
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/BiometricAuthenticationRequest'
            encoding:
              selfie_image:
                contentType: image/jpeg
              liveness_images:
                contentType: image/jpeg
      responses:
        '202':
          description: Accepted — job queued for async processing.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AcceptedResponse'
        '400':
          description: Bad Request — validation error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Unauthorized — invalid or missing authentication credentials.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '402':
          description: Payment Required — insufficient wallet balance.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          description: Forbidden — partner not authorized for this product or IP.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '415':
          description: Unsupported Media Type — request must be multipart/form-data.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '429':
          description: Too Many Requests — rate limit exceeded.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
components:
  schemas:
    ErrorResponse:
      type: object
      required:
      - status
      - message
      properties:
        status:
          type: string
          description: HTTP status text.
        message:
          type: string
          description: Human-readable error message.
    AcceptedResponse:
      type: object
      properties:
        status:
          type: string
          enum:
          - Accepted
        message:
          type: string
        job_id:
          type: string
        user_id:
          type: string
        created_at:
          type: string
          format: date-time
    BiometricAuthenticationRequest:
      type: object
      required:
      - user_id
      - consent
      - user_details
      properties:
        user_id:
          type: string
          description: The enrolled user's identifier. Must match an existing enrollee.
        selfie_image:
          type: string
          format: binary
          description: JPEG selfie image for authentication. Required unless use_enrolled_image is true.
        liveness_images:
          type: array
          minItems: 6
          maxItems: 8
          items:
            type: string
            format: binary
          description: Array of JPEG liveness images. Required unless use_enrolled_image is true.
        consent:
          $ref: '#/components/schemas/Consent'
        user_details:
          type: object
          required:
          - given_names
          - last_name
          description: Consumer-stated PII fields for the user. Either email or phone_number must be provided.
          properties:
            given_names:
              type: string
              minLength: 1
            last_name:
              type: string
              minLength: 1
            email:
              type:
              - string
              - 'null'
              format: email
              description: At least one of email or phone_number is required.
            phone_number:
              type:
              - string
              - 'null'
              pattern: ^\+[1-9]\d{6,14}$
              description: Phone number in E.164 format. At least one of email or phone_number is required.
        use_enrolled_image:
          type: boolean
          default: false
          description: If true, skips selfie and liveness image upload and uses the enrolled image for re-verification. Useful for server-side re-authentication.
        callback_url:
          type: string
          format: uri
          description: URL to receive the async result callback.
        sandbox_result:
          type: number
          description: Force a specific result code in sandbox mode.
        partner_params:
          type: object
          additionalProperties:
            type: string
        metadata:
          type: array
          items:
            type: object
            required:
            - name
            - value
            properties:
              name:
                type: string
                maxLength: 100
              value:
                type: string
                maxLength: 1000
    Consent:
      type: object
      required:
      - granted
      - granted_at
      - notice_language
      - notice_privacy_policy_url
      properties:
        granted:
          type: boolean
          enum:
          - true
        granted_at:
          type: string
          format: date-time
        notice_language:
          type: string
          minLength: 2
          maxLength: 2
          pattern: ^[A-Z]{2}$
        notice_privacy_policy_url:
          type: string
          format: uri
  securitySchemes:
    SmileIDToken:
      type: apiKey
      in: header
      name: SmileID-Token
      description: JWT token obtained from `POST /v3/token`.