IDnow Online Ident icon

IDnow identification session data API

IDnow GmbH · Identity

IDnow Online Ident is IDnow GmbH's branded Android identification client — the Munich vendor's own app that walks a user through a bank, telco or insurer KYC session. After the relying party issues an ident code, the user types it on the start screen, then either joins a live video call with a human agent (VideoIdent / LiveSwitch), captures a passport or national ID with AutoIdent, taps a German eID chip over NFC, reuses a stored identity, or signs PDF contracts with a Qualified Electronic Signature. Version 9.7.16 opens on a splash, continues through the ident-code start screen, the video live-stream room, the German eID chip flow, stored-identity reuse and a result screen that can redirect back to the originating bank or telco. It needs camera, microphone and NFC, and sits next to WebID, Deutsche Post POSTIDENT and Veriff as the video-ident / eID choice for BaFin-supervised onboarding in Germany.

Ident-session token values bind a relying-party case to the holder's firstName, lastName, email, mobile and live status. The same customer record names the channel as processType, keeps preferredLang, and nests a video-queue request with clientSecret, sessionToken, positionInQueue, estimatedWaitingTime and userVideoSessionToken. Start payloads add chosen idType / idCountry plus os, sdkVersion and customerapp. Classification returns country, idType and idSubtype against PASSPORT / IDCARD / DRIVERS_LICENSE / RESIDENCE_PERMIT; OTP proof is confirmationToken; recording agreement is consentValue. Capture sides tag stills IDFRONTSIDE, IDBACKSIDE, FACE; liveness is FACESCREENSHOT; clips carry encoding H264. In-call lines store chat text / originator; a pre-call probe reports per-stream quality under user.video / user.audio.

German eID chip sessions surface tcTokenUrl, mobileToken and an eID sessionToken, with modelEnableOTP splitting ident versus signing. After the NFC read, resultToken is posted with internalToken; screens advance via request_step. Contract PDFs arrive as hash, displayHash and a documentDefinition (identifier, optional); InstantSign then yields Identification_Signature. Wallet reuse is authenticatedRequest and expiredWalletExists; high-volume days flip waitingListEnrolled / waitingListNotified; post-call quality is rating and reason. Redirects use tenant sucessUrl / failureUrl (the success key is spelled that way on the wire). Tenant capacity is officeOpen, numberOfWaitingChatRequests and officeHours rows (days, hours); spoken approval lines arrive as translationKey plus value.

Bank and telco KYC desks can track queue position and process type before opening an account; compliance engines can enforce issuing-country and document-family allow-lists; nPA stacks can drive the NFC chip flow from the eID token URL; lending and QES desks can reconcile PDF hashes with the InstantSign signature. openData Studio turns this identification-session data into callable open data for those integrations.

Screenshots

  • IDnow Online Ident screenshot 1
  • IDnow Online Ident screenshot 2
  • IDnow Online Ident screenshot 3
  • IDnow Online Ident screenshot 4
  • IDnow Online Ident screenshot 5
  • IDnow Online Ident screenshot 6
  • IDnow Online Ident screenshot 7
  • IDnow Online Ident screenshot 8

API surface

The endpoints and request/response examples below are reconstructed from the app's interface — illustrative, not a live capture.

  • Fetch identification session

    GET /v1/idnow/cases/{caseId} osint

    Returns the ident case as Models_Customer: holder name and contact, processType, live status, nested video-queue request (clientSecret, sessionToken, positionInQueue) and success/failure redirect URLs.

    Auth: Path parameters tenantId and caseId. Headers Accept, X-Client-Version, X-Client-SDK-Version; optional X-Client-Secret after start.

    • token
    • internalToken
    • status
    • email
    • mobile
    • firstName
    • lastName
    • preferredLang
    • processType
    • redirectUrl
    • remainingInternalTokenRetries
    • preEstablishVideoConnection
    • waitingListEnrolled
    • waitingListNotified
    • custom1
    • videoSession
    • userVideoSessionToken
    • videoserverUsed
    • clientSecret
    • sessionToken
    • estimatedWaitingTime
    • positionInQueue
    • Identification_Signature
    • sucessUrl
    • failureUrl
    GET /v1/idnow/cases/TST-AAAAA HTTP/1.1
    Accept: application/json
    X-Client-Version: .android-9.7.16
    X-Client-SDK-Version: orangeapp.androidsdk-9.7.16
    {
      "token": "TST-AAAAA",
      "internalToken": "int-9f2c1a",
      "status": "PENDING",
      "email": "[email protected]",
      "mobile": "+491701234567",
      "firstName": "Anna",
      "lastName": "Mueller",
      "preferredLang": "de",
      "processType": "VIDEO_IDENT",
      "redirectUrl": "https://bank.example.de/ident/done",
      "request": {
        "status": "REQUESTED_CHAT",
        "clientSecret": "cs_7e91",
        "sessionToken": "st_4d21",
        "estimatedWaitingTime": 120,
        "positionInQueue": 3
      },
      "settings": {
        "sucessUrl": "https://bank.example.de/ident/ok",
        "failureUrl": "https://bank.example.de/ident/fail"
      }
    }
  • Start identification

    POST /v1/idnow/cases/{caseId}/start osint

    Starts the ident case with holder contact, chosen idType/idCountry and device clientInfo; returns status, OTP flags, nested data and the video-queue request that yields clientSecret.

    Auth: Path parameters tenantId and caseId. Same client-version headers. JSON body with holder contact, idType/idCountry and clientInfo.

    • token
    • mobile
    • email
    • preferredLang
    • authenticatedRequest
    • idType
    • idCountry
    • type
    • consentProtocolVersion
    • language
    • locale
    • os
    • sdkVersion
    • customerapp
    • status
    • remainingInternalTokenRetries
    • ident
    • signing
    • originator
    • timestamp
    • clientSecret
    • sessionToken
    • estimatedWaitingTime
    • positionInQueue
    • userVideoSessionToken
    • videoserverUsed
    POST /v1/idnow/cases/TST-AAAAA/start HTTP/1.1
    Accept: application/json
    Content-Type: application/json
    X-Client-Version: .android-9.7.16
    X-Client-SDK-Version: orangeapp.androidsdk-9.7.16
    
    {
      "token": "TST-AAAAA",
      "mobile": "+491701234567",
      "email": "[email protected]",
      "preferredLang": "de",
      "data": {"idType": "IDCARD", "idCountry": "DE", "type": "IDENT"},
      "clientInfo": {"os": "Android", "sdkVersion": "9.7.16", "customerapp": "orangeapp"}
    }
    {
      "token": "TST-AAAAA",
      "status": "STARTED",
      "remainingInternalTokenRetries": 3,
      "enableOTP": {"ident": true, "signing": false},
      "data": {"idType": "IDCARD", "idCountry": "DE", "originator": "acmebank"},
      "request": {
        "clientSecret": "cs_7e91",
        "sessionToken": "st_4d21",
        "estimatedWaitingTime": 90,
        "positionInQueue": 2
      }
    }
  • Fetch tenant office hours

    GET /v1/idnow/tenants/{tenantId}/hours opendata

    Returns Models_OfficeHours for the tenant: whether the ident desk is officeOpen, queue size, estimatedWaitingTime, spoken availableLanguages and weekday officeHours rows (days, hours).

    Auth: Path parameter tenantId. Headers Accept, X-Client-Version, X-Client-SDK-Version.

    • shortname
    • shortcode
    • name
    • officeOpen
    • estimatedWaitingTime
    • numberOfWaitingChatRequests
    • highCallVolumeMessage
    • waitingListNotified
    • availableLanguages
    • days
    • hours
    GET /v1/idnow/tenants/acmebank/hours HTTP/1.1
    Accept: application/json
    X-Client-Version: .android-9.7.16
    X-Client-SDK-Version: orangeapp.androidsdk-9.7.16
    {
      "shortname": "acmebank",
      "shortcode": "ACM",
      "name": "Acme Bank Ident",
      "officeOpen": true,
      "estimatedWaitingTime": 180,
      "numberOfWaitingChatRequests": 12,
      "highCallVolumeMessage": "High demand — please wait",
      "waitingListNotified": false,
      "availableLanguages": ["de", "en"],
      "company": { "name": "Acme Bank AG" },
      "officeHours": [
        { "days": "Mon-Fri", "hours": "08:00-20:00" },
        { "days": "Sat", "hours": "09:00-14:00" }
      ]
    }
  • List eSign PDF documents

    GET /v1/idnow/cases/{caseId}/contracts openfinance

    Returns the PDF contracts attached to the ident as Models_PDFDocument rows with content hash, displayHash and a documentDefinition (identifier, optional flag) used by the eSign review screen.

    Auth: Path parameters tenantId and caseId. Same client-version headers; X-Client-Secret when start returned clientSecret.

    • name
    • status
    • version
    • hash
    • displayHash
    • identifier
    • optional
    GET /v1/idnow/cases/TST-AAAAA/contracts HTTP/1.1
    Accept: application/json
    X-Client-Version: .android-9.7.16
    X-Client-SDK-Version: orangeapp.androidsdk-9.7.16
    X-Client-Secret: cs_7e91
    [
      {
        "name": "loan-agreement.pdf",
        "status": "PENDING",
        "version": "1",
        "hash": "e3b0c44298fc1c149afbf4c8996fb924",
        "displayHash": "E3B0-C442",
        "documentDefinition": {
          "identifier": "LOAN_AGREEMENT",
          "name": "Loan agreement",
          "optional": false
        }
      }
    ]
  • List spoken approval phrases

    GET /v1/idnow/cases/{caseId}/spoken-phrases opendata

    Returns Models_ApprovalPhrase rows the agent asks the holder to speak, each with translationKey, spoken value and optional urls (link, label, action).

    Auth: Path parameters tenantId and caseId plus the client-version headers.

    • name
    • translationKey
    • value
    • link
    • label
    • action
    GET /v1/idnow/cases/TST-AAAAA/spoken-phrases HTTP/1.1
    Accept: application/json
    X-Client-Version: .android-9.7.16
    X-Client-SDK-Version: orangeapp.androidsdk-9.7.16
    [
      {
        "name": "recording_consent",
        "translationKey": "idnow.phrase.recording",
        "value": "I agree that this identification is recorded",
        "urls": {
          "privacy": {
            "link": "https://bank.example.de/privacy",
            "label": "Privacy notice",
            "translationKey": "idnow.link.privacy",
            "action": "OPEN"
          }
        }
      }
    ]
  • Upload document classification info

    POST /v1/idnow/cases/{caseId}/document-meta osint

    Records the document the user selected (issuing idCountry, idType such as IDCARD/PASSPORT/DRIVERS_LICENSE/RESIDENCE_PERMIT, and idSubtype) before image capture.

    Auth: Path parameters tenantId and caseId. JSON body with idCountry, idType and idSubtype.

    • idCountry
    • idType
    • idSubtype
    POST /v1/idnow/cases/TST-AAAAA/document-meta HTTP/1.1
    Accept: application/json
    Content-Type: application/json
    X-Client-Version: .android-9.7.16
    X-Client-SDK-Version: orangeapp.androidsdk-9.7.16
    
    {
      "idCountry": "DE",
      "idType": "IDCARD",
      "idSubtype": "NATIONAL_ID"
    }
    {
      "idCountry": "DE",
      "idType": "IDCARD",
      "idSubtype": "NATIONAL_ID"
    }
  • Classify captured ID image

    POST /v1/idnow/cases/{caseId}/document-class osint

    Uploads a captured ID image and returns Model_Classification with detected country, idType and idSubtype so AutoIdent can lock the document family.

    Auth: Path parameters tenantId and caseId. Multipart image body plus client-version headers.

    • country
    • idType
    • idSubtype
    POST /v1/idnow/cases/TST-AAAAA/document-class HTTP/1.1
    Accept: application/json
    Content-Type: multipart/form-data; boundary=----idnow
    X-Client-Version: .android-9.7.16
    X-Client-SDK-Version: orangeapp.androidsdk-9.7.16
    
    ------idnow
    Content-Disposition: form-data; name="file"; filename="front.jpg"
    Content-Type: image/jpeg
    
    (binary)
    ------idnow--
    {
      "country": "DE",
      "idType": "IDCARD",
      "idSubtype": "NATIONAL_ID"
    }
  • Upload captured ID image

    POST /v1/idnow/cases/{caseId}/stills/{side} osint

    Uploads a still of the chosen document side or face (path type IDFRONTSIDE / IDBACKSIDE / DRIVERSFRONTSIDE / DRIVERSBACKSIDE / FACE) after AutoIdent classification, so the ident case holds the capture used by the agent or eSign review.

    Auth: Path parameters tenantId, caseId and side (IDFRONTSIDE, IDBACKSIDE, DRIVERSFRONTSIDE, DRIVERSBACKSIDE, FACE). Multipart body.

    • type
    POST /v1/idnow/cases/TST-AAAAA/stills/IDFRONTSIDE HTTP/1.1
    Accept: application/json
    Content-Type: multipart/form-data; boundary=----idnow
    X-Client-Version: .android-9.7.16
    X-Client-SDK-Version: orangeapp.androidsdk-9.7.16
    
    ------idnow
    Content-Disposition: form-data; name="file"; filename="id-front.jpg"
    Content-Type: image/jpeg
    
    (binary)
    ------idnow--
    {
      "type": "IDFRONTSIDE",
      "status": "UPLOADED"
    }
  • Upload face screenshot

    POST /v1/idnow/cases/{caseId}/liveness/{kind} osint

    Posts the liveness / face still taken during VideoIdent (Models_Screenshot.screenshot with type FACESCREENSHOT) so the agent can compare the holder to the ID portrait.

    Auth: Path parameters tenantId, caseId and kind (FACESCREENSHOT). JSON screenshot payload plus type.

    • screenshot
    • type
    POST /v1/idnow/cases/TST-AAAAA/liveness/FACESCREENSHOT HTTP/1.1
    Accept: application/json
    Content-Type: application/json
    X-Client-Version: .android-9.7.16
    X-Client-SDK-Version: orangeapp.androidsdk-9.7.16
    
    {
      "screenshot": "(base64 jpeg)",
      "type": "FACESCREENSHOT"
    }
    {
      "type": "FACESCREENSHOT",
      "status": "UPLOADED"
    }
  • Upload identification video

    POST /v1/idnow/cases/{caseId}/clips/{codec} osint

    Uploads the AutoIdent / VideoIdent capture clip with codec tag encoding (H264) so the ident case stores the motion evidence the agent or classifier reviews.

    Auth: Path parameters tenantId, caseId and codec (H264). Multipart video body plus client-version headers.

    • encoding
    POST /v1/idnow/cases/TST-AAAAA/clips/H264 HTTP/1.1
    Accept: application/json
    Content-Type: multipart/form-data; boundary=----idnow
    X-Client-Version: .android-9.7.16
    X-Client-SDK-Version: orangeapp.androidsdk-9.7.16
    
    ------idnow
    Content-Disposition: form-data; name="file"; filename="ident.mp4"
    Content-Type: video/mp4
    
    (binary)
    ------idnow--
    {
      "encoding": "H264",
      "status": "UPLOADED"
    }
  • Submit recording consent

    POST /v1/idnow/cases/{caseId}/recording-consent opendata

    Posts the user's recording-agreement flag (consentValue) before the VideoIdent agent call, matching the showRecordingAgreement setting.

    Auth: Path parameters tenantId and caseId. JSON body with consentValue.

    • consentValue
    POST /v1/idnow/cases/TST-AAAAA/recording-consent HTTP/1.1
    Accept: application/json
    Content-Type: application/json
    X-Client-Version: .android-9.7.16
    X-Client-SDK-Version: orangeapp.androidsdk-9.7.16
    
    {
      "consentValue": true
    }
  • Send mobile confirmation token

    POST /v1/idnow/cases/{caseId}/mobile-otp osint

    Submits the SMS/OTP confirmationToken when verifyMobileNumber is enabled on the tenant, proving the holder controls the mobile on the ident.

    Auth: Path parameters tenantId and caseId. JSON body with confirmationToken.

    • confirmationToken
    POST /v1/idnow/cases/TST-AAAAA/mobile-otp HTTP/1.1
    Accept: application/json
    Content-Type: application/json
    X-Client-Version: .android-9.7.16
    X-Client-SDK-Version: orangeapp.androidsdk-9.7.16
    
    {
      "confirmationToken": "847291"
    }
    {
      "confirmationToken": "847291"
    }
  • Update mobile number

    POST /v1/idnow/cases/{caseId}/mobile osint

    Writes a new E.164 mobile onto the ident case when the user corrects the number before OTP or video, returning the stored mobile.

    Auth: Path parameters tenantId and caseId. JSON body with mobile. Tenant flag disabledMobileNumberChange can block the call.

    • mobile
    POST /v1/idnow/cases/TST-AAAAA/mobile HTTP/1.1
    Accept: application/json
    Content-Type: application/json
    X-Client-Version: .android-9.7.16
    X-Client-SDK-Version: orangeapp.androidsdk-9.7.16
    
    {
      "mobile": "+491701234567"
    }
    {
      "mobile": "+491701234567"
    }
  • Check wallet reuse eligibility

    GET /v1/idnow/cases/{caseId}/wallet-reuse osint

    Tells StoredIdentityActivity whether a prior ident can be reused (authenticatedRequest) and whether an expired wallet still exists (expiredWalletExists).

    Auth: Path parameters tenantId and caseId plus the client-version headers.

    • authenticatedRequest
    • expiredWalletExists
    GET /v1/idnow/cases/TST-AAAAA/wallet-reuse HTTP/1.1
    Accept: application/json
    X-Client-Version: .android-9.7.16
    X-Client-SDK-Version: orangeapp.androidsdk-9.7.16
    {
      "authenticatedRequest": true,
      "expiredWalletExists": false
    }
  • Start German eID session

    POST /v1/idnow/eid/{caseId}/open osint

    Opens the nPA / German eID chip flow and returns mobileToken, sessionToken and the eID-server tcTokenUrl that eIDActivity hands to the NFC stack (Authada).

    Auth: Path parameters tenantId and caseId. JSON body with eID clientInfo.

    • mobileToken
    • sessionToken
    • tcTokenUrl
    • modelEnableOTP
    • ident
    • signing
    • language
    • locale
    • os
    • sdkVersion
    • customerapp
    POST /v1/idnow/eid/TST-AAAAA/open HTTP/1.1
    Accept: application/json
    Content-Type: application/json
    X-Client-Version: .android-9.7.16
    X-Client-SDK-Version: orangeapp.androidsdk-9.7.16
    
    {
      "clientInfo": {"language": "de", "os": "Android", "sdkVersion": "9.7.16"}
    }
    {
      "mobileToken": "mt_6c10",
      "sessionToken": "st_eID_9aa",
      "tcTokenUrl": "eid-token://handoff?session=st_eID_9aa",
      "modelEnableOTP": { "ident": true, "signing": true },
      "request": {
        "status": "RUNNING"
      }
    }
  • Enroll on high-volume waiting list

    POST /v1/idnow/cases/{caseId}/queue-join opendata

    Puts the ident onto the agent waiting list during high call volume (Activities_HighCallVolumeActivity); later customer fetches echo waitingListEnrolled / waitingListNotified.

    Auth: Path parameters tenantId and caseId. Empty JSON body.

    • waitingListEnrolled
    • waitingListNotified
    POST /v1/idnow/cases/TST-AAAAA/queue-join HTTP/1.1
    Accept: application/json
    Content-Type: application/json
    X-Client-Version: .android-9.7.16
    X-Client-SDK-Version: orangeapp.androidsdk-9.7.16
    
    {}
    {}
  • Subscribe waiting-list push

    POST /v1/idnow/cases/{caseId}/queue-push opendata

    Registers the device FCM subscriptionToken so Activities_HighCallVolumeActivity can notify the holder when an agent slot opens (type, appName).

    Auth: Path parameters tenantId and caseId. JSON body with type, appName and subscriptionToken.

    • type
    • appName
    • subscriptionToken
    POST /v1/idnow/cases/TST-AAAAA/queue-push HTTP/1.1
    Accept: application/json
    Content-Type: application/json
    X-Client-Version: .android-9.7.16
    X-Client-SDK-Version: orangeapp.androidsdk-9.7.16
    
    {
      "type": "FCM",
      "appName": "orangeapp",
      "subscriptionToken": "fcm-token-88ab"
    }
    {
      "type": "FCM",
      "appName": "orangeapp",
      "subscriptionToken": "fcm-token-88ab"
    }
  • Submit agent feedback

    POST /v1/idnow/cases/{caseId}/agent-rating opendata

    Posts the post-call agent rating and free-text reason from Activities_AgentFeedbackActivity after a VideoIdent session ends.

    Auth: Path parameters tenantId and caseId. JSON body with rating and reason. Gated by enableAgentFeedback.

    • rating
    • reason
    POST /v1/idnow/cases/TST-AAAAA/agent-rating HTTP/1.1
    Accept: application/json
    Content-Type: application/json
    X-Client-Version: .android-9.7.16
    X-Client-SDK-Version: orangeapp.androidsdk-9.7.16
    
    {
      "rating": 5,
      "reason": "clear instructions"
    }
  • Request video chat

    POST /v1/idnow/cases/{caseId}/video-room opendata

    Asks the ident desk to open a LiveSwitch / VideoIdent room; success is logged as 'requestVideoChat rest call was successful' and later customer fetches echo Models_Request queue fields.

    Auth: Path parameters tenantId and caseId plus the client-version headers.

    • status
    • videoSession
    • userVideoSessionToken
    • videoserverUsed
    • clientSecret
    • sessionToken
    • estimatedWaitingTime
    • positionInQueue
    POST /v1/idnow/cases/TST-AAAAA/video-room HTTP/1.1
    Accept: application/json
    X-Client-Version: .android-9.7.16
    X-Client-SDK-Version: orangeapp.androidsdk-9.7.16
    {
      "status": "REQUESTED_CHAT",
      "videoSession": "vs-88c1",
      "userVideoSessionToken": "uvt-22ab",
      "videoserverUsed": "eu-west-relay",
      "clientSecret": "cs_7e91",
      "sessionToken": "st_4d21",
      "estimatedWaitingTime": 90,
      "positionInQueue": 2
    }
  • Send in-call agent chat

    POST /v1/idnow/cases/{caseId}/agent-chat opendata

    Posts a LiveSwitch in-call chat line (Models_TextMessage.content) that the video room stores as Models_ChatMessage (text, date, originator, name) when IDnowSDK.enableChat is on.

    Auth: Path parameters tenantId and caseId. JSON body with content.

    • content
    • text
    • date
    • originator
    • name
    POST /v1/idnow/cases/TST-AAAAA/agent-chat HTTP/1.1
    Accept: application/json
    Content-Type: application/json
    X-Client-Version: .android-9.7.16
    X-Client-SDK-Version: orangeapp.androidsdk-9.7.16
    
    {
      "content": "Please hold your ID closer to the camera"
    }
    {
      "text": "Please hold your ID closer to the camera",
      "date": "2026-10-12T08:16:02Z",
      "originator": "AGENT",
      "name": "Mara"
    }
  • Start call-quality test

    POST /v1/idnow/cases/{caseId}/call-probe opendata

    Starts CallQualityCheckActivity's pre-call probe with sessionId and userVideoSessionToken; metrics land as CallQualityMetrics.user with per-stream CallStreamQuality.quality for video and audio before the agent room opens.

    Auth: Path parameters tenantId and caseId. JSON body with sessionId and userVideoSessionToken.

    • sessionId
    • userVideoSessionToken
    • user
    • video
    • audio
    • quality
    POST /v1/idnow/cases/TST-AAAAA/call-probe HTTP/1.1
    Accept: application/json
    Content-Type: application/json
    X-Client-Version: .android-9.7.16
    X-Client-SDK-Version: orangeapp.androidsdk-9.7.16
    
    {
      "sessionId": "vs-88c1",
      "userVideoSessionToken": "uvt-22ab"
    }
    {
      "sessionId": "vs-88c1",
      "userVideoSessionToken": "uvt-22ab",
      "user": {
        "video": { "quality": 4 },
        "audio": { "quality": 5 }
      }
    }
  • Start InstantSign / QES session

    POST /v1/idnow/qes/{caseId}/open openfinance

    Starts the trusted-original / InstantSign QES flow and returns Identification_Signature, a signing clientSecret/sessionToken and OTP flags used by the eSign screens.

    Auth: Path parameters tenantId and caseId. JSON body with holder contact; response carries Identification_Signature.

    • Identification_Signature
    • clientSecret
    • sessionToken
    • ident
    • signing
    • token
    • email
    • mobile
    • preferredLang
    POST /v1/idnow/qes/TST-AAAAA/open HTTP/1.1
    Accept: application/json
    Content-Type: application/json
    X-Client-Version: .android-9.7.16
    X-Client-SDK-Version: orangeapp.androidsdk-9.7.16
    
    {
      "token": "TST-AAAAA",
      "email": "[email protected]",
      "mobile": "+491701234567",
      "preferredLang": "de"
    }
    {
      "Identification_Signature": "qes-sess-4412",
      "clientSecret": "cs_sign_91",
      "sessionToken": "st_sign_02",
      "enableOTP": { "ident": false, "signing": true }
    }
  • Register eSign account

    POST /v1/idnow/cases/{caseId}/sign-account openfinance

    Creates the trust-service eSign account for the ident using the holder's email and mobile (Models_RegistrationeSign) before signingDone.

    Auth: Path parameters tenantId and caseId. JSON body with email and mobile.

    • email
    • mobile
    POST /v1/idnow/cases/TST-AAAAA/sign-account HTTP/1.1
    Accept: application/json
    Content-Type: application/json
    X-Client-Version: .android-9.7.16
    X-Client-SDK-Version: orangeapp.androidsdk-9.7.16
    
    {
      "email": "[email protected]",
      "mobile": "+491701234567"
    }
    {
      "email": "[email protected]",
      "mobile": "+491701234567"
    }
  • Report identification failure

    POST /v1/idnow/cases/{caseId}/fail osint

    Posts the terminal failedReason code (for example USER_ID_DOCUMENT_EXPIRED_NO_FALLBACK from InstantSign) when the ident cannot complete.

    Auth: Path parameters tenantId and caseId. JSON body with failedReason.

    • failedReason
    POST /v1/idnow/cases/TST-AAAAA/fail HTTP/1.1
    Accept: application/json
    Content-Type: application/json
    X-Client-Version: .android-9.7.16
    X-Client-SDK-Version: orangeapp.androidsdk-9.7.16
    
    {
      "failedReason": "USER_ID_DOCUMENT_EXPIRED_NO_FALLBACK"
    }
  • Mark identification canceled

    POST /v1/idnow/cases/{caseId}/abort osint

    Tells the ident case the holder aborted, pairing the empty JSON body with an IDnowCancelationStep value (CONSENT, WAITING_LIST, AGENT_CONVERSATION, DOCUMENT_CLASSIFICATION) used by Activities_ResultActivity.

    Auth: Path parameters tenantId and caseId. Empty JSON body; result screen shows the cancelation step the holder left.

    • resultCancelationStep
    POST /v1/idnow/cases/TST-AAAAA/abort HTTP/1.1
    Accept: application/json
    Content-Type: application/json
    X-Client-Version: .android-9.7.16
    X-Client-SDK-Version: orangeapp.androidsdk-9.7.16
    
    {}
    {}
  • Prepare signing session

    POST /v1/idnow/cases/{caseId}/sign-prepare openfinance

    Opens the QES signing session on an ident that already has a trust-service account, so SignContractView / CompleteEsignView can bind Identification_Signature, clientSecret and sessionToken before the holder reviews PDFs.

    Auth: Path parameters tenantId and caseId. Empty JSON body; optional X-Client-Secret from InstantSign.

    • Identification_Signature
    • clientSecret
    • sessionToken
    POST /v1/idnow/cases/TST-AAAAA/sign-prepare HTTP/1.1
    Accept: application/json
    Content-Type: application/json
    X-Client-Version: .android-9.7.16
    X-Client-SDK-Version: orangeapp.androidsdk-9.7.16
    X-Client-Secret: cs_sign_91
    
    {}
    {}
  • Complete eSign / QES

    POST /v1/idnow/cases/{caseId}/sign-complete openfinance

    Marks the QES / InstantSign flow complete after the holder accepts the hashed PDFs; CompleteEsignView then treats Identification_Signature as final and Activities_ResultActivity can follow sucessUrl.

    Auth: Path parameters tenantId and caseId. Empty JSON body; optional X-Client-Secret from InstantSign.

    • status
    • Identification_Signature
    POST /v1/idnow/cases/TST-AAAAA/sign-complete HTTP/1.1
    Accept: application/json
    Content-Type: application/json
    X-Client-Version: .android-9.7.16
    X-Client-SDK-Version: orangeapp.androidsdk-9.7.16
    X-Client-Secret: cs_sign_91
    
    {}
    {}
  • Refuse eSign documents

    POST /v1/idnow/cases/{caseId}/sign-refuse openfinance

    Records that the holder refused the attached PDF contracts (SignContractView) instead of completing QES, so the ident ends without Identification_Signature.

    Auth: Path parameters tenantId and caseId. Empty JSON body.

    • status
    POST /v1/idnow/cases/TST-AAAAA/sign-refuse HTTP/1.1
    Accept: application/json
    Content-Type: application/json
    X-Client-Version: .android-9.7.16
    X-Client-SDK-Version: orangeapp.androidsdk-9.7.16
    
    {}
    {}
  • Fetch trust-service PDF

    GET /v1/idnow/cases/{caseId}/tsp-pdf openfinance

    Downloads the trust-service-provider (TSP) PDF for the ident so Activities_PDFViewer can show the same document whose hash / displayHash / documentDefinition.identifier were listed on the documents call.

    Auth: Path parameters tenantId and caseId. Accept application/pdf; optional X-Client-Secret. Raw PDF body.

    • hash
    • displayHash
    • identifier
    • name
    GET /v1/idnow/cases/TST-AAAAA/tsp-pdf HTTP/1.1
    Accept: application/pdf
    X-Client-Version: .android-9.7.16
    X-Client-SDK-Version: orangeapp.androidsdk-9.7.16
    X-Client-Secret: cs_sign_91
    (binary PDF; Activities_PDFViewer / PDFWebView render the trust-service provider document whose hash matches Models_PDFDocument.hash)
  • Submit German eID result tokens

    POST /v1/idnow/eid/chip-result osint

    Posts the nPA chip-read resultToken together with the eID sessionToken and ident internalToken so eIDActivity can close the Authada / AusweisApp2Service hand-off.

    Auth: Path parameter tenantId. JSON body with resultToken, sessionToken and internalToken after the NFC chip read.

    • resultToken
    • sessionToken
    • internalToken
    POST /v1/idnow/eid/chip-result HTTP/1.1
    Accept: application/json
    Content-Type: application/json
    X-Client-Version: .android-eid-9.7.16
    X-Client-SDK-Version: orangeapp.androidsdk-9.7.16
    
    {
      "resultToken": "rt_aa19",
      "sessionToken": "st_eID_9aa",
      "internalToken": "int-9f2c1a"
    }
  • Advance German eID step

    POST /v1/idnow/eid/{caseId}/step osint

    Moves the eID session to the next NFC / PIN / CAN screen inside eIDActivity by posting request_step (the REST is skipped when the eID client is null).

    Auth: Path parameters tenantId and caseId. JSON body with request_step.

    • request_step
    POST /v1/idnow/eid/TST-AAAAA/step HTTP/1.1
    Accept: application/json
    Content-Type: application/json
    X-Client-Version: .android-eid-9.7.16
    X-Client-SDK-Version: orangeapp.androidsdk-9.7.16
    
    {
      "request_step": "READ_CHIP"
    }
    {}

Data categories

  • identification sessions
  • ID document types
  • German eID
  • qualified electronic signatures
  • agent waiting queues
  • tenant office hours
  • captured ID images
  • video chat

Where teams use this data

  • Bank KYC case tracking

    A BaFin onboarding desk can poll token, status, processType, firstName, lastName and nested positionInQueue / estimatedWaitingTime to know whether a VideoIdent case is still queued, in the agent room, or ready to redirect via sucessUrl.

  • Document-family allow-lists

    Compliance engines can consume idCountry, idType and idSubtype (PASSPORT, IDCARD, DRIVERS_LICENSE, RESIDENCE_PERMIT) from the classification and upload-info records to enforce which issuing countries and document families a product may accept.

  • German eID chip hand-off

    An nPA / eID stack can take tcTokenUrl, mobileToken and sessionToken from the eID start record and drive the NFC AusweisApp flow, then gate OTP with modelEnableOTP.ident / signing.

  • QES contract-hash reconciliation

    A lending or telco eSign desk can match PDF hash and displayHash against documentDefinition.identifier, then bind the InstantSign Identification_Signature and signing clientSecret to the same ident token.

Frequently asked questions

Which fields identify an IDnow Online Ident session?

The customer record keys the case by token and internalToken, then carries status, processType, firstName, lastName, email, mobile and a nested request with clientSecret, sessionToken and positionInQueue.

How are ID document types represented?

Classification and upload-info records use idCountry / country, idType and idSubtype. The document-type enum is PASSPORT, IDCARD, DRIVERS_LICENSE and RESIDENCE_PERMIT.

What does the German eID start response contain?

It returns mobileToken, sessionToken and tcTokenUrl for the NFC / AusweisApp hand-off, plus modelEnableOTP flags that split ident versus signing. After the chip read, resultToken is posted with sessionToken and internalToken.

How are eSign PDF contracts described?

Each document has name, status, version, hash, displayHash and a documentDefinition with identifier, name and optional. InstantSign adds Identification_Signature, clientSecret and sessionToken.

Apps similar to IDnow Online Ident

  • POSTIDENT — Deutsche Post POSTIDENT identifies a person in a German post office, by video chat, via eID, with AutoID, or at delivery, including for bank-account opening or SIM activation.
  • WebID — WebID Solutions provides KYC for banks and insurers, with VideoID live-call identification, automated AutoID, German eID and NFC ePassID, reusable TrueID, and SignID qualified signatures.
  • Veriff — Veriff confirms a person with document checks, face matching and liveness detection, plus AML screening and business verification.
  • Jumio — Jumio automates identity verification with a government ID check, a selfie with liveness detection, and a risk-based decision for KYC and AML onboarding.
  • Nect Ident — Nect Ident is a German identity-verification product with Auto Video Ident (ID scan and selfie), NFC eID, ePass chip readout, and reusable ReIdent via the Nect Wallet.
  • AUTHADA — AUTHADA ident lets a user complete online identification with a smartphone and the German eID chip; the vendor also offers digital signing and on-site KYC.
  • Onfido — Onfido is a London identity-verification company that checks a person from a photo of a government ID document plus a selfie.
  • Sumsub Video Identification — Sumsub Video Identification is a remote KYC interview where a compliance agent confirms the user on a live video call against their ID documents.

Topics

  • IDnow Online Ident API
  • IDnow identification session
  • idType idCountry KYC
  • German eID tcTokenUrl
  • IDnow QES document hash
  • VideoIdent waiting queue

Need this app's data API integrated?

We deliver scoped integrations for any named app — from USD 500 with source-code handoff, or hosted access billed per call. Tell us the data you need.

  • NDA + SOW on every engagement
  • Delivery in 3–7 days
  • Payment only after acceptance
  • Work scoped to authorized use

Get a quote