Kontomatik Data Analysis API

ML-powered analytical services on top of imported bank data — transaction labeling, vendor recognition (beta), credit scoring with repayment probability, behavioral profiling (beta), owner features, data summaries by category, income confirmation across four configurable timespans, external-data labeling for non-bank transactions, cross-source aggregation, and owner data deletion.

Kontomatik Data Analysis API is one of 4 APIs that Kontomatik publishes on the APIs.io network, described by a machine-readable OpenAPI specification.

This API exposes 4 machine-runnable capabilities that can be deployed as REST, MCP, or Agent Skill surfaces via Naftiko and 1 JSON Schema definition.

Tagged areas include Transaction Labeling, Credit Scoring, Income Verification, Profiling, and Machine Learning. The published artifact set on APIs.io includes API documentation, an OpenAPI specification, sample payloads, 4 Naftiko capability specs, and 1 JSON Schema.

OpenAPI Specification

kontomatik-data-analysis-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Kontomatik Data Analysis API
  version: 1.0.0
  description: |
    Analytical services running on top of imported AIS, PDF, or uploaded data.
    Includes transaction labeling, vendor recognition, ML-based credit scoring,
    behavioral profiling, owner features, data summaries, and income
    confirmation across configurable timespans.
  contact:
    name: Kontomatik Support
    email: [email protected]
    url: https://developer.kontomatik.com/
servers:
- url: https://api.kontomatik.com/v1
  description: Production
- url: https://test.api.kontomatik.com/v1
  description: Test
security:
- ApiKeyAuth: []
tags:
- name: Labeling
  description: Transaction categorization
- name: Vendors
  description: Vendor / counterparty recognition (beta)
- name: Score
  description: ML credit scoring
- name: Profile
  description: Behavioral profiling (beta)
- name: Features
  description: Owner-level financial metrics
- name: Summary
  description: Aggregated financial summaries
- name: Income
  description: Income confirmation
- name: Aggregation
  description: Cross-source aggregation
- name: Owner
  description: Owner data lifecycle
paths:
  /labeling:
    get:
      tags: [Labeling]
      summary: Get Transaction Labels
      description: Returns transaction labels (salary, rent, utilities, etc.) for an owner's imported data.
      operationId: getLabeling
      parameters:
      - name: ownerExternalId
        in: query
        required: true
        schema: {type: string}
      responses:
        '200':
          description: Labels returned
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LabelingResult'
  /external-data-labeling:
    post:
      tags: [Labeling]
      summary: Label External Transactions
      description: Labels transactions submitted from non-bank sources.
      operationId: labelExternalData
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ExternalLabelingRequest'
      responses:
        '200':
          description: External labels returned
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LabelingResult'
  /vendors:
    get:
      tags: [Vendors]
      summary: Get Vendor Recognition
      description: Identifies merchant / counterparty names in transactions (beta).
      operationId: getVendors
      parameters:
      - name: ownerExternalId
        in: query
        required: true
        schema: {type: string}
      responses:
        '200':
          description: Vendor mapping returned
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VendorResult'
  /score:
    get:
      tags: [Score]
      summary: Get Credit Score
      description: Returns ML-based creditworthiness scoring for an owner.
      operationId: getScore
      parameters:
      - name: ownerExternalId
        in: query
        required: true
        schema: {type: string}
      responses:
        '200':
          description: Score returned
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ScoreResult'
  /profile:
    get:
      tags: [Profile]
      summary: Get Behavioral Profile
      description: Returns descriptive behavioral profile segments based on transaction patterns (beta).
      operationId: getProfile
      parameters:
      - name: ownerExternalId
        in: query
        required: true
        schema: {type: string}
      responses:
        '200':
          description: Profile returned
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProfileResult'
  /owner-features:
    get:
      tags: [Features]
      summary: Get Owner Features
      description: Returns owner-level financial metrics derived from imported data.
      operationId: getOwnerFeatures
      parameters:
      - name: ownerExternalId
        in: query
        required: true
        schema: {type: string}
      responses:
        '200':
          description: Features returned
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FeatureResult'
  /data-summary:
    get:
      tags: [Summary]
      summary: Get Data Summary
      description: Aggregated calculations per category or account.
      operationId: getDataSummary
      parameters:
      - name: ownerExternalId
        in: query
        required: true
        schema: {type: string}
      responses:
        '200':
          description: Summary returned
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DataSummaryResult'
  /data-summary-catalog:
    get:
      tags: [Summary]
      summary: List Data Summary Catalog
      description: Lists supported summary categories.
      operationId: getDataSummaryCatalog
      responses:
        '200':
          description: Catalog returned
          content:
            application/json:
              schema:
                type: object
                properties:
                  categories:
                    type: array
                    items: {type: string}
  /income-confirmation:
    get:
      tags: [Income]
      summary: Get Income Confirmation
      description: Returns income-focused aggregates across four configurable timespans.
      operationId: getIncomeConfirmation
      parameters:
      - name: ownerExternalId
        in: query
        required: true
        schema: {type: string}
      responses:
        '200':
          description: Income confirmation returned
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IncomeResult'
  /data/aggregated:
    get:
      tags: [Aggregation]
      summary: Get Aggregated Data
      description: Aggregates data across multiple import sessions for a single owner.
      operationId: getAggregatedData
      parameters:
      - name: ownerExternalId
        in: query
        required: true
        schema: {type: string}
      responses:
        '200':
          description: Aggregated data returned
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AggregatedData'
  /data/delete:
    post:
      tags: [Owner]
      summary: Delete Owner Data
      description: Permanently removes all data for the specified owner. Default retention is 24 hours.
      operationId: deleteOwnerData
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required: [ownerExternalId]
              properties:
                ownerExternalId: {type: string}
      responses:
        '200':
          description: Data deleted
  /owner-upload:
    post:
      tags: [Owner]
      summary: Upload Owner Data
      description: Uploads custom owner / account / transaction data in XML or JSON for analysis alongside bank-sourced data.
      operationId: uploadOwnerData
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OwnerUpload'
      responses:
        '200':
          description: Upload accepted
components:
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: X-Api-Key
  schemas:
    LabelingResult:
      type: object
      properties:
        ownerExternalId: {type: string}
        labels:
          type: array
          items:
            type: object
            properties:
              transactionId: {type: string}
              category: {type: string}
              confidence: {type: number, format: float}
    ExternalLabelingRequest:
      type: object
      required: [transactions]
      properties:
        ownerExternalId: {type: string}
        transactions:
          type: array
          items:
            type: object
            properties:
              externalId: {type: string}
              date: {type: string, format: date}
              amount: {type: number}
              currency: {type: string}
              description: {type: string}
    VendorResult:
      type: object
      properties:
        ownerExternalId: {type: string}
        vendors:
          type: array
          items:
            type: object
            properties:
              transactionId: {type: string}
              vendorName: {type: string}
              confidence: {type: number}
    ScoreResult:
      type: object
      properties:
        ownerExternalId: {type: string}
        score: {type: number}
        scoreVersion: {type: string}
        repaymentProbability: {type: number}
        explanations:
          type: array
          items: {type: string}
    ProfileResult:
      type: object
      properties:
        ownerExternalId: {type: string}
        segments:
          type: array
          items: {type: string}
        descriptors:
          type: object
          additionalProperties: {type: string}
    FeatureResult:
      type: object
      properties:
        ownerExternalId: {type: string}
        features:
          type: object
          additionalProperties: {type: number}
    DataSummaryResult:
      type: object
      properties:
        ownerExternalId: {type: string}
        summary:
          type: object
          additionalProperties:
            type: object
            properties:
              total: {type: number}
              count: {type: integer}
              average: {type: number}
    IncomeResult:
      type: object
      properties:
        ownerExternalId: {type: string}
        timespans:
          type: array
          items:
            type: object
            properties:
              window: {type: string, example: 90d}
              confirmedIncome: {type: number}
              transactionCount: {type: integer}
    AggregatedData:
      type: object
      properties:
        ownerExternalId: {type: string}
        owners:
          type: array
          items: {type: object}
        accounts:
          type: array
          items: {type: object}
        sources:
          type: array
          items: {type: string, enum: [AIS, PDF, UPLOAD]}
    OwnerUpload:
      type: object
      required: [ownerExternalId]
      properties:
        ownerExternalId: {type: string}
        owners:
          type: array
          items: {type: object}
        accounts:
          type: array
          items: {type: object}
        transactions:
          type: array
          items: {type: object}