Katla API

Katla API as documented publicly: 17 operations. Contract generated from the documentation by API Evangelist (2026-11-13); not the provider's own document.

GitHub OpenAPI

Operations 17

GET /pricing Pricing #
GET /sites/{id}/consents Consent records with stats #
POST /sites/{id}/scan Start a scan; poll for the result #
PATCH /sites/{id}/settings Update theme, layout, regulation and Consent Mode #
GET /sites/{siteid}/cookies Classified inventory with confidence #
GET /sites/{siteid}/cookies/export The same inventory as JSON #
DELETE /teams DELETE /teams #
GET /teams Teams the account belongs to #
POST /teams POST /teams #
GET /teams/ Service accounts - Katla #
GET /teams/{teamid}/service-accounts Service accounts - Katla #
POST /teams/{teamid}/service-accounts Service accounts - Katla #
DELETE /teams/{teamid}/service-accounts/{serviceaccountid} Service accounts - Katla #
PATCH /teams/{teamid}/service-accounts/{serviceaccountid} Service accounts - Katla #
POST /teams/{teamid}/service-accounts/{serviceaccountid}/keys Service accounts - Katla #
DELETE /teams/{teamid}/service-accounts/{serviceaccountid}/keys/{keyid} Service accounts - Katla #
GET /teams/{teamid}/sites Sites with their latest scan #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/katla-app:katla-app-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

katla-app-openapi-generated.yml Raw ↑
openapi: 3.1.0
info:
  title: Katla API
  version: '2026-11-13'
  description: 'GENERATED FROM DOCUMENTATION by API Evangelist on 2026-11-13: 17 operation(s) read from 3 public documentation page(s) (each operation
    names its page in x-source). This is not the provider''s published contract; Katla has published no machine-readable contract that the pipeline
    could find. Engine: local.'
  x-evidence-tiers:
    code-example: 2
    documentation: 15
    pages-with-code: 1
    pages-read: 3
  x-generated-from: documentation
  x-provenance: generated
  x-authored-by: API Evangelist
  x-generated: '2026-11-13'
  x-generator: generate-contract-from-docs.py
  x-engine: local
  x-sources:
  - https://katla.app/developers
  - https://docs.katla.app/service-accounts
  - https://katla.app/ai-scanning
servers:
- url: https://api.katla.app
paths:
  /pricing:
    get:
      operationId: get_pricing
      tags:
      - Pricing
      summary: Pricing
      x-source: https://katla.app/ai-scanning
      responses:
        '200':
          description: Success (status as documented)
      x-evidence:
        kind: documentation
  /sites/{id}/consents:
    get:
      operationId: get_sites_id_consents
      tags:
      - Sites
      summary: Consent records with stats
      x-source: https://katla.app/developers
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Success (status as documented)
      x-evidence:
        kind: documentation
  /sites/{id}/scan:
    post:
      operationId: post_sites_id_scan
      tags:
      - Sites
      summary: Start a scan; poll for the result
      x-source: https://katla.app/developers
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
      responses:
        '201':
          description: Success (status as documented)
      x-evidence:
        kind: documentation
  /sites/{id}/settings:
    patch:
      operationId: patch_sites_id_settings
      tags:
      - Sites
      summary: Update theme, layout, regulation and Consent Mode
      x-source: https://katla.app/developers
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Success (status as documented)
      x-evidence:
        kind: documentation
  /sites/{siteid}/cookies:
    get:
      operationId: get_sites_siteid_cookies
      tags:
      - Sites
      summary: Classified inventory with confidence
      x-source: https://katla.app/developers
      parameters:
      - name: siteid
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Success (status as documented)
      x-evidence:
        kind: documentation
  /sites/{siteid}/cookies/export:
    get:
      operationId: get_sites_siteid_cookies_export
      tags:
      - Sites
      summary: The same inventory as JSON
      x-source: https://katla.app/developers
      parameters:
      - name: siteid
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Success (status as documented)
      x-evidence:
        kind: documentation
  /teams:
    delete:
      operationId: delete_teams
      tags:
      - Teams
      summary: DELETE /teams
      x-source: https://docs.katla.app/service-accounts
      responses:
        '200':
          description: Success (status as documented)
      x-evidence:
        kind: code-example
        language: curl
        snippet: "curl -X DELETE https://api.katla.app/teams/ $TEAM_ID /service-accounts/ $ACCOUNT_ID /keys/ $OLD_KEY_ID  -H \"Authorization:\
          \ Bearer $YOUR_ACCESS_TOKEN \" \n ​ Revoke \n Revoking the account withdraws every key under it at once - use this if a machine is\n\
          decommissioned or you suspect a compromise: "
    get:
      operationId: get_teams
      tags:
      - Teams
      summary: Teams the account belongs to
      x-source: https://katla.app/developers
      responses:
        '200':
          description: Success (status as documented)
      x-evidence:
        kind: documentation
    post:
      operationId: post_teams
      tags:
      - Teams
      summary: POST /teams
      x-source: https://docs.katla.app/service-accounts
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PostTeamsRequest'
      responses:
        '201':
          description: Success (status as documented)
      x-evidence:
        kind: code-example
        language: curl
        snippet: "curl -X POST https://api.katla.app/teams/ $TEAM_ID /service-accounts  -H \"Authorization: Bearer $YOUR_ACCESS_TOKEN \"  -H \"\
          Content-Type: application/json\"  -d '{ \n \"name\": \"Deploy pipeline\", \n \"role\": \"member\", \n \"scopes\": [\"katla:read\", \"\
          katla:write\"], \n \"expiresInDays\": 365 \n }' \n { \n \"serviceAccount\" : { \"id\" : \"…\" , \"name\" : \"Deploy pipeline\" , \"\
          role\" : \"member\" , \"…\" : \"…\" }, \n \"key\" : { \"id\" "
  /teams/:
    get:
      operationId: get_teams
      tags:
      - Teams
      summary: Service accounts - Katla
      x-source: https://docs.katla.app/service-accounts
      responses:
        '200':
          description: Success (status as documented)
      x-evidence:
        kind: documentation
  /teams/{teamid}/service-accounts:
    get:
      operationId: get_teams_teamid_service_accounts
      tags:
      - Teams
      summary: Service accounts - Katla
      x-source: https://docs.katla.app/service-accounts
      parameters:
      - name: teamid
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Success (status as documented)
      x-evidence:
        kind: documentation
    post:
      operationId: post_teams_teamid_service_accounts
      tags:
      - Teams
      summary: Service accounts - Katla
      x-source: https://docs.katla.app/service-accounts
      parameters:
      - name: teamid
        in: path
        required: true
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PostTeamsTeamidServiceAccountsRequest'
      responses:
        '201':
          description: Success (status as documented)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PostTeamsTeamidServiceAccountsResponse'
      x-evidence:
        kind: documentation
  /teams/{teamid}/service-accounts/{serviceaccountid}:
    delete:
      operationId: delete_teams_teamid_service_accounts_serviceaccountid
      tags:
      - Teams
      summary: Service accounts - Katla
      x-source: https://docs.katla.app/service-accounts
      parameters:
      - name: teamid
        in: path
        required: true
        schema:
          type: string
      - name: serviceaccountid
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Success (status as documented)
      x-evidence:
        kind: documentation
    patch:
      operationId: patch_teams_teamid_service_accounts_serviceaccountid
      tags:
      - Teams
      summary: Service accounts - Katla
      x-source: https://docs.katla.app/service-accounts
      parameters:
      - name: teamid
        in: path
        required: true
        schema:
          type: string
      - name: serviceaccountid
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Success (status as documented)
      x-evidence:
        kind: documentation
  /teams/{teamid}/service-accounts/{serviceaccountid}/keys:
    post:
      operationId: post_teams_teamid_service_accounts_serviceaccountid_keys
      tags:
      - Teams
      summary: Service accounts - Katla
      x-source: https://docs.katla.app/service-accounts
      parameters:
      - name: teamid
        in: path
        required: true
        schema:
          type: string
      - name: serviceaccountid
        in: path
        required: true
        schema:
          type: string
      requestBody:
        required: false
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PostTeamsTeamidServiceAccountsServiceaccountidKeysRequest'
      responses:
        '201':
          description: Success (status as documented)
      x-evidence:
        kind: documentation
  /teams/{teamid}/service-accounts/{serviceaccountid}/keys/{keyid}:
    delete:
      operationId: delete_teams_teamid_service_accounts_serviceaccountid_keys_keyid
      tags:
      - Teams
      summary: Service accounts - Katla
      x-source: https://docs.katla.app/service-accounts
      parameters:
      - name: teamid
        in: path
        required: true
        schema:
          type: string
      - name: serviceaccountid
        in: path
        required: true
        schema:
          type: string
      - name: keyid
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Success (status as documented)
      x-evidence:
        kind: documentation
  /teams/{teamid}/sites:
    get:
      operationId: get_teams_teamid_sites
      tags:
      - Teams
      summary: Sites with their latest scan
      x-source: https://katla.app/developers
      parameters:
      - name: teamid
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Success (status as documented)
      x-evidence:
        kind: documentation
components:
  schemas:
    PostTeamsRequest:
      type: object
      properties:
        name:
          type: string
        role:
          type: string
        scopes:
          type: array
          items:
            type: string
        expiresInDays:
          type: integer
    PostTeamsTeamidServiceAccountsRequest:
      type: object
      properties:
        name:
          type: string
        role:
          type: string
        scopes:
          type: array
        expiresInDays:
          type: integer
      required:
      - name
      - role
      - scopes
    PostTeamsTeamidServiceAccountsResponse:
      type: object
      properties:
        serviceAccount:
          type: object
        key:
          type: object
        apiKey:
          type: string
    PostTeamsTeamidServiceAccountsServiceaccountidKeysRequest:
      type: object
      properties:
        expiresInDays:
          type: integer
  securitySchemes:
    bearer:
      type: http
      scheme: bearer
security:
- bearer: []
tags:
- name: Pricing
- name: Sites
- name: Teams