Network Biometrics API

The Phronesis-derived flagship, a single POST that assembles a configurable set of mobile network signals about a number and device — SIM swap and device change look-back windows, GSMA device blacklist status, reachability, roaming, account type and tenure, and personal-data matching — plus the deprecated v2 Number Assurance operations for assured registration and assured age.

OpenAPI Specification

tmt-id-network-biometrics.yml Raw ↑
openapi: 3.0.3
info:
  title: Network Biometrics™ by TMT ID
  version: 1.20.0
  description: "TMT ID is the creator of Network Biometrics™. We make customer signups and transactions smoother while reducing exposure to fraud and related risks. With most online transactions now being made on mobile devices, an individual’s mobile number is often the best starting point for establishing their digital identity and managing their ongoing relationship with your organisation.  \n\nBecause of the close relationship between number, handset, and SIM, it is possible to identify and authenticate users without interrupting the customer journey quickly and transparently. However, there are many ways of compromising mobile numbers for fraud, including identity theft, account takeover and man-in-the-middle attacks.  \n\nNetwork Biometrics™ provides additional capabilities for your existing security and fraud detection systems. Through our APIs you can instantly validate the personal data that is being given to you, check for SIM swap or device change events and obtain other fraud indicators.\n\n---"
  contact:
    name: support@phronesis.net
    email: support@phronesis.net
    url: https://phronesis.net/contact/
servers:
- url: https://ea.api.phronesis.tech
  description: early access
- url: https://api.phronesis.tech
  description: production
paths:
  /network-biometrics:
    parameters: []
    post:
      summary: Network Biometrics™
      operationId: post-network-biometrics
      description: Network Biometrics™️ is for identifying, verifying and assuring customers. We make customer signups and transactions smoother while reducing exposure to fraud and related risks across the entire customer lifecycle.
      parameters:
      - in: header
        name: Correlation-Id
        schema:
          type: string
          maxLength: 64
          readOnly: true
        description: An optional user-generated string that will be returned in the response to allow the matching of request
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/NetworkBiometricProductRequest'
            examples:
              Discover request:
                $ref: '#/components/examples/DiscoverRequest'
              Number Recycle request:
                $ref: '#/components/examples/NumberRecycleRequest'
              UK Assure request:
                $ref: '#/components/examples/AssureRequest'
              Assure Device Info request:
                $ref: '#/components/examples/AssureDeviceInfoRequest'
              Protect request:
                $ref: '#/components/examples/ProtectRequest'
              UK - Protect Device Info - Request:
                $ref: '#/components/examples/ProtectDeviceInfoRequest'
              UK - Age Eligibility - Request:
                $ref: '#/components/examples/AgeEligibilityRequest'
              UK - All  Network Biometrics Services - Request:
                $ref: '#/components/examples/AllServicesRequest'
              France - Assure - Request:
                $ref: '#/components/examples/AssureRequestFrance'
        description: ''
      responses:
        '200':
          description: "**200 - HTTP OK**  \nCheck `transaction.status.value` for further detail on the success of the request:\n\n| Code | Message                                          |\n|:----:|:------------------------------------------------:|\n| 0    | transaction successful                           |\n| 2    | transaction successful but partial data returned |\n\n---"
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NetworkBiometricProductResponse'
              examples:
                Discover - transaction successful - 0:
                  $ref: '#/components/examples/DiscoverResponse'
                UK - All Network Biometrics services - transaction successful - 0:
                  $ref: '#/components/examples/AllProductSuccessResponse'
                France - Assure - transaction successful - 0:
                  $ref: '#/components/examples/AssureSuccessResponseFrance'
                UK - Assure - transaction successful but partial data returned - 2:
                  $ref: '#/components/examples/AssurePartialResponseUK'
          headers:
            Correlation-Id:
              $ref: '#/components/headers/Correlation-Id'
        '202':
          description: "**202 - HTTP Accepted**  \nCheck `transaction.status.value` for possible reasons such as:\n\n| Code | Message                       |\n| ---- | -----------------------------:|\n| 300  | call Forward check failed     |\n| 301  | SIM swap check failed         |\n| 302  | country check failed          |\n| 303  | user information check failed |\n| 304  | vicinity check failed         |\n\n---"
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TransactionResponse'
              examples:
                300 - call Forward check failed:
                  value:
                    transaction:
                      status:
                        value: 300
                        message: call Forward check failed
                      reference: https://developer.api.v3.phronesis.tech/
                      id: 600005e8-bb33-4a42-bb23-65aa70c3ec6e
                301 - datasource temporarily not available:
                  value:
                    transaction:
                      status:
                        value: 301
                        message: SIM swap check failed
                      reference: https://developer.api.v3.phronesis.tech/
                      id: 600005e8-bb33-4a42-bb23-65aa70c3ec6e
                302 - country check failed:
                  value:
                    transaction:
                      status:
                        value: 302
                        message: country check failed
                      reference: https://developer.api.v3.phronesis.tech/
                      id: 600005e8-bb33-4a42-bb23-65aa70c3ec6e
                303 - user information check failed:
                  value:
                    transaction:
                      status:
                        value: 303
                        message: user information check failed
                      reference: https://developer.api.v3.phronesis.tech/
                      id: 600005e8-bb33-4a42-bb23-65aa70c3ec6e
                304 - vicinity check failed:
                  value:
                    transaction:
                      status:
                        value: 304
                        message: vicinity check failed
                      reference: https://developer.api.v3.phronesis.tech/
                      id: 600005e8-bb33-4a42-bb23-65aa70c3ec6e
          headers:
            Correlation-Id:
              $ref: '#/components/headers/Correlation-Id'
        '400':
          description: "**400 - HTTP Bad Request**  \nCheck `transaction.status.value` for possible reasons such as:\n\n| Code | Message                     |\n|:----:|:---------------------------:|\n| 103  | bad request                 |\n| 104  | invalid Content-Type header |\n| 207  | invalid parameters          |\n| 208  | invalid postcode parameter  |\n| 209  | invalid name parameter      |\n| 210  | invalid address parameter   |\n| 211  | invalid birthdate parameter |\n| 213  | invalid use case identifier |\n| 214  | invalid number parameter    |\n| 215  | invalid IMEI parameter      |\n\n---"
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TransactionResponse'
              examples:
                103 - bad request:
                  value:
                    transaction:
                      status:
                        value: 103
                        message: bad request
                      reference: https://developer.api.v3.phronesis.tech/
                      id: 600005e8-bb33-4a42-bb23-65aa70c3ec6e
                104 - invalid Content-Type header:
                  value:
                    transaction:
                      status:
                        value: 104
                        message: invalid Content-Type header
                      reference: https://developer.api.v3.phronesis.tech/
                      id: 600005e8-bb33-4a42-bb23-65aa70c3ec6e
                207 - invalid parameters:
                  value:
                    transaction:
                      status:
                        value: 207
                        message: invalid parameters
                      reference: https://developer.api.v3.phronesis.tech/
                      id: 600005e8-bb33-4a42-bb23-65aa70c3ec6e
                208 - invalid postcode parameter:
                  value:
                    transaction:
                      status:
                        value: 208
                        message: invalid postcode parameter
                      reference: https://developer.api.v3.phronesis.tech/
                      id: 600005e8-bb33-4a42-bb23-65aa70c3ec6e
                209 - invalid name parameter:
                  value:
                    transaction:
                      status:
                        value: 209
                        message: invalid name parameter
                      reference: https://developer.api.v3.phronesis.tech/
                      id: 600005e8-bb33-4a42-bb23-65aa70c3ec6e
                210 - invalid address parameter:
                  value:
                    transaction:
                      status:
                        value: 210
                        message: invalid address parameter
                      reference: https://developer.api.v3.phronesis.tech/
                      id: 600005e8-bb33-4a42-bb23-65aa70c3ec6e
                211 - invalid birthdate parameter:
                  value:
                    transaction:
                      status:
                        value: 211
                        message: invalid birthdate parameter
                      reference: https://developer.api.v3.phronesis.tech/
                      id: 600005e8-bb33-4a42-bb23-65aa70c3ec6e
                213 - invalid use case identifier:
                  value:
                    transaction:
                      status:
                        value: 213
                        message: invalid use case identifier
                      reference: https://developer.api.v3.phronesis.tech/
                      id: 600005e8-bb33-4a42-bb23-65aa70c3ec6e
                214 - invalid number parameter:
                  value:
                    transaction:
                      status:
                        value: 214
                        message: invalid number parameter
                      reference: https://developer.api.v3.phronesis.tech/
                      id: 600005e8-bb33-4a42-bb23-65aa70c3ec6e
                215 - invalid IMEI parameter:
                  value:
                    transaction:
                      status:
                        value: 215
                        message: invalid IMEI parameter
                      reference: https://developer.api.v3.phronesis.tech/
                      id: 600005e8-bb33-4a42-bb23-65aa70c3ec6e
          headers:
            Correlation-Id:
              $ref: '#/components/headers/Correlation-Id'
        '401':
          description: "**401 - HTTP Unauthorized**  \nCheck `transaction.status.value` for possible reasons such as:\n\n| Code | Message                                         |\n| ---- | ----------------------------------------------- |\n| 100  | user account not found                          |\n| 101  | authentication failed                           |\n| 102  | user account suspended                          |\n| 106  | admin privileges required for this API          |\n| 200  | IP address not whitelisted                      |\n| 204  | product not provisioned for your account        | \n| 206  | product availability suspended for your account |\n\n---"
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TransactionResponse'
              examples:
                100 - user account not found:
                  value:
                    transaction:
                      status:
                        value: 100
                        message: user account not found
                      reference: https://developer.api.v3.phronesis.tech/
                      id: 600005e8-bb33-4a42-bb23-65aa70c3ec6e
                101 - authentication failed:
                  value:
                    transaction:
                      status:
                        value: 101
                        message: authentication failed
                      reference: https://developer.api.v3.phronesis.tech/
                      id: 600005e8-bb33-4a42-bb23-65aa70c3ec6e
                102 - user account suspended:
                  value:
                    transaction:
                      status:
                        value: 102
                        message: user account suspended
                      reference: https://developer.api.v3.phronesis.tech/
                      id: 600005e8-bb33-4a42-bb23-65aa70c3ec6e
                106 - admin privileges required for this API:
                  value:
                    transaction:
                      status:
                        value: 106
                        message: admin privileges required for this API
                      reference: https://developer.api.v3.phronesis.tech/
                      id: 600005e8-bb33-4a42-bb23-65aa70c3ec6e
                200 - IP address not whitelisted:
                  value:
                    transaction:
                      status:
                        value: 200
                        message: IP address not whitelisted
                      reference: https://developer.api.v3.phronesis.tech/
                      id: 600005e8-bb33-4a42-bb23-65aa70c3ec6e
                204 - product not provisioned for your account:
                  value:
                    transaction:
                      status:
                        value: 204
                        message: product not provisioned for your account
                      reference: https://developer.api.v3.phronesis.tech/
                      id: 600005e8-bb33-4a42-bb23-65aa70c3ec6e
                206 - product availability suspended for your account:
                  value:
                    transaction:
                      status:
                        value: 206
                        message: product availability suspended for your account
                      reference: https://developer.api.v3.phronesis.tech/
                      id: 600005e8-bb33-4a42-bb23-65aa70c3ec6e
          headers:
            Correlation-Id:
              $ref: '#/components/headers/Correlation-Id'
        '403':
          description: "**403 - HTTP Forbidden**  \nCheck `transaction.status.value` for possible reasons such as:\n\n| Code | Message                              |\n| ---- | ------------------------------------ |\n| 212  | MNO access not authorised            |\n| 802  | datasource temporarily not available |\n\n---"
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TransactionResponse'
              examples:
                212 - MNO access not authorised:
                  value:
                    transaction:
                      status:
                        value: 212
                        message: MNO access not authorised
                      reference: https://developer.api.v3.phronesis.tech/
                      id: 600005e8-bb33-4a42-bb23-65aa70c3ec6e
                802 - datasource temporarily not available:
                  value:
                    transaction:
                      status:
                        value: 802
                        message: datasource temporarily not available
                      reference: https://developer.api.v3.phronesis.tech/
                      id: 600005e8-bb33-4a42-bb23-65aa70c3ec6e
          headers:
            Correlation-Id:
              $ref: '#/components/headers/Correlation-Id'
        '404':
          description: "**404 - HTTP Not Found**  \nCheck `transaction.status.value` for possible reasons such as:\n\n| Code | Message                                       |\n| ---- | --------------------------------------------- |\n| 306  | unknown subscriber, data may be incomplete    |\n| 307  | no coverage for country                       |\n| 404  | subscriber opted out of service               |\n| 405  | invalid number                                |\n| 406  | subscriber is unregistered prepay             |\n| 407  | unknown routing information                   |\n| 408  | unknown number range                          |\n| 409  | device or brand not supported                 |\n| 804  | resource not found                            |\n| 807  | subscriber data unavailable                   |\n| 817  | datasource data not found                     |\n\n---"
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TransactionResponse'
              examples:
                306 - unknown subscriber, data may be incomplete:
                  value:
                    transaction:
                      status:
                        value: 306
                        message: unknown subscriber, data may be incomplete
                      reference: https://developer.api.v3.phronesis.tech/
                      id: 600005e8-bb33-4a42-bb23-65aa70c3ec6e
                307 - no coverage for country:
                  value:
                    transaction:
                      status:
                        value: 307
                        message: no coverage for country
                      reference: https://developer.api.v3.phronesis.tech/
                      id: 600005e8-bb33-4a42-bb23-65aa70c3ec6e
                404 - subscriber opted out of service:
                  value:
                    transaction:
                      status:
                        value: 404
                        message: subscriber opted out of service
                      reference: https://developer.api.v3.phronesis.tech/
                      id: 600005e8-bb33-4a42-bb23-65aa70c3ec6e
                405 - invalid number:
                  value:
                    transaction:
                      status:
                        value: 405
                        message: invalid number
                      reference: https://developer.api.v3.phronesis.tech/
                      id: 600005e8-bb33-4a42-bb23-65aa70c3ec6e
                406 - subscriber is unregistered prepay:
                  value:
                    transaction:
                      status:
                        value: 406
                        message: subscriber is unregistered prepay
                      reference: https://developer.api.v3.phronesis.tech/
                      id: 600005e8-bb33-4a42-bb23-65aa70c3ec6e
                407 - unknown routing information:
                  value:
                    transaction:
                      status:
                        value: 407
                        message: unknown routing information
                      reference: https://developer.api.v3.phronesis.tech/
                      id: 600005e8-bb33-4a42-bb23-65aa70c3ec6e
                408 - unknown number range:
                  value:
                    transaction:
                      status:
                        value: 408
                        message: unknown number range
                      reference: https://developer.api.v3.phronesis.tech/
                      id: 600005e8-bb33-4a42-bb23-65aa70c3ec6e
                804 - resource not found:
                  value:
                    transaction:
                      status:
                        value: 804
                        message: resource not found
                      reference: https://developer.api.v3.phronesis.tech/
                      id: 600005e8-bb33-4a42-bb23-65aa70c3ec6e
                807 - subscriber data unavailable:
                  value:
                    transaction:
                      status:
                        value: 807
                        message: subscriber data unavailable
                      reference: https://developer.api.v3.phronesis.tech/
                      id: 600005e8-bb33-4a42-bb23-65aa70c3ec6e
                817 - datasource data not found:
                  value:
                    transaction:
                      status:
                        value: 817
                        message: datasource data not found
                      reference: https://developer.api.v3.phronesis.tech/
                      id: 600005e8-bb33-4a42-bb23-65aa70c3ec6e
          headers:
            Correlation-Id:
              $ref: '#/components/headers/Correlation-Id'
        '405':
          description: "**405 - HTTP Method Not Allowed**  \nCheck `transaction.status.value` for possible reasons such as:\n\n| Code | Message              |\n| ---- | -------------------- |\n| 105  | method not allowed   |\n\n---"
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TransactionResponse'
              examples:
                105 - method not allowed:
                  value:
                    transaction:
                      status:
                        value: 105
                        message: method not allowed
                      reference: https://developer.api.v3.phronesis.tech/
                      id: 600005e8-bb33-4a42-bb23-65aa70c3ec6e
          headers:
            Correlation-Id:
              $ref: '#/components/headers/Correlation-Id'
        '408':
          description: "**408 - HTTP Request Timeout**  \nMay be returned without a body\n\n---\n"
        '500':
          description: "**500 - HTTP Internal Server Error**  \nMay be returned without a body\n\n---"
        '502':
          description: "**502 - HTTP Bad Gateway**  \nCheck `transaction.status.value` for possible reasons such as:\n\n| Code | Message                                 |\n| ---- | --------------------------------------- |\n| 803  | datasource query failed                 |\n| 805  | database subsystem error                |\n| 812  | datasource returned unexpected response |\n\n---"
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TransactionResponse'
              examples:
                803 - datasource query failed:
                  value:
                    transaction:
                      status:
                        value: 803
                        message: datasource query failed
                      reference: https://developer.api.v3.phronesis.tech/
                      id: 600005e8-bb33-4a42-bb23-65aa70c3ec6e
                805 - database subsystem error:
                  value:
                    transaction:
                      status:
                        value: 805
                        message: database subsystem error
                      reference: https://developer.api.v3.phronesis.tech/
                      id: 600005e8-bb33-4a42-bb23-65aa70c3ec6e
                812 - datasource returned unexpected response:
                  value:
                    transaction:
                      status:
                        value: 812
                        message: datasource returned unexpected response
                      reference: https://developer.api.v3.phronesis.tech/
                      id: 600005e8-bb33-4a42-bb23-65aa70c3ec6e
          headers:
            Correlation-Id:
              $ref: '#/components/headers/Correlation-Id'
        '503':
          description: "**503 - HTTP Service Unavailable**  \nCheck `transaction.status.value` for possible reasons such as:\n\n| Code | Message                                                     |\n| ---- | ----------------------------------------------------------- |\n| 201  | request was throttled. submission per second limit exceeded |\n| 202  | request was throttled. submission per day limit exceeded    |\n| 203  | request was throttled. submission per month limit exceeded  |\n| 800  | database subsystem unavailable                              |\n| 801  | datasource permanently unavailable                          |\n| 806  | datasource connection error                                 |\n| 808  | service not available for MNO or MVNO                       |\n| 809  | datasource capacity exceeded                                |\n| 810  | internal server error                                       |\n| 811  | datasource called too early                                 |\n| 813  | datasource quota exceeded                                   |\n| 814  | problem connecting to datasource                            |\n| 815  | datasource requires further data                            |\n| 816  | datasource query error                                      |\n\n---"
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TransactionResponse'
              examples:
                201 - request was throttled. submission per second limit exceeded:
                  value:
                    transaction:
                      status:
                        value: 201
                        message: request was throttled. submission per second limit exceeded
                      reference: https://developer.api.v3.phronesis.tech/
                      id: 600005e8-bb33-4a42-bb23-65aa70c3ec6e
                202 - request was throttled. submission per day limit exceeded:
                  value:
                    transaction:
                      status:
                        value: 202
                        message: request was throttled. submission per day limit exceeded
                      reference: https://developer.api.v3.phronesis.tech/
                      id: 600005e8-bb33-4a42-bb23-65aa70c3ec6e
                203 - request was throttled. submission per month limit exceeded:
                  value:
                    transaction:
                      status:
                        value: 203
                        message: request was throttled. submission per month limit exceeded
                      reference: https://developer.api.v3.phronesis.tech/
                      id: 600005e8-bb33-4a42-bb23-65aa70c3ec6e
                800 - database subsystem unavailable:
                  value:
                    transaction:
                      status:
                        value: 800
                        message: database subsystem unavailable
                      reference: https://developer.api.v3.phronesis.tech/
                      id: 600005e8-bb33-4a42-bb23-65aa70c3ec6e
                801 - datasource permanently unavailable:
                  value:
                    transaction:
                      status:
                        value: 801
                        message: datasource permanently unavailable
                      reference: https://developer.api.v3.phronesis.tech/
                      id: 600005e8-bb33-4a42-bb23-65aa70c3ec6e
                806 - datasource permanently unavailable:
                  value:
                    transaction:
                      status:
                        value: 806
                        message: datasource connection error
                      reference: https://developer.api.v3.phronesis.tech/
                      id: 600005e8-bb33-4a42-bb23-65aa70c3ec6e
                808 - service not available for MNO or MVNO:
                  value:
                    transaction:
                      status:
                        value: 808
                        message: service not available for MNO or MVNO
                      reference: https://developer.api.v3.phronesis.tech/
                      id: 600005e8-bb33-4a42-bb23-65aa70c3ec6e
                809 - datasource capacity exceeded:
                  value:
                    transaction:
                      status:
                        value: 809
                        message: datasource capacity exceeded
                      reference: https://developer.api.v3.phronesis.tech/
                      id: 600005e8-bb33-4a42-bb23-65aa70c3ec6e
                810 - internal server error:
                  value:
                    transaction:
                      status:
                        value: 810
                        message: internal server error
                      reference: https://developer.api.v3.phronesis.tech/
                      id: 600005e8-bb33-4a42-bb23-65aa70c3ec6e
                811 - datasource called too early:
                  value:
                    transaction:
                      status:
                        value: 811
                        message: datasource called too early
                      reference: https://developer.api.v3.phronesis.tech/
                      id: 600005e8-bb33-4a42-bb23-65aa70c3ec6e
                813 - datasource quota exceeded:
                  value:
                    transaction:
                      status:
                        value: 813
                        message: datasource quota exceeded
                      reference: https://developer.api.v3.phronesis.tech/
                      id: 600005e8-bb33-4a42-bb23-65aa70c3ec6e
                814 - problem connecting to datasource:
                  value:
                    transaction:
                      status:
                        value: 814
                        message: problem connecting to datasource
                      reference: https://developer.api.v3.phronesis.tech/
                      id: 600005e8-bb33-4a42-bb23-65aa70c3ec6e
                815 - datasource requires further data:
                  value:
                    transaction:
                      status:
                        value: 815
                        message: datasource requires further data
                      reference: https://developer.api.v3.phronesis.tech/
                      id: 600005e8-bb33-4a42-bb23-65aa70c3ec6e
                816 - datasource configuration error:
                  value:
                    transaction:
                      status:
                        value: 816
                        message: datasource configuration error
                      reference: https://developer.api.v3.phronesis.tech/
                      id: 600005e8-bb33-4a42-bb23-65aa70c3ec6e
          headers:
            Correlation-Id:
              $ref: '#/components/headers/Correlation-Id'
  /core/v2/NumberAssurance/AssuredRegistration:
    post:
      deprecated: true
      summary: Assured Registration
      operationId: post-assured-registration
      description: Validate that the mobile phone number provided by a customer at the point of account registration / creation is associated with the same person’s mobile network billing identity.
      tags:
      - v2 (deprecated)
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AssuredRegistrationRequest'
      responses:
        '200':
          description: "**200 - HTTP OK**  \nCheck `status` and `status_message` for further details on the success of the request:\n\n| Code | Message                                                         |\n|:----:|:---------------------------------------------------------------:|\n| 0    | transaction successful                                          |\n| 305  | subscriber absent, data may be incomplete                       |\n| 306  | unknown subscriber, data may be incomplete                      |\n| 308  | teleservice not provisioned for subscriber                      |\n| 309  | call or SMS facility barred for subscriber                      |\n| 310  | call or SMS facility not currently supported in serving network |\n\n---"
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NumberAssuranceResponse'
        '202':
          description: "**202 - HTTP

# --- truncated at 32 KB (230 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/tmt-id/refs/heads/main/openapi/tmt-id-network-biometrics.yml