Skip to main content

API for Publishers

Written by Olga

API authorization with Bearer Token

The Publisher API uses Bearer Token authorization. Add an "Authorization" header with the value "Bearer X" to your request, where "X" is your personal token. The token is issued by your manager; in the publisher dashboard it is visible under "Profile and settings" ("Reset Token" — to reset). The token has no expiration.

Base URL:

https://pub.kadam.net/api

Swagger documentation: https://pub.kadam.net/api-doc/
​ Accessible via API: Sources (sites), Places (blocks), Report builder (CustomReports), AdSpyGlass. Finances, payouts, wallets, notifications and referrals are available only via the dashboard (session-based authorization).
​ Terminology:
​

  • Source (site) — areaID, referred to in API as webmaster_source

  • Place (block / ad unit) — blockID, referred to in API as webmaster_block


​

Sources

List of sites

To fetch the list of sites with brief statistics, use the method POST /sources/sources-table
Data is equivalent to https://pub.kadam.net/platforms

Parameter

Value

Additional attributes

page

Page number (from 1)

int; optional (default 1)

perPage

Items per page

int; optional (default 20)

sort

Sorting. Key — column, value — "asc" / "desc"

object; optional

filters.dateFrom

Start of the period, format YYYY-MM-DD (default: today − 7 days)

string; optional

filters.dateTo

End of the period, format YYYY-MM-DD (default: today)

string; optional

filters.archive

0 — not archived, 1 — archived

int; optional (default 0)

filters.timezone

Timezone from -12 to 12. If omitted — the account timezone is used

int; optional

tableFilters

Array of column filters. Each item: {"column": "...", "childField": "...", "value": "...", "compareType": 0..4, "include": [...], "exclude": [...]}. compareType: 0 — "=", 1 — ">", 2 — "<", 3 — ">=", 4 — "<=".

array of objects; optional

Example request:
​

POST https://pub.kadam.net/api/sources/sources-table
Authorization: Bearer YOUR_TOKEN
Content-Type: application/json
{
    "page": 1,
    "perPage": 20,
    "sort": {"dateCreated": "desc"},
    "filters": {
        "dateFrom": "2026-03-01",
        "dateTo": "2026-03-31",
        "archive": 0,
    },
        "timezone": 0
    "tableFilters": []
}

Create a site

To create a site (first step), use the method PUT /sources

Parameter

Value

Additional attributes

name

Site name

string; required

url

Site URL

string; required

state

On creation always "oninit"

string; required

Example request:
​

PUT https://pub.kadam.net/api/sources
Authorization: Bearer YOUR_TOKEN
Content-Type: application/json
{
    "name": "My Site",
    "url": "https://example.com",
    "state": "oninit"
}

Get site information

To fetch all settings of a site, use the method GET /sources/{id}
Path parameter: id — site ID (areaID), int. Example request:
​

GET https://pub.kadam.net/api/sources/12345
Authorization: Bearer YOUR_TOKEN

Update a site

To add data at the next creation steps, use the method PUT /sources/{id}
Path parameter: id — site ID, int.
The body contains the site fields to update (set depends on the stage). Full schema — see Swagger: https://pub.kadam.net/api-doc/#/sources/put_sources__id_

Site state actions

To change the state of a site, the following methods are used:

  • POST /sources/{id}/activate — activate the site

  • POST /sources/{id}/deactivate — pause the site

  • POST /sources/archive/{id} — move to archive

  • POST /sources/un-archive/{id} — restore from archive

Path parameter: id — site ID, int. No request body required. Example request:
​

POST https://pub.kadam.net/api/sources/12345/activate
Authorization: Bearer YOUR_TOKEN

Places (blocks)

List of blocks for a site

To fetch the list of blocks on a site with brief statistics, use the method POST /places/places-table/{id}
Path parameter: id — site ID (areaID), int.
Data is equivalent to https://pub.kadam.net/platforms/{id} Request body is the same TableFilters object as for the sites list (page, perPage, sort, filters.dateFrom/dateTo/archive/timezone, tableFilters). Example request:
​

POST https://pub.kadam.net/api/places/places-table/12345
Authorization: Bearer YOUR_TOKEN
Content-Type: application/json
{
    "page": 1,
    "perPage": 20,
    "filters": {
        "dateFrom": "2026-03-01",
        "dateTo": "2026-03-31",
        "archive": 0,
        "timezone": 0
    },
    "tableFilters": []
}

Values for block table filters

To fetch the list of possible include/exclude values for block table filters, use the method POST /places/places-table/table-filters

Parameter

Value

Additional attributes

column

Column for which the list is requested

string; required

field

Filter field within the column

string; optional

Block state actions

To change the state of a block, the following methods are used:

  • POST /places/{id}/activate — activate the block

  • POST /places/{id}/deactivate — pause the block

  • DELETE /places/{id} — move to archive

  • POST /places/{id}/restore — restore from archive

Path parameter: id — block ID (blockID), int. Example request:
​

POST https://pub.kadam.net/api/places/98765/activate
Authorization: Bearer YOUR_TOKEN

Users

User information

To fetch updated user info (balance, unread notifications counter), use the method POST /users/check-upd

Parameter

Value

Additional attributes

notificationsLimit

Maximum number of unread notifications to return

int; optional

Example request:
​

POST https://pub.kadam.net/api/users/check-upd
Authorization: Bearer YOUR_TOKEN
Content-Type: application/json
{"notificationsLimit": 10}

Report builder (Custom Reports)

List of groupings, metrics and periods

To fetch the list of available groupings, metrics, and preconfigured periods, use the method OPTIONS /custom-reports Example request:
​

OPTIONS https://pub.kadam.net/api/custom-reports
Authorization: Bearer YOUR_TOKEN

Get statistics

The main method for building statistics — POST /custom-reports/data

Parameter

Value

Additional attributes

groups

Array of groupings (see list below)

array of string; required

metrics

Array of metrics (see list below)

array of string; required

filters.dateFrom / filters.dateTo

Period, format YYYY-MM-DD

string; required (or filters.period)

filters.period

Preconfigured period instead of dateFrom/dateTo: today, yesterday, 7days, 14days, month, prevMonth

string; optional

filters.timezone

Timezone from -12 to 12

int; optional

filters.filters

Array of column filters: [{"id": "webmaster_source", "type": "list", "include": [areaId1, areaId2]}, ...]

array of objects; optional

sort

Sorting: {"column_key": "asc"|"desc"}

object; optional

page / perPage

Pagination

int; optional

compare

Comparison with another period: {"dateFrom": "YYYY-MM-DD", "dateTo": "YYYY-MM-DD", "mode": "diff"|"percent"|"compare_value", "period": "...", "sort": false}. null — no comparison

object; optional

Groupings (groups):

  • Time: time_hour, time_day, time_week, time_month

  • Traffic: traffic_region (country/region), traffic_browser, traffic_platform (OS), traffic_platformVersion, traffic_device, traffic_deviceType (mobile/desktop/tablet), traffic_subsAge, traffic_pageCategory, traffic_blockFormat, traffic_blockSize

  • Traffic (full table only, data appears with a delay): traffic_domain, traffic_macros (subID), traffic_pid

  • Publisher: webmaster_source (areaID), webmaster_block (blockID), webmaster_subId

Metrics (metrics):

  • Traffic: traffic_visits (unique visits), traffic_views (material impressions), traffic_blockViews (block impressions), traffic_clicks, traffic_viewRate (%), traffic_trafficback, traffic_subscriptions, traffic_unsubscriptions

  • Finances: finance_moneyIn (revenue, account currency)

  • Publisher: webmaster_cpm (CPM by material impressions), webmaster_cpc, webmaster_blockCTR (%), webmaster_blockCPM (CPM by block impressions)

Example request — statistics by country and SubID for yesterday:
​

POST https://pub.kadam.net/api/custom-reports/data
Authorization: Bearer YOUR_TOKEN
Content-Type: application/json
{
    "groups": ["traffic_region", "webmaster_subId"],
    "metrics": ["traffic_views", "traffic_clicks", "finance_moneyIn"],
    "filters": {
    },
        "filters": [
            {"id": "webmaster_source", "type": "list", "include": [12345]}
        ],
        "period": "yesterday",
        "timezone": 0
    "sort": {"traffic_views": "desc"},
    "compare": null
}

Note: block filter — {"id": "webmaster_block", "type": "list", "include": [blockId]}.
Instead of period you can pass "dateFrom": "2026-03-01", "dateTo": "2026-03-07".
Groupings traffic_domain, traffic_macros, traffic_pid are available only from the full table and appear with a delay.

Filter values for statistics

To fetch the list of possible values for a specific filter, use the method POST /custom-reports/filter-data

Parameter

Value

Additional attributes

id

Column key for which the list is requested (e.g. webmaster_source)

string; required

searchQuery

Search string (for filters with filterSync = true)

string; optional

AdSpyGlass (ASG)

List of active blocks

To fetch the list of active blocks working with AdSpyGlass, use the method GET /partners/asg/blocks

Parameter

Value

Additional attributes

token

API token (passed as a query parameter)

string; required

Example request:
​

GET https://pub.kadam.net/api/partners/asg/blocks?token=YOUR_TOKEN

Get block data

To fetch data of a specific ad block, use the method GET /partners/asg/block

Parameter

Value

Additional attributes

token

API token

string; required

zone_id

Block ID

int; required

Example request:
​

GET https://pub.kadam.net/api/partners/asg/block?token=YOUR_TOKEN&zone_id=98765

Common rules

Common response format

{ "success": true, "code": 0, "msg": {}, "data": { ... } }

On error success = false, the msg field contains the error description.

Pagination

List endpoints accept:

  • page — page number, int (from 1, default 1)

  • perPage — items per page, int (default 20)

Sorting

Sorting is specified as an object {"column_key": "asc"|"desc"}. Allowed keys depend on the method.

Table filters (tableFilters / filters.filters)

In the sites and blocks tables, filters are specified as a tableFilters array:

  • column — column

  • childField — field for multiselect filters

  • value — search string or number (compareType: 0="=", 1=">", 2="<", 3=">=", 4="<=")

  • include / exclude — arrays of values to include/exclude

In the report builder — filters.filters array of the form {"id": "key", "type": "list"|"range"|"value"|"value_like"|"value_combined", "include": [...], "exclude": [...], "range": {"from": "...", "to": "..."}}.

What is available via API

Via Bearer Token: Sources (CRUD, activation/archive), Places (activation/archive), Report builder (statistics + filters), AdSpyGlass. Finances, payouts, wallets, notifications, referrals — only via the dashboard.

Did this answer your question?