openapi: "3.0.0" info: title: "Skai API" description: "# Overview\nSkai APIs provide programmatic access to advertising data\ \ and campaign management across Search, Social, and Retail Media publishers.\n\ \n## Choosing the Right API\n\n| What you want to do | API to use | Scale | Notes\ \ |\n|---|---|---|---|\n| Pull performance data, metrics, or any reportable field\ \ | [Reporting](#tag/Synchronous-Reports) or [Async Reporting](#tag/Asynchronous-Reports)\ \ | Unlimited | Primary data access API — the main Skai value-prop |\n| Discover\ \ what columns and metrics are available | [Available Columns](#operation/getAvailableColumns)\ \ | — | Full list of reportable fields per entity type |\n| Create or update campaigns,\ \ keywords, bids, budgets, targeting, and more — at scale | [Bulk Update (One\ \ File)](#tag/Bulk-Update) | Millions of rows | Supports Skai's main entity types\ \ and hundreds of attributes; all publishers except Meta |\n| Create/update a\ \ small number of campaigns or ad groups (common attributes only) | [Campaigns](#tag/Campaigns)\ \ / [Ad Groups](#tag/Ad-Groups) / [Ads](#tag/Ads) | Thousands | Limited attribute\ \ set — use Bulk Update for full control |\n| Manage Meta (Facebook/Instagram)\ \ entities | [Meta Campaigns](#tag/Meta-Campaigns) / [Meta Ad Groups](#tag/Meta-Ad-Groups)\ \ / [Meta Ads](#tag/Meta-Ads) | Thousands | Meta-specific tag and attribution\ \ management |\n| Use Skai from an AI coding assistant (Claude, Cursor, ChatGPT,\ \ Windsurf) | [MCP Integration](#tag/MCP) | — | Full reporting access via natural\ \ language |\n\nSkai APIs are RESTful and language agnostic. Authentication uses\ \ Bearer tokens over HTTPS.\n\n## What Data Can I Access?\n\nSkai aggregates advertising\ \ data across three publisher categories:\n\n| Publisher category | Examples |\n\ |---|---|\n| **Search** | Google Ads, Microsoft Ads, Yahoo Japan, Baidu, and others\ \ |\n| **Social (excl. Meta)** | Pinterest, Snapchat, TikTok, LinkedIn, Reddit,\ \ and others |\n| **Social (Meta)** | Facebook, Instagram |\n| **Retail Media**\ \ | Amazon Ads, Walmart, Instacart, Kroger, Target, and 100+ others |\n\n**Reportable\ \ entity types:**\n\n| Entity | Description | Publishers |\n|---|---|---|\n| `CAMPAIGN`\ \ | Campaign-level data | All |\n| `ADGROUP` | Ad group / ad set level | All |\n\ | `KEYWORD` | Keyword-level performance and settings | Search, Retail Media |\n\ | `AD` | Individual ad creatives | All |\n| `PRODUCT_ASSET` | Product-level data\ \ for shopping and retail media (called \"Products\" in the Skai UI) | Retail\ \ Media, Search Shopping |\n| `PRODUCT_TARGETING` | Product targeting entities\ \ — ASINs, categories, and product attributes | Retail Media |\n| `PORTFOLIO`\ \ | Portfolio-level budget aggregations and pacing | All |\n\n**Available metric\ \ categories per entity:**\n\n- **Performance** — Impressions, Clicks, Cost, Conversions,\ \ Revenue, ROAS, CTR, CPC, and more\n- **Attributes** — Names, statuses, budgets,\ \ bids, targeting settings, and publisher-specific fields\n- **Account-configured**\ \ — Dimensions (custom tagging labels), Conversion events (publisher, pixel, and\ \ 3rd-party), Custom Metrics (formula-based calculations your team defines)\n\n\ Use [Available Columns](#operation/getAvailableColumns) to see the complete column\ \ list for any entity — including full descriptions and types. A static reference\ \ is embedded in that endpoint's documentation.\n\n\n## Authentication\nThe Skai\ \ API uses the Bearer authentication scheme.\nThe first step is to generate a\ \ *refresh token* (once), which you can then exchange for a temporary *access\ \ token*, programmatically, before making an API call.\n\n> Note: The user you\ \ use to generate your *refresh token* will determine the token's permissions.\ \ API access is allowed for users with Standard role or higher.\nIt is recommended\ \ that you create and use a specialized user for your API requests.\n\n\n####\ \ Step 1: Get a Refresh Token\nYou only need to do this once, for each API user\ \ you plan to use. \n\nLog into [this page](https://login.kenshoo.com/api/dev/refresh-token)\ \ in order to get your *refresh token* and *client ID*. The user you log in with\ \ will be the user accessing the API. \nPlease store your refresh token in a secure\ \ place. While it is not possible to recover a refresh token, you can generate\ \ a new one. The refresh token does not expire.\n\n\n#### Step 2: Generating an\ \ Access Token\nBefore making API calls, your code uses the permanent *refresh\ \ token* to generate a temporary *access token*.\n\nMake a call to /api/v1/token\ \ (as shown below) with your *refresh token* and *client ID* to generate an *access\ \ token*:\n\n curl -X POST -d \"refresh_token=&client_id=\" \\\n https://services.kenshoo.com/api/v1/token\n\nNote: the client_id\ \ and refresh token should be sent in the POST request body, as the refresh token\ \ is confidential and should not be sent as url param.\nthe API will reject refresh\ \ tokens sent in url params.\n\nGet token for specific agency context:\nIn case\ \ your API user is assigned to multi accounts (agencies), you should explicitly\ \ specify in the get access-token request which agency context you would like\ \ to receive the token for.\nJust add to the request mentioned above another form\ \ param called *agency_id*, and pass the relevant agency ID like this:\n \n\ \ curl -X POST -d \"refresh_token=&client_id=&agency_id=\" \\\n https://services.kenshoo.com/api/v1/token\n\nToken expiration:\n\ Please check for token expiration before sending another API request , you have\ \ 2 options:\n\n1. Call the API and get 401 status code indicating authentication\ \ failed.\n2. Consider the *expires_in* field of the token to issue a new access\ \ token.\n\nThe response will return a JSON containing the token and time for\ \ expiration in seconds.\nIt is recommended to use the token expiration time and\ \ reuse tokens while they are still valid, to prevent rate limit issues with generating\ \ new tokens too often.\n\n {\"email\":\"my.user@skai.io\",\"expires_in\":21600,\"\ access_token\":\"eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJzaGxvbWkuY29oZW5Ac2thaS5pbyIsImV4cCI6MTcxNDU2NjgxMSwiaXNzIjoiaHR0cDovL2tlbnNob28uY29tL2xvZ2luLXNlcnZlciIsInVzZXJpZCI6MzU5NDMsImFnZW5jeUlkIjoxNSwibmFtZSI6IlNobG9taSBDb2hlbiIsInJvbGVzIjpbIktlbnNob28gQWRtaW4iLCJTa2FpIERldmVsb3BlciJdLCJhZ2VuY3lfcm9sZXMiOlt7ImFnZW5jeUlkIjoxNSwicm9sZSI6IktlbnNob28gQWRtaW4ifV0sImJpbGxpbmdJZCI6OTIwMzEsImFwaWMiOiI5MjAzMSIsIm9yaSI6ImFwaSIsImFsbG93ZWRfYXBwcyI6W119.R3tHoaecUrMGzijnF5suo9SVsffXWbWxdMv5fdB3Jx8\"\ }\n\n\n\n\n\n#### Step 3: Making an API call\nWith any API call to all Skai APIs,\ \ you must send a valid *access token* in the Authorization header when making\ \ requests. For example:\n\n curl -H \"Authorization: Bearer \" -X POST\ \ \\\n https://services.kenshoo.com/api/v1/campaigns\n\n\n## Rate Limits\n\ API calls are limited per user, to the following:\n - 60 requests per minute\n\ \ - 2,000 requests per hour\n\nWhen you meet the limit, you receive the following\ \ 429 HTTP error: “API rate limit exceeded”.\nWhen calling any API endpoint the\ \ response headers will show the limits relevant to this user, and the number\ \ of remaining calls you can make within the current minute/hour.\n\n\n## Reporting\ \ Best Practices\n\n- **Filter for non-zero data:** For performance reports, filter\ \ to rows where a key metric (e.g., impressions > 0) to reduce report size and\ \ speed up generation.\n- **Scope structure reports:** Apply a filter like \"\ Last updated > X days ago\" to retrieve only recently changed entities.\n- **Use\ \ Async for large datasets:** If your report may return more than a few thousand\ \ rows, use [Async Analysis Reports](#tag/Asynchronous-Reports) and poll for results\ \ rather than the synchronous endpoint.\n\n\n## Group by and Segmentation\n###\ \ Understanding Group by and Segmentation\nWhen querying the /api/v1/reports/async/analysis\ \ and /reports endpoints, the breakdown_type parameter\ndetermines how data is\ \ structured.\n- FLAT: Returns unsegmented data without any grouping.\n- GROUP:\ \ Allows data segmentation based on specified columns (e.g., by date).\n- SEGMENT:\ \ Enables segmentation by date and an additional column, such as CampaignId.\n\ \n### How Group by works\nWhen using \"breakdown_type\": \"GROUP\", the group_bys\ \ parameter defines how the data is grouped. For instance:\n\"group_bys\": [ {\ \ \"name\": \"Day\", \"group\": \"TimeSegment\" } ]\n This groups\ \ data only by date, meaning campaign details won’t be included, similar to what\ \ is displayed in the grid export.\n\n| Conv. | Cost | Day |\n|-------|------|------------|\n\ | 2 | 100 | 09/29/2024 |\n| 3 | 200 | 09/28/2024 |\n\n### Using SEGMENT\ \ for Additional Grouping\nTo segment data by both date and another column (e.g.,\ \ CampaignId), use \"breakdown_type\": \"SEGMENT\", specifying only the date column\ \ under group_bys while including the additional column in fields. Example:\n\"\ breakdown_type\": \"SEGMENT\",\n\"group_bys\": [ { \"name\": \"Day\", \"group\"\ : \"TimeSegment\" } ],\n\"fields\": [ { \"name\": \"CampaignId\", \"group\": \"\ ATTRIBUTES\" } ]\n\nThis ensures data is segmented by day while preserving campaign\ \ details.\n\n| Campaign ID | Conv. | Cost | Day |\n|-------------|-------|------|------------|\n\ | 25000 | 1 | 50 | 09/29/2024 |\n| 25001 | 1 | 50 | 09/29/2024\ \ |\n| 25000 | 2 | 150 | 09/28/2024 |\n| 25001 | 1 | 50\ \ | 09/28/2024 |\n" 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: "Profile" description: "
\nPublishers:\nSearch\nSocial (excl. Meta)\nRetail Media\n\
\n" - name: "Campaigns" description: "Create, update, and retrieve campaigns.\n\n> **Scope:** This API covers\ \ common campaign attributes — name, budget, bid, status, dates, and campaign\ \ type.\n> For the full range of campaign settings (targeting, extensions, dimension\ \ labels, and publisher-specific fields)\n> use [Bulk Update (One File)](#tag/Bulk-Update),\ \ which handles millions of rows across all non-Meta publishers.\n\n
\nPublishers:\n\ Search\n\ Social\ \ (excl. Meta)\nRetail Media\n
\n" - name: "Ad Groups" description: "Create, update, and retrieve ad groups.\n\n> **Scope:** This API covers\ \ common ad group attributes — name, bid, status, and targeting basics.\n> For\ \ the full range of ad group settings use [Bulk Update (One File)](#tag/Bulk-Update).\n\ \n
\nPublishers:\nSearch\nSocial (excl. Meta)\nRetail Media\n
\n" - name: "Ads" description: "Create, update, and retrieve ads.\n\n> **Scope:** This API covers\ \ status updates and tag management for ads.\n> For full ad creation and attribute\ \ management use [Bulk Update (One File)](#tag/Bulk-Update).\n\n
\nPublishers:\n\ Search\n\ Social\ \ (excl. Meta)\nRetail Media\n
\n" - name: "Product Groups" description: "Create, update, and retrieve product groups for Shopping campaigns.\n\ \n> **Scope:** Covers product group creation and status updates.\n> For bulk product\ \ group management use [Bulk Update (One File)](#tag/Bulk-Update).\n\n
\nPublishers:\n\ Search\ \ Shopping\nPinterest Shopping\n
\n" - name: "Portfolios" description: "Retrieve and update portfolio budgets and settings.\n\n
\nPublishers:\n\ Search\n\ Social\ \ (excl. Meta)\nRetail Media\n
\n" - name: "Meta Campaigns" description: "Manage dimension tags on Meta campaigns.\n\n> **Scope:** This section\ \ covers applying and removing Skai dimension labels on Meta campaigns.\n> For\ \ Meta campaign creation and full management, contact your Skai account team.\n\ \n
\nPublishers:\nMeta\n
\n" - name: "Meta Ad Groups" description: "Manage dimension tags on Meta ad groups.\n\n> **Scope:** This section\ \ covers applying and removing Skai dimension labels on Meta ad groups.\n\n
\n\ Publishers:\nMeta\n
\n" - name: "Meta Ads" description: "Manage dimension tags on Meta ads.\n\n> **Scope:** This section covers\ \ applying and removing Skai dimension labels on Meta ads.\n\n
\nPublishers:\n\ Meta\n\
\n" - name: "Reports" description: "
\nPublishers:\nSearch\nSocial (incl. Meta)\nRetail Media\n\
\n" - name: "Async Reports" description: "
\nPublishers:\nSearch\nSocial (incl. Meta)\nRetail Media\n\
\n" - name: "Jobs" description: "Operations that can take more than a few seconds are defined as **jobs**.\n\ Initiating such operations will return a _job_id_, which can then be used to query\ \ the status of the job, and once completed to query the job results.\n" - name: "Bulk Update" description: "
\nPublishers:\nSearch\nSocial (excl. Meta)\nRetail Media\n\
\n" - name: "MCP" description: "The Skai **Model Context Protocol (MCP) server** lets AI coding assistants\ \ query your Skai\ndata and take actions directly inside your development environment\ \ — no custom API code required.\n\n**Supported clients:** Claude Code, Claude\ \ Desktop, Claude Web, Cursor, VS Code, Windsurf, ChatGPT\n\n**Setup guide:**\ \ https://skai-mcp-guide.vercel.app/\n\n**Authentication:** Generate a Personal\ \ Access Token (PAT) at https://login.kenshoo.com/api/dev/refresh-token\n(valid\ \ 90 days, separate from the standard API Bearer token).\n\n**Available MCP tools:**\n\ \n| Tool | Description |\n|------|-------------|\n| `fetch_report` | Retrieve\ \ reporting data for campaigns, ad groups, keywords, ads, or products |\n| `relevant_columns`\ \ | Identify which columns are applicable for a given query |\n| `get_today` |\ \ Get current-day reporting metrics |\n| `get_change_log` | Retrieve the change\ \ log for campaigns and other entities |\n| `get_competitive_context` | Retrieve\ \ competitive brand data and context |\n\n**Quick setup for Claude Code** — add\ \ to `.claude/settings.json`:\n```json\n{\n \"mcpServers\": {\n \"skai\":\ \ {\n \"type\": \"http\",\n \"url\": \"https://mcp.kenshoo.com/reports-mcp\"\ ,\n \"headers\": {\n \"Authorization\": \"Bearer \"\ ,\n \"ks-name\": \"\"\n }\n }\n }\n}\n```\n\nFor\ \ other platforms (Cursor, ChatGPT, Claude Desktop) see the full setup guide at\ \ https://skai-mcp-guide.vercel.app/\n" paths: /api/v1/add-ons/{addon_id}: get: summary: "get addon usage by id and billing account id" operationId: "getAddonUsage" responses: 200: description: "200 response" 500: description: "500 response" options: description: "For cross-origin requests" responses: default: description: "The operation was completed successfully" /api/v1/accounts/{billingAccountId}/add-ons-request: post: summary: "create add ons request" operationId: "requestAddon" responses: 200: description: "200 response" 500: description: "500 response" options: description: "For cross-origin requests" responses: default: description: "The operation was completed successfully" /api/v1/accounts/addon-request: post: summary: "create add ons request" operationId: "requestAddonNew" responses: 200: description: "200 response" 500: description: "500 response" options: description: "For cross-origin requests" responses: default: description: "The operation was completed successfully" /api/v1/accounts/{billingAccountId}/addons: get: summary: "get account addons data" operationId: "getAddonsData" responses: 200: description: "200 response" 500: description: "500 response" options: description: "For cross-origin requests" responses: default: description: "The operation was completed successfully" /api/v1/add-ons: get: summary: "get addons usage by billing account id" operationId: "getAddonsUsage" responses: 200: description: "200 response" 500: description: "500 response" options: description: "For cross-origin requests" responses: default: description: "The operation was completed successfully" /api/v1/accounts/spend: get: summary: "get account spend data" operationId: "getSpendDataNew" responses: 200: description: "200 response" 500: description: "500 response" options: description: "For cross-origin requests" responses: default: description: "The operation was completed successfully" /api/v1/add-ons/{billingAccountId}/usage: put: summary: "update add-on usage data" operationId: "updateAddonUsage" responses: 200: description: "200 response" 500: description: "500 response" options: description: "For cross-origin requests" responses: default: description: "The operation was completed successfully" /api/v1/accounts/topmost-parent: get: summary: "get topmost parent by billing account id" operationId: "getTopmostParent" responses: 200: description: "200 response" 500: description: "500 response" options: description: "For cross-origin requests" responses: default: description: "The operation was completed successfully" /api/v1/accounts/addons: get: summary: "get account addons data" operationId: "getAddonsDataNew" responses: 200: description: "200 response" 500: description: "500 response" options: description: "For cross-origin requests" responses: default: description: "The operation was completed successfully" /api/v1/accounts/{billingAccountId}/data: get: summary: "get account plan overview data" operationId: "getAccountData" responses: 200: description: "200 response" 500: description: "500 response" options: description: "For cross-origin requests" responses: default: description: "The operation was completed successfully" /api/v1/accounts/{billingAccountId}/spend: get: summary: "get account spend data" operationId: "getSpendData" responses: 200: description: "200 response" 500: description: "500 response" options: description: "For cross-origin requests" responses: default: description: "The operation was completed successfully" /api/v1/relevant-columns: post: summary: "Get relevant columns" operationId: "getRelevantColumns" responses: 200: description: "200 response" 400: description: "400 response" 500: description: "500 response" options: description: "For cross-origin requests" responses: default: description: "The operation was completed successfully" /api/v1/spotlight: post: summary: "request spotlight and segments data" operationId: "createSpotlight" responses: 200: description: "200 response" 400: description: "400 response" 500: description: "500 response" options: description: "For cross-origin requests" responses: default: description: "The operation was completed successfully" /api/v1/spotlights/ai/conversation/message: post: summary: "ask a question" operationId: "askSpotlightAiQuestion" responses: 200: description: "200 response" 400: description: "400 response" 500: description: "500 response" options: description: "For cross-origin requests" responses: default: description: "The operation was completed successfully" /api/v1/spotlights/available_metrics: get: summary: "request spotlight and segments data" operationId: "getSpotlightMetrics" responses: 200: description: "200 response" 400: description: "400 response" 500: description: "500 response" options: description: "For cross-origin requests" responses: default: description: "The operation was completed successfully" /api/v1/spotlight/read-status: post: summary: "update spotlight read status" operationId: "markSpotlightRead" responses: 200: description: "200 response" 500: description: "500 response" options: description: "For cross-origin requests" responses: default: description: "The operation was completed successfully" /api/v1/spotlights/ai/conversation/message/{messageId}: get: summary: "ask a question" operationId: "getSpotlightAiAnswer" responses: 200: description: "200 response" 400: description: "400 response" 500: description: "500 response" options: description: "For cross-origin requests" responses: default: description: "The operation was completed successfully" /api/v1/spotlights/ai/conversation: post: summary: "request conversation" operationId: "createSpotlightAiConversation" responses: 200: description: "200 response" 400: description: "400 response" 500: description: "500 response" options: description: "For cross-origin requests" responses: default: description: "The operation was completed successfully" /api/v1/spotlight/export: post: summary: "exports spotlights of specific KS, view and profiles." operationId: "exportSpotlight" responses: 200: description: "200 response" 401: description: "User unauthorized" 500: description: "unexpected error" options: description: "For cross-origin requests" responses: default: description: "The operation was completed successfully" /api/v1/spotlight/pivot-drill-down: post: summary: "request spotlight pivot drill down" operationId: "spotlightPivotDrillDown" responses: 200: description: "200 response" 400: description: "400 response" 500: description: "500 response" options: description: "For cross-origin requests" responses: default: description: "The operation was completed successfully" /api/v1/incrementality/agencies/{agency_id}/data_sources/{data_source_id}: put: summary: "update data source" operationId: "updateDataSource" parameters: - name: "agency_id" in: "path" required: true style: "simple" explode: false schema: type: "integer" format: "int32" - name: "data_source_id" in: "path" required: true style: "simple" explode: false schema: type: "integer" format: "int32" responses: 200: description: "200 response" 300: description: "300 response" options: summary: "update data source options" responses: 200: description: "200 response" 300: description: "300 response" /api/v1/incrementality/agencies/{agency_id}/data_sources/info: post: summary: "get data source info by name" operationId: "getDataSourceInfo" parameters: - name: "agency_id" in: "path" required: true style: "simple" explode: false schema: type: "integer" format: "int32" responses: 200: description: "200 response" 300: description: "300 response" options: summary: "get data source info by name options" responses: 200: description: "200 response" 300: description: "300 response" /api/v1/incrementality/agencies/{agency_id}/data_load_tasks/{data_load_task_id}: get: summary: "get data load task new" operationId: "getDataLoadTaskForAgency" parameters: - name: "agency_id" in: "path" required: true style: "simple" explode: false schema: type: "integer" format: "int32" - name: "data_load_task_id" in: "path" required: true style: "simple" explode: false schema: type: "integer" format: "int32" responses: 200: description: "200 response" 300: description: "300 response" options: summary: "incrementality data loader options" responses: 200: description: "200 response" 300: description: "300 response" /api/v1/incrementality/files/upload: post: summary: "Upload source file to S3" operationId: "uploadSourceFile" responses: 200: description: "200 response" 300: description: "300 response" options: summary: "incrementality data loader options" responses: 200: description: "200 response" 300: description: "300 response" /api/v1/incrementality/agencies/{agency_id}/data_load_tasks: post: summary: "create new data load task - new" operationId: "createDataLoadTaskForAgency" parameters: - name: "agency_id" in: "path" required: true style: "simple" explode: false schema: type: "integer" format: "int32" responses: 200: description: "200 response" 300: description: "300 response" options: summary: "incrementality data loader options" responses: 200: description: "200 response" 300: description: "300 response" /api/v1/incrementality/data_load_tasks: post: summary: "create new data load task" operationId: "createDataLoadTask" responses: 200: description: "200 response" 300: description: "300 response" options: summary: "incrementality data loader options" responses: 200: description: "200 response" 300: description: "300 response" /api/v1/incrementality/agencies/{agency_id}/data_sources/{data_source_id}/status: get: summary: "get data status" operationId: "getDataSourceStatus" parameters: - name: "agency_id" in: "path" required: true style: "simple" explode: false schema: type: "integer" format: "int32" - name: "data_source_id" in: "path" required: true style: "simple" explode: false schema: type: "integer" format: "int32" responses: 200: description: "200 response" 300: description: "300 response" options: summary: "get data status options" responses: 200: description: "200 response" 300: description: "300 response" /api/v1/incrementality/agencies/{agency_id}/data_sources: post: summary: "create new data source" operationId: "createDataSource" parameters: - name: "agency_id" in: "path" required: true style: "simple" explode: false schema: type: "integer" format: "int32" responses: 200: description: "200 response" 300: description: "300 response" options: summary: "create new data source options" responses: 200: description: "200 response" 300: description: "300 response" /api/v1/incrementality/data_load_tasks/{task_id}: get: summary: "get data load task" operationId: "getDataLoadTask" responses: 200: description: "200 response" 300: description: "300 response" options: summary: "incrementality data loader options" responses: 200: description: "200 response" 300: description: "300 response" /api/v2/agencies/{agency_id}/monitoring/results-explanation-file: get: summary: "Get test result explanation file" parameters: - name: "agency_id" in: "path" required: true style: "simple" explode: false schema: type: "integer" format: "int32" responses: 200: description: "200 response" 300: description: "300 response" options: summary: "Get test result explanation file" responses: 200: description: "200 response" 300: description: "300 response" /api/v1/chats/{chat_id}/exchanges/{exchange_id}/abort: put: summary: "Abort chat exchange" operationId: "abortChatExchange" responses: 200: description: "200 response" 400: description: "400 response" 500: description: "500 response" options: description: "For cross-origin requests" responses: default: description: "The operation was completed successfully" /api/v1/chats/{chat_id}/exchanges: get: summary: "Get Chat with its exchanges" operationId: "listChatExchanges" responses: 200: description: "200 response" 400: description: "400 response" 500: description: "500 response" post: summary: "Create chat exchange" operationId: "createChatExchange" responses: 200: description: "200 response" 400: description: "400 response" 500: description: "500 response" options: description: "For cross-origin requests" responses: default: description: "The operation was completed successfully" /api/v1/chats: get: summary: "Get user Chats" operationId: "listChats" responses: 200: description: "200 response" 400: description: "400 response" 500: description: "500 response" post: summary: "Create chat" operationId: "createChat" responses: 200: description: "200 response" 400: description: "400 response" 500: description: "500 response" options: description: "For cross-origin requests" responses: default: description: "The operation was completed successfully" /api/v1/chats/{chat_id}/exchanges/{exchange_id}: get: summary: "Get answer for exchange" operationId: "getChatExchange" responses: 200: description: "200 response" 400: description: "400 response" 500: description: "500 response" options: description: "For cross-origin requests" responses: default: description: "The operation was completed successfully" /api/v1/chats/{chat_id}: delete: summary: "Delete chat" operationId: "deleteChat" responses: 200: description: "200 response" 400: description: "400 response" 500: description: "500 response" options: description: "For cross-origin requests" responses: default: description: "The operation was completed successfully" /api/v1/portfolio-manager/{ksname}/portfolios/{portfolioId}/manual-pacing: get: summary: "Get manual pacing settings" operationId: "getManualPacing" responses: 200: description: "200 response" 400: description: "400 response" 500: description: "500 response" put: summary: "Update manual pacing settings" operationId: "updateManualPacing" responses: 200: description: "200 response" 400: description: "400 response" 500: description: "500 response" options: description: "For cross-origin requests" responses: default: description: "The operation was completed successfully" /api/v1/portfolio-manager/{ksname}/portfolios/{portfolioId}/planned-budgets: get: summary: "Get planned budgets" responses: 200: description: "200 response" 400: description: "400 response" 500: description: "500 response" put: summary: "Update planned budgets" responses: 200: description: "200 response" 400: description: "400 response" 500: description: "500 response" options: description: "For cross-origin requests" responses: default: description: "The operation was completed successfully" /api/v1/token: post: summary: "Get a new API access token" operationId: "getAccessToken" responses: 200: description: "200 response" security: [] /api/v1/templates/{type}/{id}: get: operationId: "getTemplate" responses: 200: description: "200 response" 401: description: "Unauthorized" 500: description: "unexpected error" /api/v1/error_report/{plan_id}/{execution_uuid}: get: operationId: "getErrorReport" responses: 200: description: "200 response" 401: description: "Unauthorized" 500: description: "unexpected error" /api/v1/operators: get: operationId: "getOperatorsConfig" responses: 200: description: "200 response" 500: description: "unexpected error" /api/v1/functions: get: operationId: "getFunctions" responses: 200: description: "200 response" 500: description: "unexpected error" /api/v1/profiles: post: tags: - "Profile" summary: "Copy an existing profile" description: "Create a new profile by copying an existing profile and applying\ \ all of its attributes to the new profile." operationId: "createProfile" parameters: - $ref: "#/components/parameters/ks" requestBody: $ref: "#/components/requestBodies/Profile" responses: 201: description: "New profile was created successfully" content: application/json: schema: $ref: "#/components/responses/ProfileApiResponse" example: status: "SUCCESS" entities: - id: 1234 success: true errors: [] created_accounts: - id: 123 channelType: "MSN" uniqueIdInTarget: "1234" profile_token: "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee" 400: description: "Bad request (usually indicates validation failure for client\ \ input)" content: application/json: schema: $ref: "#/components/responses/ProfileApiResponse" example: status: "FAILED" entities: - id: null success: false errors: - fieldName: "srcProfile" error: "SRC_PROFILE_NOT_EXISTS" 500: description: "Server error" content: application/json: schema: $ref: "#/components/responses/ProfileApiResponse" example: status: "FAILED" entities: - id: null success: false errors: - fieldName: "creationServerError" error: "Copying channel account failed - Unexpected error occurred." parameters: {} /api/v1/preview/formulas: post: operationId: "previewFormulas" responses: 200: description: "200 response" 500: description: "unexpected error" /api/v1/plans: post: operationId: "getPlans" responses: 200: description: "200 response" 500: description: "unexpected error" /api/v1/preview/{template_type}: post: operationId: "previewTemplate" responses: 200: description: "200 response" 500: description: "unexpected error" /api/v1/templates/{type}: get: operationId: "listTemplates" responses: 200: description: "200 response" 401: description: "Unauthorized" 500: description: "unexpected error" put: operationId: "updateTemplate" responses: 200: description: "200 response" 401: description: "Unauthorized" 500: description: "unexpected error" post: operationId: "createTemplate" responses: 200: description: "200 response" 401: description: "Unauthorized" 500: description: "unexpected error" patch: operationId: "patchTemplate" responses: 200: description: "200 response" 401: description: "Unauthorized" 500: description: "unexpected error" /api/v1/agencies/{agency_id}/monitoring/tests/{test_id}/algo-types/{algo_type}/datasources/{datasource_id}/monitoring-data: get: summary: "get test status by algo type" operationId: "getTestStatusByAlgoType" responses: 200: description: "200 response" 300: description: "300 response" options: summary: "get test status options" responses: 200: description: "200 response" 300: description: "300 response" /api/v1/agencies/{agency_id}/monitoring/tests/statuses: get: summary: "Get all test statuses per agency id" operationId: "getTestStatuses" parameters: - name: "agency_id" in: "path" required: true style: "simple" explode: false schema: type: "integer" format: "int32" responses: 200: description: "200 response" 300: description: "300 response" options: summary: "Get all test statuses options" responses: 200: description: "200 response" 300: description: "300 response" /api/v1/agencies/{agency_id}/monitoring/tests/{test_id}: get: summary: "get test status" operationId: "getTestStatusById" parameters: - name: "agency_id" in: "path" required: true style: "simple" explode: false schema: type: "integer" format: "int32" - name: "test_id" in: "path" required: true style: "simple" explode: false schema: type: "integer" format: "int32" responses: 200: description: "200 response" 300: description: "300 response" options: summary: "get test status options" responses: 200: description: "200 response" 300: description: "300 response" /api/v1/agencies/{agency_id}/monitoring/tests/{test_id}/data: get: summary: "export monitoring data" operationId: "exportTestMonitoringData" parameters: - name: "agency_id" in: "path" required: true style: "simple" explode: false schema: type: "integer" format: "int32" - name: "test_id" in: "path" required: true style: "simple" explode: false schema: type: "integer" format: "int32" responses: 200: description: "200 response" 300: description: "300 response" options: summary: "export monitoring data options" responses: 200: description: "200 response" 300: description: "300 response" /api/v1/reports/async/existing_report/{report_id}: post: tags: - "Asynchronous Reports" summary: "Configure and run any existing report by ID" description: "Trigger a run of an existing report, previously created in the\ \ Skai interface, by report ID. This is available for all report types in\ \ Skai" operationId: "runAsyncReportById" parameters: - $ref: "#/components/parameters/ks" - $ref: "#/components/parameters/useOriginalDeliveryMethod" requestBody: $ref: "#/components/requestBodies/asyncReportByIdRequest" responses: 201: description: "Report execution triggered successfully" headers: Location: description: "The `execution_id` of the report will show in this header.\ \ Use this ID to poll for the report status or to download the report.\ \ The value will be in this format: `https://api.kenshoo.com/v2/reports/runs/rpx-fec94574-152c-4e47-ba57-e5a4029d652e?ks=1234`.\ \ In this example, `rpx-fec94574-152c-4e47-ba57-e5a4029d652e` is the\ \ `execution_id`." style: "simple" explode: false schema: type: "string" content: application/json: schema: type: "string" example: "The response body will be empty. See the Location header\ \ to get the Execution ID" 400: description: "Invalid report request" 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/rotations: get: summary: "Fetch rotations by ksName and adGroupIds" responses: 200: description: "200 response" 400: description: "400 bad request" 500: description: "500 internal server error" post: summary: "Save rotations in bulk" responses: 200: description: "200 response" 400: description: "400 bad request" 500: description: "500 internal server error" delete: summary: "Delete rotations in bulk" responses: 200: description: "200 response" 400: description: "400 bad request" 500: description: "500 internal server error" options: description: "For cross-origin requests" responses: default: description: "The operation was completed successfully" /api/v2/ad_groups: get: tags: - "Meta Ad Groups" summary: "Get Ad Groups" description: "Get ad groups API call allows you to retrieve ad group information.\n\ The result is a list of ad group objects that can be paged through using the\ \ returned next_page/previous_page values.\n" parameters: - $ref: "#/components/parameters/ksV2" - $ref: "#/components/parameters/pageId" - $ref: "#/components/parameters/adGroupIds" - $ref: "#/components/parameters/limit" responses: 200: $ref: "#/components/responses/getFacebookAdGroupEntitySuccessResponse" 400: $ref: "#/components/responses/getAdGroupBadRequest" put: tags: - "Meta Ad Groups" summary: "Edit an existing ad group" parameters: - $ref: "#/components/parameters/ksV2" requestBody: $ref: "#/components/requestBodies/EditFacebookAdgroup" responses: 200: $ref: "#/components/responses/EntitySuccessResponse" 400: $ref: "#/components/responses/BadRequest" 500: $ref: "#/components/responses/InternalServerError" post: tags: - "Meta Ad Groups" summary: "Create a new ad group" parameters: - $ref: "#/components/parameters/ksV2" requestBody: $ref: "#/components/requestBodies/CreateFacebookAdgroup" responses: 201: $ref: "#/components/responses/EntitySuccessResponse" 400: $ref: "#/components/responses/BadRequest" 500: $ref: "#/components/responses/InternalServerError" /api/v2/ads: get: tags: - "Meta Ads" summary: "Get Ads" description: "Get ads API call allows you to retrieve ad information.\nThe result\ \ is a list of ad objects that can be paged through using the returned next_page/previous_page\ \ values.\n" parameters: - $ref: "#/components/parameters/ksV2" - $ref: "#/components/parameters/pageId" - $ref: "#/components/parameters/adIds" - $ref: "#/components/parameters/limit" responses: 200: $ref: "#/components/responses/getFacebookAdEntitySuccessResponse" 400: $ref: "#/components/responses/getAdBadRequest" put: tags: - "Meta Ads" summary: "Edit an existing ad" parameters: - $ref: "#/components/parameters/ksV2" requestBody: $ref: "#/components/requestBodies/editFacebookAd" responses: 200: $ref: "#/components/responses/EntitySuccessResponse" 400: $ref: "#/components/responses/BadRequest" 500: $ref: "#/components/responses/InternalServerError" post: tags: - "Meta Ads" summary: "Create a new ad" parameters: - $ref: "#/components/parameters/ksV2" requestBody: $ref: "#/components/requestBodies/createFacebookAd" responses: 201: $ref: "#/components/responses/EntitySuccessResponse" 400: $ref: "#/components/responses/BadRequest" 500: $ref: "#/components/responses/InternalServerError" /api/v2/campaigns: get: tags: - "Meta Campaigns" summary: "Get campaigns" description: "Get campaigns API call allows you to retrieve campaign information.\n\ The result is a list of campaign objects that can be paged through using the\ \ returned next_page/previous_page values.\n" parameters: - $ref: "#/components/parameters/ksV2" - $ref: "#/components/parameters/pageId" - $ref: "#/components/parameters/limit" - $ref: "#/components/parameters/campaignIds" responses: 200: $ref: "#/components/responses/getFacebookCampaignEntitySuccessResponse" 400: $ref: "#/components/responses/getFacebookCampaignBadRequest" put: tags: - "Meta Campaigns" summary: "Edit an existing campaign" parameters: - $ref: "#/components/parameters/ksV2" requestBody: $ref: "#/components/requestBodies/editFacebookCampaigns" responses: 200: $ref: "#/components/responses/EntitySuccessResponse" 400: $ref: "#/components/responses/BadRequest" 500: $ref: "#/components/responses/InternalServerError" post: tags: - "Meta Campaigns" summary: "Create a new campaign" parameters: - $ref: "#/components/parameters/ksV2" requestBody: $ref: "#/components/requestBodies/createFacebookCampaigns" responses: 201: $ref: "#/components/responses/EntitySuccessResponse" 400: $ref: "#/components/responses/BadRequest" 500: $ref: "#/components/responses/InternalServerError" /api/v2/budget_oversight/([0-9]+)/widget_data: get: summary: "Get widget data" responses: 200: description: "200 response" 300: description: "300 response" options: responses: 200: description: "201 response" 400: description: "Request is not valid" 500: description: "unexpected error" /api/v1/campaigns/tags: get: tags: - "Meta Campaigns" summary: "Get Campaigns tags" description: "Get campaign tags API call allows you to retrieve a tags assigned\ \ to campaign.\nThe result is a list of Campaign tags assignment objects that\ \ can be paged through using the returned next_page/previous_page values.\n" operationId: "getCampaignTags" parameters: - $ref: "#/components/parameters/ksV2" - $ref: "#/components/parameters/pageId" - $ref: "#/components/parameters/adGroupIds" - $ref: "#/components/parameters/limit" responses: 200: $ref: "#/components/responses/getEntityTagsSuccessResponse" 400: $ref: "#/components/responses/getEntityTagsBadRequest" put: tags: - "Meta Campaigns" summary: "Edit Campaign tags" operationId: "updateCampaignTags" parameters: - $ref: "#/components/parameters/ksV2" requestBody: $ref: "#/components/requestBodies/editEntityTagsRequest" responses: 200: $ref: "#/components/responses/EntitySuccessResponse" 400: $ref: "#/components/responses/BadRequest" 500: $ref: "#/components/responses/InternalServerError" /api/v1/ad_groups/tags: get: tags: - "Meta Ad Groups" summary: "Get Ad Groups tags" description: "Get ad group tags API call allows you to retrieve a tags assigned\ \ to ad group.\nThe result is a list of ad group tags assignment objects that\ \ can be paged through using the returned next_page/previous_page values.\n" operationId: "getAdGroupTags" parameters: - $ref: "#/components/parameters/ksV2" - $ref: "#/components/parameters/pageId" - $ref: "#/components/parameters/adGroupIds" - $ref: "#/components/parameters/limit" responses: 200: $ref: "#/components/responses/getEntityTagsSuccessResponse" 400: $ref: "#/components/responses/getEntityTagsBadRequest" put: tags: - "Meta Ad Groups" summary: "Edit Ad Group tags" operationId: "updateAdGroupTags" parameters: - $ref: "#/components/parameters/ksV2" requestBody: $ref: "#/components/requestBodies/editEntityTagsRequest" responses: 200: $ref: "#/components/responses/EntitySuccessResponse" 400: $ref: "#/components/responses/BadRequest" 500: $ref: "#/components/responses/InternalServerError" /api/v1/ads/tags: get: tags: - "Meta Ads" summary: "Get Ads tags" description: "Get ad tags API call allows you to retrieve a tags assigned to\ \ ad.\nThe result is a list of Ad tags assignment objects that can be paged\ \ through using the returned next_page/previous_page values.\n" operationId: "getAdsTags" parameters: - $ref: "#/components/parameters/ksV2" - $ref: "#/components/parameters/pageId" - $ref: "#/components/parameters/adGroupIds" - $ref: "#/components/parameters/limit" responses: 200: $ref: "#/components/responses/getEntityTagsSuccessResponse" 400: $ref: "#/components/responses/getEntityTagsBadRequest" put: tags: - "Meta Ads" summary: "Edit Ad tags" operationId: "updateAdsTags" parameters: - $ref: "#/components/parameters/ksV2" requestBody: $ref: "#/components/requestBodies/editEntityTagsRequest" responses: 200: $ref: "#/components/responses/EntitySuccessResponse" 400: $ref: "#/components/responses/BadRequest" 500: $ref: "#/components/responses/InternalServerError" /api/v1/attributions: get: tags: - "Campaign attribution window config" summary: "Get attribution window configs" description: "Get attribution config by Meta campaign id\n" operationId: "getAttributions" parameters: - $ref: "#/components/parameters/campaignIds" responses: 200: $ref: "#/components/responses/EntitySuccessResponse" 400: $ref: "#/components/responses/BadRequest" put: tags: - "Campaign attribution window config" summary: "Update campaign attribution config" operationId: "updateAttributions" parameters: - $ref: "#/components/parameters/ksV2" requestBody: $ref: "#/components/schemas/CreateUpdateAttribution" responses: 200: $ref: "#/components/responses/EntitySuccessResponse" 400: $ref: "#/components/responses/BadRequest" 500: $ref: "#/components/responses/InternalServerError" post: tags: - "Campaign attribution window config" summary: "Create campaign attribution configs" operationId: "createAttributions" parameters: - $ref: "#/components/parameters/ksV2" requestBody: $ref: "#/components/schemas/CreateUpdateAttribution" responses: 200: $ref: "#/components/responses/EntitySuccessResponse" 400: $ref: "#/components/responses/BadRequest" 500: $ref: "#/components/responses/InternalServerError" /api/v1/tests/{testId}/activationInstructions: get: summary: "get activation instructions result" operationId: "getActivationInstructions" responses: 200: description: "200 response" 500: description: "500 response" put: summary: "create activation instructions" operationId: "updateActivationInstructions" responses: 200: description: "200 response" 500: description: "500 response" options: description: "For cross-origin requests" responses: default: description: "The operation was completed successfully" /api/v1/brands/{agencyId}: get: summary: "get agency brands" operationId: "getAgencyBrands" responses: 200: description: "200 response" 500: description: "500 response" options: description: "For cross-origin requests" responses: default: description: "The operation was completed successfully" /api/v1/tasks/{taskId}: get: summary: "polling activation instructions" operationId: "getActivationInstructionsTask" responses: 200: description: "200 response" 500: description: "500 response" options: description: "For cross-origin requests" responses: default: description: "The operation was completed successfully" /api/v1/brands: post: summary: "create agency brand" operationId: "createAgencyBrand" responses: 200: description: "200 response" 500: description: "500 response" options: description: "For cross-origin requests" responses: default: description: "The operation was completed successfully" /api/v2/incrementality/agencies/{agency_id}/data_sources/{data_source_id}: put: summary: "update data source" parameters: - name: "agency_id" in: "path" required: true style: "simple" explode: false schema: type: "integer" format: "int32" - name: "data_source_id" in: "path" required: true style: "simple" explode: false schema: type: "integer" format: "int32" responses: 200: description: "200 response" 300: description: "300 response" options: summary: "update data source options" responses: 200: description: "200 response" 300: description: "300 response" /api/v2/incrementality/agencies/{agency_id}/data_sources: post: summary: "create new data source" parameters: - name: "agency_id" in: "path" required: true style: "simple" explode: false schema: type: "integer" format: "int32" responses: 200: description: "200 response" 300: description: "300 response" options: summary: "create new data source options" responses: 200: description: "200 response" 300: description: "300 response" /api/v1/reports/async/{execution_id}/status: get: tags: - "Asynchronous Reports" summary: "Poll report execution status" description: "After calling the API to trigger a report, the Skai query will\ \ begin processing. The runtime may vary between a few seconds and an hour,\ \ depending on the scope of the report and the amount of data returned.\n\n\ This API call is designed to be run at recurring polling intervals so that\ \ you can inquire from the Skai API when the report is ready. A best practice\ \ would be to run the report manually a few times to figure out the average\ \ run time before deciding on the polling interval you will use.\n\nFor reports\ \ that take an average of a few seconds, we recommend using a series of intervals\ \ such as 10s, 30s, or 60s. For reports that take an average of a number of\ \ minutes or more, we recommend using a series of intervals such as 10m, 20m,\ \ or 30m." operationId: "getAsyncReportStatus" parameters: - $ref: "#/components/parameters/ks" - name: "execution_id" in: "path" description: "The execution id received in response to the 'Run a Report'\ \ API call." required: true style: "simple" explode: false schema: type: "string" responses: 200: description: "Report execution triggered successfully" content: application/json: schema: type: "object" properties: status: type: "string" description: "Status description:\n * `COMPLETED` - Your report\ \ is ready to download.\n * `COMPLETED_WITH_ERRORS` - The report\ \ run was completed but there were some errors during report\ \ generation. If this issue persists, please contact Skai support.\n\ \ * `PARTIALLY_COMPLETED` - Some data may be missing from the\ \ report. If this issue persists, please contact Skai support.\n\ \ * `FAILED` - Skai could not run this report. If this issue\ \ persists, please contact Skai support.\n * `ABORTED` - Skai\ \ had to abort this report run. If this issue persists, please\ \ contact Skai support.\n * `FAILED_DATA_NOT_READY` - The data\ \ for the requested dates is not yet ready in Skai (this data\ \ is pulled into Skai from the publishers and from external\ \ vendors). Abort the flow and try again in an hour.\n" enum: - "COMPLETED" - "COMPLETED_WITH_ERRORS" - "PARTIALLY_COMPLETED" - "FAILED" - "ABORTED" - "FAILED_DATA_NOT_READY" example: status: "COMPLETED" 400: description: "Invalid request" content: application/json: schema: type: "object" properties: errorMessage: type: "string" errorCode: type: "string" example: errorCode: "SCHREP-04" errorMessage: "No execution found with execution id rxp-12345" 500: description: "Server error" content: application/json: schema: type: "object" properties: errorMessage: type: "string" /api/v1/external-reports: get: tags: - "External Reports" summary: "Get External Score Providers" description: "Two variants depending on parameters provided:\n- `profileId`\ \ only → lists all ESPs for the profile (`GET /api/v1/external-reports/{profileId}`)\n\ - `profileId` + `espId` → returns full config for one ESP (`GET /api/v1/external-reports/config/{profileId}/{espId}`)\n\ \nPass `espId = -1` to retrieve a blank default config (useful as a template\ \ when creating a new provider)." operationId: "getExternalReports" parameters: - $ref: "#/components/parameters/ks" - name: "profileId" in: "query" description: "Profile ID to retrieve providers for" required: true style: "form" explode: true schema: type: "integer" example: 123 - name: "espId" in: "query" description: "ESP ID to retrieve full config for. Pass -1 to get a blank default\ \ config." required: false style: "form" explode: true schema: type: "integer" example: 9 responses: 200: description: "List of ESPs or full ESP config object" content: application/json: schema: oneOf: - type: "array" items: $ref: "#/components/schemas/EspSummary" - $ref: "#/components/schemas/EspConfig" examples: list: summary: "List response" value: - id: 9 name: "My FTP Report" status: "Active" - id: 14 name: "Salesforce Report" status: "Paused" 404: description: "Profile or provider not found" content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" put: tags: - "External Reports" summary: "Update an existing ESP provider" description: "Replaces the full configuration of an existing ESP (`PUT /api/v1/external-reports/config/{profileId}/{espId}`).\n\ Provider name cannot be changed after creation. Send the complete config object\ \ — partial updates not supported (use PATCH for that).\n\n**Note:** GCS protocol\ \ is not supported." operationId: "updateExternalReport" parameters: - $ref: "#/components/parameters/ks" - name: "profileId" in: "query" description: "Profile ID the provider belongs to" required: true style: "form" explode: true schema: type: "integer" example: 123 - name: "espId" in: "query" description: "ID of the ESP to update" required: true style: "form" explode: true schema: type: "integer" example: 9 requestBody: content: application/json: schema: $ref: "#/components/schemas/EspConfig" required: true responses: 200: description: "Updated ESP configuration" content: application/json: schema: $ref: "#/components/schemas/EspConfig" 400: description: "Validation failed" content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" 404: description: "Provider not found" content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" post: tags: - "External Reports" summary: "Create a new ESP provider" description: "Creates a new External Score Provider under the given profile\ \ (`POST /api/v1/external-reports/config/{profileId}`).\nSend the full configuration\ \ in the request body. Use `GET` with `espId = -1` to get a blank config as\ \ a starting point.\n\n**Note:** GCS (Google Cloud Storage) protocol is not\ \ supported. Use the UI or multipart endpoint for GCS providers." operationId: "createExternalReport" parameters: - $ref: "#/components/parameters/ks" - name: "profileId" in: "query" description: "Profile ID to create the provider under" required: true style: "form" explode: true schema: type: "integer" example: 123 requestBody: content: application/json: schema: $ref: "#/components/schemas/EspConfig" required: true responses: 200: description: "Provider created — returns new provider ID" content: application/json: schema: type: "object" properties: id: type: "integer" description: "ID of the newly created provider" example: id: 42 400: description: "Validation failed (e.g. duplicate name, GCS protocol used)" content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" 500: description: "Server error" content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" delete: tags: - "External Reports" summary: "Delete an ESP provider" description: "Permanently deletes an External Score Provider (`DELETE /api/v1/external-reports/{profileId}/{espId}`)." operationId: "deleteExternalReport" parameters: - $ref: "#/components/parameters/ks" - name: "profileId" in: "query" description: "Profile ID the provider belongs to" required: true style: "form" explode: true schema: type: "integer" example: 123 - name: "espId" in: "query" description: "ID of the ESP to delete" required: true style: "form" explode: true schema: type: "integer" example: 9 responses: 204: description: "Provider deleted successfully" 404: description: "Provider not found" content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" /api/v1/profiles/{profile_id}: put: tags: - "Profile" summary: "Edit an existing profile" operationId: "updateProfile" parameters: - $ref: "#/components/parameters/ks" - $ref: "#/components/parameters/ProfileId" requestBody: $ref: "#/components/requestBodies/EditProfile" responses: 200: description: "Profile was edited successfully" content: application/json: schema: $ref: "#/components/responses/EditProfileApiResponse" example: status: "SUCCESS" entities: - id: 1234 success: true errors: [] paging: null error_message: null 400: description: "Bad request (usually indicates validation failure for client\ \ input)" content: application/json: schema: $ref: "#/components/responses/EditProfileApiResponse" example: status: "FAILED" entities: - id: "1444" success: false errors: - fieldName: "profile name" error: "Profile name already exists" paging: null error_message: null 500: description: "Server error" content: application/json: schema: $ref: "#/components/responses/EditProfileApiResponse" example: status: "FAILED" entities: - id: null success: false errors: - fieldName: "creationServerError" error: "Edit profile failed - Unexpected error occurred." parameters: {} paging: null error_message: null /api/v1/product_groups: post: tags: - "Product Groups" summary: "Create a new product group" description: "Create one or more product groups within a Shopping campaign ad\ \ group.\n\n**For bulk product group management** use [Bulk Update (One File)](#tag/Bulk-Update)\ \ with `bulk_update_type=PRODUCT_GROUP`." operationId: "createProductGroups" parameters: - $ref: "#/components/parameters/ks" requestBody: $ref: "#/components/requestBodies/Productgroup" responses: 201: $ref: "#/components/responses/EntitySuccessResponse" 400: $ref: "#/components/responses/BadRequest" 500: $ref: "#/components/responses/InternalServerError" /api/v1/columns: get: tags: - "Columns" summary: "Get custom column by name or profile" description: "Retrieve the details of an existing custom column.\nEnter 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.\nYou 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. \n\nThe 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.\nThe\ \ 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/jobs/{job_id}/results/file: get: tags: - "Jobs" summary: "Job results" operationId: "getJobResults" parameters: - $ref: "#/components/parameters/ks" - name: "job_id" in: "path" required: true style: "simple" explode: false schema: type: "string" - name: "info_level" in: "query" required: false style: "form" explode: true schema: type: "string" enum: - "SUMMARY" - "BREAKDOWN" responses: 200: description: "OK" content: multipart/form-data: schema: type: "string" description: "The job result in file form." format: "binary" example: "" 404: description: "NOT FOUND" content: application/json: schema: type: "string" description: "There are no results when the info level SUMMARY and\ \ job ID c42f1168-4cd6-42e8-b654-2a7f0043699e are selected." example: "There are no results when the info level SUMMARY and job\ \ ID c42f1168-4cd6-42e8-b654-2a7f0043699e are selected." 500: $ref: "#/components/responses/InternalServerError" /api/v1/portfolios: get: tags: - "Portfolios" summary: "Get portfolios" description: "Get portfolios API call, allows you to retrieve portfolio information.\ \ You can filter by profile ID or request specific portfolios by their IDs.\n\ The result is a list of portfolio objects that can be paged through using\ \ the returned next_page/previous_page values.\n" operationId: "getPortfolios" parameters: - $ref: "#/components/parameters/ks" - $ref: "#/components/parameters/pageId" - $ref: "#/components/parameters/portfolioIds" - $ref: "#/components/parameters/profileId" responses: 200: $ref: "#/components/responses/GetPortfolioEntitySuccessResponse" 400: $ref: "#/components/responses/GetPortfolioBadRequest" put: tags: - "Portfolios" summary: "Edit an existing portfolio" operationId: "updatePortfolios" parameters: - $ref: "#/components/parameters/ks" requestBody: $ref: "#/components/requestBodies/editPortfolios" responses: 200: $ref: "#/components/responses/EntitySuccessResponse" 400: $ref: "#/components/responses/BadRequest" 500: $ref: "#/components/responses/InternalServerError" post: tags: - "Portfolios" summary: "Create a new portfolio" operationId: "createPortfolios" parameters: - $ref: "#/components/parameters/ks" requestBody: $ref: "#/components/requestBodies/createPortfolios" responses: 201: $ref: "#/components/responses/EntitySuccessResponse" 400: $ref: "#/components/responses/BadRequest" 500: $ref: "#/components/responses/InternalServerError" /api/v1/automated_actions: put: summary: "AutomatedAction" operationId: "updateAutomatedActions" parameters: - $ref: "#/components/parameters/ks" requestBody: $ref: "#/components/requestBodies/CreateAutomatedAction" responses: 200: description: "200 response" 300: description: "300 response" post: tags: - "AutomatedAction" operationId: "CreateAutomatedAction" parameters: - $ref: "#/components/parameters/ks" requestBody: $ref: "#/components/requestBodies/CreateAutomatedAction" responses: 200: description: "200 response" 300: description: "300 response" /api/v1/ads: post: tags: - "Ads" summary: "Create a new product ad" operationId: "createAds" parameters: - $ref: "#/components/parameters/ks" requestBody: $ref: "#/components/requestBodies/ads" responses: 200: $ref: "#/components/responses/EntitySuccessResponse" 201: $ref: "#/components/responses/EntitySuccessResponse" 400: $ref: "#/components/responses/BadRequest" 500: $ref: "#/components/responses/InternalServerError" /api/v1/reports/{entity}/available_columns: get: tags: - "Available Columns" summary: "Get available columns" description: "Get available columns for all Analysis Grid reports. Relevant\ \ to [synchronous reports](#operation/fetchReport) and [asynchronous analysis\ \ grid reports](#operation/asyncAnalysisReport)\n\n#### Cross-Profile vs Single-Profile\n\ Some columns groups in Skai available across all profiles, including in views\ \ where no specific profile is requested (Cross-Profile). Others column groups\ \ are defined within a profile (even when many profiles have identical definitions),\ \ and can only be pulled in single-profile requests (Single-Profile).\n\n\ #### report_supported field:\nShows whether the column is supported for reporting.\ \ `true` → Supported and can be included in reports. `false` → Not supported\ \ for reporting.\n\n#### Understanding the returned column groups:\n| Column\ \ Group in the API | Availability | Group Name\ \ in Skai Column Selection UI | Description \ \ \ \ |\n|---------------------------------|-----------------------------------|-----------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------|\n\ | Attributes | Cross-Profile and Single-Profile | Attributes\ \ | Attributes of your campaigns, native to Skai\ \ \ \ |\n| Performance | Cross-Profile and\ \ Single-Profile | Performance | Performance\ \ metrics native to Skai \ \ |\n| AttributionForecasting\ \ | Cross-Profile and Single-Profile | Attribution Forecasting \ \ | Skai's forecasted metrics \ \ \ \ |\n| CustomMetricsPlus | Cross-Profile and Single-Profile\ \ | Custom metrics+ | Organization level formula\ \ based columns, defined by users in your organization. Editable under _Dimensions\ \ & Categories_ |\n| Dimensions | Cross-Profile\ \ and Single-Profile | Dimensions | Organization\ \ level labeling column, defined by users in your organization. Editable under\ \ _Settings_ -> _Custom metrics & columns_ |\n| SmartTags \ \ | Cross-Profile and Single-Profile | Smart tags \ \ | Skai AI-powered insights \ \ \ \ |\n| ChannelCustomerConversionTypes | Cross-Profile and Single-Profile\ \ | Publisher report conversions | Conversions and revenue from\ \ publisher APIs. Names editable under _Settings_ -> _Conversions_ \ \ |\n| ExternalCustomerConversionTypes | Cross-Profile\ \ and Single-Profile | External report conversion | Conversions\ \ and revenue from Files and Integrations. Names editable under _Settings_\ \ -> _Conversions_ |\n| ProxyCustomerConversionTypes\ \ | Cross-Profile and Single-Profile | Skai pixel conversion \ \ | Conversions and revenue from Skai's Pixel. Names editable under\ \ _Settings_ -> _Conversions_ |\n\ | Custom Solutions | Cross-Profile and Single-Profile | Custom\ \ Solutions | Columns powered by Skai Labs' custom\ \ solutions \ \ |\n| ConversionTypes | Single-Profile\ \ | Conversion Columns | Conversion\ \ Columns set up per profile, often publisher specific. Editable under _Settings_\ \ -> _Conversion columns_ within a profile |\n| CustomMetrics \ \ | Single-Profile | Custom metrics (legacy) \ \ | Legacy formula based columns, defined by users in your organization.\ \ Editable under _Profile settings_ -> _Custom Metrics (legacy)_ |\n\n\nThis is a partial list of commonly\ \ used columns. Skai supports hundreds of additional account-configured\ \ columns:\nDimensions — custom tagging labels you define\ \ and apply to campaigns, ad groups, and keywords;\nConversion events\ \ — tracked by publishers, Skai pixel, and 3rd-party integrations, each appearing\ \ as a count and a revenue column;\nCustom Metrics — formula-based\ \ calculations your team creates (e.g. ROAS, CPA targets);\nand more.\n\n\ Call this endpoint authenticated to see your full account-specific\ \ column set.\n\n\n#### Column Reference\n\n> **Column name**\ \ is what to put in your API request. **Display name** is what users see in\ \ the Skai UI.\n\n> **Types at a glance:** `STRING` = text · `INTEGER`/`FLOAT`/`BIG_INTEGER`\ \ = number · `MONETARY`/`NULLABLE_MONETARY` = currency (profile currency)\ \ · `PERCENT` = percentage · `BOOLEAN_DISPLAY` = Yes/No · `DATE`/`SERVER_DATE`\ \ = date or datetime · `INTEGER_ID` = numeric identifier · Other types are\ \ Skai-specific display formats (value is string or number depending on context).\n\ \n\n##### CAMPAIGN\n\n**Performance** (21 standard columns)\n\n| Column name\ \ | Display name | Type | Description |\n|---|---|---|---|\n| `AverageCPC`\ \ | Avg. CPC | MONETARY | The average cost per click expressed as the number\ \ of clicks divided by cost. |\n| `AveragePosition` | Avg. Pos. | FLOAT |\ \ Avg. Pos. |\n| `CPM` | CPM | MONETARY | CPM |\n| `CTR` | CTR | PERCENT |\ \ The click-through rate, expressed as the number of clicks on the ad divided\ \ by the times it was shown. |\n| `Clicks` | Clicks | INTEGER | The number\ \ of clicks reported by the publisher. |\n| `Conversion` | Conv. | FLOAT |\ \ An aggregation of all conversion actions coming from publishers, Skai pixel,\ \ and 3rd-party integration, or from actions you select. |\n| `ConversionRate`\ \ | Conv. Rate | PERCENT | The conversion rate, expressed as the number of\ \ conversions divided by the number of clicks. |\n| `Cost` | Cost | MONETARY\ \ | The publisher cost, in the currency of the Skai profile. |\n| `CostConversion`\ \ | Cost/Conv. | MONETARY | The cost of each conversion, expressed as cost\ \ divided by the number of conversions. |\n| `Engagement` | Engagement | INTEGER\ \ | The number of user engagements with your ads. |\n| `Impressions` | Imp.\ \ | INTEGER | The number of impressions reported by the publisher. |\n| `ImprAbsTop`\ \ | Impr. (Abs.Top) % | PERCENT | The percentage of ad impressions that are\ \ shown as the very first ad above the organic search results |\n| `ImprTop`\ \ | Impr. (Top) % | PERCENT | The percentage of ad impressions that are shown\ \ anywhere above the organic search results. |\n| `ImpressionShare` | Impression\ \ Share (IS) | PERCENT | The percentage of ad impressions you've received\ \ divided by the estimated number of impressions you were eligible to receive.\ \ |\n| `LostImpressionShareBudget` | Lost IS (Budget) | PERCENT | The percentage\ \ of impressions lost due to budget constraints. |\n| `LostImpressionShareRank`\ \ | Lost IS (Rank) | PERCENT | The percentage of Impressions lost due to rank\ \ constraints. |\n| `PostImpression` | Post Imps. Conv. | FLOAT | The number\ \ of impressions of your ads that led to a conversion. |\n| `Profit` | Profit\ \ | MONETARY | Profit = revenue - cost |\n| `ROI` | ROI | FLOAT | Return on\ \ investment. The formula is: ROI = revenue / cost |\n| `Revenue` | Rev. |\ \ MONETARY | An aggregation of all monetary value of conversion actions, coming\ \ from publishers, Skai's pixel, and 3rd-party integration. |\n| `RevConversion`\ \ | Rev./Conv. | MONETARY | The revenue amount divided by the number of conversions.\ \ |\n\n**Attributes** (61 columns)\n\n| Column name | Display name | Type\ \ | Description |\n|---|---|---|---|\n| `AI Max` | AI Max | STRING | Shows\ \ whether AI Max is enabled for this Google Search campaign. |\n| `AccountName`\ \ | Account Name | STRING | Name of the account, if available, or the username\ \ configured in Skai to access the account |\n| `BidStrategyAdLocation` |\ \ Bid Strategy Ad Location | STRING | The customer locations for which you\ \ set bid strategy rules to set targets. |\n| `BidStrategyMaxCPC` | Bid Strategy\ \ Max. CPC | MONETARY | The bid set to express the highest amount you are\ \ willing to pay for an ad click. |\n| `BidStrategyTarget` | Bid Strategy\ \ Target | STRING | The value for your publisher-optimized campaigns. |\n\ | `Brand entity ID` | Brand entity ID | STRING | The brand ID that the campaign\ \ is associated with. Required for sellers creating Sponsored Brands campaigns\ \ when the brand entity name is empty. |\n| `Brand entity name` | Brand entity\ \ name | STRING | The brand name that the campaign is associated with. Required\ \ for sellers creating Sponsored Brands campaigns when the brand entity ID\ \ is empty. |\n| `BudgetType` | Budget Type | STRING | Budget Type for this\ \ campaign |\n| `BidStrategy` | Campaign Bid Strategy | STRING | The bid strategy\ \ for the campaign. |\n| `Campaign End Date` | Campaign End Date | DATE |\ \ The date the campaign is scheduled to stop running. |\n| `CampaignType`\ \ | Campaign Goal | STRING | The type of campaign. |\n| `CampaignId` | Campaign\ \ ID | INTEGER | The campaign ID in Skai. |\n| `CampaignName` | Campaign Name\ \ | STRING | The campaign name in Skai. |\n| `CampaignOrderLine` | Campaign\ \ Order Line | STRING | The ID of the order line used in the Pinterest campaign.\ \ |\n| `Campaign Priority` | Campaign Priority | STRING | The campaign selected\ \ to serve ads for the product when there are multiple campaigns that advertise\ \ the same product. |\n| `Campaign Start Date` | Campaign Start Date | DATE\ \ | The date the campaign is scheduled to start running. |\n| `StatusToDisplay`\ \ | Campaign Status | STRING | The status of the campaign. |\n| `AdvertisingChannelSubType`\ \ | Campaign subtype | STRING | A specific classification or category within\ \ a broader campaign type. |\n| `channelCategory` | Channel | STRING | A publisher\ \ attribute such as the campaign ID or ad ID. |\n| `ChannelAccountId` | Channel\ \ Account ID | INTEGER | The publisher account ID in Skai. |\n| `channelStatus`\ \ | Channel Account Status | STRING | The status of the publisher account.\ \ |\n| `ChannelAccountUserName` | Channel Account Username | STRING | The\ \ username associated with the publisher account. |\n| `CampaignIdInChannel`\ \ | Channel Campaign ID | STRING | The campaign ID in the publisher. |\n|\ \ `SaleCountry` | Country of Sale | STRING | The App Store geographical locations\ \ where you’re promoting your app. |\n| `CreateDate` | Creation Date | DATETIME\ \ | The date and time at which the Skai entity was created. |\n| `DailyBudget`\ \ | Daily Budget | MONETARY | The daily budget for the campaign. |\n| `DailySpendCap`\ \ | Daily Spend Cap | MONETARY | The daily spend cap of the campaign. |\n\ | `campaignDayParting` | Dayparting | STRING | Indicates whether dayparting\ \ has been scheduled for the campaign, and whether it is managed manually\ \ or automated by AI. |\n| `DeliveryMethod` | Delivery Method | STRING | Indicates\ \ how the budget is paced. |\n| `DesktopBidAdjustment` | Desktop Bid Adj.\ \ | FLOAT | A percentage increase or decrease in the bid for this placement.\ \ |\n| `Disapproval Reason` | Disapproval Reason | STRING | Why the publisher\ \ disapproved the ad. |\n| `DisplayUrl` | Display URL | STRING | The display\ \ URL of the ad. |\n| `FailureReason` | Failure Reason | STRING | The latest\ \ error recorded upon a failed attempt to sync entity changes to the publisher.\ \ |\n| `Homepage Bid Adj.` | Homepage Bid Adj. | FLOAT | A percentage increase\ \ in the bid for this placement. |\n| `LandUrl` | Landing URL | STRING | The\ \ destination URL (for non-upgraded ads) or final URL (for upgraded ads).\ \ |\n| `LifetimeSpendCap` | Lifetime Spend Cap | MONETARY | The campaign's\ \ lifetime spend cap amount. |\n| `LocalInventoryAds` | Local Inventory Ads\ \ | BOOLEAN | Indicates if your Shopping campaign has local inventory ads.\ \ |\n| `MerchantId` | Merchant ID | INTEGER | A unique identification number\ \ attached to a business that tells the payment processing systems involved\ \ in a transaction where to send which funds. |\n| `MobileBidAdjustment` |\ \ Mobile Bid Adj. | FLOAT | A percentage increase or decrease in the bid for\ \ this placement. |\n| `Monthly Budget` | Monthly Budget | MONETARY | The\ \ monthly budget limit. |\n| `Optimization strategies` | Optimization strategies\ \ | STRING | The type of bid changes the publisher is allowed to perform dynamically\ \ in order to optimize performance. |\n| `UploadFlag` | Pending Upload | BOOLEAN\ \ | Indicates whether the campaign contains entity changes that need to be\ \ uploaded to the publisher. |\n| `Placements` | Placements | STRING | The\ \ location on the website where an ad can be displayed. |\n| `PortfolioId`\ \ | Portfolio ID | INTEGER | The ID of the Skai portfolio. |\n| `PortfolioName`\ \ | Portfolio Name | STRING | The name of the Skai portfolio. |\n| `ProfileId`\ \ | Profile ID | INTEGER | The Skai profile ID. |\n| `ProfileName` | Profile\ \ Name | STRING | The Skai profile name. |\n| `ProfileStatus` | Profile Status\ \ | STRING | The Skai profile status. |\n| `Channel` | Publisher | STRING\ \ | The name of the publisher serving the ads. |\n| `AutoTaggingEnabled` |\ \ Publisher Auto-Tagging Enabled | BOOLEAN | Indicates whether the campaign\ \ has auto-tagging enabled in the publisher. |\n| `Recommended daily budget`\ \ | Recommended daily budget | MONETARY | **Amazon:** Budget recommended by\ \ Amazon to minimize your campaign's chances of running out of budget and\ \ missing out on impressions, clicks, and sales. **Walmart:** The latest daily\ \ budget recommendation to minimize the possibility of going out of budget.\ \ |\n| `ScheduleFlag` | Scheduled | BOOLEAN | Indicates whether dayparting\ \ or a future start date have been scheduled for the campaign. |\n| `Search\ \ in Grid Bid Adj.` | Search In-Grid Bid Adj. | FLOAT | A percentage increase\ \ or decrease in the bid for this placement. |\n| `ShoppingCampaign` | Shopping\ \ Campaign | BOOLEAN | Indicates whether the campaign is a Shopping campaign.\ \ |\n| `Stock Up Bid Adj.` | Stock Up Bid Adj. | FLOAT | A percentage increase\ \ or decrease in the bid for this placement. |\n| `StructureOptimization`\ \ | Structure Optimization | STRING | For Shopping campaigns, an indication\ \ whether Skai structure optimization is enabled. |\n| `TabletBidAdjustment`\ \ | Tablet Bid Adj. | FLOAT | The tablet bid adjustment for the ad group.\ \ |\n| `Top of Search Bid Adj.` | Top of Search Bid Adj. | FLOAT | A percentage\ \ increase or decrease in the bid for this placement. |\n| `TrackingLevel`\ \ | Tracking Level | STRING | The entity tracking level for the campaign.\ \ |\n| `TrackingTemplate` | Tracking Template | STRING | Information added\ \ to the base URL for tracking purposes. Applicable for upgraded URLs. |\n\ | `Weekly Budget` | Weekly Budget | MONETARY | The weekly ad spend limit.\ \ |\n\n**Account-configured columns** *(vary by account — call this endpoint\ \ authenticated to see yours)*\n\n| Column name | Display name | Type | Description\ \ |\n|---|---|---|---|\n| `[Your Dimension Name]` | *(your label)* | STRING\ \ | A custom tagging label you define in Skai (e.g. \"Brand\", \"Region\"\ , \"Campaign Theme\"). Applied to entities; any value you've set appears here.\ \ |\n| `[Publisher / Pixel / 3rd-party Conversion]` | *(event name)* | FLOAT\ \ | Each tracked conversion event appears as two columns: a **count** column\ \ (number of conversions) and a **revenue** column (monetary value). Names\ \ are set in Settings → Conversions. |\n| `[Your Custom Metric]` | *(formula\ \ name)* | FLOAT | A formula-based column your team defines (e.g. ROAS = Revenue\ \ / Cost). Available in the *Custom Metrics+* and *Custom Metrics (legacy)*\ \ groups. |\n\n##### ADGROUP\n\n**Performance** (21 standard columns)\n\n\ | Column name | Display name | Type | Description |\n|---|---|---|---|\n|\ \ `AverageCPC` | Avg. CPC | MONETARY | The average cost per click expressed\ \ as the number of clicks divided by cost. |\n| `AveragePosition` | Avg. Pos.\ \ | FLOAT | Avg. Pos. |\n| `CPM` | CPM | MONETARY | CPM |\n| `CTR` | CTR |\ \ PERCENT | The click-through rate, expressed as the number of clicks on the\ \ ad divided by the times it was shown. |\n| `Clicks` | Clicks | INTEGER |\ \ The number of clicks reported by the publisher. |\n| `Conversion` | Conv.\ \ | FLOAT | An aggregation of all conversion actions coming from publishers,\ \ Skai pixel, and 3rd-party integration, or from actions you select. |\n|\ \ `ConversionRate` | Conv. Rate | PERCENT | The conversion rate, expressed\ \ as the number of conversions divided by the number of clicks. |\n| `Cost`\ \ | Cost | MONETARY | The publisher cost, in the currency of the Skai profile.\ \ |\n| `CostConversion` | Cost/Conv. | MONETARY | The cost of each conversion,\ \ expressed as cost divided by the number of conversions. |\n| `Engagement`\ \ | Engagement | INTEGER | The number of user engagements with your ads. |\n\ | `Impressions` | Imp. | INTEGER | The number of impressions reported by the\ \ publisher. |\n| `ImprAbsTop` | Impr. (Abs.Top) % | PERCENT | The percentage\ \ of ad impressions that are shown as the very first ad above the organic\ \ search results |\n| `ImprTop` | Impr. (Top) % | PERCENT | The percentage\ \ of ad impressions that are shown anywhere above the organic search results.\ \ |\n| `ImpressionShare` | Impression Share (IS) | PERCENT | The percentage\ \ of ad impressions you've received divided by the estimated number of impressions\ \ you were eligible to receive. |\n| `LostImpressionShareBudget` | Lost IS\ \ (Budget) | PERCENT | The percentage of impressions lost due to budget constraints.\ \ |\n| `LostImpressionShareRank` | Lost IS (Rank) | PERCENT | The percentage\ \ of Impressions lost due to rank constraints. |\n| `PostImpression` | Post\ \ Imps. Conv. | FLOAT | The number of impressions of your ads that led to\ \ a conversion. |\n| `Profit` | Profit | MONETARY | Profit = revenue - cost\ \ |\n| `ROI` | ROI | FLOAT | Return on investment. The formula is: ROI = revenue\ \ / cost |\n| `Revenue` | Rev. | MONETARY | An aggregation of all monetary\ \ value of conversion actions, coming from publishers, Skai's pixel, and 3rd-party\ \ integration. |\n| `RevConversion` | Rev./Conv. | MONETARY | The revenue\ \ amount divided by the number of conversions. |\n\n**Attributes** (37 columns)\n\ \n| Column name | Display name | Type | Description |\n|---|---|---|---|\n\ | `AccountName` | Account Name | STRING | Name of the account, if available,\ \ or the username configured in Skai to access the account |\n| `AdGroupBudgetType`\ \ | Ad Group Budget Type | STRING | Daily or lifetime budget for publishers\ \ with budget at the ad group level. |\n| `AdGroupId` | Ad Group ID | INTEGER\ \ | The ad group ID in Skai. |\n| `AdGroupName` | Ad Group Name | STRING |\ \ The name of the ad group. |\n| `AdGroupStartDate` | Ad Group Start Date\ \ | DATE | The date on which the ad group is scheduled to start serving. |\n\ | `StatusToDisplay` | Ad Group Status | STRING | The status of the ad group.\ \ |\n| `AD GROUP TYPE` | Ad Group Type | STRING | The type of ad group. |\n\ | `Weekly Budget` | Ad Group Weekly Budget | MONETARY | The weekly ad spend\ \ limit. |\n| `Attribute window` | Attribute window | STRING | A defined period\ \ of time in which a publisher can claim that a click or impression led to\ \ an install or conversion. |\n| `bidType` | Bid Strategy | STRING | The type,\ \ or name, of the bid strategy. |\n| `CampaignType` | Campaign Goal | STRING\ \ | The type of campaign. |\n| `CampaignId` | Campaign ID | INTEGER | The\ \ campaign ID in Skai. |\n| `CampaignName` | Campaign Name | STRING | The\ \ campaign name in Skai. |\n| `CampaignStatusToDisplay` | Campaign Status\ \ | STRING | The status of the campaign. |\n| `CampaignIdInChannel` | Channel\ \ Campaign ID | STRING | The campaign ID in the publisher. |\n| `ContentBid`\ \ | Content Bid | MONETARY | The content bid amount for the ad group. |\n\ | `SaleCountry` | Country of Sale | STRING | The App Store geographical locations\ \ where you’re promoting your app. |\n| `CreateDate` | Creation Date | DATETIME\ \ | The date and time at which the Skai entity was created. |\n| `Daily Budget`\ \ | Daily Budget | MONETARY | Daily budget of the campaign, in the currency\ \ of the profile. |\n| `Delivery Method` | Delivery Method | STRING | Indicates\ \ how the budget is paced. |\n| `DesktopBidAdjustment` | Desktop Bid Adj.\ \ | FLOAT | A percentage increase or decrease in the bid for this placement.\ \ |\n| `Frequency Cap` | Frequency Cap | STRING | The number of times an ad\ \ can be served to a unique person during a specific time period. |\n| `Max.\ \ CPC` | Max. CPC | MONETARY | Indicates how other advertisers are bidding\ \ on similar products. If the Benchmark Max CPC is significantly higher or\ \ lower than your maximum CPC, consider adjusting your bid. |\n| `Max. CPM`\ \ | Max. CPM | MONETARY | The maximum supply bid |\n| `MobileBidAdjustment`\ \ | Mobile Bid Adj. | FLOAT | A percentage increase or decrease in the bid\ \ for this placement. |\n| `Monthly Budget` | Monthly Budget | MONETARY |\ \ The monthly budget limit. |\n| `Modified` | Pending Upload | BOOLEAN | Indicates\ \ whether the campaign contains entity changes that need to be uploaded to\ \ the publisher. |\n| `Placements` | Placements | STRING | The location on\ \ the website where an ad can be displayed. |\n| `Priority` | Priority | STRING\ \ | The campaign selected to serve ads for the product when there are multiple\ \ campaigns that advertise the same product. |\n| `ProfileId` | Profile ID\ \ | INTEGER | The Skai profile ID. |\n| `ProfileName` | Profile Name | STRING\ \ | The Skai profile name. |\n| `ProfileStatus` | Profile Status | STRING\ \ | The Skai profile status. |\n| `Channel` | Publisher | STRING | The name\ \ of the publisher serving the ads. |\n| `Retailer` | Retailer | STRING |\ \ The retailer to which the entity belongs. |\n| `SearchBid` | Search Bid\ \ | MONETARY | The bid amount that applies to all keywords in an ad group\ \ that do not have individual bids set. Communicates the maximum amount the\ \ advertiser is willing to pay for an ad click. |\n| `ShoppingCampaign` |\ \ Shopping Campaign | BOOLEAN | Indicates whether the campaign is a Shopping\ \ campaign. |\n| `TabletBidAdjustment` | Tablet Bid Adj. | FLOAT | The tablet\ \ bid adjustment for the ad group. |\n\n**Account-configured columns** *(vary\ \ by account — call this endpoint authenticated to see yours)*\n\n| Column\ \ name | Display name | Type | Description |\n|---|---|---|---|\n| `[Your\ \ Dimension Name]` | *(your label)* | STRING | A custom tagging label you\ \ define in Skai (e.g. \"Brand\", \"Region\", \"Campaign Theme\"). Applied\ \ to entities; any value you've set appears here. |\n| `[Publisher / Pixel\ \ / 3rd-party Conversion]` | *(event name)* | FLOAT | Each tracked conversion\ \ event appears as two columns: a **count** column (number of conversions)\ \ and a **revenue** column (monetary value). Names are set in Settings → Conversions.\ \ |\n| `[Your Custom Metric]` | *(formula name)* | FLOAT | A formula-based\ \ column your team defines (e.g. ROAS = Revenue / Cost). Available in the\ \ *Custom Metrics+* and *Custom Metrics (legacy)* groups. |\n\n##### KEYWORD\n\ \n**Performance** (20 standard columns)\n\n| Column name | Display name |\ \ Type | Description |\n|---|---|---|---|\n| `AverageCPC` | Avg. CPC | MONETARY\ \ | The average cost per click expressed as the number of clicks divided by\ \ cost. |\n| `AveragePosition` | Avg. Pos. | FLOAT | Avg. Pos. |\n| `CTR`\ \ | CTR | PERCENT | The click-through rate, expressed as the number of clicks\ \ on the ad divided by the times it was shown. |\n| `Clicks` | Clicks | INTEGER\ \ | The number of clicks reported by the publisher. |\n| `Conversion` | Conv.\ \ | FLOAT | An aggregation of all conversion actions coming from publishers,\ \ Skai pixel, and 3rd-party integration, or from actions you select. |\n|\ \ `ConversionRate` | Conv. Rate | PERCENT | The conversion rate, expressed\ \ as the number of conversions divided by the number of clicks. |\n| `Cost`\ \ | Cost | MONETARY | The publisher cost, in the currency of the Skai profile.\ \ |\n| `CostConversion` | Cost/Conv. | MONETARY | The cost of each conversion,\ \ expressed as cost divided by the number of conversions. |\n| `Impressions`\ \ | Imp. | INTEGER | The number of impressions reported by the publisher.\ \ |\n| `ImprAbsTop` | Impr. (Abs.Top) % | PERCENT | The percentage of ad impressions\ \ that are shown as the very first ad above the organic search results |\n\ | `ImprTop` | Impr. (Top) % | PERCENT | The percentage of ad impressions that\ \ are shown anywhere above the organic search results. |\n| `SearchImprShare`\ \ | Impression Share (IS) | PERCENT | The percentage of ad impressions you've\ \ received divided by the estimated number of impressions you were eligible\ \ to receive. |\n| `SearchLostISRank` | Lost IS (Rank) | PERCENT | The percentage\ \ of Impressions lost due to rank constraints. |\n| `Profit` | Profit | MONETARY\ \ | Profit = revenue - cost |\n| `QualityScore` | Quality Score | INTEGER\ \ | Indicates how well the entity quality compares to other advertisers. |\n\ | `ROI` | ROI | FLOAT | Return on investment. The formula is: ROI = revenue\ \ / cost |\n| `Revenue` | Rev. | MONETARY | An aggregation of all monetary\ \ value of conversion actions, coming from publishers, Skai's pixel, and 3rd-party\ \ integration. |\n| `RevConversion` | Rev./Conv. | MONETARY | The revenue\ \ amount divided by the number of conversions. |\n| `SearchAbsTopIS` | Search\ \ (Abs.Top) IS | PERCENT | Search (Abs.Top) IS |\n| `SearchTopIS` | Search\ \ (Top) IS | PERCENT | Search (Top) IS |\n\n**Attributes** (40 columns)\n\n\ | Column name | Display name | Type | Description |\n|---|---|---|---|\n|\ \ `AccountName` | Account Name | STRING | Name of the account, if available,\ \ or the username configured in Skai to access the account |\n| `AdGroupId`\ \ | Ad Group ID | INTEGER | The ad group ID in Skai. |\n| `AdGroupName` |\ \ Ad Group Name | STRING | The name of the ad group. |\n| `AdGroupStatusToDisplay`\ \ | Ad Group Status | STRING | The status of the ad group. |\n| `Bid` | Bid\ \ | MONETARY | The entity bid amount in the currency defined for the Skai\ \ profile. |\n| `CampaignType` | Campaign Goal | STRING | The type of campaign.\ \ |\n| `CampaignId` | Campaign ID | INTEGER | The campaign ID in Skai. |\n\ | `CampaignName` | Campaign Name | STRING | The campaign name in Skai. |\n\ | `CampaignStatusToDisplay` | Campaign Status | STRING | The status of the\ \ campaign. |\n| `ChannelAccountId` | Channel Account ID | INTEGER | The publisher\ \ account ID in Skai. |\n| `AdGroupIdInChannel` | Channel Ad Group ID | STRING\ \ | The ad group ID in the publisher. |\n| `CampaignIdInChannel` | Channel\ \ Campaign ID | STRING | The campaign ID in the publisher. |\n| `KeywordIdInTarget`\ \ | Channel Keyword ID | STRING | The keyword ID in the publisher. |\n| `CreateDate`\ \ | Creation Date | DATETIME | The date and time at which the Skai entity\ \ was created. |\n| `CustomParameter1Key` | Custom Parameter 1 Key | STRING\ \ | The name of the first custom parameter, if any, for an ad. |\n| `CustomParameter1Value`\ \ | Custom Parameter 1 Value | STRING | The value assigned to the first custom\ \ parameter, if any, for an ad. |\n| `CustomParameter2Key` | Custom Parameter\ \ 2 Key | STRING | The name of the second custom parameter, if any, for an\ \ ad |\n| `CustomParameter2Value` | Custom Parameter 2 Value | STRING | The\ \ value assigned to the second custom parameter, if any, for an ad. |\n| `CustomParameter3Key`\ \ | Custom Parameter 3 Key | STRING | The name of the third custom parameter,\ \ if any, for an ad. |\n| `CustomParameter3Value` | Custom Parameter 3 Value\ \ | STRING | The value assigned to the third custom parameter, if any, for\ \ an ad. |\n| `DisapprovalReason` | Disapproval Reason | STRING | Why the\ \ publisher disapproved the ad. |\n| `FailureReason` | Failure Reason | STRING\ \ | The latest error recorded upon a failed attempt to sync entity changes\ \ to the publisher. |\n| `Keyword` | Keyword | STRING | The text of the keyword\ \ to be created or edited. |\n| `KeywordId` | Keyword ID | INTEGER | The keyword\ \ ID in Skai. |\n| `StatusToDisplay` | Keyword Status | STRING | The status\ \ of the keyword to be created or edited. |\n| `LandUrl` | Landing URL | STRING\ \ | The destination URL (for non-upgraded ads) or final URL (for upgraded\ \ ads). |\n| `MatchType` | Match Type | STRING | The match type of the keyword\ \ to be created. |\n| `Max. bid` | Max. bid | MONETARY | The maximum bid amount\ \ for your keywords as required by the publisher. |\n| `FirstPageCPC` | Min.\ \ Bid | MONETARY | The minimum bid amount you can use for your keywords. |\n\ | `MobileBidAdjustment` | Mobile Bid Adj. | FLOAT | A percentage increase\ \ or decrease in the bid for this placement. |\n| `MobileUrl` | Mobile URL\ \ | STRING | The final mobile device-specific URL, if any. |\n| `Modified`\ \ | Modified | BOOLEAN | Indicates an edited entity. |\n| `Product Pages Bid\ \ Adj.` | Product Pages Bid Adj. | FLOAT | A percentage increase or decrease\ \ in the bid for this placement. |\n| `ProfileId` | Profile ID | INTEGER |\ \ The Skai profile ID. |\n| `ProfileName` | Profile Name | STRING | The Skai\ \ profile name. |\n| `ProfileStatus` | Profile Status | STRING | The Skai\ \ profile status. |\n| `Channel` | Publisher | STRING | The name of the publisher\ \ serving the ads. |\n| `Recommended bid amount` | Recommended bid amount\ \ | MONETARY | The recommended bid amount to set for your keywords. |\n| `Top\ \ of Search Bid Adj.` | Top of Search Bid Adj. | FLOAT | A percentage increase\ \ or decrease in the bid for this placement. |\n| `TrackingTemplate` | Tracking\ \ Template | STRING | Information added to the base URL for tracking purposes.\ \ Applicable for upgraded URLs. |\n\n**Account-configured columns** *(vary\ \ by account — call this endpoint authenticated to see yours)*\n\n| Column\ \ name | Display name | Type | Description |\n|---|---|---|---|\n| `[Your\ \ Dimension Name]` | *(your label)* | STRING | A custom tagging label you\ \ define in Skai (e.g. \"Brand\", \"Region\", \"Campaign Theme\"). Applied\ \ to entities; any value you've set appears here. |\n| `[Publisher / Pixel\ \ / 3rd-party Conversion]` | *(event name)* | FLOAT | Each tracked conversion\ \ event appears as two columns: a **count** column (number of conversions)\ \ and a **revenue** column (monetary value). Names are set in Settings → Conversions.\ \ |\n| `[Your Custom Metric]` | *(formula name)* | FLOAT | A formula-based\ \ column your team defines (e.g. ROAS = Revenue / Cost). Available in the\ \ *Custom Metrics+* and *Custom Metrics (legacy)* groups. |\n\n##### AD\n\n\ **Performance** (18 standard columns)\n\n| Column name | Display name | Type\ \ | Description |\n|---|---|---|---|\n| `AverageCPC` | Avg. CPC | MONETARY\ \ | The average cost per click expressed as the number of clicks divided by\ \ cost. |\n| `AveragePosition` | Avg. Pos. | FLOAT | Avg. Pos. |\n| `CPM`\ \ | CPM | MONETARY | CPM |\n| `CTR` | CTR | PERCENT | The click-through rate,\ \ expressed as the number of clicks on the ad divided by the times it was\ \ shown. |\n| `Clicks` | Clicks | INTEGER | The number of clicks reported\ \ by the publisher. |\n| `Conversion` | Conv. | FLOAT | An aggregation of\ \ all conversion actions coming from publishers, Skai pixel, and 3rd-party\ \ integration, or from actions you select. |\n| `ConversionRate` | Conv. Rate\ \ | PERCENT | The conversion rate, expressed as the number of conversions\ \ divided by the number of clicks. |\n| `Cost` | Cost | MONETARY | The publisher\ \ cost, in the currency of the Skai profile. |\n| `CostConversion` | Cost/Conv.\ \ | MONETARY | The cost of each conversion, expressed as cost divided by the\ \ number of conversions. |\n| `Engagement` | Engagement | INTEGER | The number\ \ of user engagements with your ads. |\n| `Impressions` | Imp. | INTEGER |\ \ The number of impressions reported by the publisher. |\n| `ImprAbsTop` |\ \ Impr. (Abs.Top) % | PERCENT | The percentage of ad impressions that are\ \ shown as the very first ad above the organic search results |\n| `ImprTop`\ \ | Impr. (Top) % | PERCENT | The percentage of ad impressions that are shown\ \ anywhere above the organic search results. |\n| `PostImpression` | Post\ \ Imps. Conv. | FLOAT | The number of impressions of your ads that led to\ \ a conversion. |\n| `Profit` | Profit | MONETARY | Profit = revenue - cost\ \ |\n| `ROI` | ROI | FLOAT | Return on investment. The formula is: ROI = revenue\ \ / cost |\n| `Revenue` | Rev. | MONETARY | An aggregation of all monetary\ \ value of conversion actions, coming from publishers, Skai's pixel, and 3rd-party\ \ integration. |\n| `RevConversion` | Rev./Conv. | MONETARY | The revenue\ \ amount divided by the number of conversions. |\n\n**Attributes** (50 columns)\n\ \n| Column name | Display name | Type | Description |\n|---|---|---|---|\n\ | `AccountName` | Account Name | STRING | Name of the account, if available,\ \ or the username configured in Skai to access the account |\n| `AdGroupId`\ \ | Ad Group ID | INTEGER | The ad group ID in Skai. |\n| `AdGroupName` |\ \ Ad Group Name | STRING | The name of the ad group. |\n| `AdGroupStatusToDisplay`\ \ | Ad Group Status | STRING | The status of the ad group. |\n| `AdGroupType`\ \ | Ad Group Type | STRING | The type of ad group. |\n| `AdId` | Ad ID | INTEGER\ \ | The ad ID in Skai. |\n| `adCreativeName` | Ad Name | STRING | The name\ \ of the ad. |\n| `StatusToDisplay` | Ad Status | STRING | Whether an ad is\ \ active, and the reason for its status. |\n| `AdTypeName` | Ad Type | STRING\ \ | The type of ad in the publisher. |\n| `adStrength` | Ad strength | STRING\ \ | How well an ad creative follows the publisher's best practices for optimal\ \ performance. |\n| `Ad subtype` | Ad subtype | STRING | Describes the lower-level\ \ types for ad types that includes an additional level of types. |\n| `Brand\ \ Name` | Brand Name | STRING | The brand of the product linked to the ad.\ \ |\n| `Campaign Bid Method` | Campaign Bid Method | STRING | The campaign\ \ spending policy. |\n| `CampaignId` | Campaign ID | INTEGER | The campaign\ \ ID in Skai. |\n| `CampaignName` | Campaign Name | STRING | The campaign\ \ name in Skai. |\n| `CampaignStatusToDisplay` | Campaign Status | STRING\ \ | The status of the campaign. |\n| `AdGroupIdInChannel` | Channel Ad Group\ \ ID | STRING | The ad group ID in the publisher. |\n| `AdIdInTarget` | Channel\ \ Ad ID | STRING | The publisher ad ID. |\n| `CampaignIdInChannel` | Channel\ \ Campaign ID | STRING | The campaign ID in the publisher. |\n| `CreateDate`\ \ | Creation Date | DATETIME | The date and time at which the Skai entity\ \ was created. |\n| `CustomParameter1Key` | Custom Parameter 1 Key | STRING\ \ | The name of the first custom parameter, if any, for an ad. |\n| `CustomParameter1Value`\ \ | Custom Parameter 1 Value | STRING | The value assigned to the first custom\ \ parameter, if any, for an ad. |\n| `CustomParameter2Key` | Custom Parameter\ \ 2 Key | STRING | The name of the second custom parameter, if any, for an\ \ ad |\n| `CustomParameter2Value` | Custom Parameter 2 Value | STRING | The\ \ value assigned to the second custom parameter, if any, for an ad. |\n| `CustomParameter3Key`\ \ | Custom Parameter 3 Key | STRING | The name of the third custom parameter,\ \ if any, for an ad. |\n| `CustomParameter3Value` | Custom Parameter 3 Value\ \ | STRING | The value assigned to the third custom parameter, if any, for\ \ an ad. |\n| `DevicePreference` | Device Preference | STRING | Indicates\ \ whether the ad was created for or will appear on mobile devices. |\n| `DisapprovalReason`\ \ | Disapproval Reason | STRING | Why the publisher disapproved the ad. |\n\ | `DisplayUrl` | Display URL | STRING | The display URL of the ad. |\n| `FailureReason`\ \ | Failure Reason | STRING | The latest error recorded upon a failed attempt\ \ to sync entity changes to the publisher. |\n| `ImageName` | Image Name |\ \ STRING | A name that describes the image used in the ad. |\n| `ImageSize`\ \ | Image Size | STRING | The image size in the ad. |\n| `ImageUrl` | Image\ \ Url | STRING | The image URL in the ad. |\n| `Landing Page Type` | Landing\ \ Page Type | STRING | The landing page is where shoppers are directed after\ \ they interact with your ad. |\n| `Landing Url` | Landing URL | STRING |\ \ The destination URL (for non-upgraded ads) or final URL (for upgraded ads).\ \ |\n| `MobileUrl` | Mobile URL | STRING | The final mobile device-specific\ \ URL, if any. |\n| `Modified` | Modified | BOOLEAN | Indicates an edited\ \ entity. |\n| `Path1` | Path 1 | STRING | The text that can appear alongside\ \ the ad's display URL. |\n| `Path2` | Path 2 | STRING | Additional text that\ \ can appear alongside the ad's display URL. |\n| `Product ID` | Product ID\ \ | STRING | The unique identifier of the product in the publisher. |\n|\ \ `Product ID 2` | Product ID 2 | STRING | The ID of the second product promoted\ \ by the ad. |\n| `Product ID 3` | Product ID 3 | STRING | The ID of the third\ \ product promoted by the ad. |\n| `ProfileId` | Profile ID | INTEGER | The\ \ Skai profile ID. |\n| `ProfileName` | Profile name | STRING | The Skai profile\ \ name. |\n| `ProfileStatus` | Profile status | STRING | The Skai profile\ \ status. |\n| `PromotionLine` | Promotion Line | STRING | For Google Shopping\ \ Campaigns, the promotion line shown with the ad. |\n| `Channel` | Publisher\ \ | STRING | The name of the publisher serving the ads. |\n| `Publisher asset\ \ ID` | Publisher asset ID | STRING | The ID of an image on the publisher's\ \ website. |\n| `Serving Error` | Serving Error | STRING | Serving errors\ \ of the product that was promoted in each ad, for retail media publishers.\ \ |\n| `TrackingTemplate` | Tracking Template | STRING | Information added\ \ to the base URL for tracking purposes. Applicable for upgraded URLs. |\n\ \n**Account-configured columns** *(vary by account — call this endpoint authenticated\ \ to see yours)*\n\n| Column name | Display name | Type | Description |\n\ |---|---|---|---|\n| `[Your Dimension Name]` | *(your label)* | STRING | A\ \ custom tagging label you define in Skai (e.g. \"Brand\", \"Region\", \"\ Campaign Theme\"). Applied to entities; any value you've set appears here.\ \ |\n| `[Publisher / Pixel / 3rd-party Conversion]` | *(event name)* | FLOAT\ \ | Each tracked conversion event appears as two columns: a **count** column\ \ (number of conversions) and a **revenue** column (monetary value). Names\ \ are set in Settings → Conversions. |\n| `[Your Custom Metric]` | *(formula\ \ name)* | FLOAT | A formula-based column your team defines (e.g. ROAS = Revenue\ \ / Cost). Available in the *Custom Metrics+* and *Custom Metrics (legacy)*\ \ groups. |\n\n**Product Attributes** (26 columns)\n\n| Column name | Display\ \ name | Type | Description |\n|---|---|---|---|\n| `#1 best seller (legacy)`\ \ | #1 best seller (legacy) | BOOLEAN | #1 best seller (legacy) |\n| `Amazon's\ \ choice (legacy)` | Amazon's choice (legacy) | BOOLEAN | Amazon's choice\ \ (legacy) |\n| `Best sellers category 1 name` | Best sellers category 1 name\ \ | STRING | Best sellers category 1 name |\n| `Best sellers category 2 name`\ \ | Best sellers category 2 name | STRING | Best sellers category 2 name |\n\ | `Brand` | Brand | STRING | Brand |\n| `Buy box winner (legacy)` | Buy box\ \ winner (legacy) | BOOLEAN | Indicates if you are the Buy Box winner for\ \ a given product |\n| `Buy box winner price (Walmart)` | Buy box winner price\ \ (Walmart) | FLOAT | Buy box winner price (Walmart) |\n| `Climate pledge\ \ friendly (legacy)` | Climate pledge friendly (legacy) | BOOLEAN | Climate\ \ pledge friendly (legacy) |\n| `Color` | Color | STRING | The color of the\ \ product listing linked to the ad. |\n| `Item last updated` | Item last updated\ \ | DATE | Item last updated |\n| `Lowest Sale Price` | Lowest Sale Price\ \ | MONETARY | Lowest Sale Price |\n| `Manufacturer` | Manufacturer | STRING\ \ | The brand that manufactures the advertised product. |\n| `Min. Bid` |\ \ Min. Bid | MONETARY | Min. Bid |\n| `Model` | Model | STRING | The model\ \ of the product. |\n| `Availability` | Number of sellers | INTEGER | The\ \ number of sellers selling this product. |\n| `Price` | Price | MONETARY\ \ | The price of the product. |\n| `Product Target URL` | Product Target URL\ \ | STRING | Product Target URL |\n| `Product availability` | Product availability\ \ | STRING | Product availability |\n| `Product Image` | Product image | STRING\ \ | The URL for the main image of your product. |\n| `Product page status`\ \ | Product page status | STRING | Product page status |\n| `Product status`\ \ | Product status | STRING | Product status |\n| `Promoting Status` | Promoting\ \ status | STRING | Promoting status |\n| `Replenishment status` | Replenishment\ \ status | STRING | Replenishment status |\n| `Shipped by` | Shipped by |\ \ STRING | Indicates the vendor or seller shipping this product. |\n| `Sold\ \ by` | Sold by | STRING | Indicates the vendor or seller selling this product\ \ |\n| `Title` | Title | STRING | The name of the product promoted in the\ \ campaign. |\n\n**Product Performance Data** (3 columns)\n\n| Column name\ \ | Display name | Type | Description |\n|---|---|---|---|\n| `Advertised\ \ revenue share` | Advertised revenue share | PERCENT | How much your ad revenue\ \ is contributing to your total revenue, calculated as total product ad revenue\ \ divided by product ordered revenue. |\n| `Ordered Revenue` | Ordered Revenue\ \ | MONETARY | The revenue generated by a customer order with adjustments\ \ made for prior sales, such as returns or cancellations. Expressed as price\ \ times ordered units. |\n| `TACoS` | TACoS | PERCENT | The total advertising\ \ cost of sale, calculated as total ad cost divided by product ordered revenue.\ \ |\n\n**Product Identifiers** (6 columns)\n\n| Column name | Display name\ \ | Type | Description |\n|---|---|---|---|\n| `Base & variants` | Base &\ \ variants | STRING | Base & variants |\n| `Ean` | EAN | STRING | European\ \ Article Number. |\n| `GTIN` | GTIN | STRING | GTIN |\n| `Mpn` | MPN | STRING\ \ | Manufacturer Part Number. |\n| `Parent Product ID` | Parent Product ID\ \ | STRING | The product ID of the parent product, if one exists |\n| `Upc`\ \ | UPC | STRING | The Amazon UPC code. |\n\n##### PORTFOLIO\n\n**Performance**\ \ (18 standard columns)\n\n| Column name | Display name | Type | Description\ \ |\n|---|---|---|---|\n| `AverageCPC` | Avg. CPC | MONETARY | The average\ \ cost per click expressed as the number of clicks divided by cost. |\n| `AveragePosition`\ \ | Avg. Pos. | FLOAT | Avg. Pos. |\n| `CPM` | CPM | MONETARY | CPM |\n| `CTR`\ \ | CTR | PERCENT | The click-through rate, expressed as the number of clicks\ \ on the ad divided by the times it was shown. |\n| `Clicks` | Clicks | INTEGER\ \ | The number of clicks reported by the publisher. |\n| `Conversion` | Conv.\ \ | FLOAT | An aggregation of all conversion actions coming from publishers,\ \ Skai pixel, and 3rd-party integration, or from actions you select. |\n|\ \ `ConversionRate` | Conv. Rate | PERCENT | The conversion rate, expressed\ \ as the number of conversions divided by the number of clicks. |\n| `Cost`\ \ | Cost | MONETARY | The publisher cost, in the currency of the Skai profile.\ \ |\n| `CostConversion` | Cost/Conv. | MONETARY | The cost of each conversion,\ \ expressed as cost divided by the number of conversions. |\n| `Impressions`\ \ | Imp. | INTEGER | The number of impressions reported by the publisher.\ \ |\n| `ImpressionShare` | Imp. Share (IS) | PERCENT | The percentage of ad\ \ impressions you've received divided by the estimated number of impressions\ \ you were eligible to receive. |\n| `LostImpressionShareBudget` | Lost IS\ \ (Budget) | PERCENT | The percentage of impressions lost due to budget constraints.\ \ |\n| `LostImpressionShareRank` | Lost IS (Rank) | PERCENT | The percentage\ \ of Impressions lost due to rank constraints. |\n| `Profit` | Profit | MONETARY\ \ | Profit = revenue - cost |\n| `ROI` | ROAS | FLOAT | Return on investment.\ \ The formula is: ROI = revenue / cost |\n| `Revenue` | Rev. | MONETARY |\ \ An aggregation of all monetary value of conversion actions, coming from\ \ publishers, Skai's pixel, and 3rd-party integration. |\n| `RevConversion`\ \ | Rev./Conv. | MONETARY | The revenue amount divided by the number of conversions.\ \ |\n| `SpendPlan` | Planned Budget | MONETARY | Planned Budget |\n\n**Attributes**\ \ (35 columns)\n\n| Column name | Display name | Type | Description |\n|---|---|---|---|\n\ | `ActualSpendToDate` | Actual Spend to Date | MONETARY | On Budget Pacing\ \ portfolios only — the amount of actual spend from the beginning of the cycle\ \ up to today. |\n| `ActualVsExpectedSpend` | Actual vs Expected Spend | PERCENT\ \ | The ratio between actual and expected spend to date. Above 100 = overspending;\ \ below 100 = underspending. |\n| `ActualVsExpectedSpendRange` | Actual vs\ \ Expected Spend (range) | STRING | Segmentation into groups of 10% of the\ \ above column. |\n| `Agency` | Agency | STRING | Agency |\n| `BidStrategyTarget`\ \ | Bid Strategy Target | STRING | The value for your publisher-optimized\ \ campaigns. |\n| `BusinessCycle` | Business Cycle | STRING | Classification\ \ of the budget duration of a portfolio. |\n| `CostGoalValue` | Cycle Budget\ \ | MONETARY | Cycle Budget |\n| `CreateDate` | Creation Date | DATETIME |\ \ The date and time at which the Skai entity was created. |\n| `CycleEndDate`\ \ | Cycle End Date | STRING | Cycle End Date |\n| `CycleProgress` | Cycle\ \ Progress | PERCENT | Cycle Progress |\n| `CycleStartDate` | Cycle Start\ \ Date | STRING | Cycle Start Date |\n| `ExpectedSpendToDate` | Expected Spend\ \ to Date | MONETARY | For Budget Pacing portfolios, the amount of expected\ \ spend from the beginning of the cycle until today. |\n| `IntradayBidding`\ \ | Intraday Bidding | STRING | Indicates whether Skai is optimizing at an\ \ intraday level of up to 8 times a day. |\n| `KPI value` | KPI value | FLOAT\ \ | KPI value |\n| `MaxEffectiveBid` | Max Effective Bid | FLOAT | Max Effective\ \ Bid |\n| `NextCycleBudget` | Next Cycle Budget | MONETARY | For Budget Pacing\ \ portfolios only, the budget for the next cycle. |\n| `OptimizeWithBudgetCaps`\ \ | Budget Pacing | BOOLEAN | Budget Pacing |\n| `Policy Last Accept Day`\ \ | Policy Last Accept Day | DATE | Policy Last Accept Day |\n| `Policy Last\ \ Run Description` | Policy Last Run Description | STRING | Policy Last Run\ \ Description |\n| `Policy Last Run Results` | Policy Last Run Results | STRING\ \ | Policy Last Run Results |\n| `Policy Last Run Status` | Policy Last Run\ \ Status | STRING | Indicates the status of the last time the bidding and/or\ \ budgeting policy ran for a given portfolio. |\n| `Policy Last run Day` |\ \ Policy Last run Day | DATE | Policy Last run Day |\n| `Policy Scheduling`\ \ | Portfolio Status | STRING | Portfolio Status |\n| `PolicyName` | Bid Policy\ \ | STRING | Bid Policy |\n| `Portfolio min. CPC` | Portfolio min. CPC | MONETARY\ \ | Portfolio min. CPC |\n| `PortfolioAlerts` | Portfolio Alerts | STRING\ \ | For Budget Pacing portfolios, displays alerts about the performance and\ \ health of the portfolio. |\n| `PortfolioId` | Portfolio ID | INTEGER | The\ \ ID of the Skai portfolio. |\n| `PortfolioName` | Portfolio Name | STRING\ \ | The name of the Skai portfolio. |\n| `PortfolioType` | Type | STRING |\ \ Type |\n| `ProfileId` | Profile ID | STRING | The Skai profile ID. |\n|\ \ `ProfileName` | Profile Name | STRING | The Skai profile name. |\n| `ProfileStatus`\ \ | Profile Status | STRING | The Skai profile status. |\n| `Rollover` | Rollover\ \ | MONETARY | Rollover |\n| `SignalEnhancementStatus` | Signal Enhancement\ \ | STRING | Signal Enhancement |\n| `isDefault` | Default Portfolio | BOOLEAN\ \ | Default Portfolio |\n\n**Account-configured columns** *(vary by account\ \ — call this endpoint authenticated to see yours)*\n\n| Column name | Display\ \ name | Type | Description |\n|---|---|---|---|\n| `[Your Dimension Name]`\ \ | *(your label)* | STRING | A custom tagging label you define in Skai (e.g.\ \ \"Brand\", \"Region\", \"Campaign Theme\"). Applied to entities; any value\ \ you've set appears here. |\n| `[Publisher / Pixel / 3rd-party Conversion]`\ \ | *(event name)* | FLOAT | Each tracked conversion event appears as two\ \ columns: a **count** column (number of conversions) and a **revenue** column\ \ (monetary value). Names are set in Settings → Conversions. |\n| `[Your Custom\ \ Metric]` | *(formula name)* | FLOAT | A formula-based column your team defines\ \ (e.g. ROAS = Revenue / Cost). Available in the *Custom Metrics+* and *Custom\ \ Metrics (legacy)* groups. |\n\n##### PRODUCT_ASSET\n\n*Called \"Products\"\ \ in the Skai UI — the product-level grid for retail media publishers.*\n\n\ **Performance** (12 standard columns)\n\n| Column name | Display name | Type\ \ | Description |\n|---|---|---|---|\n| `AverageCPC` | Avg. CPC | MONETARY\ \ | The average cost per click expressed as the number of clicks divided by\ \ cost. |\n| `CTR` | CTR | PERCENT | The click-through rate, expressed as\ \ the number of clicks on the ad divided by the times it was shown. |\n| `Clicks`\ \ | Clicks | INTEGER | The number of clicks reported by the publisher. |\n\ | `Conversion` | Conv. | FLOAT | An aggregation of all conversion actions\ \ coming from publishers, Skai pixel, and 3rd-party integration, or from actions\ \ you select. |\n| `ConversionRate` | Conv. Rate | PERCENT | The conversion\ \ rate, expressed as the number of conversions divided by the number of clicks.\ \ |\n| `Cost` | Cost | MONETARY | The publisher cost, in the currency of the\ \ Skai profile. |\n| `CostConversion` | Cost/Conv. | MONETARY | The cost of\ \ each conversion, expressed as cost divided by the number of conversions.\ \ |\n| `Impressions` | Imp. | INTEGER | The number of impressions reported\ \ by the publisher. |\n| `Profit` | Profit | MONETARY | Profit = revenue -\ \ cost |\n| `ROI` | ROI | FLOAT | Return on investment. The formula is: ROI\ \ = revenue / cost |\n| `Revenue` | Rev. | MONETARY | An aggregation of all\ \ monetary value of conversion actions, coming from publishers, Skai's pixel,\ \ and 3rd-party integration. |\n| `RevConversion` | Rev./Conv. | MONETARY\ \ | The revenue amount divided by the number of conversions. |\n\n**Attributes**\ \ (18 columns)\n\n| Column name | Display name | Type | Description |\n|---|---|---|---|\n\ | `Additional images` | Additional images | STRING | Links to up to 20 additional\ \ images of your item, separated by a comma (,), semicolon (;), space ( )\ \ or vertical bar (|). |\n| `Additional images (cdn)` | Additional images\ \ (CDN) | STRING | Additional image URLs of the product, hosted on CDN. |\n\ | `Brand` | Brand | STRING | The brand of the product. |\n| `Buy box winner\ \ (legacy)` | Buy box winner (legacy) | BOOLEAN | Indicates if you are the\ \ Buy Box winner for a given product |\n| `Color` | Color | STRING | The color\ \ of the product listing linked to the ad. |\n| `Inventory` | Inventory |\ \ INTEGER | The current availability of the item. |\n| `Manufacturer` | Manufacturer\ \ | STRING | The brand that manufactures the advertised product. |\n| `Marketplace`\ \ | Marketplace | STRING | A geographical marketplace where products are sold.\ \ |\n| `Material` | Material | STRING | The material the item is made from,\ \ such as cotton, polyester, denim or leather. |\n| `Model` | Model | STRING\ \ | The model of the product. |\n| `# Of Ads` | Number of ads | INTEGER |\ \ The number of ads promoting this product |\n| `Availability` | Number of\ \ sellers | INTEGER | The number of sellers selling this product. |\n| `Price`\ \ | Price | MONETARY | The price of the product. |\n| `Product images` | Product\ \ images | STRING | The URL for the main image of your product. |\n| `Publisher`\ \ | Publisher | STRING | The name of the publisher serving the ads. |\n| `Shipped\ \ by` | Shipped by | STRING | Indicates the vendor or seller shipping this\ \ product. |\n| `Sold by` | Sold by | STRING | Indicates the vendor or seller\ \ selling this product |\n| `Title` | Title | STRING | The name of the product\ \ promoted in the campaign. |\n\n**Account-configured columns** *(vary by\ \ account — call this endpoint authenticated to see yours)*\n\n| Column name\ \ | Display name | Type | Description |\n|---|---|---|---|\n| `[Your Dimension\ \ Name]` | *(your label)* | STRING | A custom tagging label you define in\ \ Skai (e.g. \"Brand\", \"Region\", \"Campaign Theme\"). Applied to entities;\ \ any value you've set appears here. |\n| `[Publisher / Pixel / 3rd-party\ \ Conversion]` | *(event name)* | FLOAT | Each tracked conversion event appears\ \ as two columns: a **count** column (number of conversions) and a **revenue**\ \ column (monetary value). Names are set in Settings → Conversions. |\n| `[Your\ \ Custom Metric]` | *(formula name)* | FLOAT | A formula-based column your\ \ team defines (e.g. ROAS = Revenue / Cost). Available in the *Custom Metrics+*\ \ and *Custom Metrics (legacy)* groups. |\n\n**Product Identifiers** (8 columns)\n\ \n| Column name | Display name | Type | Description |\n|---|---|---|---|\n\ | `Base & variants` | Base & variants | STRING | Base & variants |\n| `Ean`\ \ | EAN | STRING | European Article Number. |\n| `GTIN` | GTIN | STRING |\ \ Global Trade Item Number. |\n| `Mpn` | MPN | STRING | Manufacturer Part\ \ Number. |\n| `Parent Product ID` | Parent Product ID | STRING | The product\ \ ID of the parent product, if one exists. |\n| `Parent Product` | Parent\ \ product | STRING | The product ID of the parent product, if one exists.\ \ |\n| `Product Id` | Product ID | STRING | The unique identifier of the product\ \ in the publisher. |\n| `Upc` | UPC | STRING | The Amazon UPC code. |\n#####\ \ PRODUCT_TARGETING\n\n*Product targeting entities — keywords, ASINs, categories,\ \ and product attributes used in retail media targeting.*\n\n> **Note:** Column\ \ names for PRODUCT_TARGETING use display-name style (e.g. `Avg.CPC`, `Conv.`)\ \ rather than camelCase. Use these exact strings in your API requests.\n\n\ **Performance** (12 standard columns)\n\n| Column name | Display name | Type\ \ | Description |\n|---|---|---|---|\n| `Avg.CPC` | Avg. CPC | MONETARY |\ \ The average cost per click expressed as the number of clicks divided by\ \ cost. |\n| `CTR` | CTR | PERCENT | The click-through rate, expressed as\ \ the number of clicks on the ad divided by the times it was shown. |\n| `Clicks`\ \ | Clicks | INTEGER | The number of clicks reported by the publisher. |\n\ | `Conv.` | Conv. | FLOAT | An aggregation of all conversion actions coming\ \ from publishers, Skai pixel, and 3rd-party integration, or from actions\ \ you select. |\n| `Conv. Rate` | Conv. Rate | PERCENT | The conversion rate,\ \ expressed as the number of conversions divided by the number of clicks.\ \ |\n| `Cost` | Cost | MONETARY | The publisher cost, in the currency of the\ \ Skai profile. |\n| `Cost/Conv.` | Cost/Conv. | MONETARY | The cost of each\ \ conversion, expressed as cost divided by the number of conversions. |\n\ | `Imp.` | Imp. | INTEGER | The number of impressions reported by the publisher.\ \ |\n| `Profit` | Profit | MONETARY | Profit = revenue - cost |\n| `ROI` |\ \ ROI | FLOAT | Return on investment. The formula is: ROI = revenue / cost\ \ |\n| `Rev` | Rev. | MONETARY | An aggregation of all monetary value of conversion\ \ actions, coming from publishers, Skai's pixel, and 3rd-party integration.\ \ |\n| `Rev./Conv.` | Rev./Conv. | MONETARY | The revenue amount divided by\ \ the number of conversions. |\n\n**Attributes** (30 columns)\n\n| Column\ \ name | Display name | Type | Description |\n|---|---|---|---|\n| `Ad Group\ \ Name` | Ad Group Name | STRING | The name of the ad group. |\n| `AdGroupId`\ \ | Ad Group ID | INTEGER | The ad group ID in Skai. |\n| `AdGroupStatusToDisplay`\ \ | Ad Group Status | STRING | The status of the ad group. |\n| `Bid` | Bid\ \ | MONETARY | The entity bid amount in the currency defined for the Skai\ \ profile. |\n| `Brand` | Brand | STRING | The brand of the product. |\n|\ \ `Campaign ID` | Campaign ID | INTEGER | The campaign ID in Skai. |\n| `Campaign\ \ Name` | Campaign Name | STRING | The campaign name in Skai. |\n| `CampaignStatusToDisplay`\ \ | Campaign Status | STRING | The status of the campaign. |\n| `CampaignType`\ \ | Campaign Goal | STRING | The type of campaign. |\n| `Category id` | Category\ \ id | STRING | Category id |\n| `Channel` | Publisher | STRING | The name\ \ of the publisher serving the ads. |\n| `Channel Target ID` | Channel Target\ \ ID | STRING | The target ID in the publisher. |\n| `FailureReason` | Failure\ \ Reason | STRING | The latest error recorded upon a failed attempt to sync\ \ entity changes to the publisher. |\n| `Max. Price` | Max. Price | MONETARY\ \ | Maximum price filter for product targeting. |\n| `Max. Rating` | Max.\ \ Rating | FLOAT | Maximum customer rating filter for product targeting. |\n\ | `Min. Price` | Min. Price | MONETARY | Minimum price filter for product\ \ targeting. |\n| `Min. Rating` | Min. Rating | FLOAT | Minimum customer rating\ \ filter for product targeting. |\n| `Modified` | Modified | BOOLEAN | Indicates\ \ an edited entity. |\n| `Product Pages Bid Adj.` | Product Pages Bid Adj.\ \ | FLOAT | A percentage increase or decrease in the bid for this placement.\ \ |\n| `Profile Id` | Profile ID | INTEGER | The Skai profile ID. |\n| `Profile\ \ Name` | Profile Name | STRING | The Skai profile name. |\n| `ProfileStatus`\ \ | Profile Status | STRING | The Skai profile status. |\n| `Rest of Search\ \ Bid Adj.` | Rest of Search Bid Adj. | FLOAT | A percentage increase or decrease\ \ in the bid for placements outside top of search. |\n| `Shipping Eligibility`\ \ | Shipping Eligibility | STRING | Shipping eligibility status for the targeted\ \ product. |\n| `Target` | Target | STRING | The targeting expression (keyword,\ \ ASIN, category, or product attribute). |\n| `Target ID` | Target ID | INTEGER\ \ | The targeting ID in Skai. |\n| `Target Type` | Target Type | STRING |\ \ The type of targeting (e.g. keyword, ASIN, category, product attribute).\ \ |\n| `Targeting Status` | Targeting Status | STRING | The status of the\ \ targeting entity. |\n| `Title` | Title | STRING | The name of the product\ \ promoted in the campaign. |\n| `Top of Search Bid Adj.` | Top of Search\ \ Bid Adj. | FLOAT | A percentage increase or decrease in the bid for top-of-search\ \ placement. |\n\n**Account-configured columns** *(vary by account — call\ \ this endpoint authenticated to see yours)*\n\n| Column name | Display name\ \ | Type | Description |\n|---|---|---|---|\n| `[Your Dimension Name]` | *(your\ \ label)* | STRING | A custom tagging label you define in Skai (e.g. \"Brand\"\ , \"Region\", \"Campaign Theme\"). Applied to entities; any value you've set\ \ appears here. |\n| `[Publisher / Pixel / 3rd-party Conversion]` | *(event\ \ name)* | FLOAT | Each tracked conversion event appears as two columns: a\ \ **count** column (number of conversions) and a **revenue** column (monetary\ \ value). Names are set in Settings → Conversions. |\n| `[Your Custom Metric]`\ \ | *(formula name)* | FLOAT | A formula-based column your team defines (e.g.\ \ ROAS = Revenue / Cost). Available in the *Custom Metrics+* and *Custom Metrics\ \ (legacy)* groups. |\n\n\n---\nReady to query? Use these column names in\ \ [Synchronous Reports](#operation/fetchReport) or [Async Analysis Reports](#operation/asyncAnalysisReport)." operationId: "getAvailableColumns" parameters: - name: "entity" in: "path" description: "Important: For product grids use entity=PRODUCT_ASSET. For product\ \ targeting use entity=PRODUCT_TARGETING." required: true style: "simple" explode: false schema: type: "string" enum: - "CAMPAIGN" - "ADGROUP" - "KEYWORD" - "AD" - "PORTFOLIO" - "PRODUCT_ASSET" - "PRODUCT_TARGETING" - $ref: "#/components/parameters/ks" - name: "profile_id" in: "query" description: "For _Cross-Profile_ columns, use `profile_id=0`. \nFor _Single-Profile_\ \ columns, use the id of a single profile, like `profile_id=412`.\n" required: true style: "form" explode: true example: 412 responses: 200: description: "The operation was completed successfully" content: application/json: schema: $ref: "#/components/schemas/ReportColumnsResponse" 400: $ref: "#/components/responses/BadRequest" 500: $ref: "#/components/responses/InternalServerError" /api/v1/reports/async: post: tags: - "Asynchronous Reports" summary: "Configure and run a Fusion/Structure report (deprecated)" description: "Trigger a Fusion/Structure/Tracking template report run asynchronously.\n\ \n**For new integrations, use [POST /api/v1/reports/async/analysis](#operation/asyncAnalysisReport)\ \ instead.** This endpoint runs legacy template-based reports, which expose\ \ a fixed subset of columns and entity types. It remains fully supported for\ \ existing clients — but if you start here, you may find that columns you\ \ need later are not available through these templates. The analysis endpoint\ \ gives access to the full column set available in the Skai platform." operationId: "runAsyncReport" parameters: - $ref: "#/components/parameters/ks" requestBody: $ref: "#/components/requestBodies/asyncReportRequest" responses: 200: description: "Report execution triggered successfully" content: application/json: schema: type: "object" properties: run_id: type: "string" description: "Triggered report execution ID" 400: description: "Invalid report request" 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/campaigns: get: tags: - "Campaigns" summary: "Get campaigns" description: "Get campaigns API call allows you to retrieve campaign information.\ \ You can filter by multiple fields, such as the profile ID and channel type,\ \ or request specific campaigns by their IDs.\nThe result is a list of campaign\ \ objects that can be paged through using the returned next_page/previous_page\ \ values.\n" operationId: "getCampaigns" parameters: - $ref: "#/components/parameters/ks" - $ref: "#/components/parameters/pageId" - $ref: "#/components/parameters/campaignIds" - $ref: "#/components/parameters/channelCampaignIds" - $ref: "#/components/parameters/profileId" - $ref: "#/components/parameters/channelTypes" - $ref: "#/components/parameters/campaignStatuses" responses: 200: $ref: "#/components/responses/GetCampaignEntitySuccessResponse" 400: $ref: "#/components/responses/GetCampaignBadRequest" put: tags: - "Campaigns" summary: "Edit an existing campaign" description: "Update one or more campaigns. Editable attributes are documented\ \ in the request body schema below.\n\n**Need more attributes?** Use [Bulk\ \ Update (One File)](#tag/Bulk-Update) for bulk edits with the full attribute\ \ set." operationId: "updateCampaigns" parameters: - $ref: "#/components/parameters/ks" requestBody: $ref: "#/components/requestBodies/editCampaigns" responses: 200: $ref: "#/components/responses/EntitySuccessResponse" 400: $ref: "#/components/responses/BadRequest" 500: $ref: "#/components/responses/InternalServerError" post: tags: - "Campaigns" summary: "Create a new campaign" description: "Create one or more campaigns. Supported attributes are documented\ \ in the request body schema below (name, budget, bid, status, dates, campaign\ \ type).\n\n**Need more attributes?** Use [Bulk Update (One File)](#tag/Bulk-Update)\ \ to create campaigns with the full range of settings including targeting,\ \ extensions, dimension labels, and publisher-specific fields." operationId: "createCampaigns" parameters: - $ref: "#/components/parameters/ks" requestBody: $ref: "#/components/requestBodies/createCampaigns" responses: 201: $ref: "#/components/responses/EntitySuccessResponse" 400: $ref: "#/components/responses/BadRequest" 500: $ref: "#/components/responses/InternalServerError" /api/v1/reports: post: tags: - "Synchronous Reports" summary: "Fetch a report" description: "Fetch reporting data for any entity type across all connected\ \ publisher accounts.\n\n**Supported entities:** `CAMPAIGN` `ADGROUP` `KEYWORD`\ \ `AD` `PRODUCT_ASSET` `PRODUCT_TARGETING` `PORTFOLIO`\n\nLess commonly used\ \ entities — `LOCATIONS`, `NEGATIVE_KEYWORDS`, `SITELINK`, `CREATIVE_ASSET`,\ \ `ASSET_GROUP` — are also supported. Use [Available Columns](#operation/getAvailableColumns)\ \ with the relevant entity to retrieve their column lists.\n\n#### Building\ \ a request\n\n1. **Choose an `entity`** — the grid you want to report on\ \ (e.g. `CAMPAIGN`).\n2. **Pick your `fields`** — each field needs a `name`\ \ and a `group`. Use [Available Columns](#operation/getAvailableColumns) to\ \ browse what's available. The `group` value maps directly to the column group\ \ names returned by that endpoint (e.g. `ATTRIBUTES`, `PERFORMANCE`, `TimeSegment`).\n\ 3. **Set a `date_range`** — `start_date` and `end_date` in `YYYY-MM-DD` format.\n\ 4. **Add `profile_id` or `profile_token`** if you need single-profile columns\ \ (dimensions, custom metrics, conversion events). Use `profile_id=0` for\ \ cross-profile columns only.\n\n#### Pagination\n\nResults are limited to\ \ 1000 rows per request. Use `page` (0-indexed) to paginate through larger\ \ result sets. For datasets over a few thousand rows, prefer [Async Analysis\ \ Reports](#operation/asyncAnalysisReport) — they stream results to a file\ \ with no row limit.\n\n#### Filtering and sorting\n\nUse `filters` to narrow\ \ rows before they're returned (e.g. `Impressions > 0` to skip zero-spend\ \ rows). Use `sort` to order results server-side before pagination is applied." operationId: "fetchReport" parameters: - $ref: "#/components/parameters/ks" requestBody: $ref: "#/components/requestBodies/ReportRequest" responses: 200: description: "successful operation" content: application/json: schema: $ref: "#/components/schemas/ReportApiResponseDTO" 400: $ref: "#/components/responses/BadRequest" 500: $ref: "#/components/responses/InternalServerError" options: description: "for cross origin requests" parameters: - $ref: "#/components/parameters/ks" responses: 200: description: "successful operation" /api/v1/reports/async/analysis: post: tags: - "Asynchronous Reports" summary: "Configure and run an analysis grid report (recommended)" description: "Run a report asynchronously and download the results as a file.\ \ Use this instead of [Synchronous Reports](#operation/fetchReport) when your\ \ dataset exceeds 1,000 rows, or when you want to avoid blocking on a long-running\ \ query.\n\nThe request body uses the same `entity`, `fields`, `date_range`,\ \ `filters`, and `sort` structure as the synchronous report endpoint — refer\ \ to [Available Columns](#operation/getAvailableColumns) for field names and\ \ groups.\n\n#### Workflow\n\n**1. Submit** — this endpoint returns immediately.\ \ The `execution_id` is in the `Location` response header:\n```\nLocation:\ \ https://api.kenshoo.com/v2/reports/runs/rpx-fec94574-152c-4e47-ba57-e5a4029d652e?ks=1234\n\ ```\nExtract the path segment after `/runs/` — that is your `execution_id`.\n\ \n**2. Poll for completion** — [GET /api/v1/reports/async/{execution_id}/status](#operation/getAsyncReportStatus)\n\ Poll until status is `COMPLETED`. Runtime varies from a few seconds to an\ \ hour depending on data volume.\n\n**3. Download** — [GET /api/v1/reports/async/{execution_id}](#operation/downloadAsyncReport)\n\ Returns a compressed file (ZIP or GZIP, set via `compress_method`) containing\ \ a CSV with all result rows — no row limit.\n\n#### Key parameters\n\n| Parameter\ \ | Required | Description |\n|---|---|---|\n| `entity` | Yes | Entity type\ \ to report on (e.g. `CAMPAIGN`, `KEYWORD`) |\n| `fields` | Yes | Columns\ \ to include — use names from [Available Columns](#operation/getAvailableColumns)\ \ |\n| `date_range` | Yes | `start_date` and `end_date` in `YYYY-MM-DD` format\ \ |\n| `profile_id` | Conditional | Required for single-profile columns; use\ \ `0` for cross-profile columns only |\n| `info_level` | No | `SUMMARY`, `BREAKDOWN`,\ \ or `BOTH` (default: `BOTH`) |\n| `breakdown_type` | No | `FLAT` (default),\ \ `GROUP` (segment by date), or `SEGMENT` (date + another column) |\n| `skip_zero_performance_rows`\ \ | No | Exclude rows with no performance data (default: `false`) |\n\n####\ \ cURL example\n\n```bash\n# Step 1 — submit the report\ncurl -i -X POST \\\ \n 'https://services.kenshoo.com/api/v1/reports/async/analysis?ks='\ \ \\\n -H 'Authorization: Bearer ' \\\n -H 'Content-Type: application/json'\ \ \\\n -d '{\n \"entity\": \"CAMPAIGN\",\n \"profile_id\": 118,\n \ \ \"date_range\": {\"start_date\": \"2026-01-01\", \"end_date\": \"2026-01-14\"\ },\n \"fields\": [\n {\"name\": \"CampaignName\", \"group\": \"ATTRIBUTES\"\ },\n {\"name\": \"Clicks\", \"group\": \"PERFORMANCE\"},\n {\"name\"\ : \"Day\", \"group\": \"TimeSegment\"}\n ]\n }'\n# Check the Location\ \ response header for your execution_id\n\n# Step 2 — poll until COMPLETED\n\ curl 'https://services.kenshoo.com/api/v1/reports/async//status?ks='\ \ \\\n -H 'Authorization: Bearer '\n# {\"status\": \"COMPLETED\"\ }\n\n# Step 3 — download the file\ncurl -o report.zip \\\n 'https://services.kenshoo.com/api/v1/reports/async/?ks='\ \ \\\n -H 'Authorization: Bearer '\n```" operationId: "asyncAnalysisReport" parameters: - $ref: "#/components/parameters/ks" requestBody: $ref: "#/components/requestBodies/AsyncAnalysis" responses: 200: description: "Report execution triggered successfully" headers: Location: description: "The `run_id` of the report will show in this header. Use\ \ this ID to poll for the report status or to download the report.\ \ The value will be in this format: `https://api.kenshoo.com/v2/reports/runs/rpx-fec94574-152c-4e47-ba57-e5a4029d652e?ks=1234`.\ \ In this example, `rpx-fec94574-152c-4e47-ba57-e5a4029d652e` is the\ \ `execution_id`." style: "simple" explode: false schema: type: "string" content: application/json: schema: type: "string" example: "The response body will be empty. See the Location header\ \ to get the Run ID" 400: description: "Invalid report request" 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/bulk_update: post: tags: - "Bulk Update" summary: "Make bulk changes to multiple entities" description: "Upload a CSV bulksheet to create and update campaigns, ad groups,\ \ keywords, ads, and more — across dozens of publishers — in a single API\ \ call.\n\n#### Unmatched publisher breadth\n\nNo other platform offers programmatic\ \ create and edit operations across this many publishers in one API. Skai's\ \ Bulk Update covers:\n\n| Category | Publishers |\n|---|---|\n| Search |\ \ Google Ads, Microsoft Ads, Yahoo Japan, Baidu, and others |\n| Retail Media\ \ | Amazon (SP/SB/SD), Walmart (SP/SB/SV), Instacart, Criteo, DoorDash, Sam's\ \ Club, Bol, Topsort, Moloco, Koddi, and 100+ others |\n| Social | Pinterest,\ \ Snapchat, TikTok, Apple Search Ads |\n| Social (Meta, LinkedIn, Reddit)\ \ | Dimension assignment and basic status edits |\n\n**Supported operations\ \ by entity type:**\n\n| Entity | Create | Edit |\n|---|---|---|\n| Campaign\ \ | Yes | Yes |\n| Ad Group | Yes | Yes |\n| Keyword | Yes | Yes |\n| Ad |\ \ Yes | Yes |\n| Product Group | — | Yes (dimension assignment) |\n| Target\ \ | — | Yes (dimension assignment) |\n| Search Term | — | Yes (dimension assignment)\ \ |\n\nThe file format is identical to what Skai users export and import manually\ \ in the platform — every attribute visible in the Skai UI is editable through\ \ this API.\n\n---\n\n#### The bulksheet format\n\nBulksheets are UTF-8 CSV\ \ files. Each row is one entity. **Use `bulk_update_type=MULTI_ENTITY_FILE`\ \ (recommended)** — it allows any mix of entity types in a single file using\ \ an `Entity Type` column as the first column:\n\n```\nEntity Type,Profile\ \ ID,Campaign ID,Ad Group ID,Campaign Name,Ad Group Name,Keyword,Keyword Match\ \ Type,Keyword Bid,Status\nCampaign,55,,,,,,,,Active\nAd group,55,1001,,,Brand\ \ Ad Group,,,, Active\nKeyword,55,1001,5001,,,running shoes,exact,0.50,Active\n\ ```\n\nIf you need single-entity files, set `bulk_update_type` to the specific\ \ entity (e.g. `CAMPAIGN`) and omit the `Entity Type` column — though everything\ \ supported in single-entity mode is also supported in `MULTI_ENTITY_FILE`.\n\ \n---\n\n#### Editing entities\n\nTo edit, each row needs only three things:\n\ 1. **Entity Type** — `Campaign`, `Ad group`, `Ad`, or `Keyword`\n2. **The\ \ entity's Skai ID** — `Campaign ID`, `Ad Group ID`, `Ad ID`, or `Keyword\ \ ID`\n3. **Only the columns you want to change** — all other columns can\ \ be omitted\n\n> **Skai IDs vs publisher IDs:** Bulksheets use Skai's internal\ \ IDs, not publisher IDs. Retrieve them via the [Reporting API](#operation/fetchReport)\ \ — e.g. request the `CampaignId` field on the CAMPAIGN entity.\n\n**Minimal\ \ edit example — update budgets for 3 campaigns:**\n```\nEntity Type,Campaign\ \ ID,Campaign Daily Budget\nCampaign,1001,150\nCampaign,1002,200\nCampaign,1003,75\n\ ```\n\n---\n\n#### Creating entities\n\nTwo methods are supported. Use **IDs**\ \ when you have them (faster); use **hierarchy names** when you don't.\n\n\ **ID method** — provide the parent entity's Skai ID. This example creates\ \ two keywords in an existing ad group (ID 55123):\n```\nEntity Type,Ad Group\ \ ID,Keyword,Keyword Match Type,Keyword Bid\nKeyword,55123,running shoes,exact,0.50\n\ Keyword,55123,buy running shoes,broad,0.40\n```\n\n**Hierarchy method** —\ \ provide the name path instead of IDs. This example creates one keyword by\ \ identifying its ad group through the Channel Account ID (mandatory), Profile\ \ Name, Campaign Name, and Ad Group Name:\n```\nEntity Type,Channel Account\ \ ID,Profile Name,Campaign Name,Ad Group Name,Keyword,Keyword Match Type,Keyword\ \ Bid\nKeyword,673,Skai Sports - US - Google,Brand Campaign,Brand Ad Group,running\ \ shoes,exact,0.50\n```\n\n**Minimum required columns for creation:**\n\n\ | Entity | ID method | Hierarchy method |\n|---|---|---|\n| Campaign | Channel\ \ Account ID + Profile ID + Campaign Name | Channel Account ID + Profile Name\ \ + Campaign Name |\n| Ad Group | Campaign ID + Ad Group Name | + Campaign\ \ Name + Ad Group Name |\n| Ad | Ad Group ID + Ad Type | + Campaign Name +\ \ Ad Group Name + Ad Type |\n| Keyword | Ad Group ID + Keyword + Keyword Match\ \ Type | + Campaign Name + Ad Group Name + Keyword + Keyword Match Type |\n\ \n**Publisher-specific notes:**\n- **Status values differ by publisher type:**\ \ `Active` / `Paused` (Apple Search Ads); `Approve` / `Pause` (Retail Media);\ \ `Approved` / `Pause` (Search & most Social)\n- **Retail Media creates**\ \ require `Campaign Tracking Level = None`\n- Some publishers have additional\ \ required fields (e.g. Amazon Sponsored Brands requires `Brand entity ID`\ \ or `Brand entity name`; Pinterest and Snapchat require `Campaign Start Date`).\ \ Start from an export when working with a new publisher.\n\n---\n\n#### Best\ \ practices\n\n**Start from an export.** The fastest way to get the correct\ \ column format for a publisher or campaign type is to export existing entities\ \ from the Skai UI. The export is identical in format to the import — edit\ \ the values you need and re-import. This is especially valuable the first\ \ time you work with a new publisher or campaign type.\n\n**Work with the\ \ media team first.** When building programmatic bulksheets, get a working\ \ example verified in the Skai UI with the media team, then implement the\ \ code to generate it at scale.\n\n**Use minimal columns for edits.** You\ \ only need the entity ID and the columns you're changing. Omitting unrelated\ \ columns reduces errors and makes the file easier to debug.\n\n**Use the\ \ error file — it's readable.** When rows fail, retrieve the error file (see\ \ below) — you get all failed rows in the original format with a plain-text\ \ error description appended as the last column. Errors are specific and actionable.\ \ An AI coding agent can read this file, parse the failures, fix the rows,\ \ and resubmit without manual intervention.\n\n---\n\n#### Retrieving results\n\ \nAfter submitting, use the returned `job_id` to poll status and retrieve\ \ results.\n\n**1. Poll for completion** — [GET /api/v1/jobs/{job_id}/status](#tag/Jobs/paths/~1api~1v1~1jobs~1{job_id}~1status/get)\n\ Poll until status is `JOB_COMPLETED` or `JOB_COMPLETED_WITH_FAILURES`.\n\n\ **2. Get the summary** — [GET /api/v1/jobs/{job_id}/results/file](#tag/Jobs/paths/~1api~1v1~1jobs~1{job_id}~1results~1file/get)\ \ with `info_level=SUMMARY`\nReturns a JSON summary:\n```json\n{\n \"elementType\"\ : \"MULTI_ENTITY_FILE\",\n \"processed\": 25,\n \"updated\": 23,\n \"failed\"\ : 2\n}\n```\n\n**3. Get failed rows** — same endpoint with `info_level=BREAKDOWN`\n\ Returns a zipped CSV with all failed rows in the original import format, plus\ \ an error description in the last column." operationId: "bulkUpdate" parameters: - $ref: "#/components/parameters/ks" requestBody: content: multipart/form-data: schema: type: "object" properties: file: type: "string" description: "CSV, XLSX, TXT, or TSV — uncompressed or zip-compressed.\ \ Maximum size 50 MB." format: "binary" file_delimiter: type: "string" description: "Column delimiter used in the file. Use `COMMA` for\ \ standard CSV." enum: - "COMMA" - "TAB" - "SEMICOLON" bulk_update_type: type: "string" description: "The entity type of the uploaded file. Use `MULTI_ENTITY_FILE`\ \ (recommended) to mix entity types in one file using an `Entity\ \ Type` column. Use a specific entity type for single-entity files." enum: - "MULTI_ENTITY_FILE" - "CAMPAIGN" - "AD_GROUP" - "KEYWORD" - "AD" - "PRODUCT_GROUP" - "PORTFOLIO" - "SITELINK" - "AUDIENCES" - "PROFILE_STATUS" - "PROFILE_F2A" - "PROFILE_ONBOARDING" required: true responses: 200: description: "Job created successfully" content: application/json: schema: type: "object" properties: job_id: type: "string" description: "Use this ID to poll job status and retrieve results." example: job_id: "c42f1168-4cd6-42e8-b654-2a7f0043699e" 400: $ref: "#/components/responses/BadRequest" 500: $ref: "#/components/responses/InternalServerError" x-code-samples: - lang: "cURL" source: "curl -X POST \\\n 'https://services.kenshoo.com/api/v1/bulk_update?ks='\ \ \\\n -H 'Authorization: Bearer ' \\\n -F 'file=@changes.csv'\ \ \\\n -F 'file_delimiter=COMMA' \\\n -F 'bulk_update_type=MULTI_ENTITY_FILE'\n\ \n# Response: {\"job_id\": \"c42f1168-4cd6-42e8-b654-2a7f0043699e\"}\n#\ \ Then poll: GET /api/v1/jobs/{job_id}/status\n" /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.\n\ \nThis 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" /api/v1/ad_groups: get: tags: - "Ad Groups" summary: "Get Ad Groups" description: "Get ad groups API call allows you to retrieve ad group information.\ \ You can filter by multiple fields, such as the profile ID and channel type,\ \ or request specific ad groups by their IDs.\nThe result is a list of ad\ \ group objects that can be paged through using the returned next_page/previous_page\ \ values.\n" operationId: "getAdGroups" parameters: - $ref: "#/components/parameters/ks" - $ref: "#/components/parameters/pageId" - $ref: "#/components/parameters/adGroupIds" - $ref: "#/components/parameters/channelAdGroupIds" - $ref: "#/components/parameters/adGroupCampaignIds" - $ref: "#/components/parameters/adGroupChannelCampaignIds" - $ref: "#/components/parameters/adGroupProfileId" - $ref: "#/components/parameters/adGroupChannelTypes" - $ref: "#/components/parameters/adGroupStatuses" responses: 200: $ref: "#/components/responses/getAdGroupEntitySuccessResponse" 400: $ref: "#/components/responses/getAdGroupBadRequest" put: tags: - "Ad Groups" summary: "Edit an existing ad group" description: "Update one or more ad groups. Editable attributes are documented\ \ in the request body schema below.\n\n**Need more attributes?** Use [Bulk\ \ Update (One File)](#tag/Bulk-Update) for the full attribute set." operationId: "updateAdGroups" parameters: - $ref: "#/components/parameters/ks" requestBody: $ref: "#/components/requestBodies/EditAdgroup" responses: 200: $ref: "#/components/responses/EntitySuccessResponse" 400: $ref: "#/components/responses/BadRequest" 500: $ref: "#/components/responses/InternalServerError" post: tags: - "Ad Groups" summary: "Create a new ad group" description: "Create one or more ad groups. Supported attributes are documented\ \ in the request body schema below.\n\n**Need more attributes?** Use [Bulk\ \ Update (One File)](#tag/Bulk-Update) to create ad groups with the full range\ \ of settings." operationId: "createAdGroups" parameters: - $ref: "#/components/parameters/ks" requestBody: $ref: "#/components/requestBodies/CreateAdgroup" responses: 201: $ref: "#/components/responses/EntitySuccessResponse" 400: $ref: "#/components/responses/BadRequest" 500: $ref: "#/components/responses/InternalServerError" /api/v1/metric-meta-data: delete: summary: "Delete metric meta data" operationId: "deleteMetricMetaData" parameters: - $ref: "#/components/parameters/ks" responses: 200: description: "OK" content: application/json: schema: type: "string" description: "Metric deletion successful" 500: description: "ERROR" content: application/json: schema: type: "string" description: "Error deleting metric" /api/v1/reports/async/{execution_id}: get: tags: - "Asynchronous Reports" summary: "Download completed report file" description: "Once the report status polling produces a COMPLETED status, use\ \ this API to download the compressed report file." operationId: "downloadAsyncReport" parameters: - $ref: "#/components/parameters/ks" - name: "execution_id" in: "path" description: "The execution id received in response to the 'Run a Report'\ \ API call." required: true style: "simple" explode: false schema: type: "string" responses: 200: description: "OK" content: application/x-zip-compressed: schema: type: "string" description: "The compressed report file." format: "binary" 404: description: "Report not found" content: application/json: schema: type: "object" properties: errorMessage: type: "string" example: errorMessage: "Couldn't find report by execution token: rpx-8fcf61ce-d3a5-4858-9609-d2e7f1f6110e" 500: description: "Server error" content: application/json: schema: type: "object" properties: errorMessage: type: "string" /api/v1/jobs/{job_id}/status: get: tags: - "Jobs" summary: "Job status" operationId: "getJobStatus" parameters: - $ref: "#/components/parameters/ks" - name: "job_id" in: "path" required: true style: "simple" explode: false schema: type: "string" responses: 200: description: "OK" content: application/json: schema: type: "string" description: "The status of the Skai job." enum: - "JOB_PENDING" - "JOB_RUNNING" - "JOB_COMPLETED" - "JOB_COMPLETED_WITH_FAILURES" 404: description: "NOT FOUND" content: application/json: schema: type: "string" description: "Job ID not found" example: "Job ID not found" 500: $ref: "#/components/responses/InternalServerError" /api/v1/tests/{testId}/end: put: summary: "End test" operationId: "endTest" responses: 200: description: "200 response" 300: description: "300 response" options: tags: - "End Test" operationId: "endTestOptions" responses: 200: description: "all good" /api/v1/incrementality/dataSources/agency/{agencyId}/{dataSourceId}/data: get: summary: "Export data source data" operationId: "getDataSourceData" responses: 200: description: "200 response" 300: description: "300 response" options: summary: "incrementality data source manager options" responses: 200: description: "200 response" 300: description: "300 response" /api/v1/incrementality/agencies-ks: get: summary: "Get ks-agency pairs with type" operationId: "getAgencyKsApps" responses: 200: description: "200 response" 300: description: "300 response" options: summary: "incrementality data source manager options" responses: 200: description: "200 response" 300: description: "300 response" /api/v1/incrementality/ds-requests/agency/{agencyId}: post: summary: "Create data source request" operationId: "createDataSourceRequests" responses: 200: description: "200 response" 300: description: "300 response" options: summary: "Create data source request" responses: 200: description: "200 response" 300: description: "300 response" /api/v1/incrementality/dataSources/agency/{agencyId}: get: summary: "Get agency data sources" operationId: "getDataSources" responses: 200: description: "200 response" 300: description: "300 response" options: summary: "incrementality data source manager options" responses: 200: description: "200 response" 300: description: "300 response" /api/v1/incrementality/ftp-users/agency/{agencyId}: post: summary: "Create ftp user" operationId: "createFtpUsers" responses: 200: description: "200 response" 300: description: "300 response" options: summary: "Create ftp user" responses: 200: description: "200 response" 300: description: "300 response" /api/v1/incrementality/ds-requests/{dataSourceRequestId}: get: summary: "Get data source request" operationId: "getDataSourceRequest" responses: 200: description: "200 response" 300: description: "300 response" put: summary: "Update data source request" operationId: "updateDataSourceRequest" responses: 200: description: "200 response" 300: description: "300 response" post: summary: "Create data source request" operationId: "submitDataSourceRequest" responses: 200: description: "200 response" 300: description: "300 response" options: summary: "Get data source request" responses: 200: description: "200 response" 300: description: "300 response" /api/v1/budget_oversight/currencies: get: summary: "Get currencies" operationId: "getBudgetOversightCurrencies" responses: 200: description: "200 response" 500: description: "unexpected error" options: responses: 200: description: "201 response" 400: description: "Request is not valid" 500: description: "unexpected error" /api/v1/homepage_auth/user_permissions: get: summary: "Get home-page user permissions" operationId: "getUserPermissions" responses: 200: description: "Successfully fetched home-page user permissions" 400: description: "Request is invalid" 401: description: "User unauthorized" 500: description: "Failed to fetch home-page user permissions" options: description: "For cross-origin requests" responses: default: description: "The operation was completed successfully" /api/v1/configuration/{configuration_type}/{configuration_field}/homepage_values: get: summary: "get all configuration homepage values by type and field." operationId: "getConfigurationHomepageValues" responses: 200: description: "200 response" 400: description: "Request is not valid" 401: description: "Unauthorized" 500: description: "unexpected error" options: responses: 200: description: "201 response" 400: description: "Request is not valid" 401: description: "Unauthorized" 500: description: "unexpected error" /api/v1/homepage_context/([0-9]+)/scope: get: summary: "get homepage scope with evaluated profiles." operationId: "getHomepageScope" responses: 200: description: "200 response" 401: description: "User unauthorized" 500: description: "homepage was not found" options: description: "For cross-origin requests" responses: 200: description: "201 response" 400: description: "Request is not valid" 500: description: "unexpected error" /api/v1/budget_oversight/available_filters: get: summary: "Get available filters" operationId: "getBudgetOversightFilters" responses: 200: description: "200 response" 500: description: "unexpected error" options: responses: 200: description: "201 response" 400: description: "Request is not valid" 500: description: "unexpected error" /api/v1/homepage/([0-9]+)/budget_oversight: get: summary: "Get budget oversight." operationId: "getBudgetOversight" responses: 200: description: "200 response" 500: description: "unexpected error" put: summary: "Update budget oversight." description: "Update budget oversight.\n" operationId: "updateBudgetOversight" responses: 200: description: "200 response" 500: description: "500 response" post: summary: "Create budget oversight." operationId: "createBudgetOversight" responses: 200: description: "Job successfully retrieved." 204: description: "No pending jobs available. Try again in the next run." options: responses: 200: description: "201 response" 400: description: "Request is not valid" 500: description: "unexpected error" /api/v1/homepage_context/([0-9]+)/best_practice_info: get: summary: "best practices info" operationId: "getBestPracticesInfo" responses: 200: description: "200 response" 500: description: "homepage was not found" options: description: "For cross-origin requests" responses: 200: description: "201 response" 400: description: "Request is not valid" 500: description: "unexpected error" /api/v1/homepage/([0-9]+)/budget_oversight/is_name_unique: get: summary: "Get is pacing monitor name unique" operationId: "checkBudgetOversightNameUnique" responses: 200: description: "200 response" 500: description: "unexpected error" options: responses: 200: description: "200 response" 400: description: "Request is not valid" 500: description: "unexpected error" /api/v1/budget_oversight/([0-9]+)/widget_data: get: summary: "Get widget data" operationId: "getBudgetOversightWidgetData" responses: 200: description: "200 response" 300: description: "300 response" options: responses: 200: description: "201 response" 400: description: "Request is not valid" 500: description: "unexpected error" /api/v1/configuration/{configuration_type}/{configuration_field}/values: get: summary: "get all configuration values by type and field." operationId: "getConfigurationValues" responses: 200: description: "200 response" 400: description: "Request is not valid" 401: description: "Unauthorized" 500: description: "unexpected error" options: responses: 200: description: "201 response" 400: description: "Request is not valid" 401: description: "Unauthorized" 500: description: "unexpected error" /api/v1/pacing_monitor/budget_oversight/by_owner: get: summary: "Get all the budget oversight plans owned by the current user" operationId: "getBudgetOversightByOwner" responses: 200: description: "Successfully returned budget oversight plans owned by the\ \ current user" 500: description: "Internal server error, unexpected error" /api/v1/pacing_monitor/media_plan/export: post: summary: "Export Media plan." operationId: "exportMediaPlan" responses: 200: description: "Job successfully retrieved." 204: description: "No pending jobs available. Try again in the next run." 500: description: "unexpected error" options: responses: 200: description: "201 response" 400: description: "Request is not valid" 500: description: "unexpected error" /api/v1/pacing_monitor/media_plan/import: post: summary: "Import Media plan." operationId: "importMediaPlan" responses: 200: description: "Job successfully retrieved." 204: description: "No pending jobs available. Try again in the next run." 500: description: "unexpected error" options: responses: 200: description: "201 response" 400: description: "Request is not valid" 500: description: "unexpected error" /api/v1/entities-creator/itemsets: post: summary: "Create new item sets" operationId: "createItems" responses: 201: description: "New item sets were created successfully" 400: description: "Request isn't valid" 404: description: "Items weren't added" 500: description: "Failed to create new items" options: summary: "Create item sets options" responses: 200: description: "200 response" /api/v1/entities-creator/order/dsp: put: summary: "Edit AmazonDSP Campaign" operationId: "bulkUpdateCampaignAmazonDsp" responses: 201: description: "201 response" 500: description: "500 response" 207: description: "207 response" post: summary: "Create AmazonDSP Campaign" operationId: "bulkCreateCampaignAmazonDsp" responses: 201: description: "201 response" 500: description: "500 response" 207: description: "207 response" options: summary: "AmazonDSP Campaign creation" responses: 200: description: "200 response" /api/v1/entities-creator/order/dsp/{orderId}: put: summary: "Edit AmazonDSP Campaign" operationId: "updateCampaignAmazonDsp" parameters: - name: "orderId" in: "path" required: true style: "simple" explode: false responses: 201: description: "201 response" 500: description: "500 response" 207: description: "207 response" post: summary: "Get AmazonDSP Campaign" operationId: "createCampaignAmazonDsp" parameters: - name: "orderId" in: "path" required: true style: "simple" explode: false responses: 200: description: "200 response" options: summary: "Get AmazonDSP Campaign" responses: 200: description: "200 response" /api/v1/entities-creator/line-item/{lineItemId}: get: summary: "Get line item" operationId: "getLineItem" parameters: - name: "lineItemId" in: "path" required: true style: "simple" explode: false responses: 200: description: "200 response" options: summary: "Get line-item" responses: 200: description: "200 response" /api/v1/entities-creator/line-item/dsp/{lineItemId}: put: summary: "Edit AmazonDSP Ad Group" operationId: "updateAdGroupAmazonDsp" parameters: - name: "lineItemId" in: "path" required: true style: "simple" explode: false responses: 201: description: "201 response" 500: description: "500 response" 207: description: "207 response" post: summary: "Get AmazonDSP Ad Group" operationId: "createAdGroupAmazonDsp" parameters: - name: "lineItemId" in: "path" required: true style: "simple" explode: false responses: 200: description: "200 response" options: summary: "Get AmazonDSP Ad Group" responses: 200: description: "200 response" /api/v1/entities-creator/line-item/dsp/productCategories: post: summary: "get available categories for line item" operationId: "getAmazonDspProductCategories" responses: 200: description: "200 response" 404: description: "404 response" 500: description: "500 response" options: summary: "get available categories for line item" responses: 200: description: "200 response" /api/v1/entities-creator/inventory: post: summary: "Get AmazonDSP inventories" operationId: "createInventory" responses: 201: description: "201 response" 500: description: "500 response" 207: description: "207 response" options: summary: "Create inventories options" responses: 200: description: "200 response" /api/v1/entities-creator/line-item/dsp: put: summary: "Edit AmazonDSP Ad Group" operationId: "bulkUpdateAdGroupAmazonDsp" responses: 201: description: "201 response" 500: description: "500 response" 207: description: "207 response" post: summary: "Create AmazonDSP Ad Group" operationId: "bulkCreateAdGroupAmazonDsp" responses: 201: description: "201 response" 500: description: "500 response" 207: description: "207 response" options: summary: "AmazonDSP Ad Group creation" responses: 200: description: "200 response" /api/v1/entities-creator/line-item/dsp-async: post: summary: "Create AmazonDSP Ad Group async" operationId: "bulkCreateAdGroupAmazonDspAsync" responses: 201: description: "201 response" 500: description: "500 response" 207: description: "207 response" options: summary: "AmazonDSP Ad Group creation async" responses: 200: description: "200 response" /api/v1/entities-creator/line-item/dsp-async/{lineItemId}: put: summary: "Edit AmazonDSP Ad Group async" operationId: "updateAdGroupAmazonDspAsync" parameters: - name: "lineItemId" in: "path" required: true style: "simple" explode: false responses: 201: description: "201 response" 500: description: "500 response" 207: description: "207 response" options: summary: "Get AmazonDSP Ad Group async" responses: 200: description: "200 response" components: schemas: ErrorField: type: "object" properties: fieldName: type: "string" description: "The error field" error: type: "string" description: "Error message" parameters: type: "object" additionalProperties: type: "string" description: "Error additional properties" ApiResponseSummaryReportDTO: type: "object" properties: status: $ref: "#/components/schemas/ApiResponseStatus" entities: type: "array" readOnly: true items: $ref: "#/components/schemas/SummaryReportDTO" error_message: type: "string" readOnly: true FusionReportTemplateName: type: "string" description: "One of the available Fusion Reports." enum: - "Fusion: Profiles" - "Fusion: Channels" - "Fusion: Campaigns" - "Fusion: Campaigns by Device" - "Fusion: Adgroups" - "Fusion: Ads" - "Fusion: Keywords" - "Fusion: Keywords by Device" - "Fusion: Keywords with Content and PLA" - "Fusion: Dynamic Ad Targets" - "Fusion: Product Groups" - "Fusion: Sitelinks" - "Fusion: Audiences" - "Fusion: Audiences by Device" ApiResponseTestStructureDTO: type: "object" properties: status: $ref: "#/components/schemas/ApiResponseStatus" entities: type: "array" readOnly: true items: $ref: "#/components/schemas/TestStructureDTO" paging: $ref: "#/components/schemas/Paging" error_message: type: "string" readOnly: true GroupDTO: type: "object" properties: name: type: "string" readOnly: true group_type: type: "string" readOnly: true enum: - "BASE" - "TEST" campaigns: type: "array" readOnly: true items: $ref: "#/components/schemas/TestCampaignDTO" facebookCampaignStatus: type: "string" description: "Campaign status" enum: - "ACTIVE" - "PAUSED" - "DELETED" - "ARCHIVED" - "WITH_ISSUES" - "IN_PROCESS" ReportRecordSummary: type: "object" properties: record_values: type: "object" additionalProperties: type: "string" readOnly: true example: record_values: CampaignName: - group: "ATTRIBUTES" value: "" Clicks: - group: "PERFORMANCE" value: "15" facebookImpressionCaps: type: "object" properties: daily_impression_cap: type: "integer" description: "Daily impression cap" lifetime_impression_cap: type: "integer" description: "Lifetime impression cap" description: "Impression caps" facebookAdgroupType: type: "object" properties: promoted_object: $ref: "#/components/schemas/facebookPromotedObject" frequency_spec: $ref: "#/components/schemas/facebookFrequencySpec" attribution_spec: type: "array" description: "Attribution spec" items: $ref: "#/components/schemas/facebookAttributionSpec" conversion_location: type: "string" description: "Conversion location" enum: - "WEBSITE" - "APP" - "MESSENGER" - "APPLINKS_AUTOMATIC" - "WHATSAPP" - "SHOP_AUTOMATIC" - "UNDEFINED" - "INSTAGRAM_DIRECT" - "PHONE_CALL" - "MESSAGING_INSTAGRAM_DIRECT_MESSENGER" - "ON_AD" - "ON_POST" - "ON_VIDEO" - "ON_EVENT" - "ON_PAGE" description: "Adgroup type" asyncReportRequest: required: - "fields" - "require_yesterday_performance" - "template_name" type: "object" properties: template_name: $ref: "#/components/schemas/asyncReportTemplateName" start_date: type: "string" description: "The start date for your report data." format: "yyyy-MM-dd" end_date: type: "string" description: "The end date for your report data." format: "yyyy-MM-dd" currency: type: "string" description: "The currency for all monetary values in the report. In cross-profile\ \ reports, use Profile Currency to get all monetary values in each row\ \ presented in the currency of this row’s profile. Use any other currency\ \ to get all data in the report in the same currency." example: "USD" default: "Profile Currency" channels: type: "array" description: "The channels to include data from in the report." example: - "Google" - "MSN" items: $ref: "#/components/schemas/asyncReportChannel" default: - "All Elements" custom_file_name: type: "string" description: "Enter any text and attribute (parameters) to include in the\ \ filename of the generated reports." compress_method: type: "string" description: "How you want the file to be compressed." enum: - "ZIP" - "GZIP" default: "GZIP" delimiter: type: "string" description: "The character used to separate the values in the report." enum: - "," - "/" - "Tab" - "|" default: "Tab" require_yesterday_performance: type: "boolean" description: "Whether the report should only be sent once performance data\ \ from the previous day is ready." include_revenue_columns: type: "boolean" description: "Whether the report includes a revenue column for each selected\ \ conversion or conversion type column." default: false selected_profile_ids: type: "array" description: "The IDs of Skai profiles to include in the report. When this\ \ parameter is not used, all profile IDs to which the user has access\ \ are included in the report." entity_level: type: "string" description: "The entity level of the report. Relevant for Structure Data:\ \ Dimensions report only." enum: - "Ad" - "Keyword" - "Ad Group" - "Campaign" - "Profile" dimensions: type: "string" description: "The dimensions to include in the report. Relevant for Structure\ \ Data: Dimensions report only." default: "All Elements" fields: type: "array" description: "The fields to include in the report." items: $ref: "#/components/schemas/asyncReportField" description: "The properties for the report request" example: template_name: "Fusion: Ads" start_date: "2026-01-01" end_date: "2026-01-14" currency: "USD" channels: - "Google" fields: - name: "Clicks" custom_file_name: "Name test" compress_method: "ZIP" delimiter: "Tab" require_yesterday_performance: "true" include_revenue_columns: "false" selected_profile_ids: - 401 - 402 ReportResponseStructure: type: "object" properties: records: $ref: "#/components/schemas/ReportRecord" summary: $ref: "#/components/schemas/ReportRecordSummary" total: type: "integer" format: "int64" readOnly: true SummaryVO: type: "object" properties: name: type: "string" readOnly: true data: type: "array" readOnly: true items: type: "object" additionalProperties: type: "string" CampaignDTO: type: "object" properties: id: type: "integer" description: "Skai ID of the campaign" channel_campaign_id: type: "string" description: "Publisher ID of the campaign" channel_account_id: type: "integer" description: "Skai ID of the publisher account" profile_id: type: "integer" description: "Skai ID of the profile" channel_type: type: "string" description: "Campaign channel type" enum: - "Google" - "Microsoft" - "Universal" - "Yandex" - "Baidu" - "YahooJapan" - "YahooGemini" - "Pinterest" - "Amazon" - "Facebook" - "Walmart" campaign_name: type: "string" description: "Campaign name" budget: type: "number" description: "Campaign budget in the profile's currency" budget_type: type: "string" description: "Budget type" enum: - "DEFAULT" - "DAILY_FOR_ADGROUP" - "MONTHLY_FOR_CAMPAIGN" - "LIFETIME" search_bid: type: "number" description: "Default search bid in the profile's currency" content_bid: type: "number" description: "Default content bid in the profile's currency" status: type: "string" description: "Campaign status" enum: - "ACTIVE" - "PAUSED" - "DELETED" - "REVIEW" default: "ACTIVE" order_line: type: "string" description: "Order line of the campaign" start_date: type: "string" description: "Campaign start date" format: "yyyy-MM-dd" end_date: type: "string" description: "Campaign end date" format: "yyyy-MM-dd" tracking_level: type: "string" description: "Campaign tracking level" enum: - "NONE" - "PROFILE_DEFAULT" - "CAMPAIGN" - "ADS" - "KEYWORDS" - "ADS_AND_KEYWORDS" default: "PROFILE_DEFAULT" campaign_type: type: "string" description: "Campaign type" enum: - "TEXT_CAMPAIGN" - "SMART_SHOPPING" - "SHOPPING_STANDARD" default: "TEXT_CAMPAIGN" shopping_settings: $ref: "#/components/schemas/shoppingSettings" asyncReportStructureField: type: "string" description: "\n\n\n| Field name | Reports the\ \ field is available in \ \ \ \ \ \ | Data type | Description \ \ \ \ \ \ |\n|---------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n\ | `Profile Name` | Structure Data: Profiles
Structure\ \ Data: Campaigns
Structure Data: Channels
Structure Data: Ad Groups
Structure\ \ Data: Keywords
Structure Data: Ads
Structure Data: Product Groups
Structure\ \ Data: Sitelinks | TEXT(50) | Profile name\ \ in Skai
Example: `ACME Brand` \ \ \ \ |\n| `Profile ID`\ \ | Structure Data: Profiles
Structure Data: Campaigns
Structure\ \ Data: Channels
Structure Data: Ad Groups
Structure Data: Keywords
Structure\ \ Data: Ads
Structure Data: Product Groups
Structure Data: Sitelinks
Structure\ \ Data: Dimensions | INT | Profile ID in Skai
Example: `102` \ \ \ \ \ \ |\n| `Profile Currency` | Structure\ \ Data: Profiles
Structure Data: Campaigns
Structure Data: Channels
Structure\ \ Data: Ad Groups
Structure Data: Keywords
Structure Data: Ads
Structure\ \ Data: Product Groups \ \ | TEXT(10) | Currency in which all monetary values under this\ \ profile will be stored in Skai. Any other currencies will be converted upon\ \ processing.
Format: 3-character ISO 4217 currency code
Example: `USD`\ \ |\n| `Time Zone` | Structure Data: Profiles\ \ \ \ \ \ \ \ | TEXT(50) | Time zone for the profile
All data reported\ \ for the profile will be displayed in this time zone.
Example: `US/Eastern`\ \ \ \ |\n| `Profile Token` | Structure Data:\ \ Profiles \ \ \ \ \ \ | TEXT(50) | Unique value assigned to all Skai\ \ profiles. Used in configuration of event tracking such as the Skai infinity\ \ tag.
Example: `1acbf593-7551-4aea-83d0-711f4446320e` \ \ |\n| `Create Date` | Structure\ \ Data: Profiles \ \ \ \ \ \ | DATETIME | Date and time the profile was\ \ created
Format: `yyyy-MM-dd HH:mm:ss`
Example: `2026-01-01 00:00:00`\ \ \ \ |\n| `Last Modified` \ \ | Structure Data: Profiles
Structure Data: Campaigns
Structure\ \ Data: Channels
Structure Data: Ad Groups
Structure Data: Keywords
Structure\ \ Data: Product Groups
Structure Data: Dimensions \ \ | DATETIME | Date and time the profile\ \ was last modified
Format: `yyyy-MM-dd HH:mm:ss`
Example: `2026-01-01\ \ 00:00:00` \ \ |\n| `Status` \ \ | Structure Data: Campaigns
Structure Data: Channels
Structure\ \ Data: Ad Groups
Structure Data: Keywords
Structure Data: Ads
Structure\ \ Data: Product Groups \ \ | TEXT(50) | Status of the reported\ \ entity
Valid values: `Active`, `Paused`, `Deleted`, `Pending`, `Inactive`,\ \ `Disapproved`, `Approved`, `Failed`, `To Pause`, `To Delete`, `Failed to\ \ Pause`, `Failed to Delete` |\n| `Channel` \ \ | Structure Data: Campaigns
Structure Data: Channels
Structure\ \ Data: Ad Groups
Structure Data: Keywords
Structure Data: Ads
Structure\ \ Data: Product Groups
Structure Data: Sitelinks
Structure Data: Dimensions\ \ | TEXT(50) | Name of the publisher
Example:\ \ `Google` \ \ \ \ |\n| `Channel Account ID` \ \ | Structure Data: Campaigns
Structure Data: Channels
Structure\ \ Data: Ad Groups
Structure Data: Keywords
Structure Data: Ads
Structure\ \ Data: Sitelinks \ \ | INT | ID of this publisher\ \ account, in Skai
Example: `408` \ \ \ \ |\n| `Unique Channel Account\ \ ID` | Structure Data: Campaigns
Structure Data: Ad Groups
Structure\ \ Data: Sitelinks \ \ \ \ | BIGINT | Unique ID of\ \ this publisher account, in Skai. Will be identical for several instances\ \ of the same account, across multiple profiles.
Example: `102` \ \ |\n| `Channel Account\ \ Publisher ID` | Structure Data: Campaigns
Structure Data: Channels
Structure\ \ Data: Ad Groups
Structure Data: Keywords
Structure Data: Ads
Structure\ \ Data: Product Groups
Structure Data: Sitelinks
Structure Data: Dimensions\ \ | INT | ID of this publisher account,\ \ in the publisher
Example: `123456789` \ \ \ \ |\n| `Channel Type ID` \ \ | Structure Data: Channels \ \ \ \ \ \ | INT | Skai numeric\ \ identifier for the name of the publisher:
1 - Google
2 - Bing (MSN)
3\ \ - Yahoo
4 - Yandex
5 - Baidu
Example: `1` \ \ |\n| `Channel Currency`\ \ | Structure Data: Channels \ \ \ \ \ \ | TEXT(10) | Reported\ \ currency from the publisher
Example: `USD` \ \ \ \ |\n| `Account\ \ Name` | Structure Data: Campaigns
Structure Data: Channels
Structure\ \ Data: Ad Groups
Structure Data: Keywords
Structure Data: Ads \ \ \ \ | TEXT(255) | Name of the\ \ account, if available, or the username configured in Skai to access the\ \ account
Example: `Northwest_Google` \ \ |\n| `Account Status`\ \ | Structure Data: Campaigns
Structure Data: Ad Groups
Structure\ \ Data: Keywords
Structure Data: Ads
Structure Data: Product Groups
Structure\ \ Data: Dimensions \ \ | TEXT(50) | Status of the publisher in\ \ Skai
Valid values: `Active`, `Paused` \ \ \ \ |\n| `Campaign Name` \ \ | Structure Data: Campaigns
Structure Data: Ad Groups
Structure\ \ Data: Keywords
Structure Data: Ads
Structure Data: Product Groups
Structure\ \ Data: Sitelinks \ \ | TEXT(255) | Campaign name in Skai
Example:\ \ `ACME Brand Clothing` \ \ \ \ |\n| `Campaign ID` \ \ | Structure Data: Campaigns
Structure Data: Ad Groups
Structure Data:\ \ Keywords
Structure Data: Ads
Structure Data: Product Groups
Structure\ \ Data: Sitelinks \ \ | BIGINT | Campaign ID in Skai
Example:\ \ `1123` \ \ \ \ |\n| `Channel Campaign ID` \ \ | Structure Data: Campaigns
Structure Data: Ad Groups
Structure\ \ Data: Keywords
Structure Data: Ads
Structure Data: Product Groups
Structure\ \ Data: Sitelinks \ \ | BIGINT | Campaign ID in the publisher
Example:\ \ `121270991` \ \ \ \ |\n| `Campaign Status` | Structure\ \ Data: Ad Groups
Structure Data: Keywords
Structure Data: Ads
Structure\ \ Data: Product Groups
Structure Data: Sitelinks \ \ \ \ | TEXT(50) | Status of the campaign
Valid values:\ \ `Active`, `Paused`, `Deleted`, `Pending`, `Inactive`, `Disapproved`, `Approved`,\ \ `Failed`, `To Pause`, `To Delete`, `Failed to Pause`, `Failed to Delete`\ \ |\n| `Campaign Start Date` | Structure Data:\ \ Campaigns \ \ \ \ \ \ | DATETIME | Date and time the campaign starts
Format:\ \ `yyyy-MM-dd HH:mm:ss`
Example: `2026-01-01 00:00:00` \ \ \ \ |\n| `Campaign End Date` | Structure\ \ Data: Campaigns \ \ \ \ \ \ | DATETIME | Date and time the campaign\ \ ends
Format: `yyyy-MM-dd HH:mm:ss`
Example: `2026-01-01 00:00:00`\ \ \ \ |\n| `Campaign Creation Date`\ \ | Structure Data: Campaigns \ \ \ \ \ \ | DATETIME | Date and\ \ time the campaign was created
Format: `yyyy-MM-dd HH:mm:ss`
Example:\ \ `2026-01-01 00:00:00` \ \ |\n| `Daily\ \ Budget` | Structure Data: Campaigns \ \ \ \ \ \ | FLOAT(20,8)\ \ | Daily budget of the campaign, in the currency of the profile
Example:\ \ `100` \ \ |\n\ | `Geo Targeting countries` | Structure Data: Campaigns \ \ \ \ \ \ \ \ | TEXT(3000) | List of countries targeted by this campaign, comma delimited\ \
Example: `Andorra,Afghanistan,Albania,Bangladesh` \ \ \ \ |\n| `Geo Targeting territories` | Structure Data: Campaigns\ \ \ \ \ \ \ \ | TEXT(3000) | List of territories targeted by this campaign,\ \ comma delimited
Example: `Saint Petersburg,Russia,Tambov Oblast,Russia,Republic\ \ of Tatarstan,Russia` \ \ |\n| `Tracking Level` | Structure Data: Campaigns\ \ \ \ \ \ \ \ | TEXT(20) | Tracking level of the campaign
Valid values:\ \ `Keywords`, `Ads`, `Ads + Keywords`, `Profile Default`, `None` \ \ \ \ |\n| `Mirroring Status` | Structure\ \ Data: Campaigns \ \ \ \ \ \ | TEXT(30) | Mirroring status of this campaig,\ \ if mirrored
Valid values: `Source`, `Destination`, `Errors on Destination`\ \ \ \ |\n| `Default Landing Page` | Structure\ \ Data: Campaigns \ \ \ \ \ \ | TEXT(255) | Name of the entity
Example:\ \ `Google North America` \ \ \ \ |\n| `Device targeting` \ \ | Structure Data: Campaigns \ \ \ \ \ \ | TEXT(100) | Device targeting\ \ enabled for this campaign, comma delimited if several devices
Valid values:\ \ `desktop`, `high_end_mobile`, `wap_mobile`, `tablet` \ \ |\n| `Network` \ \ | Structure Data: Campaigns \ \ \ \ \ \ | TEXT(128) | Comma\ \ delimited list of networks used in this campaign
Example: `Content Network,\ \ Search Network` \ \ |\n| `Failure\ \ Reason` | Structure Data: Campaigns \ \ \ \ \ \ | TEXT(250)\ \ | Latest error recorded upon failed attempt to sync this campaign to the\ \ publisher
Example: `Trying to create a duplicate campaign` \ \ \ \ |\n| `Portfolio ID` | Structure Data: Campaigns \ \ \ \ \ \ \ \ | INT | ID of the portfolio in Skai
Example: `1234` \ \ \ \ \ \ |\n| `Portfolio Name` | Structure Data:\ \ Campaigns \ \ \ \ \ \ | TEXT(200) | Name of the portfolio in Skai
Example:\ \ `Non-Brand` \ \ \ \ |\n| `Search Bid` | Structure\ \ Data: Campaigns
Structure Data: Ad Groups \ \ \ \ \ \ | FLOAT(20,8) | Default bid for Search, in\ \ the currency of the profile
Example: `1` \ \ \ \ |\n| `Content Bid` \ \ | Structure Data: Campaigns
Structure Data: Ad Groups \ \ \ \ \ \ | FLOAT(20,8) | Default\ \ bid for Content, in the currency of the profile
Example: `1` \ \ \ \ |\n| `Mobile\ \ Bid Adjustment` | Structure Data: Campaigns
Structure Data: Ad\ \ Groups
Structure Data: Keywords \ \ \ \ | INT \ \ | Mobile bid adjustment, in the currency of the profile
Example:\ \ `-50` \ \ \ \ |\n| `Tablet Bid Adjustment` | Structure Data: Campaigns
Structure\ \ Data: Ad Groups \ \ \ \ \ \ | INT | Tablet bid adjustment, in the currency of the profile
Example:\ \ `-50` \ \ \ \ |\n| `Desktop Bid Adjustment` | Structure Data: Campaigns
Structure\ \ Data: Ad Groups \ \ \ \ \ \ | INT | Desktop bid adjustment, in the currency of the profile
Example:\ \ `-50` \ \ \ \ |\n| `Ad Group Name` | Structure Data: Ad Groups
Structure\ \ Data: Keywords
Structure Data: Ads
Structure Data: Product Groups\ \ \ \ \ \ | TEXT(256) | Name of the ad group
Example: `Northwest Region Trucks`\ \ \ \ \ \ |\n| `Ad Group ID` | Structure Data: Ad Groups
Structure\ \ Data: Keywords
Structure Data: Ads
Structure Data: Product Groups\ \ \ \ \ \ | BIGINT | Ad group ID in Skai
Example: `2124` \ \ \ \ \ \ |\n| `AdGroup Status` | Structure Data: Keywords
Structure\ \ Data: Ads
Structure Data: Product Groups
Structure Data: Sitelinks\ \ \ \ \ \ | TEXT(50) | Status of the ad group
Valid values: `Active`, `Paused`,\ \ `Deleted`, `Pending`, `Inactive`, `Disapproved`, `Approved`, `Failed`, `To\ \ Pause`, `To Delete`, `Failed to Pause`, `Failed to Delete` \ \ |\n| `Channel Ad Group ID` | Structure Data: Ad Groups
Structure\ \ Data: Keywords
Structure Data: Ads
Structure Data: Product Groups\ \ \ \ \ \ | BIGINT | Ad group ID in the publisher
Example: `15782818485` \ \ \ \ \ \ |\n| `AdGroup Creation Date` | Structure Data: Ad\ \ Groups \ \ \ \ \ \ | DATETIME | Date and time the ad group was created
Format:\ \ `yyyy-MM-dd HH:mm:ss`
Example: `2026-01-01 00:00:00` \ \ \ \ |\n| `Number of Expanded Text Ads` | Structure\ \ Data: Ad Groups \ \ \ \ \ \ | INT | Number of expanded text ads\ \ in this ad group
Example: `4` \ \ \ \ |\n| `Quality Score` \ \ | Structure Data: Keywords
Structure Data: Ads \ \ \ \ \ \ | INT | Quality\ \ score of the reported entity
Example: `3` \ \ \ \ |\n| `Tracking\ \ ID` | Structure Data: Keywords
Structure Data: Ads
Structure\ \ Data: Product Groups \ \ \ \ | BIGINT | ID used\ \ for tracking in Skai
Example: `1123` \ \ \ \ |\n| `Land\ \ URL` | Structure Data: Keywords
Structure Data:\ \ Ads \ \ \ \ | TEXT(2100)\ \ | Destination URL (for non-upgraded ads) or Final URL (for upgraded ads)
Example:\ \ `http://www.url.com` \ \ |\n| `Mobile\ \ URL` | Structure Data: Keywords
Structure Data: Ads
Structure\ \ Data: Sitelinks \ \ \ \ | TEXT(3000) | URL for\ \ mobile-optimized destination
Example: `http://m.url.com` \ \ \ \ |\n| `Upgr.\ \ URL Ind.` | Structure Data: Keywords
Structure Data: Ads
Structure\ \ Data: Sitelinks \ \ \ \ | TEXT(10) | Upgraded\ \ URL indicator, TRUE if the URL is upgraded
Valid values: `TRUE`, `FALSE`\ \ \ \ |\n| `Tracking\ \ Template` | Structure Data: Keywords
Structure Data: Ads
Structure\ \ Data: Sitelinks \ \ \ \ | TEXT(3000) | Tracking\ \ template of the entity (applicable for upgraded URLs)
Example: `http://www.track.com?url={lpurl}`\ \ \ \ |\n| `Custom Parameter 1` |\ \ Structure Data: Keywords
Structure Data: Ads
Structure Data: Sitelinks\ \ \ \ \ \ | TEXT(500) | First custom parameter\ \ name and value for upgraded URLs
Example: `{_paramname1} paramvalue1`\ \ \ \ |\n| `Custom Parameter 2`\ \ | Structure Data: Keywords
Structure Data: Ads
Structure\ \ Data: Sitelinks \ \ \ \ | TEXT(500) | Second\ \ custom parameter name and value for upgraded URLs
Example: `{_paramname2}\ \ paramvalue2` \ \ |\n| `Custom\ \ Parameter 3` | Structure Data: Keywords
Structure Data: Ads
Structure\ \ Data: Sitelinks \ \ \ \ | TEXT(500) | Third\ \ custom parameter name and value for upgraded URLs
Example: `{_paramname3}\ \ paramvalue3` \ \ |\n| `Disapproval\ \ Reason` | Structure Data: Keywords
Structure Data: Ads \ \ \ \ \ \ | TEXT(250)\ \ | Latest publisher disapproval reason
Example: `Phone numbers are not\ \ allowed in ad text` \ \ \ \ |\n| `Bid` | Structure Data: Keywords
Structure\ \ Data: Product Groups \ \ \ \ \ \ | FLOAT(20,8) | Bid of the reported element, in the currency of the profile
Example:\ \ `1.50` \ \ \ \ |\n| `Keyword` | Structure Data: Keywords \ \ \ \ \ \ \ \ | TEXT(4096) | Keyword text
Example: `Small Hybrid Cars` \ \ \ \ \ \ |\n| `Keyword ID` | Structure Data:\ \ Keywords \ \ \ \ \ \ | BIGINT | Keyword ID in Skai
Example: `1234`\ \ \ \ \ \ |\n| `Channel Keyword ID` | Structure\ \ Data: Keywords \ \ \ \ \ \ | BIGINT | Keyword ID in the publisher
Example:\ \ `1145221822` \ \ \ \ |\n| `Match Type` | Structure\ \ Data: Keywords \ \ \ \ \ \ | TEXT(50) | Match type of the keyword
Valid\ \ values: `Exact`, `Phrase`, `Broad` \ \ \ \ |\n| `Mobile effective bid` \ \ | Structure Data: Keywords \ \ \ \ \ \ | FLOAT(20,8) | Mobile effective\ \ bid, in the currency of the profile
Example: `5` \ \ \ \ |\n| `Min. Bid` \ \ | Structure Data: Keywords \ \ \ \ \ \ | FLOAT(20,8)\ \ | Minimum allowed bid, in the currency of the profile
Example: `1.50`\ \ \ \ \ \ |\n| `Keyword Creation Date` | Structure Data: Keywords \ \ \ \ \ \ \ \ | DATETIME | Date and time the keyword was created
Format:\ \ `yyyy-MM-dd HH:mm:ss`
Example: `2026-01-01 00:00:00` \ \ \ \ |\n| `Ad ID` | Structure\ \ Data: Ads \ \ \ \ \ \ | BIGINT | Ad ID in Skai
Example: `2124`\ \ \ \ \ \ |\n| `Channel Ad ID` \ \ | Structure Data: Ads \ \ \ \ \ \ | BIGINT | Ad ID in the publisher
Example:\ \ `121270991` \ \ \ \ |\n| `Ad Type` \ \ | Structure Data: Ads \ \ \ \ \ \ | TEXT(50) | Ad type
Valid\ \ values: `Text`, `Image`, `Mobile Text`, `Product`, `Dynamic Search`, `App\ \ Install`, `Image App Install`, `Call Only`, `Facebook`*
Note: All Facebook\ \ ad types display as “Facebook” in this report. |\n| `Headline` \ \ | Structure Data: Ads \ \ \ \ \ \ | TEXT(255) | Headline\ \ of the ad
Example: `Chicago Cars 2016` \ \ \ \ |\n| `Headline\ \ 2` | Structure Data: Ads \ \ \ \ \ \ | TEXT(255)\ \ | Headline 2 of the ad
Example: `Chicago Cars 2016` \ \ \ \ \ \ |\n| `Line 1` | Structure Data: Ads \ \ \ \ \ \ \ \ | TEXT(255) | Line 1 of the ad
Example: `Visit url.com today`\ \ \ \ \ \ |\n| `Display URL` | Structure Data:\ \ Ads \ \ \ \ \ \ | TEXT(255) | Display URL of the ad
Example:\ \ `url.com` \ \ \ \ |\n| `Line 2` \ \ | Structure Data: Ads \ \ \ \ \ \ | TEXT(255) | Line 2 of the\ \ ad
Example: `for massive discounts` \ \ \ \ |\n| `Path 1`\ \ | Structure Data: Ads \ \ \ \ \ \ | TEXT(15)\ \ | Part 1 of the path added to the display URL after your website’s domain
Example:\ \ `products` \ \ |\n| `Path 2`\ \ | Structure Data: Ads \ \ \ \ \ \ | TEXT(15)\ \ | Part 2 of the path added to the display URL after your website’s domain
Example:\ \ `shoes` \ \ |\n| `Image\ \ Name` | Structure Data: Ads \ \ \ \ \ \ | TEXT(256)\ \ | Name of the image used in the ad
Example: `sunset_120*120.png` \ \ \ \ \ \ |\n| `ASIN` | Structure Data: Ads \ \ \ \ \ \ \ \ | TEXT(50) | ASIN of the product that was promoted in each\ \ ad, for ecommerce publishers
Example: `B07FSYQT23` \ \ \ \ |\n| `Promotion` | Structure\ \ Data: Ads \ \ \ \ \ \ | TEXT(255) | Promotion line of product listing\ \ ads, blank for other ad types
Example: `Free Shipping & Free Returns`\ \ \ \ |\n| `Last Updated` \ \ | Structure Data: Ads \ \ \ \ \ \ | DATETIME | Date and time\ \ the element was last modified
Format: `yyyy-MM-dd HH:mm:ss`
Example:\ \ `2026-01-01 00:00:00` \ \ |\n| `Device Preference`\ \ | Structure Data: Ads
Structure Data: Sitelinks \ \ \ \ \ \ | TEXT(50) | Preferred\ \ device
Valid values: `All`, `Mobile` \ \ \ \ |\n| `Sitelink\ \ Text` | Structure Data: Sitelinks \ \ \ \ \ \ | TEXT(35)\ \ | Text of the sitelink
Example: `Accessories` \ \ \ \ \ \ |\n| `Sitelink ID` | Structure Data: Sitelinks \ \ \ \ \ \ \ \ | BIGINT | Sitelink ID in Skai
Example: `1123` \ \ \ \ \ \ |\n| `Channel Sitelink ID` | Structure\ \ Data: Sitelinks \ \ \ \ \ \ | TEXT(100) | Sitelink ID in the publisher
Example:\ \ `1123` \ \ \ \ |\n| `Sitelink Description1` | Structure\ \ Data: Sitelinks \ \ \ \ \ \ | TEXT(255) | Description 1 of the sitelink
Example:\ \ `This is a sitelink` \ \ \ \ |\n| `Sitelink Description2` | Structure\ \ Data: Sitelinks \ \ \ \ \ \ | TEXT(255) | Description 2 of the sitelink
Example:\ \ `This is a sitelink` \ \ \ \ |\n| `Sitelink URL` | Structure\ \ Data: Sitelinks \ \ \ \ \ \ | TEXT(3000) | URL of the sitelink
Example:\ \ `http://www.url.com` \ \ \ \ |\n| `Sitelink Status` \ \ | Structure Data: Sitelinks \ \ \ \ \ \ | TEXT(50) | Status of\ \ the sitelink
Valid values: `Active`, `Paused`, `Deleted`, `Pending`,\ \ `Inactive`, `Disapproved`, `Approved`, `Failed`, `To Pause`, `To Delete`,\ \ `Failed to Pause`, `Failed to Delete` |\n| `Adgroup\ \ ID` | Structure Data: Sitelinks \ \ \ \ \ \ | BIGINT\ \ | Ad group ID in Skai
Example: `2124` \ \ \ \ \ \ |\n| `Channel Adgroup ID` | Structure Data: Sitelinks \ \ \ \ \ \ \ \ | BIGINT | Ad group ID in the publisher
Example: `15782818485`\ \ \ \ \ \ |\n| `adGroup Name` | Structure Data:\ \ Sitelinks \ \ \ \ \ \ | TEXT(256) | Name of the ad group
Example:\ \ `Northwest Region Trucks` \ \ \ \ |\n| `Account SiteLink` \ \ | Structure Data: Sitelinks \ \ \ \ \ \ | TEXT(10) | Indicates if\ \ the sitelink was assigned to an account
Valid values: `Yes`, `No` \ \ \ \ |\n| `Device\ \ Target` | Structure Data: Sitelinks \ \ \ \ \ \ | TEXT(100)\ \ | Device targeting enabled for this sitelink, comma delimited if several\ \ devices
Valid values: `desktop`, `high_end_mobile`, `wap_mobile`, `tablet`\ \ |\n|\ \ `Sitelink Feed ID` | Structure Data: Sitelinks \ \ \ \ \ \ \ \ | TEXT(100) | Feed ID of the sitelink
Example: `1234` \ \ \ \ \ \ |\n| `Sitelinks Schedule Start Date` | Structure Data:\ \ Sitelinks \ \ \ \ \ \ | DATETIME | Date the sitelink schedule starts
Format:\ \ `yyyy-MM-dd HH:mm:ss`
Example: `2026-01-01 00:00:00` \ \ \ \ |\n| `Sitelinks Schedule End Date` | Structure\ \ Data: Sitelinks \ \ \ \ \ \ | DATETIME | Date the sitelink schedule\ \ ends
Format: `yyyy-MM-dd HH:mm:ss`
Example: `2026-01-01 00:00:00`\ \ \ \ |\n| `Product Group` \ \ | Structure Data: Product Groups \ \ \ \ \ \ | TEXT(4000) | Name\ \ of the product group
Example: `ALL/Domestic/Tools` \ \ \ \ |\n|\ \ `Channel Product Group ID` | Structure Data: Product Groups \ \ \ \ \ \ \ \ | BIGINT | Product group ID in the publisher
Example: `65244597854`\ \ \ \ \ \ |\n| `Product Group Level 0` | Structure Data: Product\ \ Groups \ \ \ \ \ \ | TEXT(500) | Level 0 of the product group definition
Example:\ \ `ALL` \ \ \ \ |\n| `Product Group Level 1` | Structure Data:\ \ Product Groups \ \ \ \ \ \ | TEXT(500) | Level 1 of the product group definition
Example:\ \ `Domestic` \ \ \ \ |\n| `Product Group Level 2` | Structure Data:\ \ Product Groups \ \ \ \ \ \ | TEXT(500) | Level 2 of the product group definition
Example:\ \ `Tools` \ \ \ \ |\n| `Product Group Level 3` | Structure Data:\ \ Product Groups \ \ \ \ \ \ | TEXT(500) | Level 3 of the product group definition
Example:\ \ `Tools` \ \ \ \ |\n| `Product Group Level 4` | Structure Data:\ \ Product Groups \ \ \ \ \ \ | TEXT(500) | Level 4 of the product group definition
Example:\ \ `Tools` \ \ \ \ |\n| `Product Group Level 5` | Structure Data:\ \ Product Groups \ \ \ \ \ \ | TEXT(500) | Level 5 of the product group definition
Example:\ \ `Tools` \ \ \ \ |\n| `Product Group Level 6` | Structure Data:\ \ Product Groups \ \ \ \ \ \ | TEXT(500) | Level 6 of the product group definition
Example:\ \ `Tools` \ \ \ \ |\n| `Product Group Level 7` | Structure Data:\ \ Product Groups \ \ \ \ \ \ | TEXT(500) | Level 7 of the product group definition
Example:\ \ `Tools` \ \ \ \ |\n| `Biddable` | Structure Data:\ \ Product Groups \ \ \ \ \ \ | TEXT(10) | Indicates if the product group is\ \ biddable. Non-biddable product groups are higher in the hierarchy and cannot\ \ have a bid of their own.
Valid values: `Yes`, `No` \ \ |\n| `Destination URL` |\ \ Structure Data: Product Groups \ \ \ \ \ \ | TEXT(2100) | Destination URL of\ \ the product group. Used for tracking, commonly empty.
Example: `http://www.track.com?url={escapedlpurl}`\ \ \ \ |\n| `Dimension Name` | Structure Data:\ \ Dimensions \ \ \ \ \ \ | TEXT(100) | Name of the dimension
Example:\ \ `Brand` \ \ \ \ |\n| `Dimension ID` \ \ | Structure Data: Dimensions \ \ \ \ \ \ | INT | Dimension ID\ \ in Skai
Example: `123` \ \ \ \ |\n| `Category Name`\ \ | Structure Data: Dimensions \ \ \ \ \ \ | TEXT(100) |\ \ Name of the category
Example: `NonBrand` \ \ \ \ \ \ |\n| `Category ID` | Structure Data: Dimensions \ \ \ \ \ \ \ \ | INT | Category ID in Skai
Example: `12` \ \ \ \ \ \ |\n| `Entity Level` | Structure Data:\ \ Dimensions \ \ \ \ \ \ | TEXT(50) | Entity level for this report
Valid\ \ values: `Profile`, `Campaign`, `Ad Group`, `Ad`, `Keyword` \ \ \ \ |\n| `Entity Name` |\ \ Structure Data: Dimensions \ \ \ \ \ \ | TEXT(4096) | Name of the entity
Example:\ \ `Google North America` \ \ \ \ |\n| `Entity ID` \ \ | Structure Data: Dimensions \ \ \ \ \ \ | BIGINT | Entity ID\ \ in Skai
Example Campaign ID Value: `1123` \ \ \ \ |\n| `Entity\ \ ID in Channel` | Structure Data: Dimensions \ \ \ \ \ \ | BIGINT\ \ | Entity ID in the publisher
Example Campaign ID Value: `1123` \ \ \ \ \ \ |\n" TestStructureDTO: type: "object" properties: id: type: "integer" format: "int32" readOnly: true name: type: "string" readOnly: true description: type: "string" readOnly: true goal: type: "string" readOnly: true agency_login_id: type: "integer" format: "int32" readOnly: true category: type: "string" readOnly: true enum: - "DRAFT_AND_EXPERIMENT" - "GROUPS_EXPERIMENT" type: type: "string" readOnly: true enum: - "BIDDING" - "LANDING_PAGE" - "CREATIVE" - "OTHER" status: type: "string" readOnly: true enum: - "SCHEDULED" - "RUNNING" - "COMPLETED" - "CANCELED" start_date: type: "integer" format: "int64" readOnly: true end_date: type: "integer" format: "int64" readOnly: true baseline_end_date: type: "integer" format: "int64" readOnly: true rampup_end_date: type: "integer" format: "int64" readOnly: true groups: type: "array" readOnly: true items: $ref: "#/components/schemas/GroupRO" ReportFilter: required: - "field" - "operator" - "values" type: "object" properties: field: type: "string" description: "Field name to be fetched" operator: type: "string" enum: - "EQUALS" - "NOT_EQUALS" - "IN" - "NOT_IN" - "GREATER_THAN" - "GREATER_THAN_EQUALS" - "LESS_THAN" - "LESS_THAN_EQUALS" - "STARTS_WITH" - "CONTAINS" - "DOES_NOT_CONTAIN" - "CONTAINS_ANY" - "CONTAINS_NONE" - "ENDS_WITH" - "IS_EMPTY" - "IS_NOT_EMPTY" - "BETWEEN" values: type: "array" items: type: "string" group: type: "string" description: "Each column belongs to a group. This list is partial - your\ \ account may have additional column groups. Group names are available\ \ in the getAvailableColumns endpoint" enum: - "ATTRIBUTES" - "PERFORMANCE" - "DIMENSIONS" - "CUSTOM_METRICS" - "CUSTOM_METRICS_PLUS" - "CONVERSION_TYPES" - "CHANNEL_CUSTOMER_CONVERSION_TYPES" - "PROXY_CUSTOMER_CONVERSION_TYPES" - "EXTERNAL_CUSTOMER_CONVERSION_TYPES" description: "Name of the field to which the condition will apply with certain\ \ values." example: - field: "StatusToDisplay" group: "ATTRIBUTES" operator: "In" values: - "Approved" - "Active" - field: "CampaignName" group: "ATTRIBUTES" operator: "CONTAINS" values: - "New" - field: "Impressions" group: "PERFORMANCE" operator: "GREATER_THAN" values: - "0" facebookCampaignBid: type: "object" properties: strategy: type: "string" description: "Campaign bid strategy" enum: - "LOWEST_COST_WITHOUT_CAP" - "LOWEST_COST_WITH_BID_CAP" - "COST_CAP" - "LOWEST_COST_WITH_MIN_ROAS" description: "Campaign bid" brandAnalyticsAuth: type: "object" properties: email_address: type: "string" password: type: "string" gfa_key: type: "string" getFacebookCampaignApiResponse: type: "object" properties: status: $ref: "#/components/schemas/ApiResponseStatus" entities: type: "array" readOnly: true items: $ref: "#/components/schemas/facebookCampaign" paging: $ref: "#/components/schemas/Paging" error_message: type: "string" readOnly: true SummaryReportStatusResponseVO: type: "object" properties: report_status: type: "string" enum: - "REQUESTED" - "GENERATED" asyncReportTemplateName: description: "The name of the report" oneOf: - $ref: "#/components/schemas/StructureReportTemplateName" - $ref: "#/components/schemas/TrackingReportTemplateName" - $ref: "#/components/schemas/FusionReportTemplateName" GoalMetricDTO: type: "object" properties: metric_name: type: "string" enum: - "BUDGET" - "ROI" - "CPA" metric_value: type: "number" format: "double" ad: required: - "ad_group_id" - "ad_type" type: "object" properties: ad_group_id: type: "integer" description: "Skai ID of the ad group" ad_type: type: "string" description: "Ad type" enum: - "PRODUCT" status: type: "string" description: "Ad status" enum: - "ACTIVE" - "PAUSED" - "DELETED" - "REVIEW" description: "The properties for the created ad" example: ad_group_id: "121232" ad_type: "PRODUCT" status: "ACTIVE" facebookFrequencySpec: type: "object" properties: interval_days: type: "integer" description: "Interval days" max_frequency: type: "integer" description: "Max frequency" event: type: "string" description: "Event" enum: - "IMPRESSIONS" - "VIDEO_VIEWS_2S" description: "Frequency spec" createPortfolio: required: - "portfolio_name" - "profile_id" type: "object" properties: profile_id: type: "integer" description: "Skai ID of the profile" profile_name: type: "string" description: "Profile name" portfolio_name: type: "string" description: "Portfolio name" description: type: "string" description: "Portfolio description" default_portfolio: type: "boolean" description: "Indicates if this is the default portfolio" business_cycle: type: "string" description: "The cycle length of the portfolio" enum: - "Rolling" - "Weekly" - "Monthly" rolling_cycle_days: type: "integer" description: "Number between 2 and 100" rolling_cycle_start_date: type: "string" description: "The cycle start date" format: "yyyy-MM-dd" weekly_cycle_start_day: type: "string" description: "The weekly cycle start date" enum: - "sunday" - "monday" - "tuesday" - "wednesday" - "thursday" - "friday" - "saturday" monthly_cycle_start_day: type: "integer" description: "The day of the month on which the monthly cycle should start" budget: type: "number" description: "The portfolio's budget for the cycle" next_cycle_budget: type: "number" description: "The portfolio's budget for the next cycle" first_monitor_metric: type: "string" description: "The first of two optional goals" enum: - "CLICKS" - "CONVERSION" - "ROI" second_monitor_metric: type: "string" description: "The second of two optional goals" enum: - "CLICKS" - "CONVERSION" - "ROI" first_monitor_value: type: "number" description: "The first monitor metric's target value for the cycle" second_monitor_value: type: "number" description: "The second monitor metric's target value for the cycle" rollover: type: "number" description: "The amount of unspent budget from the previous cycle to add\ \ to the current cycle's budget. Available only if Allow Cycle Budget\ \ Rollover is set to TRUE" optimize_with_budget_caps: type: "boolean" description: "When set to TRUE, Skai automatically optimizes to spend your\ \ budget for the cycle by updating the daily budget caps for your campaigns." optimize_with_keyword_bids: type: "boolean" description: "When set to TRUE, Skai automatically optimizes keyword-level\ \ bids to maximize clicks while meeting the spend goal for the portfolio.\ \ This process will run only if Optimize with Budget Caps is also set\ \ to TRUE and a Max Effective Bid is specified." optimize_for: type: "string" description: "The goal the portfolio optimizes for" enum: - "CLICKS" - "CONVERSIONS" - "REVENUE" - "VISIBILITY" max_effective_bid: type: "number" description: "Upper bid limit for each keyword in the portfolio" publisher_bid_strategy: type: "boolean" description: "Indicates if the portfolio uses publisher automated bidding" signal_enhancement: type: "array" description: "Defines whether the portfolio uses Signal Enhancement and\ \ syncs conversions to Google, Microsoft, or none of the publishers. Send\ \ an empty array to define as none." items: type: "string" enum: - "Google" - "Microsoft" budget_pacing: type: "string" description: "Defines budget pacing during a cycle. Available only if Optimize\ \ with Budget Caps is set to TRUE." enum: - "pace evenly" - "pace early" - "pace late" default: "pace evenly" day_parting_monday: type: "string" description: "Defines whether campaigns included in the portfolio are active\ \ or paused on Mondays" enum: - "true" - "false" default: "true" day_parting_tuesday: type: "string" description: "Defines whether campaigns included in the portfolio are active\ \ or paused on Tuesdays" enum: - "true" - "false" default: "true" day_parting_wednesday: type: "string" description: "Defines whether campaigns included in the portfolio are active\ \ or paused on Wednesdays" enum: - "true" - "false" default: "true" day_parting_thursday: type: "string" description: "Defines whether campaigns included in the portfolio are active\ \ or paused on Thursdays" enum: - "true" - "false" default: "true" day_parting_friday: type: "string" description: "Defines whether campaigns included in the portfolio are active\ \ or paused on Fridays" enum: - "true" - "false" default: "true" day_parting_saturday: type: "string" description: "Defines whether campaigns included in the portfolio are active\ \ or paused on Saturdays" enum: - "true" - "false" default: "true" day_parting_sunday: type: "string" description: "Defines whether campaigns included in the portfolio are active\ \ or paused on Sundays" enum: - "true" - "false" default: "true" allow_cycle_budget_rollover: type: "boolean" description: "Defines whether any remaining unspent budget is automatically\ \ rolled over to the next cycle. Available only if Optimize with Budget\ \ Caps is set to TRUE" default: false campaign_min_daily_budget: type: "number" description: "Set a minimum campaign daily budget for all campaigns within\ \ this portfolio. Valid values for this setting may vary by publisher." campaign_max_daily_budget: type: "number" description: "Set a maximum campaign daily budget for all campaigns within\ \ this portfolio. Valid values for this setting may vary by publisher." pause_campaign_setting: type: "boolean" description: "Defines whether campaigns in the portfolio will automatically\ \ pause when budget issues are detected. Available only if there is no\ \ campaign_min_daily_budget or campaign_max_daily_budget set for the portfolio." default: false description: "The properties for the created portfolio" example: profile_id: "123" portfolio_name: "My portfolio" description: "my desc" default_portfolio: "true" facebookCampaignType: type: "object" properties: objective: type: "string" description: "Campaign objective" enum: - "OUTCOME_AWARENESS" - "OUTCOME_ENGAGEMENT" - "OUTCOME_LEADS" - "OUTCOME_SALES" - "OUTCOME_TRAFFIC" - "OUTCOME_APP_PROMOTION" buying_type: type: "string" description: "Campaign buying type" enum: - "AUCTION" - "REACH_AND_FREQUENCY" promoted_object: $ref: "#/components/schemas/facebookPromotedObject" special_ad_categories: type: "array" items: type: "string" enum: - "NONE" - "HOUSING" - "CREDIT" - "EMPLOYMENT" - "ISSUES_ELECTIONS_POLITICS" portfolio_id: type: "integer" description: "Portfolio ID" description: "Campaign type" editPortfolio: required: - "id" type: "object" properties: id: type: "integer" description: "Skai ID of the portfolio" status: type: "string" description: "Use ACTIVE to edit the portfolio and use DELETED to delete\ \ the portfolio" enum: - "ACTIVE" - "DELETED" profile_id: type: "integer" description: "Skai ID of the profile" profile_name: type: "string" description: "Profile name" portfolio_name: type: "string" description: "Portfolio name" description: type: "string" description: "Portfolio description" default_portfolio: type: "boolean" description: "Indicates if this is the default portfolio" business_cycle: type: "string" description: "The cycle length of the portfolio" enum: - "Rolling" - "Weekly" - "Monthly" rolling_cycle_days: type: "integer" description: "Number between 2 and 100" rolling_cycle_start_date: type: "string" description: "The cycle start date" format: "yyyy-MM-dd" weekly_cycle_start_day: type: "string" description: "The weekly cycle start date" enum: - "sunday" - "monday" - "tuesday" - "wednesday" - "thursday" - "friday" - "saturday" monthly_cycle_start_day: type: "integer" description: "The day of the month on which the monthly cycle should start" budget: type: "number" description: "The portfolio's budget for the cycle" next_cycle_budget: type: "number" description: "The portfolio's budget for the next cycle" first_monitor_metric: type: "string" description: "The first of two optional goals" enum: - "CLICKS" - "CONVERSION" - "ROI" second_monitor_metric: type: "string" description: "The second of two optional goals" enum: - "CLICKS" - "CONVERSION" - "ROI" first_monitor_value: type: "number" description: "The first monitor metric's target value for the cycle" second_monitor_value: type: "number" description: "The second monitor metric's target value for the cycle" rollover: type: "number" description: "The amount of unspent budget from the previous cycle to add\ \ to the current cycle's budget. Available only if Allow Cycle Budget\ \ Rollover is set to TRUE" optimize_with_budget_caps: type: "boolean" description: "When set to TRUE, Skai automatically optimizes to spend your\ \ budget for the cycle by updating the daily budget caps for your campaigns." optimize_with_keyword_bids: type: "boolean" description: "When set to TRUE, Skai automatically optimizes keyword-level\ \ bids to maximize clicks while meeting the spend goal for the portfolio.\ \ This process will run only if Optimize with Budget Caps is also set\ \ to TRUE and a Max Effective Bid is specified." optimize_for: type: "string" description: "The goal the portfolio optimizes for" enum: - "CLICKS" - "CONVERSIONS" - "REVENUE" - "VISIBILITY" max_effective_bid: type: "number" description: "Upper bid limit for each keyword in the portfolio" bid_strategy_target: type: "number" description: "The publisher automated bid strategy target value" publisher_bid_strategy: type: "boolean" description: "Indicates if the portfolio uses publisher automated bidding" signal_enhancement: type: "array" description: "Defines whether the portfolio uses Signal Enhancement and\ \ syncs conversions to Google, Microsoft, or none of the publishers. Send\ \ an empty array to define as none." items: type: "string" enum: - "Google" - "Microsoft" budget_pacing: type: "string" description: "Defines budget pacing during a cycle. Available only if Optimize\ \ with Budget Caps is set to TRUE." enum: - "pace evenly" - "pace early" - "pace late" default: "pace evenly" day_parting_monday: type: "string" description: "Defines whether campaigns included in the portfolio are active\ \ or paused on Mondays" enum: - "true" - "false" default: "true" day_parting_tuesday: type: "string" description: "Defines whether campaigns included in the portfolio are active\ \ or paused on Tuesdays" enum: - "true" - "false" default: "true" day_parting_wednesday: type: "string" description: "Defines whether campaigns included in the portfolio are active\ \ or paused on Wednesdays" enum: - "true" - "false" default: "true" day_parting_thursday: type: "string" description: "Defines whether campaigns included in the portfolio are active\ \ or paused on Thursdays" enum: - "true" - "false" default: "true" day_parting_friday: type: "string" description: "Defines whether campaigns included in the portfolio are active\ \ or paused on Fridays" enum: - "true" - "false" default: "true" day_parting_saturday: type: "string" description: "Defines whether campaigns included in the portfolio are active\ \ or paused on Saturdays" enum: - "true" - "false" default: "true" day_parting_sunday: type: "string" description: "Defines whether campaigns included in the portfolio are active\ \ or paused on Sundays" enum: - "true" - "false" default: "true" allow_cycle_budget_rollover: type: "boolean" description: "Defines whether any remaining unspent budget is automatically\ \ rolled over to the next cycle. Available only if Optimize with Budget\ \ Caps is set to TRUE" default: false campaign_min_daily_budget: type: "number" description: "Set a minimum campaign daily budget for all campaigns within\ \ this portfolio. Valid values for this setting may vary by publisher." campaign_max_daily_budget: type: "number" description: "Set a maximum campaign daily budget for all campaigns within\ \ this portfolio. Valid values for this setting may vary by publisher." pause_campaign_setting: type: "boolean" description: "Defines whether campaigns in the portfolio will automatically\ \ pause when budget issues are detected. Available only if there is no\ \ campaign_min_daily_budget or campaign_max_daily_budget set for the portfolio." default: false description: "The properties for the updated portfolio" example: id: "11" status: "ACTIVE" profile_name: "My profile" portfolio_name: "My portfolio" budget: "1000" next_cycle_budget: "1100" SummaryReportSectionDTO: type: "object" properties: section_type: type: "string" enum: - "OBJECTIVE" - "BACKGROUND" - "METHODOLOGY" - "TIMELINE" - "RESULTS" - "EXCLUDED_DATES" - "CONCLUSION" section_title: type: "string" text: type: "string" include_in_report: type: "boolean" EditProfile: type: "object" properties: external_id: type: "string" description: "New external profile ID" profile_name: type: "string" description: "New profile name" description: "The properties for the edited profile" example: - external_id: "1111" profile_name: "profile example" GroupDataVO: type: "object" properties: group_id: type: "integer" format: "int32" readOnly: true group_name: type: "string" readOnly: true totals: type: "object" additionalProperties: type: "string" readOnly: true data: type: "array" readOnly: true items: type: "object" additionalProperties: type: "string" ReportApiResponseDTO: type: "object" properties: status: $ref: "#/components/schemas/ApiResponseStatus" entities: type: "array" readOnly: true items: $ref: "#/components/schemas/ReportResponseStructure" error_message: type: "string" readOnly: true AdGroupDTO: type: "object" properties: id: type: "integer" description: "Skai ID of the ad group" channel_ad_group_id: type: "string" description: "Publisher ID of the ad group" name: type: "string" description: "Ad group name" campaign_id: type: "integer" description: "Skai ID of the campaign" channel_campaign_id: type: "string" description: "Publisher ID of the campaign" profile_id: type: "integer" description: "Skai ID of the profile" channel_type: type: "string" description: "Ad group channel type" enum: - "Google" - "Microsoft" - "Universal" - "Yandex" - "Baidu" - "YahooJapan" - "YahooGemini" - "Pinterest" - "Amazon" - "Facebook" - "Walmart" search_bid: type: "integer" description: "Default search bid in the profile's currency" bidding_method: $ref: "#/components/schemas/AdgroupBiddingMethod" start_date: type: "string" description: "Ad group start date" format: "yyyy-MM-dd" end_date: type: "string" description: "Ad group end date" format: "yyyy-MM-dd" status: $ref: "#/components/schemas/AdgroupStatus" budget: type: "integer" description: "Ad group budget in the profile's currency" budget_type: $ref: "#/components/schemas/AdgroupBudgetType" editCampaign: required: - "id" type: "object" properties: id: type: "integer" description: "Skai ID of the campaign" channel_account_id: type: "integer" description: "Skai ID of the publisher account" campaign_name: type: "string" description: "Campaign name" budget: type: "number" description: "Campaign budget in the profile's currency" budget_type: type: "string" description: "Budget type" enum: - "DEFAULT" - "DAILY_FOR_ADGROUP" - "MONTHLY_FOR_CAMPAIGN" - "LIFETIME" search_bid: type: "number" description: "Default search bid in the profile's currency" content_bid: type: "number" description: "Default content bid in the profile's currency" status: type: "string" description: "Campaign status" enum: - "ACTIVE" - "PAUSED" - "DELETED" - "REVIEW" order_line: type: "string" description: "Order line of the campaign" start_date: type: "string" description: "Campaign start date. If specified, must be in the future." format: "yyyy-MM-dd" end_date: type: "string" description: "Campaign end date. If specified, must be in the future and\ \ later than the campaign start date." format: "yyyy-MM-dd" tracking_level: type: "string" description: "Campaign tracking level" enum: - "NONE" - "PROFILE_DEFAULT" - "CAMPAIGN" - "ADS" - "KEYWORDS" - "ADS_AND_KEYWORDS" shopping_settings: $ref: "#/components/schemas/shoppingSettings" default_geographical_targeting: type: "string" description: "Geographical targeting inheritance options" enum: - "INHERIT_FROM_PROFILE" - "ENTIRE_WORLD" description: "The properties for the updated campaign" example: channel_account_id: "14411" campaign_name: "Edit Campaign" budget: "153000.0" search_bid: "1.0" content_bid: "1.0" start_date: "2026-01-01" end_date: "3000-09-28" campaign_type: "SHOPPING_STANDARD" shopping_settings: merchant_id: "8740" sales_country: "US" priority: "LOW" SummaryReportDTO: type: "object" properties: test_id: type: "Integer" format: "int64" report_name: type: "string" report_sections: type: "array" items: $ref: "#/components/schemas/SummaryReportSectionDTO" overview_metrics: type: "array" items: type: "string" breakdown_metrics: type: "array" items: type: "string" include_prediction: type: "boolean" include_benchmark: type: "boolean" include_last_year: type: "boolean" start_date: type: "integer" format: "int64" end_date: type: "integer" format: "int64" baseline_end_date: type: "integer" format: "int64" rampup_end_date: type: "integer" format: "int64" exclude_dates: type: "array" readOnly: true items: type: "object" additionalProperties: type: "string" facebookCampaign: type: "object" properties: id: type: "integer" description: "Skai ID of the campaign" channel_id: type: "string" description: "Channel ID of the campaign" account_id: type: "integer" description: "Skai ID of the publisher account" profile_token: type: "string" description: "Skai profile token" name: type: "string" description: "Campaign name" status: oneOf: - $ref: "#/components/schemas/facebookCampaignStatus" budget: oneOf: - $ref: "#/components/schemas/facebookCampaignBudget" bid: oneOf: - $ref: "#/components/schemas/facebookCampaignBid" campaign_type: oneOf: - $ref: "#/components/schemas/facebookCampaignType" CreatedAccount: type: "object" properties: id: type: "string" description: "Channel account id" channelType: type: "string" description: "The channel" uniqueIdInTarget: type: "string" description: "The account id in the channel" description: "details of channel account copied in the copy profile process" QueryFilter: type: "object" properties: field: type: "string" operartor: type: "string" enum: - "EQUALS" - "NOT_EQUALS" - "IN" - "NOT_IN" - "GREATER_THAN" - "GREATER_THAN_EQUALS" - "LESS_THAN" - "LESS_THAN_EQUALS" - "STARTS_WITH" - "STARTS_WITH_IGNORE_CASE" - "CONTAINS" - "CONTAINS_IGNORE_CASE" - "DOES_NOT_CONTAIN" - "DOES_NOT_CONTAIN_IGNORE_CASE" - "CONTAINS_ANY" - "CONTAINS_ALL" - "CONTAINS_NONE" - "UNKNOWN" values: type: "object" facebookSpendLimit: type: "object" properties: min: type: "number" description: "Minimum spend limit" max: type: "number" description: "Maximum spend limit" description: "Budget spend limit" adDTO: type: "object" properties: ad_group_id: type: "integer" description: "Skai ID of the ad group" name: type: "string" description: "Ad name" status: type: "string" description: "Status" enum: - "ACTIVE" - "PAUSED" bid: oneOf: - $ref: "#/components/schemas/facebookAdBid" creative: oneOf: - $ref: "#/components/schemas/facebookAdCreativeDTO" tracking: oneOf: - $ref: "#/components/schemas/facebookAdTracking" description: "The properties for the newly created ad" example: - name: "New Ad" ad_group_id: 12345 status: "ACTIVE" bid: bid_amount: 23.05 creative: ad_type: "PAGE_POST" post_type: "LINK" post_text: "ad body" description: "ad description" headline: "ad headline" call_to_action: "DOWNLOAD" link: "skai.io" caption: "skai.io" image_name: "theBestImage" page_id: 21 instagram_actor_id: 33 tracking: pixel_ids: - 4308 use_kenshoo_tracking: true operationType: type: "string" description: "Operation type" enum: - "ATTACH" - "DETACH" SourceProfile: type: "object" properties: profile_id: type: "integer" description: "The copied profile id" format: "int64" master_accounts: type: "array" description: "Master account ID" items: $ref: "#/components/schemas/MasterAccount" description: "The copied profile details" facebookAdBid: type: "object" properties: bid_amount: type: "number" description: "Bid amount" description: "Bid" MasterAccount: type: "object" properties: channel_type: type: "string" description: "The channel" enum: - "GOOGLE" - "MSN" - "PINTEREST" master_account_id: type: "string" description: "The master account id in kenshoo" description: "The master accounts used to create channel accounts in the created\ \ profile" asyncReportByIdRequest: required: - "dateRange" type: "object" properties: dateRange: required: - "end_date" - "start_date" type: "object" properties: start_date: type: "string" description: "Start date in YYYY-MM-dd format" end_date: type: "string" description: "End date in YYYY-MM-dd format" description: "The date range for this report run (overrides the existing\ \ report settings for this run only). _NOTE:_ Analysis grid reports must\ \ be created with 'Custom' date range (vs. a preset range like 'Last 7\ \ Days') for the API date override to work." example: from: "2026-01-01" to: "2026-01-14" description: "The run properties for the requested report" example: dateRange: from: "2026-01-01" to: "2026-01-14" StructureReportTemplateName: type: "string" description: "One of the available Structure Reports." enum: - "Structure Data: Ads" - "Structure Data: Keywords" - "Structure Data: Ad Groups" - "Structure Data: Product Groups" - "Structure Data: Campaigns" - "Structure Data: Channels" - "Structure Data: Dimensions" - "Structure Data: Profiles" - "Structure Data: Sitelinks" Profile: type: "object" properties: profile_name: type: "string" description: "New profile name" display_url: type: "string" description: "Display URL" land_url: type: "string" description: "Land URL" currency: type: "string" description: "Currency code" source_profile: $ref: "#/components/schemas/SourceProfile" description: "The properties for the newly created profile" example: profile_name: "new profile name" display_url: "skai.io" land_url: "http://skai.io" currency: "USD" source_profile: profile_id: 12 copy_channel_accounts: true master_accounts: - master_account_id: "1" channel_type: "FB" facebookAdType: type: "string" description: "Ad type" enum: - "PAGE_POST" FacebookAdGroupDTO: type: "object" properties: id: type: "integer" description: "Skai ID of the ad group" channel_id: type: "string" description: "Publisher ID of the ad group" campaign_id: type: "integer" description: "Skai ID of the campaign" name: type: "string" description: "Ad group name" status: oneOf: - $ref: "#/components/schemas/facebookAdgroupStatus" budget: oneOf: - $ref: "#/components/schemas/facebookAdgroupBudget" bid: oneOf: - $ref: "#/components/schemas/facebookAdgroupBid" targeting: oneOf: - $ref: "#/components/schemas/facebookTargeting" schedule: oneOf: - $ref: "#/components/schemas/facebookAdgroupSchedule" ad_group_type: oneOf: - $ref: "#/components/schemas/facebookAdgroupType" reportsJob: type: "object" properties: job_id: type: "string" auth: $ref: "#/components/schemas/brandAnalyticsAuth" account: $ref: "#/components/schemas/reportAccount" reports: type: "array" items: $ref: "#/components/schemas/reportInJob" facebookCampaignBudget: type: "object" properties: type: type: "string" description: "Campaign budget type" enum: - "DAILY" - "LIFETIME" budget: type: "number" description: "Campaign budget" spend_cap: type: "number" description: "Campaign spend cap" pacing_types: type: "array" description: "Budget pacing types" items: type: "string" enum: - "STANDARD" - "NO_PACING" - "DAY_PARTING" - "DISABLED" caps: oneOf: - $ref: "#/components/schemas/facebookImpressionCaps" description: "Campaign budget" getFacebookAdGroupApiResponse: type: "object" properties: status: $ref: "#/components/schemas/ApiResponseStatus" entities: type: "array" readOnly: true items: $ref: "#/components/schemas/FacebookAdGroupDTO" paging: $ref: "#/components/schemas/Paging" error_message: type: "string" readOnly: true AdgroupBiddingMethod: type: "string" description: "Will inherit from the campaign's bidding method, if not included" enum: - "ManualCPC" - "ManualCPM" - "ENHANCED_CPC" - "TARGET_CPA" - "TARGET_SPEND" - "TARGET_ROAS" reportDestination: type: "object" properties: bucket_name: type: "string" file_key: type: "string" asyncReportFusionField: type: "string" description: "\n\n\n| Field name | Reports\ \ the field is available in \ \ \ \ \ \ \ \ \ \ | Data type | Description \ \ \ \ \ \ |\n|-----------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n\ | `Profile ID` | Fusion: Profiles
Fusion: Campaigns
Fusion:\ \ Channels
Fusion: Campaigns by Device
Fusion: Adgroups
Fusion: Ads
Fusion:\ \ Ads by Device
Fusion: Keywords
Fusion: Keywords by Device
Fusion:\ \ Keywords with Content and PLA
Fusion: Dynamic Ad Targets
Fusion: Product\ \ Groups
Fusion: Sitelinks
Fusion: Audiences
Fusion: Audiences by\ \ Device | INT | Profile ID in Skai
Example: `102` \ \ \ \ \ \ |\n| `Profile Name` | Fusion: Profiles
Fusion:\ \ Campaigns
Fusion: Channels
Fusion: Campaigns by Device
Fusion:\ \ Adgroups
Fusion: Ads
Fusion: Ads by Device
Fusion: Keywords
Fusion:\ \ Keywords by Device
Fusion: Keywords with Content and PLA
Fusion: Dynamic\ \ Ad Targets
Fusion: Product Groups
Fusion: Sitelinks
Fusion: Audiences
Fusion:\ \ Audiences by Device | TEXT(50) | Profile name in Skai
Example: `ACME\ \ Brand` \ \ \ \ |\n| `Profile Currency` | Fusion:\ \ Profiles
Fusion: Campaigns
Fusion: Channels
Fusion: Campaigns by\ \ Device
Fusion: Adgroups
Fusion: Ads
Fusion: Ads by Device
Fusion:\ \ Keywords
Fusion: Keywords by Device
Fusion: Keywords with Content\ \ and PLA
Fusion: Dynamic Ad Targets
Fusion: Product Groups
Fusion:\ \ Sitelinks
Fusion: Audiences
Fusion: Audiences by Device | TEXT(10)\ \ | Currency in which all monetary values under this profile will be stored\ \ in Skai. Any other currencies will be converted upon processing.
Format:\ \ 3-character ISO 4217 currency code
Example: `USD` |\n| `Time\ \ Zone` | Fusion: Profile \ \ \ \ \ \ \ \ \ \ | TEXT(50) | Time zone for the\ \ profile.
All data reported for the profile will be displayed in this\ \ time zone.
Example: `US/Eastern` \ \ |\n| `Create Date`\ \ | Fusion: Profile \ \ \ \ \ \ \ \ \ \ | DATETIME | Date and time the profile\ \ was created
Format: `yyyy-MM-dd HH:mm:ss`
Example: `2026-01-01 00:00:00`\ \ \ \ |\n| `Creation Date` \ \ | Fusion: Dynamic Ad Targets
Fusion: Product Groups
Fusion:\ \ Sitelinks
Fusion: Audiences
Fusion: Audiences by Device \ \ \ \ \ \ \ \ | DATETIME | Date the element was created
Format:\ \ `yyyy-MM-dd HH:mm:ss`
Example: `2026-01-01 00:00:00.0` \ \ \ \ |\n| `Last Modified` |\ \ Fusion: Profiles
Fusion: Campaigns
Fusion: Channels
Fusion: Campaigns\ \ by Device
Fusion: Adgroups
Fusion: Keywords
Fusion: Keywords by\ \ Device
Fusion: Product Groups
Fusion: Audiences
Fusion: Audiences\ \ by Device \ \ |\ \ DATETIME | Date and time the entity was last modified
Format: `yyyy-MM-dd\ \ HH:mm:ss`
Example: `2026-01-01 00:00:00` \ \ \ \ |\n| `Profile Token` | Fusion: Profile \ \ \ \ \ \ \ \ \ \ | TEXT(50) \ \ | Unique value assigned to all Skai profiles. Used in configuration of event\ \ tracking like the Skai infinity tag.
Example: `1acbf593-7551-4aea-83d0-711f4446320e`\ \ |\n| `Status` \ \ | Fusion: Campaigns
Fusion: Channels
Fusion: Campaigns\ \ by Device
Fusion: Adgroups
Fusion: Ads
Fusion: Ads by Device
Fusion:\ \ Keywords
Fusion: Keywords by Device
Fusion: Keywords with Content\ \ and PLA
Fusion: Dynamic Ad Targets
Fusion: Product Groups \ \ \ \ | TEXT(50) | Status of the reported entity
Valid values:\ \ `Active`, `Paused`, `Deleted`, `Pending`, `Inactive`, `Disapproved`, `Approved`,\ \ `Failed`, `To Pause`, `To Delete`, `Failed to Pause`, `Failed to Delete`\ \ |\n| `Bid` | Fusion: Keywords
Fusion:\ \ Keywords by Device
Fusion: Keywords with Content and PLA
Fusion: Dynamic\ \ Ad Targets
Fusion: Product Groups \ \ \ \ \ \ | FLOAT(20,8) | Bid of the\ \ reported element, in the currency of the profile
Example: `1.50` \ \ \ \ |\n| `Search\ \ Bid` | Fusion: Campaigns
Fusion: Campaigns by Device
Fusion:\ \ Adgroups \ \ \ \ \ \ \ \ | FLOAT(20,8) | Default bid for Search, in the currency\ \ of the profile
Example: `1` \ \ \ \ |\n| `Content Bid` |\ \ Fusion: Campaigns
Fusion: Campaigns by Device
Fusion: Adgroups \ \ \ \ \ \ \ \ \ \ | FLOAT(20,8) | Default bid for Content, in the currency of the\ \ profile
Example: `1` \ \ \ \ |\n| `Mobile Bid Adjustment` | Fusion:\ \ Campaigns
Fusion: Campaigns by Device
Fusion: Adgroups
Fusion:\ \ Keywords
Fusion: Keywords by Device
Fusion: Keywords with Content\ \ and PLA \ \ \ \ \ \ | INT | Mobile bid adjustment, in the currency of the profile
Example:\ \ `-50` \ \ \ \ |\n| `Tablet Bid Adjustment` | Fusion: Campaigns
Fusion:\ \ Campaigns by Device
Fusion: Adgroups \ \ \ \ \ \ \ \ | INT | Tablet\ \ bid adjustment, in the currency of the profile
Example: `-50` \ \ \ \ |\n| `Desktop\ \ Bid Adjustment` | Fusion: Campaigns
Fusion: Campaigns by Device
Fusion:\ \ Adgroups \ \ \ \ \ \ \ \ | INT | Desktop bid adjustment. in the currency\ \ of the profile
Example: `-50` \ \ \ \ |\n| `Network` |\ \ Fusion: Campaigns
Fusion: Campaigns by Device
Fusion: Adgroups
Fusion:\ \ Ads
Fusion: Ads by Device
Fusion: Keywords
Fusion: Keywords by\ \ Device \ \ \ \ \ \ | TEXT(128) | List of networks used in this campaign, comma delimited
Example:\ \ `Content Network, Search Network` \ \ \ \ |\n| `Channel` | Fusion: Campaigns
Fusion:\ \ Channels
Fusion: Campaigns by Device
Fusion: Adgroups
Fusion: Ads
Fusion:\ \ Ads by Device
Fusion: Keywords
Fusion: Keywords by Device
Fusion:\ \ Keywords with Content and PLA
Fusion: Dynamic Ad Targets
Fusion: Product\ \ Groups
Fusion: Sitelinks
Fusion: Audiences
Fusion: Audiences by\ \ Device | TEXT(50) | Name of the publisher
Example:\ \ `Google` \ \ \ \ |\n| `Account Name` \ \ | Fusion: Campaigns
Fusion: Channels
Fusion: Campaigns by Device
Fusion:\ \ Adgroups
Fusion: Ads
Fusion: Ads by Device
Fusion: Keywords
Fusion:\ \ Keywords by Device
Fusion: Keywords with Content and PLA
Fusion: Dynamic\ \ Ad Targets \ \ | TEXT(255) \ \ | Name of the account, if available, or the username configured in Skai\ \ to access the account
Example: `Northwest_Google` \ \ |\n\ | `Channel Type ID` | Fusion: Channels \ \ \ \ \ \ \ \ \ \ | INT | Skai numeric\ \ identifier for the name of the publisher:
1 - Google
2 - Bing (MSN)
3\ \ - Yahoo
4 - Yandex
5 - Baidu
Example: `1` \ \ |\n| `Channel Account ID`\ \ | Fusion: Campaigns
Fusion: Channels
Fusion: Campaigns\ \ by Device
Fusion: Adgroups
Fusion: Ads
Fusion: Ads by Device
Fusion:\ \ Keywords
Fusion: Keywords by Device
Fusion: Keywords with Content\ \ and PLA
Fusion: Dynamic Ad Targets
Fusion: Sitelinks
Fusion: Audiences
Fusion:\ \ Audiences by Device | INT\ \ | ID of this publisher account, in Skai
Example: `408` \ \ \ \ \ \ |\n| `Unique Channel Account ID` | Fusion: Campaigns
Fusion:\ \ Adgroups
Fusion: Sitelinks \ \ \ \ \ \ \ \ | BIGINT | Unique\ \ ID of this publisher account, in Skai. Will be identical for several instances\ \ of the same account, across multiple profiles.
Example: `102` \ \ |\n| `Channel Account\ \ Publisher ID` | Fusion: Campaigns
Fusion: Campaigns by Device
Fusion:\ \ Adgroups
Fusion: Ads
Fusion: Keywords
Fusion: Keywords by Device
Fusion:\ \ Keywords with Content and PLA
Fusion: Sitelinks \ \ \ \ \ \ | TEXT(255) | ID of this publisher account, in the publisher
Example:\ \ `123456789` \ \ \ \ |\n| `Channel Currency` | Fusion: Channels \ \ \ \ \ \ \ \ \ \ | TEXT(10)\ \ | Reported currency from the publisher
Example: `USD` \ \ \ \ \ \ |\n| `Campaign Name` | Fusion: Campaigns
Fusion:\ \ Campaigns by Device
Fusion: Adgroups
Fusion: Ads
Fusion: Ads by\ \ Device
Fusion: Keywords
Fusion: Keywords by Device
Fusion: Keywords\ \ with Content and PLA
Fusion: Dynamic Ad Targets
Fusion: Product Groups
Fusion:\ \ Sitelinks
Fusion: Audiences
Fusion: Audiences by Device \ \ | TEXT(255) | Campaign name in Skai
Example:\ \ `ACME Brand Clothing` \ \ \ \ |\n| `Campaign ID` \ \ | Fusion: Campaigns
Fusion: Campaigns by Device
Fusion: Adgroups
Fusion:\ \ Ads
Fusion: Ads by Device
Fusion: Keywords
Fusion: Keywords by\ \ Device
Fusion: Keywords with Content and PLA
Fusion: Dynamic Ad Targets
Fusion:\ \ Product Groups
Fusion: Sitelinks
Fusion: Audiences
Fusion: Audiences\ \ by Device | BIGINT | Campaign\ \ ID in Skai
Example: `1123` \ \ \ \ |\n| `Channel\ \ Campaign ID` | Fusion: Campaigns
Fusion: Campaigns by Device
Fusion:\ \ Adgroups
Fusion: Ads
Fusion: Ads by Device
Fusion: Keywords
Fusion:\ \ Keywords by Device
Fusion: Keywords with Content and PLA
Fusion: Dynamic\ \ Ad Targets
Fusion: Product Groups
Fusion: Sitelinks
Fusion: Audiences
Fusion:\ \ Audiences by Device | BIGINT \ \ | Campaign ID in the publisher
Example: `121270991` \ \ \ \ \ \ |\n| `Campaign Status` | Fusion: Adgroups
Fusion:\ \ Ads
Fusion: Ads by Device
Fusion: Keywords
Fusion: Keywords by\ \ Device
Fusion: Keywords with Content and PLA
Fusion: Dynamic Ad Targets
Fusion:\ \ Product Groups
Fusion: Sitelinks
Fusion: Audiences
Fusion: Audiences\ \ by Device \ \ | TEXT(50) | Status of the campaign
Valid\ \ values: `Active`, `Paused`, `Deleted`, `Pending`, `Inactive`, `Disapproved`,\ \ `Approved`, `Failed`, `To Pause`, `To Delete`, `Failed to Pause`, `Failed\ \ to Delete` |\n| `Campaign Start Date` \ \ | Fusion: Campaigns \ \ \ \ \ \ \ \ \ \ | DATETIME | Date and time the campaign starts
Format:\ \ `yyyy-MM-dd HH:mm:ss`
Example: `2026-01-01 00:00:00` \ \ \ \ |\n| `Campaign End Date` | Fusion:\ \ Campaigns \ \ \ \ \ \ \ \ \ \ | DATETIME | Date and time the campaign ends
Format: `yyyy-MM-dd\ \ HH:mm:ss`
Example: `2026-01-01 00:00:00` \ \ \ \ |\n| `Campaign Creation Date` | Fusion: Campaigns
Fusion:\ \ Campaigns by Device \ \ \ \ \ \ \ \ | DATETIME | Date\ \ and time the campaign was created
Format: `yyyy-MM-dd HH:mm:ss`
Example:\ \ `2026-01-01 00:00:00` \ \ |\n| `Daily\ \ Budget` | Fusion: Campaigns
Fusion: Campaigns by Device\ \ \ \ \ \ \ \ \ \ | FLOAT(20,8) | Daily budget of the campaign,\ \ in the currency of the profile
Example: `100` \ \ \ \ |\n| `Default Landing Page` \ \ | Fusion: Campaigns
Fusion: Campaigns by Device \ \ \ \ \ \ \ \ \ \ | TEXT(255) | Default landing page of the campaign
Example:\ \ `http://www.url.com` \ \ \ \ |\n| `Geo Targeting countries` | Fusion:\ \ Campaigns
Fusion: Campaigns by Device \ \ \ \ \ \ \ \ \ \ | TEXT(3000) | List of countries targeted by this campaign, comma delimited\ \
Example: `Andorra,Afghanistan,Albania,Bangladesh` \ \ \ \ |\n| `Geo Targeting territories` | Fusion: Campaigns
Fusion:\ \ Campaigns by Device \ \ \ \ \ \ \ \ | TEXT(3000) | List\ \ of territories targeted by this campaign, comma delimited
Example: `Saint\ \ Petersburg,Russia,Tambov Oblast,Russia,Republic of Tatarstan,Russia` \ \ |\n| `Device\ \ targeting` | Fusion: Campaigns
Fusion: Campaigns by Device\ \ \ \ \ \ \ \ \ \ | TEXT(100) | Device targeting enabled\ \ for this campaign, comma delimited if several devices
Valid values: `desktop`,\ \ `high_end_mobile`, `wap_mobile`, `tablet` \ \ |\n| `Mirroring Status` \ \ | Fusion: Campaigns
Fusion: Campaigns by Device \ \ \ \ \ \ \ \ \ \ | TEXT(30) | Mirroring status of this campaign, if mirrored
Valid\ \ values: `Source`, `Destination`, `Errors on Destination` \ \ \ \ |\n| `Tracking Level` | Fusion: Campaigns
Fusion:\ \ Campaigns by Device \ \ \ \ \ \ \ \ | TEXT(20) | Tracking\ \ level of the campaign
Valid values: `Keywords`, `Ads`, `Ads + Keywords`,\ \ `Profile Default`, `None` \ \ |\n| `Portfolio\ \ ID` | Fusion: Campaigns
Fusion: Campaigns by Device\ \ \ \ \ \ \ \ \ \ | INT | ID of the portfolio in\ \ Skai
Example: `1234` \ \ \ \ |\n| `Portfolio Name` \ \ | Fusion: Campaigns
Fusion: Campaigns by Device \ \ \ \ \ \ \ \ \ \ | TEXT(200) | Name of the portfolio in Skai
Example:\ \ `Non-Brand` \ \ \ \ |\n| `Ad Group Name` | Fusion:\ \ Adgroups
Fusion: Ads
Fusion: Ads by Device
Fusion: Keywords
Fusion:\ \ Keywords by Device
Fusion: Keywords with Content and PLA
Fusion: Dynamic\ \ Ad Targets
Fusion: Product Groups
Fusion: Audiences
Fusion: Audiences\ \ by Device \ \ | TEXT(256) | Name\ \ of the ad group
Example: `Northwest Region Trucks` \ \ \ \ |\n|\ \ `Ad Group ID` | Fusion: Adgroups
Fusion: Ads
Fusion:\ \ Ads by Device
Fusion: Keywords
Fusion: Keywords by Device
Fusion:\ \ Keywords with Content and PLA
Fusion: Product Groups \ \ \ \ \ \ | BIGINT | Ad group ID in Skai
Example:\ \ `2124` \ \ \ \ |\n| `Ad Group ID in Skai` \ \ | Fusion: Audiences
Fusion: Audiences by Device \ \ \ \ \ \ \ \ \ \ | BIGINT | Ad group ID in Skai
Example: `2124` \ \ \ \ \ \ |\n| `Channel Ad Group ID` | Fusion:\ \ Adgroups
Fusion: Ads
Fusion: Ads by Device
Fusion: Keywords
Fusion:\ \ Keywords with Content and PLA
Fusion: Dynamic Ad Targets
Fusion: Product\ \ Groups
Fusion: Audiences
Fusion: Audiences by Device \ \ \ \ | BIGINT \ \ | Ad group ID in the publisher
Example: `15782818485` \ \ \ \ \ \ |\n| `AdGroup Status` | Fusion: Ads
Fusion: Ads\ \ by Device
Fusion: Keywords
Fusion: Keywords by Device
Fusion: Keywords\ \ with Content and PLA
Fusion: Dynamic Ad Targets
Fusion: Product Groups\ \ \ \ \ \ | TEXT(50) | Status of the\ \ ad group
Valid values: `Active`, `Paused`, `Deleted`, `Pending`, `Inactive`,\ \ `Disapproved`, `Approved`, `Failed`, `To Pause`, `To Delete`, `Failed to\ \ Pause`, `Failed to Delete` |\n| `Ad Group Status`\ \ | Fusion: Audiences
Fusion: Audiences by Device \ \ \ \ \ \ \ \ \ \ | TEXT(50) | Status of the ad group
Valid\ \ values: `Active`, `Paused`, `Deleted`, `Pending`, `Inactive`, `Disapproved`,\ \ `Approved`, `Failed`, `To Pause`, `To Delete`, `Failed to Pause`, `Failed\ \ to Delete` |\n| `AdGroup Creation Date` \ \ | Fusion: Adgroups \ \ \ \ \ \ \ \ \ \ | DATETIME | Date and time the ad group was created
Format:\ \ `yyyy-MM-dd HH:mm:ss`
Example: `2026-01-01 00:00:00` \ \ \ \ |\n| `Tracking ID` | Fusion: Ads
Fusion:\ \ Ads by Device
Fusion: Keywords
Fusion: Keywords by Device
Fusion:\ \ Keywords with Content and PLA
Fusion: Product Groups \ \ \ \ \ \ | BIGINT |\ \ ID used for tracking in Skai
Example: `1123` \ \ \ \ |\n\ | `Upgr. URL Ind.` | Fusion: Ads
Fusion: Ads by Device
Fusion:\ \ Keywords
Fusion: Keywords by Device
Fusion: Sitelinks \ \ \ \ \ \ \ \ | TEXT(10) | Upgraded URL indicator,\ \ TRUE if the URL is upgraded
Valid values: `TRUE`, `FALSE` \ \ \ \ |\n| `Tracking Template`\ \ | Fusion: Ads
Fusion: Ads by Device
Fusion: Keywords
Fusion:\ \ Keywords by Device
Fusion: Sitelinks \ \ \ \ \ \ \ \ | TEXT(3000) | Tracking template of the entity, applicable\ \ for upgraded URLs
Example: `http://www.track.com?url={lpurl}` \ \ \ \ |\n| `Land URL` | Fusion:\ \ Ads
Fusion: Ads by Device
Fusion: Keywords
Fusion: Keywords by\ \ Device
Fusion: Keywords with Content and PLA \ \ \ \ \ \ \ \ | TEXT(2100) | Destination URL (for non-upgraded ads) or Final URL (for\ \ upgraded ads)
Example: `http://www.url.com` \ \ \ \ |\n| `Mobile URL` | Fusion: Ads
Fusion:\ \ Ads by Device
Fusion: Keywords
Fusion: Keywords by Device
Fusion:\ \ Sitelinks \ \ \ \ \ \ | TEXT(3000) |\ \ URL for mobile-optimized destination
Example: `http://m.url.com` \ \ \ \ \ \ |\n| `Custom Parameter 1` | Fusion: Ads
Fusion: Ads by Device
Fusion:\ \ Keywords
Fusion: Keywords by Device
Fusion: Sitelinks \ \ \ \ \ \ \ \ | TEXT(500) | First custom parameter\ \ name and value for upgraded URLs
Example: `{_paramname1} paramvalue1`\ \ \ \ |\n| `Custom Parameter 2`\ \ | Fusion: Ads
Fusion: Ads by Device
Fusion: Keywords
Fusion:\ \ Keywords by Device
Fusion: Sitelinks \ \ \ \ \ \ \ \ | TEXT(500) | Second custom parameter name and value for\ \ upgraded URLs
Example: `{_paramname2} paramvalue2` \ \ \ \ |\n| `Custom Parameter 3` | Fusion:\ \ Ads
Fusion: Ads by Device
Fusion: Keywords
Fusion: Keywords by\ \ Device
Fusion: Sitelinks \ \ \ \ \ \ \ \ | TEXT(500) | Third custom parameter name and value for upgraded URLs
Example:\ \ `{_paramname3} paramvalue3` \ \ \ \ |\n| `Quality Score` | Fusion: Ads
Fusion: Ads\ \ by Device
Fusion: Keywords
Fusion: Keywords by Device
Fusion: Sitelinks\ \ \ \ \ \ \ \ | INT | Quality score\ \ of the reported entity
Example: `3` \ \ \ \ |\n| `Keyword`\ \ | Fusion: Keywords
Fusion: Keywords by Device
Fusion:\ \ Keywords with Content and PLA \ \ \ \ \ \ \ \ | TEXT(4096) | Keyword text
Example: `Small\ \ Hybrid Cars` \ \ \ \ |\n| `Keyword ID` \ \ | Fusion: Keywords
Fusion: Keywords by Device \ \ \ \ \ \ \ \ \ \ | BIGINT | Keyword ID in Skai
Example: `1234`\ \ \ \ \ \ |\n| `Channel Keyword ID` |\ \ Fusion: Keywords
Fusion: Keywords by Device
Fusion: Keywords with\ \ Content and PLA \ \ \ \ \ \ \ \ | BIGINT | Keyword ID in the publisher
Example: `1145221822`\ \ \ \ \ \ |\n| `Match Type` | Fusion: Keywords
Fusion:\ \ Keywords by Device
Fusion: Keywords with Content and PLA \ \ \ \ \ \ \ \ | TEXT(50) | Match\ \ type of the keyword
Valid values: `Exact`, `Phrase`, `Broad` \ \ \ \ |\n| `Min.\ \ Bid` | Fusion: Keywords \ \ \ \ \ \ \ \ \ \ | FLOAT(20,8) | Minimum allowed\ \ bid, in the currency of the profile
Example: `1.50` \ \ \ \ |\n| `Keyword Creation\ \ Date` | Fusion: Keywords
Fusion: Keywords by Device
Fusion:\ \ Keywords with Content and PLA \ \ \ \ \ \ \ \ | DATETIME | Date and time the keyword was created
Format:\ \ `yyyy-MM-dd HH:mm:ss`
Example: `2026-01-01 00:00:00` \ \ \ \ |\n| `Ad Type` | Fusion:\ \ Ads
Fusion: Ads by Device \ \ \ \ \ \ \ \ \ \ | TEXT(50) | Ad type
Valid values: `Text`, `Image`, `Mobile Text`,\ \ `Product`, `Dynamic Search`, `App Install`, `Image App Install`, `Call Only`,\ \ `Facebook`*
Note: All Facebook ad types display as “Facebook” in this\ \ report. |\n| `Ad Name` | Fusion: Ads
Fusion:\ \ Ads by Device \ \ \ \ \ \ \ \ | TEXT(128) \ \ | Name of the ad, for supported ad types
Example: `my_ad` \ \ \ \ \ \ |\n| `Ad ID` | Fusion: Ads
Fusion: Ads\ \ by Device \ \ \ \ \ \ \ \ | BIGINT |\ \ Ad ID in Skai
Example: `2124` \ \ \ \ |\n\ | `Channel Ad ID` | Fusion: Ads
Fusion: Ads by Device\ \ \ \ \ \ \ \ \ \ | BIGINT | Ad ID in the\ \ publisher
Example: `121270991` \ \ \ \ |\n| `Headline`\ \ | Fusion: Ads
Fusion: Ads by Device \ \ \ \ \ \ \ \ \ \ | TEXT(255) | Headline of the ad
Example:\ \ `Chicago Cars 2016` \ \ \ \ |\n| `Headline 2` \ \ | Fusion: Ads
Fusion: Ads by Device \ \ \ \ \ \ \ \ \ \ | TEXT(255) | Headline 2 of the ad
Example: `Chicago\ \ Cars 2016` \ \ \ \ |\n| `Line 1` | Fusion:\ \ Ads
Fusion: Ads by Device \ \ \ \ \ \ \ \ \ \ | TEXT(255) | Line 1 of the ad
Example: `Visit url.com today` \ \ \ \ \ \ |\n| `Line 2` | Fusion: Ads
Fusion:\ \ Ads by Device \ \ \ \ \ \ \ \ | TEXT(255) \ \ | Line 2 of the ad
Example: `for massive discounts` \ \ \ \ \ \ |\n| `Display URL` | Fusion: Ads
Fusion: Ads\ \ by Device \ \ \ \ \ \ \ \ | TEXT(255) |\ \ Display URL of the ad
Example: `url.com` \ \ \ \ \ \ |\n| `Path 1` | Fusion: Ads
Fusion: Ads by Device\ \ \ \ \ \ \ \ \ \ | TEXT(15) | Part 1 of\ \ the path added to the display URL after your website’s domain
Example:\ \ `products` \ \ |\n| `Path 2`\ \ | Fusion: Ads
Fusion: Ads by Device \ \ \ \ \ \ \ \ \ \ | TEXT(15) | Part 2 of the path\ \ added to the display URL after your website’s domain
Example: `shoes`\ \ \ \ |\n| `Image Name` \ \ | Fusion: Ads
Fusion: Ads by Device \ \ \ \ \ \ \ \ \ \ | TEXT(256) | Name of the image used in\ \ the ad
Example: `sunset_120*120.png` \ \ \ \ |\n| `Image Url` \ \ | Fusion: Ads
Fusion: Ads by Device \ \ \ \ \ \ \ \ \ \ | TEXT(1024) | URL of the image used in the ad
Example:\ \ `https://www.acme.com/images/1234` \ \ \ \ |\n| `Device Preference` | Fusion:\ \ Ads
Fusion: Ads by Device \ \ \ \ \ \ \ \ \ \ | TEXT(50) | Preferred device
Valid values: `All`, `Mobile` \ \ \ \ \ \ |\n| `Last Updated` | Fusion: Ads
Fusion:\ \ Ads by Device \ \ \ \ \ \ \ \ | DATETIME \ \ | Date and time the entity was last modified
Format: `yyyy-MM-dd HH:mm:ss`
Example:\ \ `2026-01-01 00:00:00` \ \ |\n| `Promotion`\ \ | Fusion: Ads
Fusion: Ads by Device \ \ \ \ \ \ \ \ \ \ | TEXT(255) | Promotion line of product\ \ listing ads, blank for other ad types
Example: `Free Shipping & Free\ \ Returns` \ \ |\n| `ASIN` \ \ | Fusion: Ads \ \ \ \ \ \ \ \ \ \ | TEXT(50) | ASIN of the product that was promoted\ \ in each ad, for ecommerce publishers
Example: `B07FSYQT23` \ \ \ \ |\n| `Serving Error` \ \ | Fusion: Ads \ \ \ \ \ \ \ \ \ \ | TEXT(100) | Serving errors of the product that was promoted\ \ in each ad, for ecommerce publishers
Example: `Ad missing decoration.`\ \ \ \ |\n| `Dynamic Ad Target` | Fusion: Dynamic\ \ Ad Targets \ \ \ \ \ \ \ \ | TEXT(3000)\ \ | Condition defining the dynamic ad target
Example: `PAGE_CONTENT contains\ \ Accessories` \ \ |\n\ | `Dynamic Ad Target ID in Skai` | Fusion: Dynamic Ad Targets \ \ \ \ \ \ \ \ \ \ | BIGINT | Dynamic ad target\ \ ID in Skai
Example: `2397842893` \ \ \ \ |\n| `Dynamic Ad Target\ \ ID in Channel` | Fusion: Dynamic Ad Targets \ \ \ \ \ \ \ \ \ \ | BIGINT | Dynamic ad target ID in the\ \ publisher
Example: `2397842893` \ \ \ \ |\n| `Gender` \ \ | Fusion: Adgroups \ \ \ \ \ \ \ \ \ \ | TEXT(32) | Gender this ad targets, for Pinterest\ \ ads
Valid values: `Female`, `Male`, `Unspecified` \ \ \ \ |\n| `Country` \ \ | Fusion: Adgroups \ \ \ \ \ \ \ \ \ \ | TEXT(128) | List of countries this ad group targets, for\ \ Pinterest ads, comma delimited
Example: `US` \ \ \ \ |\n| `Audience Include` | Fusion:\ \ Adgroups \ \ \ \ \ \ \ \ \ \ | TEXT(2048) | List of audiences this ad group targets, for Pinterest\ \ ads, comma delimited
Example: `123123412,4534645645` \ \ \ \ |\n| `Audience Exclude` | Fusion: Adgroups\ \ \ \ \ \ \ \ \ \ | TEXT(2048)\ \ | List of audiences this ad group excludes, for Pinterest ads, comma delimited
Example:\ \ `123123412,4534645645` \ \ |\n| `Interests`\ \ | Fusion: Adgroups \ \ \ \ \ \ \ \ \ \ | TEXT(2048) | List of interests this\ \ ad group targets, for Pinterest ads, comma delimited
Example: `Cherry\ \ Pie, Baking` \ \ |\n| `Ad Group Budget Type`\ \ | Fusion: Adgroups \ \ \ \ \ \ \ \ \ \ | TEXT(30) | For publishers with ad group level\ \ budget
Valid values: `DAILY`, `LIFETIME` \ \ \ \ |\n| `Campaign Order Line` \ \ | Fusion: Campaigns \ \ \ \ \ \ \ \ \ \ | TEXT(150) | ID of the order line used in this campaign,\ \ for Pinterest campaigns
Example: `1234` \ \ \ \ |\n| `One Tap` | Fusion:\ \ Campaigns \ \ \ \ \ \ \ \ \ \ | TEXT(10) | Indicates if this campaign is enabled for One Tap, for\ \ Pinterest campaigns
Valid values: `No`, `Yes` \ \ \ \ |\n| `Campaign Bid Strategy` | Fusion: Campaigns\ \ \ \ \ \ \ \ \ \ | TEXT(30)\ \ | Bid strategy of the campaign
Example: `enhanced_cpc` \ \ \ \ \ \ |\n| `Lifetime Spend Cap` | Fusion: Campaigns \ \ \ \ \ \ \ \ \ \ | TEXT(50) \ \ | Lifetime spend cap of the campaign. `Unlimited` if no cap.
Example:\ \ `100000` \ \ \ \ |\n| `Daily Spend Cap` | Fusion: Campaigns \ \ \ \ \ \ \ \ \ \ | TEXT(50) | Daily\ \ spend cap of the campaign. `Unlimited` if no cap.
Example: `100000` \ \ \ \ |\n| `Placements`\ \ | Fusion: Campaigns \ \ \ \ \ \ \ \ \ \ | TEXT(30) | Placement enabled for\ \ this campaign, for Pinterest campaigns
Valid values: `ALL`, `BROWSE`,\ \ `SEARCH` \ \ |\n| `Product Group` \ \ | Fusion: Product Groups \ \ \ \ \ \ \ \ \ \ | TEXT(4000) | Name of the product group
Example:\ \ `ALL/Domestic/Tools` \ \ \ \ |\n| `Channel Product Group ID` \ \ | Fusion: Product Groups \ \ \ \ \ \ \ \ \ \ | BIGINT | Product group ID in the publisher
Example:\ \ `65244597854` \ \ \ \ |\n| `Biddable` | Fusion:\ \ Product Groups \ \ \ \ \ \ \ \ \ \ | TEXT(10) | Indicates if the product group is biddable. Non-biddable\ \ product groups are higher in the hierarchy and cannot have a bid of their\ \ own.
Valid values: `Yes`, `No` \ \ |\n| `Product Group Level 0` | Fusion: Product Groups\ \ \ \ \ \ \ \ \ \ | TEXT(500) \ \ | Level 0 of the product group definition
Example: `ALL` \ \ \ \ \ \ |\n| `Product Group Level 1` | Fusion: Product Groups \ \ \ \ \ \ \ \ \ \ | TEXT(500) |\ \ Level 1 of the product group definition
Example: `Domestic` \ \ \ \ \ \ |\n| `Product Group Level 2` | Fusion: Product Groups \ \ \ \ \ \ \ \ \ \ | TEXT(500) | Level\ \ 2 of the product group definition
Example: `Tools` \ \ \ \ |\n| `Product\ \ Group Level 3` | Fusion: Product Groups \ \ \ \ \ \ \ \ \ \ | TEXT(500) | Level 3 of the product\ \ group definition
Example: `Tools` \ \ \ \ |\n| `Product Group Level\ \ 4` | Fusion: Product Groups \ \ \ \ \ \ \ \ \ \ | TEXT(500) | Level 4 of the product group definition
Example:\ \ `Tools` \ \ \ \ |\n| `Product Group Level 5` | Fusion: Product\ \ Groups \ \ \ \ \ \ \ \ | TEXT(500)\ \ | Level 5 of the product group definition
Example: `Tools` \ \ \ \ \ \ |\n| `Product Group Level 6` | Fusion: Product Groups \ \ \ \ \ \ \ \ \ \ | TEXT(500) |\ \ Level 6 of the product group definition
Example: `Tools` \ \ \ \ \ \ |\n| `Product Group Level 7` | Fusion: Product Groups \ \ \ \ \ \ \ \ \ \ | TEXT(500) | Level\ \ 7 of the product group definition
Example: `Tools` \ \ \ \ |\n| `Destination\ \ URL` | Fusion: Product Groups \ \ \ \ \ \ \ \ \ \ | TEXT(2100) | Destination URL of the\ \ product group. Used for tracking, commonly empty.
Example: `http://www.track.com?url={escapedlpurl}`\ \ \ \ |\n| `Benchmark Max. CPC` | Fusion: Product\ \ Groups \ \ \ \ \ \ \ \ | FLOAT(40,20)\ \ | Benchmarks set for Max. CPC
Example: `0` \ \ \ \ \ \ |\n| `Search Impr. Share` | Fusion: Product Groups \ \ \ \ \ \ \ \ \ \ | FLOAT(20,8) | Impression\ \ share of the product group
Example: `0.75` \ \ \ \ |\n| `Benchmark\ \ CTR` | Fusion: Product Groups \ \ \ \ \ \ \ \ \ \ | FLOAT(40,20) | Benchmarks set for CTR
Example:\ \ `0` \ \ \ \ |\n| `Sitelink ID` \ \ | Fusion: Sitelinks \ \ \ \ \ \ \ \ \ \ | BIGINT | Sitelink ID in Skai
Example: `1123`\ \ \ \ \ \ |\n| `Channel Sitelink ID` | Fusion:\ \ Sitelinks \ \ \ \ \ \ \ \ \ \ | BIGINT | Sitelink ID in the publisher
Example: `1123` \ \ \ \ \ \ |\n| `Sitelink Text` | Fusion: Sitelinks\ \ \ \ \ \ \ \ \ \ | TEXT(35)\ \ | Text of the sitelink
Example: `Accessories` \ \ \ \ \ \ |\n| `Sitelink Status` | Fusion: Sitelinks \ \ \ \ \ \ \ \ \ \ | TEXT(50) \ \ | Status of the sitelink
Valid values: `Active`, `Paused`, `Deleted`,\ \ `Pending`, `Inactive`, `Disapproved`, `Approved`, `Failed`, `To Pause`,\ \ `To Delete`, `Failed to Pause`, `Failed to Delete` \ \ |\n| `Sitelink Description1` | Fusion: Sitelinks \ \ \ \ \ \ \ \ \ \ | TEXT(255) | Description\ \ 1 of the sitelink
Example: `This is a sitelink` \ \ \ \ |\n| `Sitelink\ \ Description2` | Fusion: Sitelinks \ \ \ \ \ \ \ \ \ \ | TEXT(255) | Description 2 of the\ \ sitelink
Example: `This is a sitelink` \ \ \ \ |\n| `Shared with Campaign`\ \ | Fusion: Sitelinks \ \ \ \ \ \ \ \ \ \ | TEXT(10) | Indicates if the sitelink was assigned\ \ to a campaign
Valid values: `Yes`, `No` \ \ \ \ |\n| `Account SiteLink` \ \ | Fusion: Sitelinks \ \ \ \ \ \ \ \ \ \ | TEXT(10) | Indicates if the sitelink was assigned to an\ \ account
Valid values: `Yes`, `No` \ \ \ \ |\n| `Sitelink Feed ID` | Fusion:\ \ Sitelinks \ \ \ \ \ \ \ \ \ \ | BIGINT | Feed ID of the sitelink
Example: `1234` \ \ \ \ \ \ |\n| `Account ID` | Fusion: Sitelinks\ \ \ \ \ \ \ \ \ \ | INT \ \ | ID of this publisher account, in Skai
Example: `1349798214`\ \ \ \ \ \ |\n| `Sitelink URL` | Fusion: Sitelinks \ \ \ \ \ \ \ \ \ \ | TEXT(3000) \ \ | URL of the sitelink
Example: `http://www.url.com` \ \ \ \ \ \ |\n| `Sitelinks Schedule Start Date` | Fusion: Sitelinks \ \ \ \ \ \ \ \ \ \ | DATETIME | Date\ \ the sitelink schedule starts
Format: `yyyy-MM-dd HH:mm:ss`
Example:\ \ `2026-01-01 00:00:00` \ \ |\n| `Sitelinks\ \ Schedule End Date` | Fusion: Sitelinks \ \ \ \ \ \ \ \ \ \ | DATETIME | Date the sitelink schedule\ \ ends
Format: `yyyy-MM-dd HH:mm:ss`
Example: `2026-01-01 00:00:00`\ \ \ \ |\n| `Device Target` \ \ | Fusion: Sitelinks \ \ \ \ \ \ \ \ \ \ | TEXT(100) | Device targeting enabled for this\ \ sitelink, comma delimited if several devices
Valid values: `desktop`,\ \ `high_end_mobile`, `wap_mobile`, `tablet` \ \ |\n| `Audience` \ \ | Fusion: Audiences
Fusion: Audiences by Device \ \ \ \ \ \ \ \ \ \ | TEXT(300) | Audience Name
Example: `addToCart` \ \ \ \ \ \ |\n| `Audience ID in Skai` | Fusion:\ \ Audiences
Fusion: Audiences by Device \ \ \ \ \ \ \ \ \ \ | BIGINT | Audience ID in Skai
Example: `1123` \ \ \ \ \ \ |\n| `Audience ID in Channel` | Fusion: Audiences
Fusion:\ \ Audiences by Device \ \ \ \ \ \ \ \ | BIGINT | Audience\ \ ID in the publisher
Example: `1349798214` \ \ \ \ |\n| `Audience\ \ Type` | Fusion: Audiences
Fusion: Audiences by Device\ \ \ \ \ \ \ \ \ \ | TEXT(100) | Type of this audience
Valid\ \ values: `Website`, `Similar`, `InMarket`, `List`, `Combination`, `Affinity`,\ \ `Unknown` \ \ |\n| `Description` \ \ | Fusion: Audiences
Fusion: Audiences by Device \ \ \ \ \ \ \ \ \ \ | TEXT(1024) | Description of this audience
Example:\ \ `People who converted on your site.` \ \ \ \ |\n| `Assignment ID` |\ \ Fusion: Audiences
Fusion: Audiences by Device \ \ \ \ \ \ \ \ \ \ | BIGINT | Assignment ID in Skai
Example: `1123` \ \ \ \ \ \ |\n| `Assignment Level` | Fusion:\ \ Audiences
Fusion: Audiences by Device \ \ \ \ \ \ \ \ \ \ | TEXT(100) | Assignment level
Valid values: `Campaign`, `Ad Group`\ \ \ \ \ \ |\n| `Assignment Status` | Fusion: Audiences
Fusion:\ \ Audiences by Device \ \ \ \ \ \ \ \ | TEXT(100) | Status\ \ of this assigment
Valid values: `Active`, `Paused`, `Deleted`, `Pending`,\ \ `Inactive`, `Disapproved`, `Approved`, `Failed`, `To Pause`, `To Delete`,\ \ `Failed to Pause`, `Failed to Delete` |\n| `Membership\ \ Status` | Fusion: Audiences
Fusion: Audiences by Device\ \ \ \ \ \ \ \ \ \ | TEXT(100) | Is audience collecting\ \ new memberships
Valid values: `Open`, `Closed` \ \ \ \ |\n| `Membership Duration`\ \ | Fusion: Audiences
Fusion: Audiences by Device \ \ \ \ \ \ \ \ \ \ | INT | Duration of membership, in days
Example:\ \ `180` \ \ \ \ |\n| `Membership Size` | Fusion:\ \ Audiences
Fusion: Audiences by Device \ \ \ \ \ \ \ \ \ \ | INT | Number of users in this audience.
Example: `2900`\ \ \ \ \ \ |\n| `Membership Size Range` | Fusion: Audiences
Fusion:\ \ Audiences by Device \ \ \ \ \ \ \ \ | TEXT(100) | Bracket\ \ of the number of uses in this audience
Example: `From 1,001 to 10,000`\ \ \ \ |\n| `Targeting\ \ Settings` | Fusion: Audiences
Fusion: Audiences by Device\ \ \ \ \ \ \ \ \ \ | TEXT(100) | Type of targeting used
Valid\ \ values: `Bid only`, `Target and Bid` \ \ \ \ |\n| `Targeting Status` \ \ | Fusion: Audiences
Fusion: Audiences by Device \ \ \ \ \ \ \ \ \ \ | TEXT(100) | Status of targeting
Valid values:\ \ `Managed`, `Excluded` \ \ \ \ |\n| `Bid Adjustment` \ \ | Fusion: Audiences
Fusion: Audiences by Device \ \ \ \ \ \ \ \ \ \ | INT | Bid adjustment of the audience
Example\ \ value: `-20` \ \ \ \ |\n| `Bid Strategy` | Fusion:\ \ Audiences
Fusion: Audiences by Device \ \ \ \ \ \ \ \ \ \ | TEXT(100) | Bid startegy for this campaign
Valid values: `CPC`,\ \ `Target CPA`, `Unknown` \ \ \ \ |\n| `Date` | Fusion: Profiles
Fusion:\ \ Campaigns
Fusion: Channels
Fusion: Campaigns by Device
Fusion:\ \ Adgroups
Fusion: Ads
Fusion: Ads by Device
Fusion: Keywords
Fusion:\ \ Keywords by Device
Fusion: Keywords with Content and PLA
Fusion: Dynamic\ \ Ad Targets
Fusion: Product Groups
Fusion: Sitelinks
Fusion: Audiences
Fusion:\ \ Audiences by Device | DATE | Date of the event that created performance\ \ data
Format: `yyyy-MM-dd`
Example: `2026-01-01` \ \ \ \ |\n| `Device` | Fusion:\ \ Campaigns by Device
Fusion: Adgroups
Fusion: Keywords by Device
Fusion:\ \ Ads by Device
Fusion: Audiences by Device \ \ \ \ \ \ | TEXT(20)\ \ | Device used in ad-click
Valid values: `Computer`, `Mobile`, `Tablets`,\ \ `Unknown` \ \ |\n\ | `Impressions` | Fusion: Profiles
Fusion: Campaigns
Fusion:\ \ Channels
Fusion: Campaigns by Device
Fusion: Adgroups
Fusion: Ads
Fusion:\ \ Ads by Device
Fusion: Keywords
Fusion: Keywords by Device
Fusion:\ \ Keywords with Content and PLA
Fusion: Dynamic Ad Targets
Fusion: Product\ \ Groups
Fusion: Sitelinks
Fusion: Audiences
Fusion: Audiences by\ \ Device | FLOAT(20,8) | Impressions reported by the publisher
Example:\ \ `14,519` \ \ \ \ |\n| `Clicks` | Fusion: Profiles
Fusion:\ \ Campaigns
Fusion: Channels
Fusion: Campaigns by Device
Fusion:\ \ Adgroups
Fusion: Ads
Fusion: Ads by Device
Fusion: Keywords
Fusion:\ \ Keywords by Device
Fusion: Keywords with Content and PLA
Fusion: Dynamic\ \ Ad Targets
Fusion: Product Groups
Fusion: Sitelinks
Fusion: Audiences
Fusion:\ \ Audiences by Device | FLOAT(20,8) | Clicks reported by the publisher
Example:\ \ `14` \ \ \ \ |\n| `Click Others` | Fusion:\ \ Sitelinks \ \ \ \ \ \ \ \ \ \ | FLOAT(20,8) | When sitelinks are shared with multiple campaigns, displays\ \ the clicks reported by the publisher for all other campaigns
Example:\ \ `23` \ \ |\n| `CTR` | Fusion: Profiles
Fusion:\ \ Campaigns
Fusion: Channels
Fusion: Campaigns by Device
Fusion:\ \ Adgroups
Fusion: Ads
Fusion: Keywords
Fusion: Keywords by Device
Fusion:\ \ Keywords with Content and PLA
Fusion: Dynamic Ad Targets
Fusion: Product\ \ Groups
Fusion: Sitelinks
Fusion: Audiences
Fusion: Audiences by\ \ Device | FLOAT(40,20) | Click-through rate
Example:\ \ `0.125` \ \ \ \ |\n| `CTR Others` \ \ | Fusion: Sitelinks \ \ \ \ \ \ \ \ \ \ | FLOAT(40,20) | When sitelinks are shared with multiple\ \ campaigns, displays the click-through rate reported by the publisher for\ \ all other campaigns
Example: `23` \ \ |\n| `Conversions` |\ \ Fusion: Profiles
Fusion: Campaigns
Fusion: Channels
Fusion: Campaigns\ \ by Device
Fusion: Adgroups
Fusion: Ads
Fusion: Keywords
Fusion:\ \ Keywords by Device
Fusion: Keywords with Content and PLA
Fusion: Dynamic\ \ Ad Targets
Fusion: Product Groups
Fusion: Sitelinks
Fusion: Audiences
Fusion:\ \ Audiences by Device | FLOAT(40,20) | Conversion\ \ total, cntains all “aggregated to conv total” conversion columns
Example:\ \ `1200` \ \ |\n| `Cost` \ \ | Fusion: Profiles
Fusion: Campaigns
Fusion:\ \ Channels
Fusion: Campaigns by Device
Fusion: Adgroups
Fusion: Ads
Fusion:\ \ Ads by Device
Fusion: Keywords
Fusion: Keywords by Device
Fusion:\ \ Keywords with Content and PLA
Fusion: Dynamic Ad Targets
Fusion: Product\ \ Groups
Fusion: Sitelinks
Fusion: Audiences
Fusion: Audiences by\ \ Device | FLOAT(40,20) | Publisher cost, in the currency of the profile
Example:\ \ `13.12` \ \ \ \ |\n| `Avg CPC` | Fusion: Profiles
Fusion:\ \ Campaigns
Fusion: Channels
Fusion: Campaigns by Device
Fusion:\ \ Adgroups
Fusion: Ads
Fusion: Ads by Device
Fusion: Keywords
Fusion:\ \ Keywords by Device
Fusion: Keywords with Content and PLA
Fusion: Dynamic\ \ Ad Targets
Fusion: Product Groups
Fusion: Sitelinks
Fusion: Audiences
Fusion:\ \ Audiences by Device | FLOAT(40,20) | Average cost per click
Example:\ \ `0.64227` \ \ \ \ |\n| `Cost/Conv.` \ \ | Fusion: Profiles
Fusion: Campaigns
Fusion: Channels
Fusion:\ \ Campaigns by Device
Fusion: Adgroups
Fusion: Ads
Fusion: Ads by\ \ Device
Fusion: Keywords
Fusion: Keywords by Device
Fusion: Keywords\ \ with Content and PLA
Fusion: Dynamic Ad Targets
Fusion: Product Groups
Fusion:\ \ Sitelinks
Fusion: Audiences
Fusion: Audiences by Device | FLOAT(40,20)\ \ | Cost per conversion
Example: `1.54` \ \ \ \ \ \ |\n| `Conv. Rate` | Fusion: Profiles
Fusion: Campaigns
Fusion:\ \ Channels
Fusion: Campaigns by Device
Fusion: Adgroups
Fusion: Ads
Fusion:\ \ Ads by Device
Fusion: Keywords
Fusion: Keywords by Device
Fusion:\ \ Keywords with Content and PLA
Fusion: Dynamic Ad Targets
Fusion: Product\ \ Groups
Fusion: Sitelinks
Fusion: Audiences
Fusion: Audiences by\ \ Device | FLOAT(40,20) | Average number of conversions per click
Example:\ \ `0.4` \ \ \ \ |\n| `Avg Pos` | Fusion: Profiles
Fusion:\ \ Campaigns
Fusion: Channels
Fusion: Campaigns by Device
Fusion:\ \ Adgroups
Fusion: Ads
Fusion: Ads by Device
Fusion: Keywords
Fusion:\ \ Keywords by Device
Fusion: Keywords with Content and PLA
Fusion: Dynamic\ \ Ad Targets
Fusion: Product Groups
Fusion: Sitelinks
Fusion: Audiences
Fusion:\ \ Audiences by Device | FLOAT(40,20) | Average position of the impression
Example:\ \ `2.1` \ \ \ \ |\n| `Rev.` | Fusion:\ \ Profiles
Fusion: Campaigns
Fusion: Channels
Fusion: Campaigns by\ \ Device
Fusion: Adgroups
Fusion: Ads
Fusion: Ads by Device
Fusion:\ \ Keywords
Fusion: Keywords by Device
Fusion: Keywords with Content\ \ and PLA
Fusion: Dynamic Ad Targets
Fusion: Product Groups
Fusion:\ \ Sitelinks
Fusion: Audiences
Fusion: Audiences by Device | FLOAT(40,20)\ \ | Total revenue, in the currency of the profile, contains revenue from all\ \ “aggregated to conv total” conversion columns
Example: `23.34` \ \ |\n\ | `ROI` | Fusion: Profiles
Fusion: Campaigns
Fusion:\ \ Channels
Fusion: Campaigns by Device
Fusion: Adgroups
Fusion: Ads
Fusion:\ \ Ads by Device
Fusion: Keywords
Fusion: Keywords by Device
Fusion:\ \ Keywords with Content and PLA
Fusion: Dynamic Ad Targets
Fusion: Product\ \ Groups
Fusion: Sitelinks
Fusion: Audiences
Fusion: Audiences by\ \ Device | FLOAT(40,20) | Return on investment
Example: `11.25` \ \ \ \ \ \ |\n| `Rev./Conv.` | Fusion:\ \ Profiles
Fusion: Campaigns
Fusion: Channels
Fusion: Campaigns by\ \ Device
Fusion: Adgroups
Fusion: Ads
Fusion: Ads by Device
Fusion:\ \ Keywords
Fusion: Keywords by Device
Fusion: Keywords with Content\ \ and PLA
Fusion: Dynamic Ad Targets
Fusion: Product Groups
Fusion:\ \ Sitelinks
Fusion: Audiences
Fusion: Audiences by Device | FLOAT(40,20)\ \ | Revenue per conversion
Example: `52.51` \ \ \ \ \ \ |\n| `Profit` | Fusion: Profiles
Fusion: Campaigns
Fusion:\ \ Channels
Fusion: Campaigns by Device
Fusion: Adgroups
Fusion: Ads
Fusion:\ \ Ads by Device
Fusion: Keywords
Fusion: Keywords by Device
Fusion:\ \ Keywords with Content and PLA
Fusion: Dynamic Ad Targets
Fusion: Product\ \ Groups
Fusion: Sitelinks
Fusion: Audiences
Fusion: Audiences by\ \ Device | FLOAT(40,20) | Revenue minus cost
Example: `27511` \ \ \ \ \ \ |\n| `Imp. Share` | Fusion:\ \ Campaigns
Fusion: Adgroups
Fusion: Keywords
Fusion: Keywords by\ \ Device
Fusion: Keywords with Content and PLA \ \ \ \ \ \ \ \ | FLOAT(20,8) | Impression share of the reported entity
Example: `0.75`\ \ \ \ \ \ |\n| `Lost IS-rank` | Fusion: Campaigns
Fusion:\ \ Adgroups
Fusion: Keywords
Fusion: Keywords by Device
Fusion: Keywords\ \ with Content and PLA \ \ \ \ \ \ | FLOAT(20,8) | Lost impressoin\ \ share due to rank
Example: `34.5` \ \ \ \ |\n| `Lost-IS budget`\ \ | Fusion: Campaigns
Fusion: Adgroups \ \ \ \ \ \ \ \ \ \ | FLOAT(20,8) | Lost impression share due\ \ to budget
Example: `34.5` \ \ \ \ |\n| `Potential Impressions`\ \ | Fusion: Adgroups
Fusion: Keywords
Fusion: Keywords by\ \ Device \ \ \ \ \ \ \ \ | INT | Calculated potential impressions\ \ given 100% impresions share
Example: `100000` \ \ \ \ |\n" Standalone: properties: agency_name: type: "string" billing_id: type: "integer" description: "The data of the newly created standalone agency. Either agency_name\ \ or billing_id is required" example: agency_name: "My Agency" billing_id: 1234 ApiResponseTestDTO: type: "object" properties: status: $ref: "#/components/schemas/ApiResponseStatus" entities: type: "array" readOnly: true items: $ref: "#/components/schemas/TestDTO" error_message: type: "string" readOnly: true 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]" headerDto: type: "object" properties: name: type: "string" index: type: "integer" asyncReportChannel: type: "string" description: "To view all available channels, including any Universal Channel\ \ instances, go to Administration > Channel Management" enum: - "All Elements" - "Google" - "MSN" - "YahooGemini" - "Pinterest" - "FB" - "Yandex" - "Baidu" - "YahooJapan" - "Snapchat" - "Amazon" 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" EditProfileResponseApi: type: "object" properties: status: $ref: "#/components/schemas/ApiResponseStatus" entities: type: "array" items: $ref: "#/components/schemas/EditProfileResponseEntities" paging: $ref: "#/components/schemas/Paging" error_message: type: "string" reportsStatusUpdate: type: "object" properties: reports: type: "array" 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" facebookAdDTO: type: "object" properties: id: type: "integer" description: "Skai ID of the ad" ad_group_id: type: "integer" description: "Skai ID of the ad group" name: type: "string" description: "Ad name" status: type: "string" description: "Status" enum: - "ACTIVE" - "PAUSED" bid: oneOf: - $ref: "#/components/schemas/facebookAdBid" creative: oneOf: - $ref: "#/components/schemas/facebookAdCreativeDTO" tracking: oneOf: - $ref: "#/components/schemas/facebookAdTracking" ReportRequest: required: - "date_range" - "entity" - "fields" type: "object" properties: entity: $ref: "#/components/schemas/ReportEntity" date_range: $ref: "#/components/schemas/DateRange" fields: uniqueItems: true type: "array" description: "The columns to be fetched. See [here](#operation/getAvailableColumns)\ \ for available columns.\nTo get data segmented by date, add a date column,\ \ like so: `{\"name\": \"Day\", \"group\": \"TimeSegment\"}`" items: $ref: "#/components/schemas/Column" filters: uniqueItems: true type: "array" items: $ref: "#/components/schemas/ReportFilter" sort: $ref: "#/components/schemas/ReportSort" info_level: type: "string" description: "Show summary records only, breakdown records only, or both." enum: - "SUMMARY" - "BREAKDOWN" - "BOTH" default: "BOTH" breakdown_type: type: "string" description: "To get data segmented only by date, use `GROUP`. To segment\ \ by both date and another column, use `SEGMENT` with only the date column\ \ in group_bys and include the other column in `fields` (these columns\ \ will be fetched). Otherwise, use `FLAT`" enum: - "FLAT" - "GROUP" - "SEGMENT" default: "FLAT" group_bys: type: "Array" description: "When the breakdown type is \"SEGMENT\", select columns by\ \ which to group the data." profile_token: type: "string" description: "Profile token. This is needed to access [Single-Profile columns](#operation/getAvailableColumns)\ \ (alternative to profile_id)." profile_id: type: "number" description: "Profile ID. This is needed to access [Single-Profile columns](#operation/getAvailableColumns)\ \ (alternative to profile_token)." limit: maximum: 1000 type: "integer" description: "Set a limit for the retrieved records" format: "int32" default: 1000 page: type: "integer" description: "The number of the report page you want to retrieve. You can\ \ use this together with the Limit parameter to define the number of records\ \ per page. The first page number is 0." format: "int32" default: 0 description: "The properties for the report request" example: entity: "CAMPAIGN" profile_id: 118 date_range: start_date: "2026-01-01" end_date: "2026-01-14" fields: - name: "CampaignName" group: "ATTRIBUTES" - name: "Clicks" group: "PERFORMANCE" filters: - field: "StatusToDisplay" group: "ATTRIBUTES" operator: "In" values: - "Approved" - "Active" - field: "CampaignName" group: "ATTRIBUTES" operator: "CONTAINS" values: - "My" - field: "Impressions" group: "PERFORMANCE" operator: "GREATER_THAN" values: - "0" breakdown_type: "GROUP" sort: field: "CampaignName" group: "ATTRIBUTES" order: "DESCENDING" limit: 1000 page: 0 CreateUpdateAttribution: required: - "campaign_id" - "click_attribution_window" - "view_attribution_window" type: "object" properties: campaign_id: type: "integer" description: "Meta campaign ID" click_attribution_window: type: "string" description: "Click attribution window value" enum: - "ZERO_DAY" - "ONE_DAY" - "SEVEN_DAYS" - "TWENTY_EIGHT_DAYS" view_attribution_window: type: "string" description: "View attribution window value" enum: - "ZERO_DAY" - "ONE_DAY" - "SEVEN_DAYS" - "TWENTY_EIGHT_DAYS" description: "The properties for custom aggregation window configuration" example: campaign_id: "14411" click_attribution_window: "TWENTY_EIGHT_DAYS" view_attribution_window: "SEVEN_DAYS" ExtraConfig: type: "object" properties: profile_ids: type: "array" description: "The IDs of Skai profiles to enable the column for." description: "Additional custom column configurations." GroupRO: type: "object" properties: id: type: "integer" format: "int32" readOnly: true name: type: "string" readOnly: true test_id: type: "integer" format: "int32" readOnly: true type: type: "string" readOnly: true enum: - "BASE" - "TEST" campaigns_count: type: "integer" format: "int32" readOnly: true CustomerProfile: type: "object" properties: id: type: "integer" token: type: "string" containerId: type: "integer" businessName: type: "string" destinationURL: type: "string" displayURL: type: "string" isSearch: type: "boolean" isContent: type: "boolean" isSocial: type: "boolean" isSearchNetwork: type: "boolean" trackingLevel: type: "string" enum: - "NOT_INITIALIZED" - "NONE" - "PROFILE_DEFAULT" - "CAMPAIGN_DEFAULT" - "ADS" - "KEYWORDS" - "ADS_AND_KEYWORDS" - "FULL_SUPPORT" - "CAMPAIGN" currency: type: "string" contentBid: type: "float" searchBid: type: "float" budget: type: "double" status: type: "string" agencyId: type: "integer" timezone: type: "string" workable: type: "boolean" deleted: type: "boolean" defaultConversionScoreSourceId: type: "integer" phoneNumber: type: "string" analyticsScoresEnabled: type: "boolean" createDate: type: "string" format: "yyyy-MM-dd" languageAndMarkId: type: "integer" Statistics: type: "object" properties: metric_name: type: "String" readOnly: true p_value: type: "string" readOnly: true margin_error_lower_bound: type: "float" readOnly: true margin_error_upper_bound: type: "float" readOnly: true getEntityTagsApiResponse: type: "object" properties: status: $ref: "#/components/schemas/ApiResponseStatus" entities: type: "array" readOnly: true items: $ref: "#/components/schemas/getEntityTagsResponse" paging: $ref: "#/components/schemas/Paging" error_message: type: "string" readOnly: true notificationDTO: type: "object" properties: id: type: "integer" format: "int64" hash: type: "integer" format: "int64" status: type: "string" enum: - "ACTIVE" - "DELETED" createTime: type: "string" format: "date" updateTime: type: "string" format: "date" eventType: type: "string" enum: - "SMART_TAG" - "PROCESS" - "AUTHENTICATION" - "WHATS_NEW" - "TARGETING_DEPRECATION" - "ACCOUNT_ABOUT_TO_EXPIRE" - "OPTIMIZATION_DISTRIBUTION" data: type: "string" userStatuses: type: "string" enum: - "VIEWED" - "HIDDEN" - "COMPLETED" facebookAdCallToAction: type: "string" description: "Call to action" enum: - "BOOK_TRAVEL" - "LISTEN_MUSIC" - "OPEN_LINK" - "PLAY_GAME" - "SHOP_NOW" - "USE_APP" - "WATCH_VIDEO" - "INSTALL_MOBILE_APP" - "INSTALL_APP" - "LEARN_MORE" - "SIGN_UP" - "DOWNLOAD" - "USE_MOBILE_APP" - "WATCH_MORE" - "CONTACT_US" - "GET_QUOTE" - "SUBSCRIBE" - "SELL_NOW" - "APPLY_NOW" - "DONATE_NOW" - "VOTE_NOW" - "LIKE_PAGE" - "NO_BUTTON" - "CALL_NOW" - "BUY_NOW" - "GET_OFFER" - "GET_OFFER_VIEW" - "GET_DIRECTIONS" - "MESSAGE_PAGE" - "RECORD_NOW" - "OPEN_MOVIES" - "EVENT_RSVP" - "CALL" - "SEE_MENU" - "MESSAGE_USER" - "REGISTER_NOW" - "REQUEST_TIME" - "SAVE" - "ORDER_NOW" - "GET_SHOWTIMES" - "VIEW_INSTAGRAM_PROFILE" - "LISTEN_NOW" - "BUY_TICKETS" - "WHATSAPP_MESSAGE" - "SEARCH" - "PAY_TO_ACCESS" - "INSTAGRAM_MESSAGE" - "START_ORDER" - "TRY_IN_CAMERA" TrackingReportTemplateName: type: "string" description: "One of the available Tracking Reports." enum: - "Tracking Raw Data - Click Tracking Data" - "Tracking Raw Data - Keywords Daily Performance" - "Tracking Raw Data - Flat P2C" reportStatusUpdate: type: "object" properties: report_id: type: "string" status: $ref: "#/components/schemas/reportStatus" 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]" getAdGroupApiResponse: type: "object" properties: status: $ref: "#/components/schemas/ApiResponseStatus" entities: type: "array" readOnly: true items: $ref: "#/components/schemas/AdGroupDTO" paging: $ref: "#/components/schemas/Paging" error_message: type: "string" readOnly: true notificationRequest: type: "object" properties: advertiserId: type: "integer" format: "int64" userEmail: type: "string" serverUri: type: "string" offsetTime: type: "string" format: "date" applicationType: type: "string" enum: - "KS" - "SOCIAL" PinterestAdgroupExtensions: type: "object" properties: delivery_method: type: "string" description: "Delivery method" enum: - "STANDARD" - "ACCELERATED" conversion_parameters: $ref: "#/components/schemas/AdgroupConversionParams" targeting_parameters: $ref: "#/components/schemas/PinterestTargetingParams" description: "For Pinterest Shopping campaigns only" getFacebookAdApiResponse: type: "object" properties: status: $ref: "#/components/schemas/ApiResponseStatus" entities: type: "array" readOnly: true items: $ref: "#/components/schemas/facebookAdDTO" paging: $ref: "#/components/schemas/Paging" error_message: type: "string" readOnly: true facebookAdPostType: type: "string" description: "Ad post type" enum: - "LINK" - "VIDEO" ProductGroupNode: required: - "dimension" type: "object" properties: level: type: "integer" description: "Required for Google. Defines which level each path represents\ \ on the tree." type: $ref: "#/components/schemas/ProductGroupType" dimension: type: "string" description: "The value of the filter name" catalog_id: type: "integer" description: "Required for Pinterest - this represents the ID of the organic\ \ product group" createCampaign: required: - "campaign_name" - "channel_account_id" type: "object" properties: channel_account_id: type: "integer" description: "Skai ID of the publisher account" campaign_name: type: "string" description: "Campaign name" budget: type: "number" description: "Campaign budget in the profile's currency" budget_type: type: "string" description: "Budget type" enum: - "DEFAULT" - "DAILY_FOR_ADGROUP" - "MONTHLY_FOR_CAMPAIGN" - "LIFETIME" search_bid: type: "number" description: "Default search bid in the profile's currency" content_bid: type: "number" description: "Default content bid in the profile's currency" status: type: "string" description: "Campaign status" enum: - "ACTIVE" - "PAUSED" - "DELETED" - "REVIEW" default: "ACTIVE" order_line: type: "string" description: "Order line of the campaign" start_date: type: "string" description: "Campaign start date. If not specified, will start immediately.\ \ If specified, must be in the future." format: "yyyy-MM-dd" end_date: type: "string" description: "Campaign end date. If specified, must be in the future and\ \ later than the campaign start date." format: "yyyy-MM-dd" tracking_level: type: "string" description: "Campaign tracking level" enum: - "NONE" - "PROFILE_DEFAULT" - "CAMPAIGN" - "ADS" - "KEYWORDS" - "ADS_AND_KEYWORDS" default: "PROFILE_DEFAULT" campaign_type: type: "string" description: "Campaign type" enum: - "TEXT_CAMPAIGN" - "SMART_SHOPPING" - "SHOPPING_STANDARD" default: "TEXT_CAMPAIGN" shopping_settings: $ref: "#/components/schemas/shoppingSettings" default_geographical_targeting: type: "string" description: "Geographical targeting inheritance options" enum: - "INHERIT_FROM_PROFILE" - "ENTIRE_WORLD" default: "INHERIT_FROM_PROFILE" description: "The properties for the created campaign" example: channel_account_id: "14411" campaign_name: "New Campaign" budget: "153000.0" search_bid: "1.0" content_bid: "1.0" start_date: "2026-01-01" end_date: "3000-09-28" campaign_type: "SHOPPING_STANDARD" shopping_settings: merchant_id: "8740" sales_country: "US" priority: "LOW" shoppingSettings: type: "object" properties: merchant_id: type: "number" description: "Merchant center account ID" sales_country: type: "string" description: "Country of sale for the shopping campaign" priority: type: "string" description: "Priority of the shopping campaign" enum: - "LOW" - "MEDIUM" - "HIGH" - "SMART_SHOPPING_CAMPAIGN" description: "Campaign shopping settings" ApiResponse: type: "object" properties: status: $ref: "#/components/schemas/ApiResponseStatus" entities: type: "array" items: $ref: "#/components/schemas/EntityResponse" heimdallTokenResponse: type: "object" properties: url: type: "string" example: "https://heimdall-staging.cloud-elements.com/v1/application?token=123" token: type: "string" example: "123" reportInJob: type: "object" properties: report_id: type: "string" report_type: type: "string" report_date: type: "string" destination: $ref: "#/components/schemas/reportDestination" ExcludeDates: properties: exclude_dates: type: "array" items: type: "integer" example: exclude_dates: - 1583221877000 - 1551599477000 PinterestTargetingParams: type: "object" properties: genders: type: "string" description: "Genders" enum: - "FEMALE" - "MALE" - "UNSPECIFIED" ages: type: "string" description: "Ages" enum: - "AGE_18_24" - "AGE_21" - "AGE_25_34" - "AGE_35_44" - "AGE_45_49" - "AGE_50_54" - "AGE_55_64" - "AGE_65" devices: type: "string" description: "Devices" enum: - "ANDROID_MOBILE" - "ANDROID_TABLET" - "IPAD" - "IPHONE" - "WEB" - "WEB_MOBILE" placements: type: "string" description: "Placements" enum: - "ALL" - "SEARCH" - "BROWSE" - "OTHER" country_names: type: "array" description: "Countries" items: type: "string" description: "Pinterest-specific targeting parameters" AdgroupConversionParams: type: "object" properties: conversion_tag_id: type: "string" description: "The tag ID" conversion_event: type: "string" description: "Conversion event" enum: - "CHECKOUT" - "SIGNUP" - "LEAD" - "APP_INSTALL" - "ADD_TO_CART" conversion_attribute_window: type: "string" description: "Attribution window" enum: - "WIN_30_30_1" - "WIN_7_7_1" - "WIN_7_0_0" - "WIN_1_1_1" - "WIN_1_0_0" conversion_averaget_cpa: type: "number" description: "Average CPA" description: "Conversion parameters" editFacebookAd: required: - "id" type: "object" properties: id: type: "integer" description: "Skai ID of the ad" name: type: "string" description: "Ad name" status: type: "string" description: "Status" enum: - "ACTIVE" - "PAUSED" - "ARCHIVED" bid: oneOf: - $ref: "#/components/schemas/facebookAdBid" creative: oneOf: - $ref: "#/components/schemas/facebookEditAdCreative" tracking: oneOf: - $ref: "#/components/schemas/facebookAdTracking" description: "The properties for edited ad" example: - id: 1234 name: "New Ad name" status: "PAUSED" bid: bid_amount: 3.14 creative: post_text: "new ad body" description: "new ad description" headline: "new ad headline" call_to_action: "CALL_NOW" link: "kenshoo.com" caption: "kenshoo.com" image_name: "betterImage" video_name: "betterVideo" video_thumbnail_name: "betterThumbnail" page_id: 12 instagram_actor_id: 77 tracking: pixel_ids: - 450 use_kenshoo_tracking: false Sort: type: "object" properties: field: type: "string" order: type: "string" enum: - "ASCENDING" - "DESCENDING" ordinal: type: "integer" format: "int32" 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" TestDataRequestFieldsVO: type: "object" properties: performance: type: "array" items: type: "string" custom_metrics: type: "array" items: type: "string" conversion_columns: type: "array" items: type: "string" tag: type: "object" properties: name: type: "string" description: "Tag name" category: type: "string" description: "Category name" getAdApiResponse: type: "object" properties: status: $ref: "#/components/schemas/ApiResponseStatus" entities: type: "array" readOnly: true items: $ref: "#/components/schemas/adDTO" paging: $ref: "#/components/schemas/Paging" error_message: type: "string" readOnly: true facebookAdgroupStatus: type: "string" description: "Status" enum: - "ACTIVE" - "PAUSED" - "DELETED" - "ARCHIVED" - "WITH_ISSUES" - "IN_PROCESS" - "CAMPAIGN_PAUSED" fileConnectionDto: type: "object" properties: status: type: "string" enum: - "SUCCESS" - "FAILURE" columns: type: "array" items: $ref: "#/components/schemas/columnDto" facebookAdTracking: type: "object" properties: pixel_ids: type: "array" description: "Facebook pixel ids" items: type: "integer" use_kenshoo_tracking: type: "boolean" description: "Use kenshoo tracking" description: "Tracking" PortfolioDTO: type: "object" properties: id: type: "integer" description: "Skai ID of the portfolio" profile_id: type: "integer" description: "Skai ID of the profile" profile_name: type: "string" description: "Profile name" portfolio_name: type: "string" description: "Portfolio name" description: type: "string" description: "Portfolio description" default_portfolio: type: "boolean" description: "Indicates if this is the default portfolio" business_cycle: type: "string" description: "The cycle length of the portfolio" enum: - "Rolling" - "Weekly" - "Monthly" rolling_cycle_days: type: "integer" description: "Number between 2 and 100" rolling_cycle_start_date: type: "string" description: "The cycle start date" format: "yyyy-MM-dd" weekly_cycle_start_day: type: "string" description: "The weekly cycle start date" enum: - "sunday" - "monday" - "tuesday" - "wednesday" - "thursday" - "friday" - "saturday" monthly_cycle_start_day: type: "integer" description: "The day of the month on which the monthly cycle should start" budget: type: "number" description: "The portfolio's budget for the cycle" next_cycle_budget: type: "number" description: "The portfolio's budget for the next cycle" first_monitor_metric: type: "string" description: "The first of two optional goals" enum: - "CLICKS" - "CONVERSION" - "ROI" second_monitor_metric: type: "string" description: "The second of two optional goals" enum: - "CLICKS" - "CONVERSION" - "ROI" first_monitor_value: type: "number" description: "The first monitor metric's target value for the cycle" second_monitor_value: type: "number" description: "The second monitor metric's target value for the cycle" rollover: type: "number" description: "The amount of unspent budget from the previous cycle to add\ \ to the current cycle's budget. Available only if Allow Cycle Budget\ \ Rollover is set to TRUE" optimize_with_budget_caps: type: "boolean" description: "When set to TRUE, Skai automatically optimizes to spend your\ \ budget for the cycle by updating the daily budget caps for your campaigns." optimize_with_keyword_bids: type: "boolean" description: "When set to TRUE, Skai automatically optimizes keyword-level\ \ bids to maximize clicks while meeting the spend goal for the portfolio.\ \ This process will run only if Optimize with Budget Caps is also set\ \ to TRUE and a Max Effective Bid is specified." optimize_for: type: "string" description: "The goal the portfolio optimizes for" enum: - "CLICKS" - "CONVERSIONS" - "REVENUE" - "VISIBILITY" max_effective_bid: type: "number" description: "Upper bid limit for each keyword in the portfolio" bid_strategy_target: type: "number" description: "The publisher automated bid strategy target value" publisher_bid_strategy: type: "boolean" description: "Indicates if the portfolio uses publisher automated bidding" signal_enhancement: type: "array" description: "Defines whether the portfolio uses Signal Enhancement and\ \ syncs conversions to Google, Microsoft, or none of the publishers. Send\ \ an empty array to define as none." items: type: "string" enum: - "Google" - "Microsoft" budget_pacing: type: "string" description: "Defines budget pacing during a cycle. Available only if Optimize\ \ with Budget Caps is set to TRUE." enum: - "pace evenly" - "pace early" - "pace late" default: "pace evenly" day_parting_monday: type: "string" description: "Defines whether campaigns included in the portfolio are active\ \ or paused on Mondays" enum: - "true" - "false" default: "true" day_parting_tuesday: type: "string" description: "Defines whether campaigns included in the portfolio are active\ \ or paused on Tuesdays" enum: - "true" - "false" default: "true" day_parting_wednesday: type: "string" description: "Defines whether campaigns included in the portfolio are active\ \ or paused on Wednesdays" enum: - "true" - "false" default: "true" day_parting_thursday: type: "string" description: "Defines whether campaigns included in the portfolio are active\ \ or paused on Thursdays" enum: - "true" - "false" default: "true" day_parting_friday: type: "string" description: "Defines whether campaigns included in the portfolio are active\ \ or paused on Fridays" enum: - "true" - "false" default: "true" day_parting_saturday: type: "string" description: "Defines whether campaigns included in the portfolio are active\ \ or paused on Saturdays" enum: - "true" - "false" default: "true" day_parting_sunday: type: "string" description: "Defines whether campaigns included in the portfolio are active\ \ or paused on Sundays" enum: - "true" - "false" default: "true" allow_cycle_budget_rollover: type: "boolean" description: "Defines whether any remaining unspent budget is automatically\ \ rolled over to the next cycle. Available only if Optimize with Budget\ \ Caps is set to TRUE" default: false campaign_min_daily_budget: type: "number" description: "Set a minimum campaign daily budget for all campaigns within\ \ this portfolio. Valid values for this setting may vary by publisher." campaign_max_daily_budget: type: "number" description: "Set a maximum campaign daily budget for all campaigns within\ \ this portfolio. Valid values for this setting may vary by publisher." pause_campaign_setting: type: "boolean" description: "Defines whether campaigns in the portfolio will automatically\ \ pause when budget issues are detected. Available only if there is no\ \ campaign_min_daily_budget or campaign_max_daily_budget set for the portfolio." default: false AsyncAnalysis: required: - "date_range" - "entity" - "fields" type: "object" properties: entity: $ref: "#/components/schemas/ReportEntity" date_range: $ref: "#/components/schemas/DateRange" fields: uniqueItems: true type: "array" description: "The columns to be fetched. See [here](#operation/getAvailableColumns)\ \ for available columns.\nTo get data segmented by date, add a date column,\ \ like so: `{\"name\": \"Day\", \"group\": \"TimeSegment\"}`" items: $ref: "#/components/schemas/Column" filters: uniqueItems: true type: "array" items: $ref: "#/components/schemas/ReportFilter" sort: $ref: "#/components/schemas/ReportSort" info_level: type: "string" description: "Show summary records only, breakdown records only, or both." enum: - "SUMMARY" - "BREAKDOWN" - "BOTH" default: "BOTH" breakdown_type: type: "string" description: "To get data segmented only by date, use `GROUP`. To segment\ \ by both date and another column, use `SEGMENT` with only the date column\ \ in group_bys and include the other column in `fields` (these columns\ \ will be fetched). Otherwise, use `FLAT`" enum: - "FLAT" - "GROUP" - "SEGMENT" default: "FLAT" group_bys: type: "Array" description: "When the breakdown type is \"GROUP\", select columns by which\ \ to group the data. Often, this would be the date column (see example)\ \ and the ID of the entity you are pulling." profile_token: type: "string" description: "Profile token. Either profile token or profile ID is needed\ \ to access [Single-Profile columns](#operation/getAvailableColumns) (alternative\ \ to profile_id)." profile_id: type: "number" description: "Profile ID. Either profile token or profile ID is needed to\ \ access [Single-Profile columns](#operation/getAvailableColumns) (alternative\ \ to profile_token)." custom_file_name: type: "string" description: "Enter any text and attribute (parameters) to include in the\ \ filename of the generated reports." compress_method: type: "string" description: "How you want the file to be compressed." enum: - "ZIP" - "GZIP" default: "GZIP" skip_zero_performance_rows: type: "boolean" description: "When set to true, the report includes only rows with performance\ \ data greater than 0. When set to false, all rows will be returned, even\ \ if there is no performance data. Relevant grids - `CAMPAIGN`, `ADGROUP`,\ \ `AD`, `KEYWORD`. This parameter has no effect on other grids." default: false description: "The properties for the async analysis request" example: entity: "CAMPAIGN" profile_id: 118 date_range: start_date: "2026-01-01" end_date: "2026-01-14" info_level: "BREAKDOWN" fields: - name: "CampaignName" group: "ATTRIBUTES" - name: "Clicks" group: "PERFORMANCE" - name: "Day" group: "TimeSegment" filters: - field: "StatusToDisplay" group: "ATTRIBUTES" operator: "In" values: - "Approved" - "Active" - field: "CampaignName" group: "ATTRIBUTES" operator: "CONTAINS" values: - "My" - field: "Impressions" group: "PERFORMANCE" operator: "GREATER_THAN" values: - "0" sort: field: "CampaignName" group: "ATTRIBUTES" order: "DESCENDING" breakdown_type: "GROUP" group_bys: - name: "Day" group: "TimeSegment" customFileName: "my_report" compressMethod: "ZIP" skip_zero_performance_rows: true TestDTO: type: "object" properties: ks_name: type: "string" id: type: "integer" format: "int32" name: type: "string" description: type: "string" category: type: "string" enum: - "DRAFT_AND_EXPERIMENT" - "GROUPS_EXPERIMENT" type: type: "string" enum: - "BIDDING" - "LANDING_PAGE" - "CREATIVE" - "OTHER" status: type: "string" readOnly: true enum: - "SCHEDULED" - "RUNNING" - "COMPLETED" - "CANCELED" start_date: type: "integer" format: "int64" end_date: type: "integer" format: "int64" baseline_end_date: type: "integer" format: "int64" rampup_end_date: type: "integer" format: "int64" goal: type: "string" goal_metrics: type: "array" items: $ref: "#/components/schemas/GoalMetricDTO" type_description: type: "string" groups: type: "array" items: $ref: "#/components/schemas/GroupDTO" Productgroup: required: - "ad_group_id" type: "object" properties: ad_group_id: type: "integer" description: "The ID of the ad group this product group is created in" bid: type: "number" description: "Bid" inherit_bid: type: "boolean" description: "The bid should be inherited from the ad group" default: false tracking_url: type: "string" description: "Tracking URL" nodes: type: "array" items: $ref: "#/components/schemas/ProductGroupNode" description: "The properties for the newly created product group" example: - bid: 1.0 nodes: - level: 1 dimension: "DIM 1" type: "CUSTOM_ATTRIBUTE_2" - level: 2 dimension: "DIM 2" type: "CUSTOM_ATTRIBUTE_1" - level: 3 dimension: "DIM 3" type: "BRAND" ad_group_id: 1234 - nodes: - level: 1 dimension: "a pinterest product group" catalog_id: "12345678" ad_group_id: 5678 tracking_url: "www.my-url.com" facebookAdgroupScheduling: type: "object" properties: days: type: "array" description: "Scheduling days" items: type: "integer" start_minute: type: "integer" description: "Scheduling start minute" end_minute: type: "integer" description: "Scheduling end minute" description: "Adgroup scheduling" facebookTargeting: type: "object" properties: targeting_id: type: "integer" description: "Targeting ID" description: "Targeting" Paging: type: "object" properties: previous_page: type: "string" readOnly: true next_page: type: "string" readOnly: true reportStatus: type: "object" properties: code: type: "integer" format: "int64" name: type: "string" description: type: "string" EditFacebookAdgroup: required: - "id" type: "object" properties: id: type: "integer" description: "Skai ID of the ad group" name: type: "string" description: "Ad group name" status: oneOf: - $ref: "#/components/schemas/facebookAdgroupStatus" budget: oneOf: - $ref: "#/components/schemas/facebookAdgroupBudget" bid: oneOf: - $ref: "#/components/schemas/facebookAdgroupBid" targeting: oneOf: - $ref: "#/components/schemas/facebookTargeting" schedule: oneOf: - $ref: "#/components/schemas/facebookAdgroupSchedule" ad_group_type: oneOf: - $ref: "#/components/schemas/facebookAdgroupType" description: "The properties for the edited ad group" example: - id: 100 name: "new name" status: "ACTIVE" 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" ProfileResponse: type: "object" properties: id: type: "integer" description: "New profile ID in case profile creation finished successfully" format: "int64" success: type: "boolean" description: "Indicates if onboarding profile creation was completed successfully" errors: type: "array" description: "Array, where each item contains an error field and an error\ \ code (description) in the case that there are errors" items: $ref: "#/components/schemas/ErrorField" created_accounts: type: "array" description: "Array containing the details of the copied channel accounts" items: $ref: "#/components/schemas/CreatedAccount" profile_token: type: "string" description: "New profile token in case profile creation finished successfully" description: "The details of the created profile" PerformanceDataVO: type: "object" properties: groups: type: "array" items: $ref: "#/components/schemas/GroupDataVO" statistics: type: "array" items: $ref: "#/components/schemas/Statistics" facebookEditAdCreative: type: "object" properties: post_text: type: "string" description: "Post text" description: type: "string" description: "Description" headline: type: "string" description: "Headline" call_to_action: oneOf: - $ref: "#/components/schemas/facebookAdCallToAction" link: type: "string" description: "Destination URL" caption: type: "string" description: "Display link" image_name: type: "string" description: "Image name" video_name: type: "string" description: "Video name" video_thumbnail_name: type: "string" description: "Video thumbnail name" page_id: type: "integer" description: "Page id" instagram_actor_id: type: "integer" description: "Instagram actor id" description: "Ad creative" facebookAttributionSpec: type: "object" properties: window_days: type: "integer" description: "Window days" event: type: "string" description: "Event" enum: - "CLICK_THROUGH" - "VIEW_THROUGH" description: "Attribution spec" asyncReportTrackingField: type: "string" description: "\n\n\n| Field name | Reports the field\ \ is available in \ \ | Data type | Description \ \ \ \ \ \ |\n|-------------------------|---------------------------------------------------------------------------------------------------------------------------|--------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n\ | `Event_Time` | Tracking Raw Data - Click Tracking Data
Tracking\ \ Raw Data - Flat P2C |\ \ DATETIME | Time of the tracked event, in the time zone of the profile
Format:\ \ `yyyy-MM-dd HH:mm:ss`
Example: `2026-01-01 00:00:00` \ \ |\n| `Date` \ \ | Tracking Raw Data - Keywords Daily Performance \ \ | DATE \ \ | Date of the event that created performance data
Format: `yyyy-MM-dd`
Example:\ \ `2026-01-01` \ \ |\n| `User_ID` | Tracking\ \ Raw Data - Click Tracking Data
Tracking Raw Data - Flat P2C \ \ | TEXT(100) | A unique ID given\ \ to the user who clicked the ad
Example: `47e36981-ec4f-44c7-9304-4ed30dbedbd7`\ \ \ \ |\n| `Profile` | Tracking Raw Data -\ \ Click Tracking Data
Tracking Raw Data - Keywords Daily Performance
Tracking\ \ Raw Data - Flat P2C | TEXT(50) | Profile name in Skai
Example: `ACME\ \ Brand` \ \ \ \ |\n| `Profile_ID` | Tracking Raw Data - Click Tracking\ \ Data
Tracking Raw Data - Keywords Daily Performance
Tracking Raw Data\ \ - Flat P2C | INT | Profile ID in Skai
Example: `102` \ \ \ \ \ \ |\n| `Channel` | Tracking Raw Data - Click Tracking Data
Tracking\ \ Raw Data - Keywords Daily Performance
Tracking Raw Data - Flat P2C |\ \ TEXT(50) | Name of the publisher
Example: `Google` \ \ \ \ |\n| `Campaign`\ \ | Tracking Raw Data - Click Tracking Data
Tracking Raw Data\ \ - Keywords Daily Performance
Tracking Raw Data - Flat P2C | TEXT(255)\ \ | Campaign name in Skai
Example: `ACME Brand Clothing` \ \ \ \ |\n| `Campaign_ID` \ \ | Tracking Raw Data - Click Tracking Data
Tracking Raw Data -\ \ Keywords Daily Performance | BIGINT \ \ | Campaign ID in Skai
Example: `1123` \ \ \ \ |\n| `Campaign ID KS Unique`\ \ | Tracking Raw Data - Flat P2C \ \ | BIGINT | Campaign\ \ ID in Skai
Example: `1123` \ \ \ \ |\n| `Campaign_ID_In_Target` | Tracking\ \ Raw Data - Flat P2C \ \ | BIGINT | Campaign ID in\ \ the publisher
Example: `121270991` \ \ \ \ |\n| `Ad_Group` | Tracking\ \ Raw Data - Click Tracking Data
Tracking Raw Data - Keywords Daily Performance
Tracking\ \ Raw Data - Flat P2C | TEXT(256) | Name of the ad group
Example: `Northwest\ \ Region Trucks` \ \ \ \ |\n| `Adgroup_ID` | Tracking Raw Data - Click Tracking Data
Tracking\ \ Raw Data - Keywords Daily Performance |\ \ BIGINT | Ad group ID in Skai
Example: `2124` \ \ \ \ |\n| `Ad Group\ \ ID KS Unique` | Tracking Raw Data - Flat P2C \ \ | BIGINT\ \ | Ad group ID in Skai
Example: `2124` \ \ \ \ |\n| `Ad_Group_ID_In_Target`\ \ | Tracking Raw Data - Flat P2C \ \ | BIGINT | Ad\ \ group ID in the publisher
Example: `15782818485` \ \ \ \ |\n| `Keyword` \ \ | Tracking Raw Data - Click Tracking Data
Tracking Raw Data - Keywords\ \ Daily Performance
Tracking Raw Data - Flat P2C | TEXT(4096) | Keyword\ \ text
Example: `Small Hybrid Cars` \ \ \ \ |\n| `Keyword_ID` |\ \ Tracking Raw Data - Click Tracking Data
Tracking Raw Data - Keywords\ \ Daily Performance | BIGINT | Tracking\ \ ID of the keyword in Skai
Example: `1123` \ \ \ \ |\n| `Keyword ID KS Unique` | Tracking\ \ Raw Data - Flat P2C \ \ | BIGINT | Keyword ID in\ \ Skai
Example: `1234` \ \ \ \ |\n| `KW_Tracking_ID` | Tracking\ \ Raw Data - Flat P2C \ \ | BIGINT | Tracking ID of\ \ the keyword in Skai
Example: `1123` \ \ \ \ |\n| `Match_Type` | Tracking Raw\ \ Data - Click Tracking Data
Tracking Raw Data - Keywords Daily Performance
Tracking\ \ Raw Data - Flat P2C | TEXT(50) | Match type of the keyword
Valid\ \ values: `Exact`, `Phrase`, `Broad` \ \ \ \ |\n| `Bid` | Tracking Raw Data - Keywords\ \ Daily Performance \ \ | FLOAT(20,8) | Bid of the tracked entity, in the\ \ currency of the profile
Example: `1.50` \ \ \ \ |\n| `Ad_ID` | Tracking Raw Data - Click\ \ Tracking Data \ \ | BIGINT | Tracking ID of the ad in Skai
Example:\ \ `1123` \ \ \ \ |\n| `Ad ID KS Unique` | Tracking Raw Data - Flat P2C \ \ \ \ | BIGINT | Ad ID in Skai
Example: `2124` \ \ \ \ \ \ |\n| `Ad_ID_In_Target` | Tracking Raw Data - Flat P2C \ \ \ \ | BIGINT | Ad ID in the publisher
Example: `121270991`\ \ \ \ \ \ |\n| `Ad_Tracking_ID` | Tracking Raw Data - Flat P2C \ \ \ \ | BIGINT | Tracking ID of the ad in Skai
Example: `1123`\ \ \ \ |\n\ | `Ad_Headline` | Tracking Raw Data - Click Tracking Data
Tracking\ \ Raw Data - Flat P2C |\ \ TEXT(255) | Headline of the ad
Example: `Chicago Cars 2016` \ \ \ \ |\n| `Product\ \ Group ID` | Tracking Raw Data - Flat P2C \ \ | BIGINT\ \ | ID of the product group
Example: `1234` \ \ \ \ |\n| `Conv_ID`\ \ | Tracking Raw Data - Flat P2C \ \ | BIGINT\ \ | Unique identifier for a conversion. Can be used to connect clicks\ \ and other conversions from a single path, to the conversion at the end of\ \ the path.
Example: `12345` |\n| `Event_Type` \ \ | Tracking Raw Data - Flat P2C \ \ | TEXT(100)\ \ | Type of tracking event
Example: `Click` \ \ \ \ |\n| `Order_ID` \ \ | Tracking Raw Data - Flat P2C \ \ | TEXT(3000)\ \ | Order ID of the conversoin, if sent
Example: `2384hr83y487ty354`\ \ \ \ |\n| `Promo_Code` \ \ | Tracking Raw Data - Flat P2C \ \ | TEXT(3000)\ \ | Promo code sent with the conversion. Used as a free text field.
Example:\ \ `fff--0212-shopping-cart` \ \ |\n| `Assigned_Weight` \ \ | Tracking Raw Data - Flat P2C \ \ | FLOAT(20,8) | The\ \ relative weight (out of 1) given to a click in a path leading to a conversion
Example:\ \ `0.5` \ \ |\n| `Path_Duration` | Tracking Raw Data\ \ - Flat P2C \ \ | Duration | Total time from the first\ \ click in the path to the conversion
Example: `04:23:11` \ \ \ \ |\n| `Number_of_Clicks` | Tracking Raw Data\ \ - Flat P2C \ \ | INT | Total number of clicks\ \ in the path leading to a conversion
Example: `4` \ \ \ \ |\n| `Number_of_Channels` | Tracking Raw Data\ \ - Flat P2C \ \ | INT | Number of different publishers\ \ with clicks participating in the path to a conversion
Example: `2` \ \ \ \ |\n| `Country` | Tracking Raw Data - Click\ \ Tracking Data
Tracking Raw Data - Flat P2C \ \ | TEXT(100) | Country (by IP) of the tracking\ \ event
Example: `US` \ \ \ \ |\n| `City` | Tracking Raw Data - Click\ \ Tracking Data
Tracking Raw Data - Flat P2C \ \ | TEXT(100) | City (by IP) of the tracking event
Example:\ \ `New York` \ \ \ \ |\n| `State` | Tracking Raw Data - Click Tracking Data
Tracking\ \ Raw Data - Flat P2C |\ \ TEXT(100) | State (by IP) of the tracking event
Example: `NY` \ \ \ \ |\n| `IP`\ \ | Tracking Raw Data - Click Tracking Data
Tracking\ \ Raw Data - Flat P2C |\ \ TEXT(100) | IP address of the user who clicked the ad, with the last\ \ octet redacted to 00
Example: `207.242.48.00 ` \ \ |\n| `Browser`\ \ | Tracking Raw Data - Click Tracking Data
Tracking Raw\ \ Data - Flat P2C | TEXT(100)\ \ | Browser used by the user who clicked the ad
Example: `Chrome 11`\ \ \ \ |\n| `Language` \ \ | Tracking Raw Data - Click Tracking Data
Tracking Raw Data\ \ - Flat P2C | TEXT(100)\ \ | Browser language used by the user who clicked the ad
Example: `Spanish\ \ ` \ \ |\n| `Revenue` \ \ | Tracking Raw Data - Keywords Daily Performance
Tracking Raw Data\ \ - Flat P2C | FLOAT(40,20) | Total\ \ revenue, in the currency of the profile. Contains revenue from all “aggregated\ \ to conv total” conversion columns.
Example: `23.34` \ \ |\n| `Cost` | Tracking\ \ Raw Data - Keywords Daily Performance
Tracking Raw Data - Flat P2C \ \ | FLOAT(40,20) | Publisher cost,\ \ in the currency of the profile
Example: `13.12` \ \ \ \ |\n| `Device` | Tracking\ \ Raw Data - Click Tracking Data \ \ | TEXT(100) | Device used by\ \ the user who clicked the ad
Example: `iPhone 11` \ \ \ \ |\n| `Status` | Tracking\ \ Raw Data - Keywords Daily Performance \ \ | TEXT(50) | Status of the\ \ keyword
Valid values: `Active`, `Paused`, `Deleted`, `Pending`, `Inactive`,\ \ `Disapproved`, `Approved`, `Failed`, `To Pause`, `To Delete`, `Failed to\ \ Pause`, `Failed to Delete` |\n| `Quality_Score` | Tracking Raw Data\ \ - Keywords Daily Performance \ \ | INT | Quality score of the keyword
Example:\ \ `3` \ \ \ \ |\n| `Impressions` | Tracking Raw Data - Keywords Daily\ \ Performance \ \ | FLOAT(20,8) | Impressions reported by the publisher
Example:\ \ `14,519` \ \ |\n\ | `Clicks` | Tracking Raw Data - Keywords Daily Performance\ \ \ \ | FLOAT(20,8) | Clicks reported by the publisher
Example: `14` \ \ \ \ |\n\ | `Avg_Position` | Tracking Raw Data - Keywords Daily Performance\ \ \ \ | FLOAT(40,20) | Average position of the impression
Example: `2.1`\ \ \ \ |\n\ | `Avg_CPC` | Tracking Raw Data - Keywords Daily Performance\ \ \ \ | FLOAT(40,20) | Average cost per click
Example: `0.64227` \ \ \ \ |\n\ | `Conversions` | Tracking Raw Data - Keywords Daily Performance\ \ \ \ | FLOAT(40,20) | Conversion total. Contains all “aggregated to conv total”\ \ conversion columns.
Example: `1200` \ \ |\n| `CTR`\ \ | Tracking Raw Data - Keywords Daily Performance \ \ |\ \ FLOAT(40,20) | Click-through rate
Example: `0.125` \ \ \ \ |\n| `Conv_Rate`\ \ | Tracking Raw Data - Keywords Daily Performance \ \ | FLOAT(40,20)\ \ | Average number of conversions per click
Example: `0.4` \ \ \ \ |\n| `Cost_per_Conv`\ \ | Tracking Raw Data - Keywords Daily Performance \ \ | FLOAT(40,20)\ \ | Cost per conversion
Example: `1.54` \ \ \ \ |\n| `Rev_per_Conv` \ \ | Tracking Raw Data - Keywords Daily Performance \ \ | FLOAT(40,20)\ \ | Revenue per conversion
Example: `52.51` \ \ \ \ |\n| `ROI` \ \ | Tracking Raw Data - Keywords Daily Performance \ \ | FLOAT(40,20)\ \ | Return on investment
Example: `11.25` \ \ \ \ |\n| `Profit` \ \ | Tracking Raw Data - Keywords Daily Performance \ \ | FLOAT(40,20)\ \ | Revenue minus cost
Example: `27511` \ \ \ \ |\n" facebookAdgroupBudget: type: "object" properties: budget: type: "number" description: "Ad group budget in the profile's currency" type: type: "string" description: "Budget type" enum: - "DAILY" - "LIFETIME" pacing_types: type: "array" description: "Budget pacing types" items: type: "string" enum: - "STANDARD" - "NO_PACING" - "DAY_PARTING" - "DISABLED" spend_limit: $ref: "#/components/schemas/facebookSpendLimit" caps: oneOf: - $ref: "#/components/schemas/facebookImpressionCaps" description: "Adgroup budget" editEntityTagsRequest: required: - "id" - "operation_type" - "tags" type: "object" properties: id: type: "integer" description: "Skai ID of the entity" tags: type: "array" description: "Tags" items: $ref: "#/components/schemas/tag" operation_type: $ref: "#/components/schemas/operationType" description: "The properties for editing entity tags" example: - id: 100 tags: - name: "tag1" category: "cat" - name: "tag2" category: "dog" operation_type: "ATTACH" reportAccount: type: "object" properties: region: type: "string" name: type: "string" AdgroupBudgetType: type: "string" enum: - "DAILY" - "LIFETIME" columnDto: type: "object" properties: header: $ref: "#/components/schemas/headerDto" columns: type: "array" items: type: "string" 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" SuggestionsContactsVO: type: "object" properties: ks_name: type: "string" recommendation_type: type: "string" ApiResponseSummaryReportStatus: type: "object" properties: status: $ref: "#/components/schemas/ApiResponseStatus" entities: type: "array" readOnly: true items: $ref: "#/components/schemas/SummaryReportStatusResponseVO" error_message: type: "string" readOnly: true EditProfileResponseEntities: type: "object" properties: id: type: "integer" description: "Profile ID" format: "int64" success: type: "boolean" description: "Indicates if edit profile was completed successfully" errors: type: "array" description: "Array, where each item contains an error field and an error\ \ code (description) in the case that there are errors" items: $ref: "#/components/schemas/ErrorField" description: "The details of the edited profile" CreateAdgroup: required: - "campaign_id" - "name" type: "object" properties: name: type: "string" description: "New ad group name" campaign_id: type: "integer" description: "The ID of the campaign this ad group is created in" search_bid: type: "integer" description: "Default search bid in the profile's currency" status: $ref: "#/components/schemas/AdgroupStatus" start_date: type: "string" description: "Ad group start date. If not specified, will start immediately.\ \ If specified, must be in the future." format: "yyyy-MM-dd" end_date: type: "string" description: "Ad group end date. If specified, must be in the future and\ \ later than the campaign start date." format: "yyyy-MM-dd" bidding_method: $ref: "#/components/schemas/AdgroupBiddingMethod" budget: type: "integer" description: "Budget, in the profile's currency" budget_type: $ref: "#/components/schemas/AdgroupBudgetType" pinterest_ad_group_extensions: $ref: "#/components/schemas/PinterestAdgroupExtensions" description: "The properties for the newly created ad group" example: - name: "adgroup example" campaign_id: 1234 search_bid: 12.2 status: "ACTIVE" start_date: "2026-01-01" end_date: "2026-12-31" bidding_method: "ManualCPC" budget: 50.1 budget_type: "LIFETIME" pinterest_ad_group_extensions: delivery_method: "STANDARD" conversion_parameters: conversion_tag_id: "my tag id" conversion_event: "CHECKOUT" conversion_attribution_window: "WIN_30_30_1" conversion_avg_cpa: 7.7 targeting_parameters: genders: - "FEMALE" - "MALE" - "UNSPECIFIED" ages: - "AGE_50_54" - "AGE_18_24" - "AGE_25_34" - "AGE_21" - "AGE_45_49" - "AGE_35_44" - "AGE_65" - "AGE_55_64" devices: - "ANDROID_MOBILE" - "ANDROID_TABLET" - "IPAD" - "IPHONE" - "WEB" - "WEB_MOBILE" placements: "ALL" countries: - "US" AnnotationDTO: type: "object" properties: id: type: "integer" format: "int32" message: type: "string" type: type: "string" enum: - "CUSTOMIZED" entity_type: type: "string" enum: - "TEST" entity_id: type: "integer" format: "int32" date: type: "integer" format: "int64" getEntityTagsResponse: type: "object" properties: id: type: "integer" description: "Skai ID of the entity" tags: type: "array" readOnly: true items: $ref: "#/components/schemas/tag" GetPortfolioApiResponse: type: "object" properties: status: $ref: "#/components/schemas/ApiResponseStatus" entities: type: "array" readOnly: true items: $ref: "#/components/schemas/PortfolioDTO" paging: $ref: "#/components/schemas/Paging" kenshoo_trace_id: type: "string" readOnly: true error_message: type: "string" readOnly: true CreateFacebookAdgroup: required: - "campaign_id" - "name" - "schedule" - "status" - "targeting" type: "object" properties: campaign_id: type: "integer" description: "Skai ID of the campaign" name: type: "string" description: "Ad group name" status: oneOf: - $ref: "#/components/schemas/facebookAdgroupStatus" budget: oneOf: - $ref: "#/components/schemas/facebookAdgroupBudget" bid: oneOf: - $ref: "#/components/schemas/facebookAdgroupBid" targeting: oneOf: - $ref: "#/components/schemas/facebookTargeting" schedule: oneOf: - $ref: "#/components/schemas/facebookAdgroupSchedule" ad_group_type: oneOf: - $ref: "#/components/schemas/facebookAdgroupType" description: "The properties for the newly created ad group" example: - campaign_id: 232608652 name: "name" status: "PAUSED" schedule: start_time: "2026-01-01 00:00" end_time: "2026-01-14 23:59" targeting: targeting_id: 123 AdgroupStatus: type: "string" description: "Status" enum: - "ACTIVE" - "PAUSED" - "DELETED" - "REVIEW" ProductGroupType: type: "string" description: "Required for Google. Defines the type of filter for each path\ \ in the tree." enum: - "ADWORDS_GROUPING" - "ADWORDS_LABELS" - "BIDDING_CATEGORY_L1" - "BIDDING_CATEGORY_L2" - "BIDDING_CATEGORY_L3" - "BIDDING_CATEGORY_L4" - "BIDDING_CATEGORY_L5" - "BRAND" - "CANONICAL_CONDITION" - "LEGACY_CONDITION" - "CUSTOM_ATTRIBUTE_0" - "CUSTOM_ATTRIBUTE_1" - "CUSTOM_ATTRIBUTE_2" - "CUSTOM_ATTRIBUTE_3" - "CUSTOM_ATTRIBUTE_4" - "OFFER_ID" - "PRODUCT_TYPE_L1" - "PRODUCT_TYPE_L2" - "PRODUCT_TYPE_L3" - "PRODUCT_TYPE_L4" - "PRODUCT_TYPE_L5" - "GTIN" - "MPN" - "CHANNEL" - "CHANNEL_EXCLUSIVITY" - "TYPE_FULL" - "UNSUPPORTED" - "NONE" createFacebookAd: required: - "ad_group_id" - "bid" - "creative" - "name" - "status" type: "object" properties: ad_group_id: type: "integer" description: "Skai ID of the ad group" name: type: "string" description: "Ad name" status: type: "string" description: "Status" enum: - "ACTIVE" - "PAUSED" bid: oneOf: - $ref: "#/components/schemas/facebookAdBid" creative: oneOf: - $ref: "#/components/schemas/facebookAdCreative" tracking: oneOf: - $ref: "#/components/schemas/facebookAdTracking" description: "The properties for the newly created ad" example: - name: "New Ad" ad_group_id: 12345 status: "ACTIVE" bid: bid_amount: 23.05 creative: ad_type: "PAGE_POST" post_type: "LINK" post_text: "ad body" description: "ad description" headline: "ad headline" call_to_action: "DOWNLOAD" link: "skai.io" caption: "skai.io" image_name: "theBestImage" video_name: "theBestVideo" video_thumbnail_name: "theBestThumbnail" page_id: 21 instagram_actor_id: 33 tracking: pixel_ids: - 4308 use_kenshoo_tracking: true facebookAdCreative: required: - "ad_type" - "instagram_actor_id" - "link" - "page_id" - "post_type" type: "object" properties: ad_type: oneOf: - $ref: "#/components/schemas/facebookAdType" post_type: oneOf: - $ref: "#/components/schemas/facebookAdPostType" post_text: type: "string" description: "Post text" description: type: "string" description: "Description" headline: type: "string" description: "Headline" call_to_action: description: "Required when post_type is VIDEO." oneOf: - $ref: "#/components/schemas/facebookAdCallToAction" link: type: "string" description: "Destination URL" caption: type: "string" description: "Display link" image_name: type: "string" description: "Image name" video_name: type: "string" description: "Video name. Required when post_type is VIDEO." video_thumbnail_name: type: "string" description: "Video thumbnail name. Optional; if omitted no thumbnail is\ \ set." page_id: type: "integer" description: "Page id" instagram_actor_id: type: "integer" description: "Instagram actor id" description: "Ad creative" DateRange: required: - "end_date" - "start_date" type: "object" properties: start_date: type: "string" description: "Start date in YYYY-MM-dd format" end_date: type: "string" description: "End date in YYYY-MM-dd format" exclude_dates: type: "array" items: type: "string" description: "Dates to exclude in YYYY-MM-dd format" readOnly: true description: "The properties of the date range." example: - start_date: "2026-01-01" end_date: "2026-01-14" exclude_dates: - "2026-01-07" Column: required: - "group" - "name" type: "object" properties: name: type: "string" description: "Field name to be fetched" group: type: "string" description: "Each column belongs to a group. This list is partial - your\ \ account may have additional column groups. Group names are available\ \ in the getAvailableColumns endpoint" enum: - "Attributes" - "Performance" - "Dimensions" - "CustomMetrics" - "CustomMetricsPlus" - "ConversionTypes" - "ChannelCustomerConversionTypes" - "ProxyCustomerConversionTypes" - "ExternalCustomerConversionTypes" id: type: "string" readOnly: true display_name: type: "string" readOnly: true value_type: type: "string" readOnly: true enum: - "STRING" - "INTEGER" - "FLOAT" - "BOOLEAN" - "DATE" description: "The properties of a field" example: - name: "Clicks" group: "Performance" TestDataRequestVO: type: "object" properties: data_type: type: "string" enum: - "DAILY_DATA" - "TOTALS" default: "DAILY_DATA" period: type: "string" enum: - "BASELINE" - "RAMPUP" - "TEST" - "ALL" default: "ALL" group_by: type: "string" enum: - "DATE" - "DEVICE" - "DEVICE_AND_DATE" default: "DATE" fields: $ref: "#/components/schemas/TestDataRequestFieldsVO" fetch_statistics: type: "boolean" EditAdgroup: required: - "campaign_id" - "id" type: "object" properties: id: type: "integer" description: "The ad group ID" name: type: "string" description: "The new name of the ad group" campaign_id: type: "integer" description: "The ID of the campaign of this ad group" search_bid: type: "integer" description: "Default search bid in the profile's currency" status: $ref: "#/components/schemas/AdgroupStatus" start_date: type: "string" description: "Ad group start date. If not specified, will start immediately.\ \ If specified, must be in the future." format: "yyyy-MM-dd" end_date: type: "string" description: "Ad group end date. If specified, must be in the future and\ \ later than the campaign start date." format: "yyyy-MM-dd" bidding_method: $ref: "#/components/schemas/AdgroupBiddingMethod" budget: type: "integer" description: "Budget, in the profile's currency" budget_type: $ref: "#/components/schemas/AdgroupBudgetType" description: "The properties for the edited ad group" example: - id: 1111 name: "adgroup example" campaign_id: 1234 search_bid: 12.2 status: "ACTIVE" start_date: "2026-01-01" end_date: "2026-12-31" bidding_method: "ManualCPC" budget: 50.1 budget_type: "LIFETIME" ApiResponseStatus: type: "string" readOnly: true enum: - "SUCCESS" - "FAILED" - "PARTIAL_SUCCESS" facebookAdgroupBid: type: "object" properties: strategy: type: "string" description: "Adgroup bid strategy" enum: - "UNDEFINED" - "LOWEST_COST_WITHOUT_CAP" - "LOWEST_COST_WITH_BID_CAP" - "TARGET_COST" - "COST_CAP" - "LOWEST_COST_WITH_MIN_ROAS" billing_event: type: "string" description: "Adgroup billing event" enum: - "IMPRESSIONS" - "LINK_CLICKS" - "APP_INSTALLS" - "PAGE_LIKES" - "OFFER_CLAIMS" - "POST_ENGAGEMENT" - "VIDEO_VIEWS" - "TWO_SECOND_CONTINUOUS_VIDEO_VIEWS" - "THRUPLAY" optimization_goal: type: "string" description: "Adgroup optimization goal" enum: - "NONE" - "APP_INSTALLS" - "CLICKS" - "ENGAGED_USERS" - "EXTERNAL" - "EVENT_RESPONSES" - "IMPRESSIONS" - "LINK_CLICKS" - "OFFER_CLAIMS" - "OFFSITE_CONVERSIONS" - "PAGE_ENGAGEMENT" - "PAGE_LIKES" - "POST_ENGAGEMENT" - "REACH" - "SOCIAL_IMPRESSIONS" - "VIDEO_VIEWS" - "LEAD_GENERATION" - "APP_EVENTS" - "CONVERSION_EVENTS" - "BRAND_AWARENESS" - "STORE_VISITS" - "VALUE" - "LANDING_PAGE_VIEWS" - "AD_RECALL_LIFT" - "TWO_SECOND_CONTINUOUS_VIDEO_VIEWS" - "OFFLINE_CONVERSIONS" - "THRUPLAY" - "DERIVED_EVENTS" - "CONVERSATIONS" - "STORE_SALES" - "INCREMENTAL_OFFSITE_CONVERSIONS" - "ONSITE_CONVERSIONS" - "APP_INSTALLS_AND_OFFSITE_CONVERSIONS" bid_amount: type: "number" description: "Adgroup bid amount" roas_average_floor: type: "integer" description: "Adgroup ROAS average floor" description: "Adgroup bid" ReportEntity: type: "string" description: "The base entity for the report, indicated in the analysis grid\ \ name. Important - When using the API for product grids, refer to the entity\ \ as \"PRODUCT_ASSET\"." enum: - "CAMPAIGN" - "ADGROUP" - "KEYWORD" - "AD" - "PORTFOLIO" - "PRODUCT_ASSET" - "LOCATIONS" - "NEGATIVE_KEYWORDS" - "SITELINK" - "CREATIVE_ASSET" - "PRODUCT_TARGETING" - "ASSET_GROUP" ReportColumnsResponse: type: "object" example: columnsInfo: Attributes: - name: "Status" id: "S3009" display_name: "Status" value_type: "STRING" report_supported: true - name: "ChannelType" id: "S3029" display_name: "ChannelType" value_type: "STRING" report_supported: true ConversionTypes: - name: "Calls" id: "T2105" value_type: "INTEGER" report_supported: true - name: "Calls $" id: "R2105" value_type: "MONETARY" report_supported: true - name: "Conversions" id: "T2106" value_type: "FLOAT" report_supported: true - column_name: "Conversions $" id: "R2106" value_type: "MONETARY" report_supported: false Performance: - name: "Date" id: "S3035" display_name: "Date" value_type: "DATE" report_supported: true - name: "Impressions" id: "S3012" display_name: "Impressions" value_type: "BIG_INTEGER" report_supported: true 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" TestCampaignDTO: type: "object" properties: campaign_name: type: "string" readOnly: true campaign_external_id: type: "integer" format: "int64" readOnly: true campaign_id_in_target: type: "string" readOnly: true channel_type: type: "string" readOnly: true profile_id: type: "string" readOnly: true createFacebookCampaign: required: - "account_id" - "campaign_type" - "name" - "profile_token" - "status" type: "object" properties: account_id: type: "integer" description: "Skai ID of the publisher account" profile_token: type: "string" description: "Skai profile token" name: type: "string" description: "Campaign name" status: oneOf: - $ref: "#/components/schemas/facebookCampaignStatus" budget: oneOf: - $ref: "#/components/schemas/facebookCampaignBudget" bid: oneOf: - $ref: "#/components/schemas/facebookCampaignBid" campaign_type: oneOf: - $ref: "#/components/schemas/facebookCampaignType" description: "The properties for the created campaign" example: status: "PAUSED" name: "test name" account_id: 234234234 profile_token: "352ab43a-5740-11eb-ae93-0242ac130002" campaign_type: objective: "WEBSITE_CLICKS" buying_type: "AUCTION" budget: type: "LIFETIME" budget: 100.54 facebookAdgroupSchedule: type: "object" properties: start_time: type: "string" description: "Adgroup start time" end_time: type: "string" description: "Adgroup end time" specific_time: $ref: "#/components/schemas/facebookAdgroupScheduling" description: "Adgroup schedule" facebookAdCreativeDTO: type: "object" properties: ad_type: oneOf: - $ref: "#/components/schemas/facebookAdType" post_type: oneOf: - $ref: "#/components/schemas/facebookAdPostType" post_text: type: "string" description: "Post text" description: type: "string" description: "Description" headline: type: "string" description: "Headline" call_to_action: oneOf: - $ref: "#/components/schemas/facebookAdCallToAction" link: type: "string" description: "Destination URL" caption: type: "string" description: "Display link" image_name: type: "string" description: "Image name" video_name: type: "string" description: "Video name" video_thumbnail_name: type: "string" description: "Video thumbnail name" page_id: type: "integer" description: "Page id" instagram_actor_id: type: "integer" description: "Instagram actor id" description: "Ad creative" AutomatedAction: type: "object" properties: id: type: "Integer" name: type: "string" status: type: "String" data_readiness: type: "boolean" hidden: type: "boolean" action_type: type: "String" enum: - "SET_BID_STRATEGY" - "SEND_EMAIL" notificationType: type: "string" enum: - "ALWAYS" - "ON_ANY_RESULT" - "ON_ERRORS" - "NEVER" recipients: type: "String" start_date: type: "String" timezone: type: "String" scheduling: type: "String" enum: - "DAILY" - "WEEKLY" - "MONTHLY" - "SPECIFIC_DATE" reportRequestDTO: $ref: "#/components/schemas/ReportRequest" parameters: type: "String" example: name: "Set up target CPA" status: "Active" data_readiness: "false" action_type: "SET_BID_STRATEGY" notificationType: "ALWAYS" recipients: "_devSocialPegasus@kenshoo.com" GetCampaignApiResponse: type: "object" properties: status: $ref: "#/components/schemas/ApiResponseStatus" entities: type: "array" readOnly: true items: $ref: "#/components/schemas/CampaignDTO" paging: $ref: "#/components/schemas/Paging" error_message: type: "string" readOnly: true asyncReportField: required: - "name" type: "object" properties: display_name: type: "string" description: "Can be provided to rename the field in the report" group: type: "string" description: "Can be provided to display the field group in case any field\ \ names exist under multiple groups" enum: - "Attributes" - "Performance" - "Dimensions" - "Conversion Types" - "Conversions" name: description: "Field name to include in the report" oneOf: - $ref: "#/components/schemas/asyncReportFusionField" - $ref: "#/components/schemas/asyncReportStructureField" - $ref: "#/components/schemas/asyncReportTrackingField" description: "Field properties" example: - name: "Profile ID" - name: "Ad Group Name" display_name: "AdGroup" - name: "leads" group: "Conversions" editFacebookCampaign: required: - "id" type: "object" properties: id: type: "integer" description: "Skai ID of the campaign" name: type: "string" description: "Campaign name" status: oneOf: - $ref: "#/components/schemas/facebookCampaignStatus" budget: oneOf: - $ref: "#/components/schemas/facebookCampaignBudget" bid: oneOf: - $ref: "#/components/schemas/facebookCampaignBid" campaign_type: oneOf: - $ref: "#/components/schemas/facebookCampaignType" description: "The properties for the updated campaign" example: id: 232608652 status: "ACTIVE" name: "test name 123345" ApiResponseAnnotationDTO: type: "object" properties: status: $ref: "#/components/schemas/ApiResponseStatus" entities: type: "array" readOnly: true items: $ref: "#/components/schemas/AnnotationDTO" error_message: type: "string" readOnly: true EntityResponse: type: "object" properties: id: type: "integer" format: "int64" success: type: "boolean" errors: type: "array" items: $ref: "#/components/schemas/ErrorField" ReportRecord: type: "object" properties: record_values: type: "object" additionalProperties: type: "string" readOnly: true example: - record_values: CampaignName: - group: "ATTRIBUTES" value: "My Campaign" Clicks: - group: "PERFORMANCE" value: "10" - record_values: CampaignName: - group: "ATTRIBUTES" value: "New Campaign via API_UPDATED_TWICE" Clicks: - group: "PERFORMANCE" value: "5" offlineConversions: type: "object" properties: id: type: "integer" name: type: "string" description: type: "string" idInTarget: type: "integer" fileName: type: "string" status: type: "string" enum: - "IN_PROGRESS" - "COMPLETED" - "FAILED" - "DELETED" errorMessage: type: "string" creationTime: type: "integer" lastRunTime: type: "integer" eventsReceived: type: "integer" matchRate: type: "integer" attributionRate: type: "string" enum: - "GOOD" - "LOW" - "NO_ATTRIBUTION" ReportSort: required: - "field" - "group" type: "object" properties: field: type: "string" description: "The field to be sorted" order: type: "string" enum: - "ASCENDING" - "DESCENDING" default: "ASCENDING" group: type: "string" description: "Each column belongs to a group. This list is partial - your\ \ account may have additional column groups. Group names are available\ \ in the getAvailableColumns endpoint" enum: - "ATTRIBUTES" - "PERFORMANCE" - "DIMENSIONS" - "CUSTOM_METRICS" - "CUSTOM_METRICS_PLUS" - "CONVERSION_TYPES" - "CHANNEL_CUSTOMER_CONVERSION_TYPES" - "PROXY_CUSTOMER_CONVERSION_TYPES" - "EXTERNAL_CUSTOMER_CONVERSION_TYPES" description: "The properties of the sort" example: field: "CampaignId" group: "ATTRIBUTES" order: "DESCENDING" facebookPromotedObject: type: "object" properties: page_id: type: "integer" description: "Page ID" product_catalog_id: type: "integer" description: "Product catalog ID" description: "Promoted object" responses: getFacebookAdEntitySuccessResponse: description: "The operation was completed successfully" content: application/json: schema: $ref: "#/components/schemas/getFacebookAdApiResponse" example: - status: "SUCCESS" entities: - id: 1234 name: "New Ad" ad_group_id: 12345 status: "ACTIVE" bid: bid_amount: 23.05 creative: ad_type: "PAGE_POST" post_type: "LINK" post_text: "ad body" description: "ad description" headline: "ad headline" call_to_action: "DOWNLOAD" link: "skai.io" caption: "skai.io" image_name: "theBestImage" video_name: "theBestVideo" page_id: 21 instagram_actor_id: 33 tracking: pixel_ids: - 4308 use_kenshoo_tracking: true paging: previous_page: null next_page: "MQ==" error_message: null getAdGroupEntitySuccessResponse: description: "The operation was completed successfully" content: application/json: schema: $ref: "#/components/schemas/getAdGroupApiResponse" example: status: "SUCCESS" entities: - id: 15324 channel_ad_group_id: "1674257480" name: "name" campaign_id: 106 channel_campaign_id: "60600800" profile_id: 12 channel_type: "Google" search_bid: 1.0 bidding_method: "NOT_SET" status: "ACTIVE" start_date: "2026-01-01" end_date: "9999-12-30" budget: 100.0 budget_type: "DAILY" paging: previous_page: null next_page: "MQ==" error_message: null getAdGroupBadRequest: description: "Bad request (usually indicates validation failure for client input)" content: application/json: schema: $ref: "#/components/schemas/getAdGroupApiResponse" example: status: "FAILED" entities: [] paging: null error_message: "The value in page_id is invalid" GetPortfolioEntitySuccessResponse: description: "The operation was completed successfully" content: application/json: schema: $ref: "#/components/schemas/GetPortfolioApiResponse" example: status: "SUCCESS" entities: - profile_id: 183 profile_name: "profile_name" id: 8574 portfolio_name: "name" description: "description" default_portfolio: false business_cycle: "Rolling" rolling_cycle_days: 5 rolling_cycle_start_date: "2026-01-01" weekly_cycle_start_day: null monthly_cycle_start_day: null budget: 50.0 next_cycle_budget: 100.0 first_monitor_metric: "CLICKS" first_monitor_value: 5.0 second_monitor_metric: "ROI" second_monitor_value: 12.0 rollover: 0.0 optimize_with_budget_caps: true optimize_with_keyword_bids: true optimize_for: "CLICKS" max_effective_bid: 5.0 bid_strategy_target: 0.0 publisher_bid_strategy: false signal_enhancement: [] budget_pacing: "pace evenly" day_parting_monday: "on" day_parting_tuesday: "off" day_parting_wednesday: "off" day_parting_thursday: "on" day_parting_friday: "on" day_parting_saturday: "on" day_parting_sunday: "on" allow_cycle_budget_rollover: true campaign_min_daily_budget: null campaign_max_daily_budget: null pause_campaign_setting: true paging: previous_page: null next_page: "MQ==" kenshoo_trace_id: null error_message: null ApiResponse: $ref: "#/components/schemas/ApiResponse" InternalServerError: description: "Server error" content: application/json: schema: $ref: "#/components/responses/ApiResponse" example: status: "FAILED" entities: - id: null success: false errors: - field_name: "ServerError" error: "Unexpected error occurred." parameters: {} heimdallTokenResponse: $ref: "#/components/schemas/heimdallTokenResponse" FetchExternalDataSuccessResponse: description: "successful operation" content: application/json: schema: type: "array" items: $ref: "#/components/schemas/PerformanceDataVO" getEntityTagsBadRequest: description: "Bad request (usually indicates validation failure for client input)" content: application/json: schema: $ref: "#/components/schemas/getEntityTagsApiResponse" example: status: "FAILED" entities: [] paging: null error_message: "The value in page_id is invalid" 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 GetCampaignEntitySuccessResponse: description: "The operation was completed successfully" content: application/json: schema: $ref: "#/components/schemas/GetCampaignApiResponse" example: status: "SUCCESS" entities: - id: 18204 channel_campaign_id: "7247592" profile_id: 96 channel_account_id: 718 channel_type: "Google" campaign_name: "name" budget: 1000.0 budget_type: "DEFAULT" search_bid: 0.0 content_bid: 0.0 status: "DELETED" order_line: null start_date: "2026-01-01" end_date: "9999-12-31" tracking_level: "KEYWORDS" campaign_type: null shopping_settings: {} paging: previous_page: null next_page: "MQ==" error_message: null getFacebookAdGroupEntitySuccessResponse: description: "The operation was completed successfully" content: application/json: schema: $ref: "#/components/schemas/getFacebookAdGroupApiResponse" example: - status: "SUCCESS" entities: - id: 100 name: "new name" status: "ACTIVE" targeting: targeting_id: 123 schedule: start_time: "2026-01-01 00:00" end_time: "2026-01-14 23:59" campaign_id: 1 paging: previous_page: null next_page: "MQ==" error_message: null GetPortfolioBadRequest: description: "Bad request (usually indicates validation failure for client input)" content: application/json: schema: $ref: "#/components/schemas/GetPortfolioApiResponse" example: status: "FAILED" entities: [] paging: null kenshoo_trace_id: null error_message: "The value in page_id is invalid" ProfileApiResponse: $ref: "#/components/schemas/ProfileResponse" getEntityTagsSuccessResponse: description: "The operation was completed successfully" content: application/json: schema: $ref: "#/components/schemas/getEntityTagsApiResponse" example: - id: 100 tags: - name: "tag1" category: "cat" - name: "tag2" category: "dog" EditProfileApiResponse: $ref: "#/components/schemas/EditProfileResponseApi" GetCampaignBadRequest: description: "Bad request (usually indicates validation failure for client input)" content: application/json: schema: $ref: "#/components/schemas/GetCampaignApiResponse" example: status: "FAILED" entities: [] paging: null error_message: "The value in page_id is invalid" getFacebookCampaignEntitySuccessResponse: description: "The operation was completed successfully" content: application/json: schema: $ref: "#/components/schemas/getFacebookCampaignApiResponse" example: status: "SUCCESS" entities: - id: 232608652 status: "ACTIVE" budget: type: "LIFETIME" budget: 100.0 name: "name" account_id: 234234234 profile_token: "352ab43a-5740-11eb-ae93-0242ac130002" campaign_type: objective: "WEBSITE_CLICKS" buying_type: "AUCTION" paging: previous_page: null next_page: "ZGZjY2UyMDQtOTQyNy00MDI3LThiMjctYWUxYzk5ZjIyMTg2" 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 BadRequest: description: "Bad request (usually indicates validation failure for client input)" content: application/json: schema: $ref: "#/components/responses/ApiResponse" example: status: "FAILED" entities: - id: null success: false errors: - field_name: "name" error: "ILLEGAL_NAME" getAdBadRequest: description: "Bad request (usually indicates validation failure for client input)" content: application/json: schema: $ref: "#/components/schemas/getAdApiResponse" example: status: "FAILED" entities: [] paging: null error_message: "The value in page_id is invalid" EntityResponse: $ref: "#/components/schemas/EntityResponse" 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 UnprocessableEntity: description: "Unprocessable entity (usually indicates validation failure for\ \ client input)" content: application/json: schema: $ref: "#/components/responses/ApiResponse" example: status: "FAILED" entities: - id: null success: false errors: - "name length must be between 0 and 255" EntitySuccessResponse: description: "The entity operations succeeded" content: application/json: schema: $ref: "#/components/responses/ApiResponse" example: status: "SUCCESS" entities: - id: 1234 success: true errors: [] getFacebookCampaignBadRequest: description: "Bad request (usually indicates validation failure for client input)" content: application/json: schema: $ref: "#/components/schemas/getFacebookCampaignApiResponse" example: status: "FAILED" entities: [] paging: null error_message: "The value in page_id is invalid" NotFound: description: "Item not found" content: application/json: schema: $ref: "#/components/responses/ApiResponse" example: status: "FAILED" entities: - id: null success: false errors: - field_name: "name" error: "NOT_FOUND" parameters: ProfileId: name: "profile_id" in: "path" description: "The id of profile to edit" required: true style: "simple" explode: false schema: type: "integer" campaignStatuses: name: "statuses" in: "query" description: "Filter by status.\nReturns campaigns whose statuses are included\ \ in the list.\n" required: false style: "form" explode: true schema: type: "array" items: type: "string" enum: - "Active" - "Approved" - "Paused" - "Deleted" - "Failed" - "Review" - "ToPause" - "ToDelete" - "FailedToPause" - "FailedToDelete" - "Unknown" - "Scheduled" - "Expired" - "Pending" - "Suspended" - "PausedBudgetDepleted" ksName: name: "ks" in: "query" description: "The KS this test belong to" required: true style: "form" explode: true schema: type: "string" example: "ks1234" channelCampaignIds: name: "channel_campaign_ids" in: "query" description: "Filter by channel campaign ID.\nReturns the campaigns whose channel\ \ campaign IDs are included in your list.\n" required: false style: "form" explode: true schema: maxItems: 500 type: "array" items: type: "string" kssocial: 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_. For Social\ \ ks=social" required: true style: "form" explode: true schema: type: "string" example: "1234" serverName: name: "server_name" in: "query" description: "The server name to get data for." required: false style: "form" explode: true schema: type: "string" useOriginalDeliveryMethod: name: "useOriginalDeliveryMethod" in: "query" description: "Set this parameter to true for the report to be delivered to its\ \ original destination (the one that is set in the report configuration in\ \ Skai, e.g. an email address or an FTP location)" required: false style: "form" explode: true schema: type: "boolean" example: "true" adGroupStatuses: name: "statuses" in: "query" description: "Filter by status.\nReturns the ad groups whose statuses are included\ \ in the list.\n" required: false style: "form" explode: true schema: type: "array" items: type: "string" enum: - "Active" - "Approved" - "Paused" - "Deleted" - "Failed" - "Review" - "ToPause" - "ToDelete" - "FailedToPause" - "FailedToDelete" - "Unknown" - "Scheduled" - "Expired" - "Pending" - "Disapproved" adIds: name: "ids" in: "query" description: "Filter by ad ID.\nReturns ad whose IDs are included in your list.\n" required: false style: "form" explode: true schema: maxItems: 500 type: "array" items: type: "string" lastUpdated: name: "last_updated" in: "query" description: "The last_updated to get data for." required: false style: "form" explode: true schema: type: "string" importType: name: "importType" in: "path" description: "a predefined list of existing supported import types" required: true style: "simple" explode: false schema: type: "string" enum: - "EXTERNAL_DATA" example: "EXTERNAL_DATA" adGroupChannelCampaignIds: name: "channel_campaign_ids" in: "query" description: "Filter by channel campaign ID.\nReturns the ad groups whose channel\ \ campaign IDs are included in your list.\n" required: false style: "form" explode: true schema: maxItems: 200 type: "array" items: type: "string" limit: name: "limit" in: "query" required: false style: "form" explode: true schema: type: "integer" format: "int32" adGroupCampaignIds: name: "campaign_ids" in: "query" description: "Filter by campaign ID.\nReturns the ad groups whose campaign IDs\ \ are included in your list.\n" required: false style: "form" explode: true schema: maxItems: 200 type: "array" items: type: "string" adGroupProfileId: name: "profile_id" in: "query" description: "Filter by profile ID.\nReturns the ad groups whose profile ID\ \ equals your profile ID.\n" required: false style: "form" explode: true schema: type: "string" reportId: name: "reportId" in: "path" description: "The id of report to retrieve" required: true style: "simple" explode: false schema: type: "integer" channelTypes: name: "channel_types" in: "query" description: "Filter by channel type.\nReturns the campaigns whose channel types\ \ are included in the list.\n" required: false style: "form" explode: true schema: type: "array" items: type: "string" enum: - "Google" - "Microsoft" - "Universal" - "Yandex" - "Baidu" - "YahooJapan" - "YahooGemini" - "Pinterest" - "Amazon" - "Facebook" - "Walmart" 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" SourceNames: name: "sourceName" in: "query" description: "The data source name. Currently, `FlexibleColumns` is the only\ \ supported value\n" required: true style: "form" explode: true schema: type: "string" queryFilter: name: "filters" in: "query" required: false style: "form" explode: true schema: type: "array" items: $ref: "#/components/schemas/QueryFilter" paging: name: "page" in: "query" required: false style: "form" explode: true schema: type: "string" sort: name: "sort" in: "query" required: false style: "form" explode: true schema: $ref: "#/components/schemas/Sort" adGroupIds: name: "ids" in: "query" description: "Filter by ad group ID.\nReturns ad groups whose IDs are included\ \ in your list.\n" required: false style: "form" explode: true schema: maxItems: 500 type: "array" items: type: "string" pageId: name: "page_id" in: "query" description: "Allows you to traverse pages by using the values for \"next_page\"\ \ and \"previous_page\" included under \"paging\" in the response.\nTo return\ \ the first page, do not include page_id in the request.\n" required: false style: "form" explode: true schema: type: "string" example: "Mg==" ColumnName: name: "columnName" in: "query" description: "Filter by column name. Returns the custom columns name equals\ \ this input.\n" required: false style: "form" explode: true schema: type: "string" jobId: name: "job_id" in: "query" description: "The ID of job which status is being updated" required: false style: "form" explode: true schema: type: "integer" format: "int32" channelAdGroupIds: name: "channel_ad_group_ids" in: "query" description: "Filter by channel ad group ID.\nReturns the ad groups whose channel\ \ ad group IDs are included in your list.\n" required: false style: "form" explode: true schema: maxItems: 500 type: "array" items: type: "string" profileId: name: "profile_id" in: "query" description: "Filter by profile ID.\nReturns the campaigns whose profile ID\ \ equals your profile ID.\n" required: false style: "form" explode: true schema: type: "string" ksV2: name: "ks" in: "query" required: true style: "form" explode: true schema: type: "string" example: "social" customMetricId: name: "custom_metric_id" in: "path" description: "The custom metric id to delete or save." required: true style: "simple" explode: false schema: type: "Long" serverType: name: "server_type" in: "query" description: "The server type to get data for." required: false style: "form" explode: true schema: type: "string" enum: - "SOCIAL" - "KS" 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" portfolioIds: name: "ids" in: "query" description: "Filter by portfolio ID.\nReturns the portfolios whose IDs are\ \ included in your list.\n" required: false style: "form" explode: true schema: maxItems: 500 type: "array" items: type: "string" testId: name: "testId" in: "path" description: "The id of test to retrieve" required: true style: "simple" explode: false schema: type: "integer" campaignIds: name: "ids" in: "query" description: "Filter by campaign ID.\nReturns the campaigns whose campaign IDs\ \ are included in your list.\n" required: false style: "form" explode: true schema: maxItems: 500 type: "array" items: type: "string" adGroupChannelTypes: name: "channel_types" in: "query" description: "Filter by channel type.\nReturns the ad groups whose channel types\ \ are included in the list.\n" required: false style: "form" explode: true schema: type: "array" items: type: "string" enum: - "Google" - "Microsoft" - "Universal" - "Yandex" - "Baidu" - "YahooJapan" - "YahooGemini" - "Pinterest" - "Amazon" - "Facebook" - "Walmart" requestBodies: editFacebookCampaigns: description: "The campaigns to update" content: application/json: schema: type: "array" items: $ref: "#/components/schemas/editFacebookCampaign" required: true CreateAdgroup: description: "The ad group details" content: application/json: schema: $ref: "#/components/schemas/CreateAdgroup" required: true CreateAnnotation: description: "The annotation details" content: application/json: schema: $ref: "#/components/schemas/AnnotationDTO" required: true reportsJobStatus: description: "Job status update request nody" content: application/json: schema: $ref: "#/components/schemas/reportsStatusUpdate" required: true asyncReportByIdRequest: description: "Configuration for the existing report run" content: application/json: schema: $ref: "#/components/schemas/asyncReportByIdRequest" required: true CreateFacebookAdgroup: description: "The ad group details" content: application/json: schema: $ref: "#/components/schemas/CreateFacebookAdgroup" required: true asyncReportRequest: description: "The report request to create" content: application/json: schema: $ref: "#/components/schemas/asyncReportRequest" required: true createFacebookCampaigns: description: "The campaigns to create" content: application/json: schema: type: "array" items: $ref: "#/components/schemas/createFacebookCampaign" required: true Profile: description: "The profile details" content: application/json: schema: $ref: "#/components/schemas/Profile" required: true createFacebookAd: description: "The ad details" content: application/json: schema: $ref: "#/components/schemas/createFacebookAd" required: true fetchNotificationsRequestBody: description: "The notification request body" content: application/json: schema: $ref: "#/components/schemas/notificationRequest" required: true ExcludeDates: description: "Dates to exclude in Epoch Long format" content: application/json: schema: $ref: "#/components/schemas/ExcludeDates" required: true createPortfolios: description: "The portfolios to create" content: application/json: schema: type: "array" items: $ref: "#/components/schemas/createPortfolio" required: true ImportExternalData: description: "The import details" content: application/json: schema: type: "object" properties: file: type: "string" format: "binary" required: true editFacebookAd: description: "The ad details" content: application/json: schema: $ref: "#/components/schemas/editFacebookAd" required: true editPortfolios: description: "The portfolios to update" content: application/json: schema: type: "array" items: $ref: "#/components/schemas/editPortfolio" required: true DynamicColumnsDeleteRequest: description: "Delete custom columns" content: application/json: schema: $ref: "#/components/schemas/DynamicColumnsToDelete" required: true Standalone: description: "The data of the newly created standalone agency" content: application/json: schema: $ref: "#/components/schemas/Standalone" required: true EditAdgroup: description: "The ad group details" content: application/json: schema: $ref: "#/components/schemas/EditAdgroup" required: true EditDynamicColumnsRequest: description: "Edit custom column" content: application/json: schema: $ref: "#/components/schemas/ExtraConfig" required: true SuggestionsContacts: description: "the contact details" content: application/json: schema: $ref: "#/components/schemas/SuggestionsContactsVO" required: true CreateTest: description: "The test details" content: application/json: schema: $ref: "#/components/schemas/TestDTO" required: true AsyncAnalysis: description: "Create async analysis report" content: application/json: schema: $ref: "#/components/schemas/AsyncAnalysis" required: true Productgroup: description: "The product group details" content: application/json: schema: $ref: "#/components/schemas/Productgroup" required: true createCampaigns: description: "The campaigns to create" content: application/json: schema: type: "array" items: $ref: "#/components/schemas/createCampaign" required: true ReportRequest: description: "The report request to create" content: application/json: schema: $ref: "#/components/schemas/ReportRequest" required: true editCampaigns: description: "The campaigns to update" content: application/json: schema: type: "array" items: $ref: "#/components/schemas/editCampaign" required: true EditProfile: description: "The profile details" content: application/json: schema: $ref: "#/components/schemas/EditProfile" required: true EditFacebookAdgroup: description: "The ad group details" content: application/json: schema: $ref: "#/components/schemas/EditFacebookAdgroup" required: true CreateAutomatedAction: description: "The automated action details" content: application/json: schema: $ref: "#/components/schemas/AutomatedAction" required: true ads: description: "The ads to create" content: application/json: schema: type: "array" items: $ref: "#/components/schemas/ad" required: true CreateSummaryReport: description: "The summary report details" content: application/json: schema: $ref: "#/components/schemas/SummaryReportDTO" required: true TestDataRequestBody: description: "The request details" content: application/json: schema: $ref: "#/components/schemas/TestDataRequestVO" required: true editEntityTagsRequest: description: "The entity tags edit request details" content: application/json: schema: $ref: "#/components/schemas/editEntityTagsRequest" required: true DynamicColumnsRequest: description: "Create custom columns" content: application/json: schema: $ref: "#/components/schemas/DynamicColumns" required: true 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"