Kaminari Ad Campaign Groups API

The campaign-groups API from Kaminari Ad — 8 operation(s) for campaign-groups.

GitHub OpenAPI

Operations 10

POST /api/v1/campaign-groups Create Group #
GET /api/v1/campaign-groups List Groups #
GET /api/v1/campaign-groups/{group_id} Get Group #
PATCH /api/v1/campaign-groups/{group_id} Update Group #
POST /api/v1/campaign-groups/{group_id}/archive Archive Group #
POST /api/v1/campaign-groups/{group_id}/unarchive Unarchive Group #
POST /api/v1/campaign-groups/{group_id}/pause-schedule Pause Group Schedule #
POST /api/v1/campaign-groups/{group_id}/resume-schedule Resume Group Schedule #
POST /api/v1/campaign-groups/{group_id}/cancel Cancel Group #
POST /api/v1/campaign-groups/{group_id}/run Run Group #

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-campaign-groups-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-campaign-groups-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Kaminari Ad Campaign Groups 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: campaign-groups
paths:
  /api/v1/campaign-groups:
    post:
      tags:
      - campaign-groups
      summary: Create Group
      description: Create a new campaign group.
      operationId: create_group_api_v1_campaign_groups_post
      security:
      - HTTPBearer: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateCampaignGroupRequest'
      responses:
        '201':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CampaignGroupResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
    get:
      tags:
      - campaign-groups
      summary: List Groups
      description: 'List campaign groups with optional name + date filters.


        ``created_*`` and ``last_run_*`` are inclusive calendar days

        interpreted in ``timezone`` (IANA name, defaults to UTC). A group''s

        last run is the newest run across its campaigns, so a group whose

        campaigns have never run is excluded once either last-run bound is

        set.'
      operationId: list_groups_api_v1_campaign_groups_get
      security:
      - HTTPBearer: []
      parameters:
      - name: archived
        in: query
        required: false
        schema:
          type: boolean
          default: false
          title: Archived
      - name: q
        in: query
        required: false
        schema:
          anyOf:
          - type: string
            maxLength: 200
          - type: 'null'
          title: Q
      - name: created_from
        in: query
        required: false
        schema:
          anyOf:
          - type: string
            format: date
          - type: 'null'
          title: Created From
      - name: created_to
        in: query
        required: false
        schema:
          anyOf:
          - type: string
            format: date
          - type: 'null'
          title: Created To
      - name: last_run_from
        in: query
        required: false
        schema:
          anyOf:
          - type: string
            format: date
          - type: 'null'
          title: Last Run From
      - name: last_run_to
        in: query
        required: false
        schema:
          anyOf:
          - type: string
            format: date
          - type: 'null'
          title: Last Run To
      - name: timezone
        in: query
        required: false
        schema:
          type: string
          default: UTC
          title: Timezone
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/CampaignGroupResponse'
                title: Response List Groups Api V1 Campaign Groups Get
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/campaign-groups/{group_id}:
    get:
      tags:
      - campaign-groups
      summary: Get Group
      description: Return a single campaign group by ID.
      operationId: get_group_api_v1_campaign_groups__group_id__get
      security:
      - HTTPBearer: []
      parameters:
      - name: group_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
          title: Group Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CampaignGroupResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
    patch:
      tags:
      - campaign-groups
      summary: Update Group
      description: Rename a campaign group.
      operationId: update_group_api_v1_campaign_groups__group_id__patch
      security:
      - HTTPBearer: []
      parameters:
      - name: group_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
          title: Group Id
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateCampaignGroupRequest'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CampaignGroupResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/campaign-groups/{group_id}/archive:
    post:
      tags:
      - campaign-groups
      summary: Archive Group
      description: Cascade-archive the group and all its campaigns.
      operationId: archive_group_api_v1_campaign_groups__group_id__archive_post
      security:
      - HTTPBearer: []
      parameters:
      - name: group_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
          title: Group Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GroupActionResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/campaign-groups/{group_id}/unarchive:
    post:
      tags:
      - campaign-groups
      summary: Unarchive Group
      description: Cascade-unarchive the group and all its campaigns.
      operationId: unarchive_group_api_v1_campaign_groups__group_id__unarchive_post
      security:
      - HTTPBearer: []
      parameters:
      - name: group_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
          title: Group Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GroupActionResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/campaign-groups/{group_id}/pause-schedule:
    post:
      tags:
      - campaign-groups
      summary: Pause Group Schedule
      description: Pause the schedule for every campaign in the group.
      operationId: pause_group_schedule_api_v1_campaign_groups__group_id__pause_schedule_post
      security:
      - HTTPBearer: []
      parameters:
      - name: group_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
          title: Group Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CampaignGroupResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/campaign-groups/{group_id}/resume-schedule:
    post:
      tags:
      - campaign-groups
      summary: Resume Group Schedule
      description: Resume the schedule for every campaign in the group.
      operationId: resume_group_schedule_api_v1_campaign_groups__group_id__resume_schedule_post
      security:
      - HTTPBearer: []
      parameters:
      - name: group_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
          title: Group Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CampaignGroupResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/campaign-groups/{group_id}/cancel:
    post:
      tags:
      - campaign-groups
      summary: Cancel Group
      description: Cancel pending scans for every non-archived campaign in the group.
      operationId: cancel_group_api_v1_campaign_groups__group_id__cancel_post
      security:
      - HTTPBearer: []
      parameters:
      - name: group_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
          title: Group Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GroupActionResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/campaign-groups/{group_id}/run:
    post:
      tags:
      - campaign-groups
      summary: Run Group
      description: Trigger a run for every non-archived campaign in the group.
      operationId: run_group_api_v1_campaign_groups__group_id__run_post
      security:
      - HTTPBearer: []
      parameters:
      - name: group_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
          title: Group Id
      responses:
        '201':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GroupActionResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
components:
  schemas:
    BulkCampaignFailure:
      properties:
        campaign_id:
          type: string
          format: uuid
          title: Campaign Id
        error_code:
          type: string
          title: Error Code
        detail:
          type: string
          title: Detail
      type: object
      required:
      - campaign_id
      - error_code
      - detail
      title: BulkCampaignFailure
      description: One failed campaign inside a bulk group-action response.
    UpdateCampaignGroupRequest:
      properties:
        name:
          anyOf:
          - type: string
            maxLength: 200
            minLength: 1
          - type: 'null'
          title: Name
      type: object
      title: UpdateCampaignGroupRequest
      description: Request body to update campaign-group fields. Rename only for now.
    CreateCampaignGroupRequest:
      properties:
        name:
          type: string
          maxLength: 200
          minLength: 1
          title: Name
      type: object
      required:
      - name
      title: CreateCampaignGroupRequest
      description: Request body to create a new campaign group.
    GroupActionResponse:
      properties:
        group_id:
          type: string
          format: uuid
          title: Group Id
        affected_campaigns:
          type: integer
          title: Affected Campaigns
        cancelled_count:
          type: integer
          title: Cancelled Count
          default: 0
        run_ids:
          items:
            type: string
            format: uuid
          type: array
          title: Run Ids
        failures:
          items:
            $ref: '#/components/schemas/BulkCampaignFailure'
          type: array
          title: Failures
      type: object
      required:
      - group_id
      - affected_campaigns
      title: GroupActionResponse
      description: 'Bulk-action summary for cancel/run/archive group operations.


        ``failures`` aggregates per-campaign errors so a partial batch (e.g.

        5 of 7 runs started, 2 blocked by ``billing.insufficient_funds``)

        surfaces to the UI instead of aborting the whole request with a

        single HTTP error code.'
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    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
    CampaignGroupResponse:
      properties:
        id:
          type: string
          format: uuid
          title: Id
        name:
          type: string
          title: Name
        is_default:
          type: boolean
          title: Is Default
        is_archived:
          type: boolean
          title: Is Archived
        schedule_paused:
          type: boolean
          title: Schedule Paused
        created_at:
          type: string
          format: date-time
          title: Created At
        campaign_count:
          anyOf:
          - type: integer
          - type: 'null'
          title: Campaign Count
        last_run_at:
          anyOf:
          - type: string
            format: date-time
          - type: 'null'
          title: Last Run At
      type: object
      required:
      - id
      - name
      - is_default
      - is_archived
      - schedule_paused
      - created_at
      title: CampaignGroupResponse
      description: Campaign group info returned by the API.
  securitySchemes:
    HTTPBearer:
      type: http
      scheme: bearer