Skai (Kenshoo) Columns API

The Columns API from Skai (Kenshoo) — 2 operation(s) for columns.

Operations 4

GET /api/v1/columns Get custom column by name or profile #
POST /api/v1/columns Create custom column #
DELETE /api/v1/columns Delete custom column #
PUT /api/v1/columns/{columnId} Edit profile allow list #

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/skai-kenshoo-columns-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

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

skai-kenshoo-columns-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Skai Columns API
  description: '# Overview

    Skai APIs provide programmatic access to advertising data and campaign management across Search, Social, and Retail Media publishers.'
  version: 1.0.0
  x-logo:
    url: https://grid.kenshoo.com/resources-frontend/latest/kenshoo_logo/skai-logo-devportal.svg
    backgroundColor: '#FFFFFF'
    altText: Skai
servers:
- url: https://services.kenshoo.com
security:
- BearerAuth: []
tags:
- name: Columns
paths:
  /api/v1/columns:
    get:
      tags:
      - Columns
      summary: Get custom column by name or profile
      description: 'Retrieve the details of an existing custom column.

        Enter the column name in the query parameters. If the name contains spaces, replace them with 20% or send the profile ID in the query parameters.

        You must use either the column name or profile ID parameter. You cannot use both.'
      operationId: getDynamicColumns
      parameters:
      - $ref: '#/components/parameters/ks'
      - $ref: '#/components/parameters/SourceNames'
      - $ref: '#/components/parameters/ColumnName'
      - $ref: '#/components/parameters/ProfileIds'
      responses:
        200:
          $ref: '#/components/responses/GetDynamicColumnsResponse'
        400:
          description: Bad request (usually indicates validation failure for client input)
          content:
            application/json:
              schema:
                type: object
                properties:
                  errorMessage:
                    type: string
                    description: Reason for failure
        500:
          description: Server error
          content:
            application/json:
              schema:
                type: object
                properties:
                  errorMessage:
                    type: string
    post:
      tags:
      - Columns
      summary: Create custom column
      description: 'Retrieve a list of custom columns and create them in bulk, and define the profiles that are allowed to use each column.


        The response contains the newly created columns, including status and an error message as relevant.'
      operationId: createDynamicColumns
      parameters:
      - $ref: '#/components/parameters/ks'
      requestBody:
        $ref: '#/components/requestBodies/DynamicColumnsRequest'
      responses:
        200:
          $ref: '#/components/responses/DynamicColumnsResponse'
        400:
          description: Bad request (usually indicates validation failure for client input)
          content:
            application/json:
              schema:
                type: object
                properties:
                  errorMessage:
                    type: string
                    description: Reason for failure
        500:
          description: Server error
          content:
            application/json:
              schema:
                type: object
                properties:
                  errorMessage:
                    type: string
    delete:
      tags:
      - Columns
      summary: Delete custom column
      description: 'Retrieve a list of custom columns and delete them in bulk.

        The response contains the deleted columns, including status and an error message as relevant.'
      operationId: deleteDynamicColumns
      parameters:
      - $ref: '#/components/parameters/ks'
      requestBody:
        $ref: '#/components/requestBodies/DynamicColumnsDeleteRequest'
      responses:
        200:
          $ref: '#/components/responses/DynamicColumnsDeleteResponse'
        400:
          description: Bad request (usually indicates validation failure for client input)
          content:
            application/json:
              schema:
                type: object
                properties:
                  errorMessage:
                    type: string
                    description: Reason for failure
        500:
          description: Server error
          content:
            application/json:
              schema:
                type: object
                properties:
                  errorMessage:
                    type: string
  /api/v1/columns/{columnId}:
    put:
      tags:
      - Columns
      summary: Edit profile allow list
      description: 'Edit the list of profiles in which a custom column can be used.


        This PUT request overrides the existing profile list with the list you provide.'
      operationId: editDynamicColumns
      parameters:
      - $ref: '#/components/parameters/ks'
      - $ref: '#/components/parameters/SourceNames'
      - name: columnId
        in: path
        description: The custom column id. Must be unique.
        required: true
        style: simple
        explode: false
        schema:
          type: integer
      requestBody:
        $ref: '#/components/requestBodies/EditDynamicColumnsRequest'
      responses:
        200:
          description: The profile allow list was edited successfully
        400:
          description: Bad request (usually indicates validation failure for client input)
          content:
            application/json:
              schema:
                type: object
                properties:
                  errorMessage:
                    type: string
                    description: Reason for failure
        500:
          description: Server error
          content:
            application/json:
              schema:
                type: object
                properties:
                  errorMessage:
                    type: string
components:
  parameters:
    ks:
      name: ks
      in: query
      description: The KS to refer the request to. You can find this ID in the Skai platform under _Administration_ -> _About Skai_ -> _Server ID_
      required: true
      style: form
      explode: true
      schema:
        type: string
      example: '1234'
    ProfileIds:
      name: profileId
      in: query
      description: Filter by profile ID. Returns the custom columns assigned to this profile.
      required: false
      style: form
      explode: true
      schema:
        type: integer
    SourceNames:
      name: sourceName
      in: query
      description: 'The data source name. Currently, `FlexibleColumns` is the only supported value

        '
      required: true
      style: form
      explode: true
      schema:
        type: string
    ColumnName:
      name: columnName
      in: query
      description: 'Filter by column name. Returns the custom columns name equals this input.

        '
      required: false
      style: form
      explode: true
      schema:
        type: string
  requestBodies:
    EditDynamicColumnsRequest:
      description: Edit custom column
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ExtraConfig'
      required: true
    DynamicColumnsDeleteRequest:
      description: Delete custom columns
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/DynamicColumnsToDelete'
      required: true
    DynamicColumnsRequest:
      description: Create custom columns
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/DynamicColumns'
      required: true
  schemas:
    ExtraConfig:
      type: object
      properties:
        profile_ids:
          type: array
          description: The IDs of Skai profiles to enable the column for.
      description: Additional custom column configurations.
    DynamicColumnDeleteResponse:
      type: object
      properties:
        column_ID:
          type: integer
          description: The custom column ID.
        status:
          type: string
          readOnly: true
          enum:
          - SUCCESS
          - FAILED
        error_message:
          type: string
          description: Reason for failure
      description: The properties of a column
    DynamicColumnsResponse:
      type: object
      properties:
        columns:
          uniqueItems: true
          type: array
          description: '[array of objects]'
          items:
            $ref: '#/components/schemas/DynamicColumnResponse'
        status:
          $ref: '#/components/schemas/ApiResponseStatus'
        error_message:
          type: string
          readOnly: true
      description: '[array of objects]'
    DynamicColumnsDeleteResponse:
      type: object
      properties:
        columns:
          uniqueItems: true
          type: array
          description: '[array of objects]'
          items:
            $ref: '#/components/schemas/DynamicColumnDeleteResponse'
        status:
          $ref: '#/components/schemas/ApiResponseStatus'
        error_message:
          type: string
          readOnly: true
      description: '[array of objects]'
    DynamicColumnsToDelete:
      required:
      - columns
      - source_name
      type: object
      properties:
        columns:
          uniqueItems: true
          type: array
          description: '[array of objects]'
          items:
            $ref: '#/components/schemas/DynamicColumnToDelete'
        source_name:
          type: string
          description: The data source name. Currently, only FlexibleColumns is supported.
      description: The properties for the custom columns request
      example:
        columns:
        - column_id: 1
        - column_id: 2
        source_name: FlexibleColumns
    DynamicColumnResponse:
      type: object
      properties:
        column_name:
          type: string
          description: The custom column name.
        column_type:
          type: string
          description: 'Valid values : BOOLEAN, STRING, INTEGER, LONG, BIG_DECIMAL, FLOAT, BIG_INTEGER, DATE, PERCENT.'
        entity_type:
          type: string
          description: The entity level. Currently, `PRODUCT_ASSET` is the only supported value.
        extra_config:
          $ref: '#/components/schemas/ExtraConfig'
        status:
          type: string
          readOnly: true
          enum:
          - SUCCESS
          - FAILED
        error_message:
          type: string
          description: Reason for failure
      description: The properties of a column
    DynamicColumn:
      required:
      - column_name
      - column_type
      type: object
      properties:
        column_name:
          type: string
          description: The custom column name. Must be unique.
        column_type:
          type: string
          description: 'Valid values : `BOOLEAN`, `STRING`, `FLOAT`, `DATE`, `PERCENT`.'
        entity_type:
          type: string
          description: The entity level. Currently, `PRODUCT_ASSET` is the only supported value.
        extra_config:
          $ref: '#/components/schemas/ExtraConfig'
      description: The properties of a column
    DynamicColumnToDelete:
      required:
      - column_id
      type: object
      properties:
        column_id:
          type: integer
          description: The custom column ID. Must be unique.
      description: The properties of a column
    ApiResponseStatus:
      type: string
      readOnly: true
      enum:
      - SUCCESS
      - FAILED
      - PARTIAL_SUCCESS
    DynamicColumns:
      required:
      - columns
      - source_name
      type: object
      properties:
        columns:
          uniqueItems: true
          type: array
          description: '[array of objects]'
          items:
            $ref: '#/components/schemas/DynamicColumn'
        source_name:
          type: string
          description: The data source name. Currently, `FlexibleColumns` is the only supported value.
      description: The properties for the custom columns request
      example:
        columns:
        - column_name: Category
          column_type: STRING
          entity_type: PRODUCT_ASSET
          extra_config:
            profile_ids:
            - 401
            - 402
        - column_name: Item Type Keyword
          column_type: INTEGER
          entity_type: PRODUCT_ASSET
          extra_config:
            profile_ids:
            - 401
        source_name: FlexibleColumns
  responses:
    DynamicColumnsDeleteResponse:
      description: The custom columns were deleted successfully
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/DynamicColumnsDeleteResponse'
          example:
          - id: 1
            status: SUCCESS
            error_message: null
          - id: 2
            status: SUCCESS
            error_message: null
          - id: 3
            status: SUCCESS
            error_message: null
    GetDynamicColumnsResponse:
      description: The custom columns were retrieved successfully
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/DynamicColumnsResponse'
          example:
          - id: 110
            column_name: Category
            column_type: STRING
            entity_type: PRODUCT_ASSET
            extra_config:
              profile_ids:
              - 401
              - 402
            status: SUCCESS
            error_message: null
          - id: 111
            column_name: Item Type Keyword
            column_type: INTEGER
            entity_type: PRODUCT_ASSET
            extra_config:
              profile_ids:
              - 401
            status: SUCCESS
            error_message: null
    DynamicColumnsResponse:
      description: The custom columns were created successfully
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/DynamicColumnsResponse'
          example:
          - id: 110
            column_name: Category
            column_type: STRING
            entity_type: PRODUCT_ASSET
            extra_config:
              profile_ids:
              - 401
              - 402
            status: SUCCESS
            error_message: null
          - id: 111
            column_name: Item Type Keyword
            column_type: INTEGER
            entity_type: PRODUCT_ASSET
            extra_config:
              profile_ids:
              - 401
            status: SUCCESS
            error_message: null
x-tagGroups:
- name: Reporting
  tags:
  - Available Columns
  - Synchronous Reports
  - Asynchronous Reports
- name: Bulk Operations
  tags:
  - Jobs
  - Bulk Update
- name: AI & MCP
  tags:
  - MCP
- name: Objects
  tags:
  - Profile
  - Campaigns
  - Ad Groups
  - Ads
  - Product Groups
  - Portfolios
  - Meta Campaigns
  - Meta Ad Groups
  - Meta Ads
  - Columns