Telkomsel Identity Verification API

NIK/MSISDN pairing, KTP matching, and general ID verification against SIM-registration data.

OpenAPI Specification

telkomsel-identity-verification-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Telkomsel DigiHub APIs Consent Management Identity Verification API
  description: Consolidated OpenAPI for the API products Telkomsel exposes to developers and enterprises through DigiHub (https://digihub.telkomsel.com), Telkomsel's API marketplace. Paths, methods, parameters, schemas, and examples are taken verbatim from DigiHub's own published per-endpoint OpenAPI documents (served publicly at https://digihub.telkomsel.com/apis/V2/endpoint/{id}); $refs were inlined and the per-endpoint documents merged into one file. Most APIs authenticate with an api_key header plus an x-signature header of SHA256(API Key + Secret Key + epoch timestamp); the CAMARA-style SIM Swap API uses OIDC CIBA (/bc-authorize + /token) with a bearer token. Calling any of these endpoints requires a DigiHub account and a subscribed plan (sandbox, quota, tier, or PAYU); enterprise plans require an NDA or commercial contract.
  version: '2026-07-11'
  contact:
    url: https://digihub.telkomsel.com/showcase/contactus
servers:
- url: https://api.digitalcore.telkomsel.com
  description: Telkomsel Digital Core API gateway (primary DigiHub production host; some APIs are served from https://digihub.telkomsel.com instead - see path-level servers)
security:
- ApiKeyAuth: []
  SignatureAuth: []
tags:
- name: Identity Verification
  description: NIK/MSISDN pairing, KTP matching, and general ID verification against SIM-registration data.
paths:
  /digihub/subscheck/nikmatchingv4:
    post:
      summary: NIK Matching v4
      operationId: NIK-Matching-v4
      description: This service is use to check pair of KTP with msisdn. This API will enable Government or Enterprise to know if NIK and MSISDN are paired according to Telkomsel Registration Process. Telkomsel will just respond with Score.
      parameters:
      - in: header
        name: api_key
        example: e688u2hgpkzjd244wecywwv8
        description: API Key / Package Key from Digihub
        required: true
        schema:
          type: string
      - in: header
        name: x-signature
        example: ff080f3200a5945deeb59ad65e2b33788f5df49066a82afcf8b6d5bf43ff76ea
        description: SHA256 (API Key + Secret Key + timeStamp). [More info](https://digihub.telkomsel.com/documentation/consumer-guide/api-authentication)
        required: true
        schema:
          type: string
      - in: header
        name: Content-Type
        required: true
        schema:
          type: string
          enum:
          - application/json
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
              - transaction
              - parameter
              properties:
                transaction:
                  type: object
                  required:
                  - transaction_id
                  - consent_id
                  - msisdn
                  properties:
                    transaction_id:
                      description: Transaction ID
                      type: string
                      example: '1643624695_00000187'
                    consent_id:
                      description: Customer consent id
                      type: string
                      example: consent_01
                    msisdn:
                      description: MSISDN starts with “62” for Indonesia calling code.
                      type: string
                      example: '628111334831'
                parameter:
                  type: object
                  required:
                  - nik
                  - channel
                  properties:
                    nik:
                      description: Personal Identity Number
                      type: string
                      example: 3275084501940012
                    channel:
                      description: Channel name, for external TSEL please use “of” as the value
                      type: string
                      example: of
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: object
                required:
                - transaction
                - ktpmatch_information
                properties:
                  transaction:
                    properties:
                      transaction_id:
                        description: Transaction ID
                        type: string
                        example: '1643624695_00000187'
                      status_code:
                        description: Status code
                        type: string
                        example: '00000'
                      status_desc:
                        description: Status description
                        type: string
                        example: Success
                      score:
                        description: Score of KTP Match returned based on score mapping Scoring Rules.
                        type: string
                        example: '2'
        '400':
          description: Empty Mandatory Parameter / Invalid MSISDN / Invalid Sender ID
          content:
            application/json:
              schema:
                type: object
                required:
                - transaction
                properties:
                  transaction:
                    properties:
                      transaction_id:
                        description: Transaction ID
                        type: string
                        example: '1643624695_00000187'
                      status_code:
                        description: Status code
                        type: string
                        example: '00000'
                      status_desc:
                        description: Status description
                        type: string
                        example: Success
                      score:
                        description: Score of KTP Match returned based on score mapping Scoring Rules.
                        type: string
                        example: '2'
              examples:
                Empty Mandatory Parameter:
                  value:
                    transaction:
                      transaction_id: C002190726165745657448250
                      status_code: '20001'
                      status_desc: Empty mandatory parameter
                Invalid MSISDN:
                  value:
                    transaction:
                      transaction_id: C002190726165745657448250
                      status_code: '20002'
                      status_desc: INVALID MSISDN
                Subscriber MSISDN Not Found:
                  value:
                    transaction:
                      transaction_id: C002190726165745657448250
                      status_code: '20003'
                      status_desc: Subscriber MSISDN Not Found
                Error msisdn is postpaid:
                  value:
                    transaction:
                      transaction_id: C002190726165745657448250
                      status_code: '20004'
                      status_desc: Error msisdn is postpaid
                Msisdn is Not Active:
                  value:
                    transaction:
                      transaction_id: C002190726165745657448250
                      status_code: '20005'
                      status_desc: Error msisdn is postpaid
                Code Not Found:
                  value:
                    transaction:
                      transaction_id: C002190726165745657448250
                      status_code: '20009'
                      status_desc: Code Not Found
                Partner Not Allow:
                  value:
                    transaction:
                      transaction_id: C002190726165745657448250
                      status_code: '20013'
                      status_desc: Partner Not Allow
                Customer Not Consent:
                  value:
                    transaction:
                      transaction_id: C002190726165745657448250
                      status_code: '20014'
                      status_desc: Customer Not Consent
                Consent expired:
                  value:
                    transaction:
                      transaction_id: C002190726165745657448250
                      status_code: '20015'
                      status_desc: Consent expired
        '502':
          description: Backend Internal Error
          content:
            application/json:
              schema:
                type: object
                required:
                - transaction
                properties:
                  transaction:
                    properties:
                      transaction_id:
                        description: Transaction ID
                        type: string
                        example: '1643624695_00000187'
                      status_code:
                        description: Status code
                        type: string
                        example: '00000'
                      status_desc:
                        description: Status description
                        type: string
                        example: Success
                      score:
                        description: Score of KTP Match returned based on score mapping Scoring Rules.
                        type: string
                        example: '2'
              example:
                transaction:
                  transaction_id: C002190726165745657448250
                  status_code: 30xxx
                  status_desc: 'Service provider error: {consumer}-{provider}-{service provider error description}'
        '503':
          description: Service provider unreachable
          content:
            application/json:
              schema:
                type: object
                required:
                - transaction
                properties:
                  transaction:
                    properties:
                      transaction_id:
                        description: Transaction ID
                        type: string
                        example: '1643624695_00000187'
                      status_code:
                        description: Status code
                        type: string
                        example: '00000'
                      status_desc:
                        description: Status description
                        type: string
                        example: Success
                      score:
                        description: Score of KTP Match returned based on score mapping Scoring Rules.
                        type: string
                        example: '2'
              example:
                transaction:
                  transaction_id: C002190726165745657448250
                  status_code: '10001'
                  status_desc: Service provider unreachable
        '504':
          description: Service provider response timeout
          content:
            application/json:
              schema:
                type: object
                required:
                - transaction
                properties:
                  transaction:
                    properties:
                      transaction_id:
                        description: Transaction ID
                        type: string
                        example: '1643624695_00000187'
                      status_code:
                        description: Status code
                        type: string
                        example: '00000'
                      status_desc:
                        description: Status description
                        type: string
                        example: Success
                      score:
                        description: Score of KTP Match returned based on score mapping Scoring Rules.
                        type: string
                        example: '2'
              example:
                transaction:
                  transaction_id: C002190726165745657448250
                  status_code: '10004'
                  status_desc: Service provider response timeout
      tags:
      - Identity Verification
      externalDocs:
        description: 'DigiHub endpoint reference: NIK Matching v4'
        url: https://digihub.telkomsel.com/apis/V2/endpoint/142
  /digihub/ktp/match/v2:
    post:
      summary: KTP Match
      operationId: ktpMatch
      description: This service is use to check pair of KTP with msisdn. This API will enable Government or Enterprise to know if NIK and MSISDN are paired according to Telkomsel Registration Process. Telkomsel will just respond with Score.
      parameters:
      - in: header
        name: api_key
        example: e688u2hgpkzjd244wecywwv8
        description: API Key / Package Key from Digihub
        required: true
        schema:
          type: string
      - in: header
        name: x-signature
        example: ff080f3200a5945deeb59ad65e2b33788f5df49066a82afcf8b6d5bf43ff76ea
        description: SHA256 (API Key + Secret Key + timeStamp). [More info](https://digihub.telkomsel.com/documentation/consumer-guide/api-authentication)
        required: true
        schema:
          type: string
      - in: header
        name: Content-Type
        required: true
        schema:
          type: string
          enum:
          - application/json
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
              - transaction
              - consent
              properties:
                transaction:
                  type: object
                  required:
                  - transaction_id
                  - nik
                  properties:
                    transaction_id:
                      description: Transaction ID
                      type: string
                      example: C002190726165745657448250
                    nik:
                      description: Single identity number
                      type: string
                      example: 331218050xxxxx
                consent:
                  type: object
                  required:
                  - msisdn
                  - consent_id
                  - code
                  properties:
                    msisdn:
                      description: MSISDN starts with “62” for Indonesia calling code.
                      type: string
                      example: 62811xxx
                    consent_id:
                      description: Consent id which is registered
                      type: string
                      example: Ek2arznC2uxeknsXbvdCChqbjAU1SBJ3qUoHEH19y4O74GxZzG0mUKKI/tuHPNbN2KNd+JZ3fYoodC/24A==
                    code:
                      description: Code api identification given by Telkomsel.
                      type: string
                      example: n453ajpqnv5tyrb85eyg22x7
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: object
                required:
                - transaction
                - ktpmatch_information
                properties:
                  transaction:
                    type: object
                    required:
                    - transaction_id
                    - status_code
                    - status_desc
                    properties:
                      transaction_id:
                        description: Transaction ID
                        type: string
                        example: C002190726165745657448250
                      status_code:
                        description: Status code
                        type: string
                        example: '00000'
                      status_desc:
                        description: Status descriptiona
                        type: string
                        example: Success
                  sms_information:
                    type: object
                    required:
                    - score
                    properties:
                      score:
                        description: Score of KTP Match
                        type: string
                        example: '1'
        '400':
          description: Empty Mandatory Parameter / Invalid MSISDN / Invalid Sender ID
          content:
            application/json:
              schema:
                type: object
                required:
                - transaction
                properties:
                  transaction:
                    type: object
                    required:
                    - transaction_id
                    - status_code
                    - status_desc
                    properties:
                      transaction_id:
                        description: Transaction ID
                        type: string
                        example: C002190726165745657448250
                      status_code:
                        description: Status code
                        type: string
                        example: '00000'
                      status_desc:
                        description: Status descriptiona
                        type: string
                        example: Success
              examples:
                Empty Mandatory Parameter:
                  value:
                    transaction:
                      transaction_id: C002190726165745657448250
                      status_code: '20001'
                      status_desc: Empty mandatory parameter
                Invalid MSISDN:
                  value:
                    transaction:
                      transaction_id: C002190726165745657448250
                      status_code: '20002'
                      status_desc: INVALID MSISDN
                Subscriber MSISDN Not Found:
                  value:
                    transaction:
                      transaction_id: C002190726165745657448250
                      status_code: '20003'
                      status_desc: Subscriber MSISDN Not Found
                Error msisdn is postpaid:
                  value:
                    transaction:
                      transaction_id: C002190726165745657448250
                      status_code: '20004'
                      status_desc: Error msisdn is postpaid
                Msisdn is Not Active:
                  value:
                    transaction:
                      transaction_id: C002190726165745657448250
                      status_code: '20005'
                      status_desc: Error msisdn is postpaid
                Code Not Found:
                  value:
                    transaction:
                      transaction_id: C002190726165745657448250
                      status_code: '20009'
                      status_desc: Code Not Found
                Partner Not Allow:
                  value:
                    transaction:
                      transaction_id: C002190726165745657448250
                      status_code: '20013'
                      status_desc: Partner Not Allow
                Customer Not Consent:
                  value:
                    transaction:
                      transaction_id: C002190726165745657448250
                      status_code: '20014'
                      status_desc: Customer Not Consent
                Consent expired:
                  value:
                    transaction:
                      transaction_id: C002190726165745657448250
                      status_code: '20015'
                      status_desc: Consent expired
        '502':
          description: Backend Internal Error
          content:
            application/json:
              schema:
                type: object
                required:
                - transaction
                properties:
                  transaction:
                    type: object
                    required:
                    - transaction_id
                    - status_code
                    - status_desc
                    properties:
                      transaction_id:
                        description: Transaction ID
                        type: string
                        example: C002190726165745657448250
                      status_code:
                        description: Status code
                        type: string
                        example: '00000'
                      status_desc:
                        description: Status descriptiona
                        type: string
                        example: Success
              example:
                transaction:
                  transaction_id: C002190726165745657448250
                  status_code: 30xxx
                  status_desc: 'Service provider error: {consumer}-{provider}-{service provider error description}'
        '503':
          description: Service provider unreachable
          content:
            application/json:
              schema:
                type: object
                required:
                - transaction
                properties:
                  transaction:
                    type: object
                    required:
                    - transaction_id
                    - status_code
                    - status_desc
                    properties:
                      transaction_id:
                        description: Transaction ID
                        type: string
                        example: C002190726165745657448250
                      status_code:
                        description: Status code
                        type: string
                        example: '00000'
                      status_desc:
                        description: Status descriptiona
                        type: string
                        example: Success
              example:
                transaction:
                  transaction_id: C002190726165745657448250
                  status_code: '10001'
                  status_desc: Service provider unreachable
        '504':
          description: Service provider response timeout
          content:
            application/json:
              schema:
                type: object
                required:
                - transaction
                properties:
                  transaction:
                    type: object
                    required:
                    - transaction_id
                    - status_code
                    - status_desc
                    properties:
                      transaction_id:
                        description: Transaction ID
                        type: string
                        example: C002190726165745657448250
                      status_code:
                        description: Status code
                        type: string
                        example: '00000'
                      status_desc:
                        description: Status descriptiona
                        type: string
                        example: Success
              example:
                transaction:
                  transaction_id: C002190726165745657448250
                  status_code: '10004'
                  status_desc: Service provider response timeout
      tags:
      - Identity Verification
      externalDocs:
        description: 'DigiHub endpoint reference: KTP Match'
        url: https://digihub.telkomsel.com/apis/V2/endpoint/114
  /digihub/v2/idverification:
    post:
      summary: ID Verification V2
      operationId: idVerV2
      description: API to GET score location customer.
      parameters:
      - in: header
        name: api_key
        example: e688u2hgpkzjd244wecywwv8
        description: API Key / Package Key from Digihub
        required: true
        schema:
          type: string
      - in: header
        name: x-signature
        example: ff080f3200a5945deeb59ad65e2b33788f5df49066a82afcf8b6d5bf43ff76ea
        description: SHA256 (API Key + Secret Key + timeStamp). [More info](https://digihub.telkomsel.com/documentation/consumer-guide/api-authentication)
        required: true
        schema:
          type: string
      - in: header
        name: Content-Type
        required: true
        schema:
          type: string
          enum:
          - application/json
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
              - transaction
              - consent
              properties:
                transaction:
                  type: object
                  required:
                  - home_work
                  properties:
                    transaction_id:
                      description: Transaction ID
                      type: string
                      example: 040520181127010000
                    home_work:
                      description: Home = 1, Work= 0
                      type: string
                      example: '1'
                      enum:
                      - '0'
                      - '1'
                    long:
                      description: Longitude
                      type: string
                      example: '-6.247895'
                    lat:
                      description: Latitude
                      type: string
                      example: '106.821312'
                    address:
                      description: 'Format address : Street, Village/Urban Commune, District , City/Regency, Province'
                      type: string
                      example: Jl. Kemang Selatan No.30 RT9 RW1, Bangka, Mampang Prapatan,   Kota Jakarta Selatan, Daerah Khusus Ibukota Jakarta
                    zip_code:
                      description: Postal code
                      type: string
                      example: '12790'
                sms:
                  type: object
                  required:
                  - msisdn
                  - consent_id
                  - code
                  properties:
                    msisdn:
                      description: MSISDN starts with “62” for Indonesia calling code.
                      type: string
                      example: 62811xx
                    consent_id:
                      description: Consent id which is registered.
                      type: string
                      example: Ek2arznC2uxeknsXbvdCChqbjAU1SBJ3qUoHEH19y4O74GxZzG0mUKKI/tuHPNbN2KNd+JZ3fYoodC/24A==
                    code:
                      description: Code api identification v2 given by Telkomsel.
                      type: string
                      example: y473hkpghfmju7zxmtdjgfkr
            examples:
              By longitude and latitude:
                value:
                  transaction:
                    transaction_id: 040520181127010000
                    home_work: '1'
                    long: -6.247895
                    lat: 106.821312
                    address: null
                    zip_code: null
                  consent:
                    msisdn: 62811xx
                    consent_id: Ek2arznC2uxeknsXbvdCChqbjAU1SBJ3qUoHEH19y4O74GxZzG0mUKKI/tuHPNbN2KNd+JZ3fYoodC/24A==
                    code: y473hkpghfmju7zxmtdjgfkr
              By address:
                value:
                  transaction:
                    transaction_id: 040520181127010000
                    home_work: '1'
                    long: null
                    lat: null
                    address: Jl. Kemang Selatan No.30 RT9 RW1, Bangka, Mampang Prapatan,Kota Jakarta Selatan, Daerah Khusus Ibukota Jakarta
                    zip_code: null
                  consent:
                    msisdn: 62811xx
                    consent_id: Ek2arznC2uxeknsXbvdCChqbjAU1SBJ3qUoHEH19y4O74GxZzG0mUKKI/tuHPNbN2KNd+JZ3fYoodC/24A==
                    code: y473hkpghfmju7zxmtdjgfkr
              By zipcode:
                value:
                  transaction:
                    transaction_id: 040520181127010000
                    home_work: '1'
                    long: null
                    lat: null
                    address: null
                    zip_code: '12790'
                  consent:
                    msisdn: 62811xx
                    consent_id: Ek2arznC2uxeknsXbvdCChqbjAU1SBJ3qUoHEH19y4O74GxZzG0mUKKI/tuHPNbN2KNd+JZ3fYoodC/24A==
                    code: y473hkpghfmju7zxmtdjgfkr
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: object
                required:
                - transaction
                - response
                properties:
                  transaction:
                    type: object
                    required:
                    - transaction_id
                    - status_code
                    - status_desc
                    properties:
                      transaction_id:
                        description: Transaction ID
                        type: string
                        example: 040520181127010000
                      status_code:
                        description: Status code
                        type: string
                        example: '00000'
                      status_desc:
                        description: Status descriptiona
                        type: string
                        example: Success
                  sms_information:
                    type: object
                    required:
                    - msisdn
                    - score
                    properties:
                      msisdn:
                        description: MSISDN
                        type: string
                        example: 62811xx
                      score:
                        description: Score from 1-7
                        type: string
                        example: 2
        '400':
          description: Empty mandatory parameter / Invalid MSISDN / Invalid Format Request / Data Not Found
          content:
            application/json:
              schema:
                type: object
                required:
                - transaction
                properties:
                  transaction:
                    type: object
                    required:
                    - transaction_id
                    - status_code
                    - status_desc
                    properties:
                      transaction_id:
                        description: Transaction ID
                        type: string
                        example: 040520181127010000
                      status_code:
                        description: Status code
                        type: string
                        example: '00000'
                      status_desc:
                        description: Status descriptiona
                        type: string
                        example: Success
              examples:
                Empty mandatory parameter:
                  value:
                    transaction:
                      transaction_id: 040520181127010000
                      status_code: '20001'
                      status_desc: Empty mandatory parameter
                Invalid MSISDN:
                  value:
                    transaction:
                      transaction_id: 040520181127010000
                      status_code: '20002'
                      status_desc: Invalid MSISDN
                Invalid Format Request:
                  value:
                    transaction:
                      transaction_id: 040520181127010000
                      status_code: IDVER-001
                      status_desc: Invalid Format Request
                Data Not Found:
                  value:
                    transaction:
                      transaction_id: 040520181127010000
                      status_code: IDVER-002
                      status_desc: Data Not Found
        '500':
          description: ESB internal error
          content:
            application/json:
              schema:
                type: object
                required:
                - transaction
                properties:
                  transaction:
                    type: object
                    required:
                    - transaction_id
                    - status_code
                    - status_desc
                   

# --- truncated at 32 KB (37 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/telkomsel/refs/heads/main/openapi/telkomsel-identity-verification-api-openapi.yml