> ## Documentation Index
> Fetch the complete documentation index at: https://docs.fraudintelligencelimited.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Full evidence record for a past score (13-month retention)



## OpenAPI

````yaml https://2npugbuiw5.execute-api.eu-central-1.amazonaws.com/v1/openapi.yaml get /v1/explain/{score_id}
openapi: 3.1.0
info:
  title: FIL Fraud Scoring API
  version: 1.0.2
  description: >
    Tiered fraud risk scoring for phone numbers and IP addresses. Scores are
    rankings relative to the scored population, never probabilities.
servers: []
security:
  - bearerAuth: []
paths:
  /v1/explain/{score_id}:
    get:
      summary: Full evidence record for a past score (13-month retention)
      operationId: explain
      parameters:
        - name: score_id
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: The audit record as of scoring time
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExplainRecord'
        '404':
          $ref: '#/components/responses/NotFound'
components:
  schemas:
    ExplainRecord:
      type: object
      description: The full audit record persisted at scoring time (OPS-3)
      properties:
        score_id:
          type: string
        scored_at:
          type: string
          format: date-time
        request:
          $ref: '#/components/schemas/ScoreRequest'
        response:
          $ref: '#/components/schemas/ScoreResponse'
        upstream_snapshot:
          type: object
          additionalProperties: true
    ScoreRequest:
      type: object
      required:
        - subject
      properties:
        subject:
          type: object
          minProperties: 1
          properties:
            phone_number:
              type: string
              description: E.164
            ip_address:
              type: string
              description: IPv4 or IPv6 literal
        context_id:
          type: string
        context:
          $ref: '#/components/schemas/Context'
        client_reference:
          type: string
          maxLength: 256
        options:
          type: object
          properties:
            explain:
              type: boolean
              default: true
            max_latency_ms:
              type: integer
              minimum: 50
            shadow_version:
              type: string
    ScoreResponse:
      type: object
      required:
        - score_id
        - tier
        - score_version
        - score
        - score_type
        - band
        - recommended_action
        - disclosure
        - suppressed
        - degraded_sources
      properties:
        score_id:
          type: string
          description: >-
            Opaque score identifier, "sc_" followed by 32 lowercase hex
            characters. The prefix is pinned (v1.0.3) — clients may rely on it.
        tier:
          type: string
          enum:
            - verify
            - assess
            - bureau
        score_version:
          type: string
        score:
          type: integer
          minimum: 0
          maximum: 100
        score_type:
          type: string
          const: ranking
        score_basis:
          type: string
        band:
          type: string
          enum:
            - minimal
            - low
            - medium
            - high
            - critical
        recommended_action:
          type: string
          enum:
            - allow
            - watch
            - investigate
            - step_up_auth
            - challenge
            - block
        coverage:
          type: string
          enum:
            - strong
            - partial
            - thin
          description: >-
            Reporting-density context, never a score modifier — see
            scoring/COVERAGE.md
        subject:
          $ref: '#/components/schemas/SubjectResolution'
        components:
          type: array
          items:
            $ref: '#/components/schemas/Component'
        primary_risk_factor:
          type: object
          required:
            - code
          properties:
            code:
              type: string
              description: From SEMANTICS.md reason-code registry
            narrative:
              type: string
        benign_exclusions:
          type: array
          items:
            type: string
        context_applied:
          type: object
          properties:
            context_id:
              type: string
            effect:
              type: string
              enum:
                - band_elevated
                - band_reduced
                - none
            reason:
              type: string
        shadow:
          type: object
          description: Present only when shadow_version requested (VER-2)
          properties:
            score_version:
              type: string
            score:
              type: integer
            band:
              type: string
        suppressed:
          type: array
          items:
            type: object
            required:
              - component
              - available_in
            properties:
              component:
                type: string
                description: >-
                  Component key from entitlements/tiers.json or a response-field
                  path
              available_in:
                type: string
                enum:
                  - assess
                  - bureau
        client_reference:
          type: string
        cluster_id:
          type: string
          description: Bureau tier only — stable infrastructure-cluster id (spec 4.3)
        disclosure:
          type: string
        degraded_sources:
          type: array
          description: >-
            Capabilities that answered this request on reduced evidence — the
            same names as components[].component and the health endpoint's
            capabilities map. Empty means every evaluated capability answered at
            full fidelity.
          items:
            type: string
        latency_ms:
          type: integer
    Error:
      type: object
      required:
        - errors
      properties:
        errors:
          type: array
          minItems: 1
          items:
            type: object
            required:
              - code
              - message
            properties:
              code:
                type: string
                description: From errors/ERRORS.md
              field:
                type: string
              message:
                type: string
    Context:
      type: object
      required:
        - sector
        - geography
        - collection_point
      properties:
        sector:
          type: string
        geography:
          type: object
          properties:
            operating_countries:
              type: array
              items:
                type: string
            expected_corridors:
              type: array
              items:
                type: string
            diaspora_corridors:
              type: array
              items:
                type: string
        collection_point:
          type: object
          properties:
            channel:
              type: string
              enum:
                - voice_call_centre
                - web
                - mobile_app
                - ussd
                - chat
                - ivr
            direction:
              type: string
              enum:
                - inbound
                - outbound
            moment:
              type: string
              enum:
                - onboarding
                - authentication
                - payment
                - profile_change
                - support
        risk_posture:
          type: string
          enum:
            - recall_weighted
            - balanced
            - precision_weighted
        action_policy:
          type: object
          additionalProperties:
            type: string
    SubjectResolution:
      type: object
      description: >-
        Identity resolution of network assets only — never subscriber identity
        (RSP-4)
      properties:
        phone_number:
          type: object
          properties:
            e164:
              type: string
            valid:
              type: boolean
            country_code:
              type: string
            ndc:
              type: string
            operator:
              type: string
            line_type:
              type: string
            allocated:
              type: boolean
        ip_address:
          type: object
          properties:
            asn:
              type: string
            as_name:
              type: string
            as_type:
              type: string
            country_code:
              type: string
            continent:
              type: string
            hosting:
              type: boolean
            vpn:
              type: boolean
            proxy:
              type: boolean
            tor:
              type: boolean
            bogon:
              type: boolean
    Component:
      type: object
      required:
        - component
        - verdict
        - contribution
      properties:
        component:
          type: string
          description: Key from entitlements/tiers.json components
        verdict:
          type: string
          enum:
            - clean
            - neutral
            - elevated
            - adverse
            - no_match
            - unavailable
        contribution:
          type: integer
        detail:
          type: string
  responses:
    NotFound:
      description: Unknown, expired, or foreign score_id (indistinguishable by design)
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'

````