Kaminari Ad Custom Taxonomies API

The custom-taxonomies API from Kaminari Ad — 4 operation(s) for custom-taxonomies.

GitHub OpenAPI

Operations 7

GET /api/v1/custom-taxonomies List Taxonomies #
POST /api/v1/custom-taxonomies Create Taxonomy #
POST /api/v1/custom-taxonomies/parse-text Parse Text #
GET /api/v1/custom-taxonomies/{taxonomy_id} Get Taxonomy #
PUT /api/v1/custom-taxonomies/{taxonomy_id} Update Taxonomy #
DELETE /api/v1/custom-taxonomies/{taxonomy_id} Delete Taxonomy #
POST /api/v1/custom-taxonomies/{taxonomy_id}/restore Restore Taxonomy #

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/kaminari-ad:kaminari-ad-custom-taxonomies-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

kaminari-ad-custom-taxonomies-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Kaminari Ad Custom Taxonomies API
  description: 'REST API for Kaminari Ad, the ad quality and ad security platform for publishers, ad networks, SSPs and DSPs. Submit ad creatives, ad tags and landing pages for scanning, read verdicts with evidence, manage policies, alerts and webhooks.


    Authenticate with an API key as a Bearer token: https://kaminari.ad/docs/developers/authentication'
  contact:
    name: Kaminari Ad Support
    url: https://kaminari.ad/contact
    email: support@kaminari.ad
  version: 0.1.0
servers:
- url: https://app.kaminari.ad
tags:
- name: custom-taxonomies
paths:
  /api/v1/custom-taxonomies:
    get:
      tags:
      - custom-taxonomies
      summary: List Taxonomies
      description: List taxonomies for the authenticated org.
      operationId: list_taxonomies_api_v1_custom_taxonomies_get
      security:
      - HTTPBearer: []
      parameters:
      - name: include_inactive
        in: query
        required: false
        schema:
          type: boolean
          default: false
          title: Include Inactive
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/CustomTaxonomyListItem'
                title: Response List Taxonomies Api V1 Custom Taxonomies Get
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
    post:
      tags:
      - custom-taxonomies
      summary: Create Taxonomy
      description: Create a new taxonomy with its tree.
      operationId: create_taxonomy_api_v1_custom_taxonomies_post
      security:
      - HTTPBearer: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateCustomTaxonomyRequest'
      responses:
        '201':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomTaxonomyResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/custom-taxonomies/parse-text:
    post:
      tags:
      - custom-taxonomies
      summary: Parse Text
      description: Preview-parse pasted free-form text into a tree (no persistence).
      operationId: parse_text_api_v1_custom_taxonomies_parse_text_post
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ParseTaxonomyTextRequest'
        required: true
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ParseTaxonomyTextResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
      - HTTPBearer: []
  /api/v1/custom-taxonomies/{taxonomy_id}:
    get:
      tags:
      - custom-taxonomies
      summary: Get Taxonomy
      description: Get a taxonomy with its full tree.
      operationId: get_taxonomy_api_v1_custom_taxonomies__taxonomy_id__get
      security:
      - HTTPBearer: []
      parameters:
      - name: taxonomy_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
          title: Taxonomy Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomTaxonomyResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
    put:
      tags:
      - custom-taxonomies
      summary: Update Taxonomy
      description: Replace the full tree atomically and bump ``version``.
      operationId: update_taxonomy_api_v1_custom_taxonomies__taxonomy_id__put
      security:
      - HTTPBearer: []
      parameters:
      - name: taxonomy_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
          title: Taxonomy Id
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateCustomTaxonomyRequest'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomTaxonomyResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
    delete:
      tags:
      - custom-taxonomies
      summary: Delete Taxonomy
      description: Soft-delete (is_active=false). History rows preserved.
      operationId: delete_taxonomy_api_v1_custom_taxonomies__taxonomy_id__delete
      security:
      - HTTPBearer: []
      parameters:
      - name: taxonomy_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
          title: Taxonomy Id
      responses:
        '204':
          description: Successful Response
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/custom-taxonomies/{taxonomy_id}/restore:
    post:
      tags:
      - custom-taxonomies
      summary: Restore Taxonomy
      description: Re-activate a previously soft-deleted taxonomy.
      operationId: restore_taxonomy_api_v1_custom_taxonomies__taxonomy_id__restore_post
      security:
      - HTTPBearer: []
      parameters:
      - name: taxonomy_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
          title: Taxonomy Id
      responses:
        '204':
          description: Successful Response
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
components:
  schemas:
    ParsedTaxonomyNode:
      properties:
        level:
          type: integer
          title: Level
        name:
          type: string
          title: Name
        description:
          type: string
          title: Description
      type: object
      required:
      - level
      - name
      - description
      title: ParsedTaxonomyNode
      description: 'One parsed node from the paste-import preview.


        No identifiers — clients allocate ``client_id``s locally before

        submitting via :class:`CreateCustomTaxonomyRequest`.'
    TaxonomyNodeRequest:
      properties:
        client_id:
          type: string
          maxLength: 100
          minLength: 1
          title: Client Id
        parent_client_id:
          anyOf:
          - type: string
          - type: 'null'
          title: Parent Client Id
        name:
          type: string
          maxLength: 100
          minLength: 1
          title: Name
        description:
          type: string
          maxLength: 200
          title: Description
          default: ''
        is_default:
          type: boolean
          title: Is Default
          default: false
      additionalProperties: false
      type: object
      required:
      - client_id
      - name
      title: TaxonomyNodeRequest
      description: 'One node in the create/update body.


        ``client_id`` is a free-form string the client uses to reference this

        node from sibling children''s ``parent_client_id``. ``parent_client_id``

        is None for tier-1 roots. The server replaces both fields with fresh

        UUIDs before persisting.'
    CustomTaxonomyResponse:
      properties:
        id:
          type: string
          format: uuid
          title: Id
        organization_id:
          type: string
          format: uuid
          title: Organization Id
        name:
          type: string
          title: Name
        slug:
          type: string
          title: Slug
        description:
          type: string
          title: Description
        is_active:
          type: boolean
          title: Is Active
        show_in_public_report:
          type: boolean
          title: Show In Public Report
        version:
          type: integer
          title: Version
        nodes:
          items:
            $ref: '#/components/schemas/TaxonomyNodeResponse'
          type: array
          title: Nodes
        created_at:
          type: string
          format: date-time
          title: Created At
        updated_at:
          type: string
          format: date-time
          title: Updated At
      type: object
      required:
      - id
      - organization_id
      - name
      - slug
      - description
      - is_active
      - show_in_public_report
      - version
      - nodes
      - created_at
      - updated_at
      title: CustomTaxonomyResponse
      description: Aggregate metadata + the full node tree.
    CustomTaxonomyListItem:
      properties:
        id:
          type: string
          format: uuid
          title: Id
        name:
          type: string
          title: Name
        slug:
          type: string
          title: Slug
        description:
          type: string
          title: Description
        is_active:
          type: boolean
          title: Is Active
        show_in_public_report:
          type: boolean
          title: Show In Public Report
        version:
          type: integer
          title: Version
        node_count:
          type: integer
          title: Node Count
        created_at:
          type: string
          format: date-time
          title: Created At
        updated_at:
          type: string
          format: date-time
          title: Updated At
      type: object
      required:
      - id
      - name
      - slug
      - description
      - is_active
      - show_in_public_report
      - version
      - node_count
      - created_at
      - updated_at
      title: CustomTaxonomyListItem
      description: Lightweight list-row projection (no nodes — clients open detail view).
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    UpdateCustomTaxonomyRequest:
      properties:
        name:
          type: string
          maxLength: 100
          minLength: 1
          title: Name
        description:
          type: string
          maxLength: 500
          title: Description
          default: ''
        show_in_public_report:
          type: boolean
          title: Show In Public Report
          description: 'Show this taxonomy''s tiers on the unauthenticated shared scan report. Full-replace like every other field: omitting it hides the taxonomy.'
          default: false
        nodes:
          items:
            $ref: '#/components/schemas/TaxonomyNodeRequest'
          type: array
          minItems: 0
          title: Nodes
          default: []
      additionalProperties: false
      type: object
      required:
      - name
      title: UpdateCustomTaxonomyRequest
      description: 'Atomic replace-tree update.


        The whole tree is replaced; clients send the desired final state.

        The server bumps ``version`` so historical

        ``scan_taxonomy_classifications`` can be tied back to a snapshot.'
    ValidationError:
      properties:
        loc:
          items:
            anyOf:
            - type: string
            - type: integer
          type: array
          title: Location
        msg:
          type: string
          title: Message
        type:
          type: string
          title: Error Type
        input:
          title: Input
        ctx:
          type: object
          title: Context
      type: object
      required:
      - loc
      - msg
      - type
      title: ValidationError
    TaxonomyNodeResponse:
      properties:
        id:
          type: string
          format: uuid
          title: Id
        parent_id:
          anyOf:
          - type: string
            format: uuid
          - type: 'null'
          title: Parent Id
        level:
          type: integer
          title: Level
        position:
          type: integer
          title: Position
        name:
          type: string
          title: Name
        description:
          type: string
          title: Description
        is_default:
          type: boolean
          title: Is Default
      type: object
      required:
      - id
      - parent_id
      - level
      - position
      - name
      - description
      - is_default
      title: TaxonomyNodeResponse
      description: 'One node as returned by the API.


        Server-side UUIDs are exposed because clients persist them locally

        and re-send them on update (parent_id wiring). A leaf node where

        ``is_default`` is true is the one the LLM falls back to when no

        other tier matches.'
    ParseTaxonomyTextRequest:
      properties:
        text:
          type: string
          maxLength: 50000
          minLength: 1
          title: Text
      additionalProperties: false
      type: object
      required:
      - text
      title: ParseTaxonomyTextRequest
      description: Body for the paste-import preview endpoint.
    CreateCustomTaxonomyRequest:
      properties:
        name:
          type: string
          maxLength: 100
          minLength: 1
          title: Name
        description:
          type: string
          maxLength: 500
          title: Description
          default: ''
        show_in_public_report:
          type: boolean
          title: Show In Public Report
          description: Show this taxonomy's tiers on the unauthenticated shared scan report.
          default: false
        nodes:
          items:
            $ref: '#/components/schemas/TaxonomyNodeRequest'
          type: array
          minItems: 0
          title: Nodes
          default: []
      additionalProperties: false
      type: object
      required:
      - name
      title: CreateCustomTaxonomyRequest
      description: Top-level body for taxonomy creation.
    ParseTaxonomyTextResponse:
      properties:
        nodes:
          items:
            $ref: '#/components/schemas/ParsedTaxonomyNode'
          type: array
          title: Nodes
        warnings:
          items:
            type: string
          type: array
          title: Warnings
      type: object
      required:
      - nodes
      - warnings
      title: ParseTaxonomyTextResponse
      description: Flat node list + warnings ("inconsistent indentation", "depth > 4 truncated").
  securitySchemes:
    HTTPBearer:
      type: http
      scheme: bearer