Saltar al contenido principal
POST
/
public
/
v1
/
toptimize
/
forecasting
/
campaign
[BETA] Campaign Performance Forecasts
curl --request POST \
  --url https://api.topsort.com/public/v1/toptimize/forecasting/campaign \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "campaignFormat": "listing",
  "dailyBudget": 123,
  "dateRange": {
    "startDate": "2023-12-25",
    "endDate": "2023-12-25"
  },
  "targetRoas": 123,
  "campaignType": "autobidding",
  "products": [
    {
      "id": "<string>"
    }
  ],
  "triggers": [
    {
      "value": "<string>"
    }
  ],
  "targets": []
}
'
import requests

url = "https://api.topsort.com/public/v1/toptimize/forecasting/campaign"

payload = {
"campaignFormat": "listing",
"dailyBudget": 123,
"dateRange": {
"startDate": "2023-12-25",
"endDate": "2023-12-25"
},
"targetRoas": 123,
"campaignType": "autobidding",
"products": [{ "id": "<string>" }],
"triggers": [{ "value": "<string>" }],
"targets": []
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}

response = requests.post(url, json=payload, headers=headers)

print(response.text)
const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
campaignFormat: 'listing',
dailyBudget: 123,
dateRange: {startDate: '2023-12-25', endDate: '2023-12-25'},
targetRoas: 123,
campaignType: 'autobidding',
products: [{id: '<string>'}],
triggers: [{value: '<string>'}],
targets: []
})
};

fetch('https://api.topsort.com/public/v1/toptimize/forecasting/campaign', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));
<?php

$curl = curl_init();

curl_setopt_array($curl, [
CURLOPT_URL => "https://api.topsort.com/public/v1/toptimize/forecasting/campaign",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'campaignFormat' => 'listing',
'dailyBudget' => 123,
'dateRange' => [
'startDate' => '2023-12-25',
'endDate' => '2023-12-25'
],
'targetRoas' => 123,
'campaignType' => 'autobidding',
'products' => [
[
'id' => '<string>'
]
],
'triggers' => [
[
'value' => '<string>'
]
],
'targets' => [

]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
package main

import (
"fmt"
"strings"
"net/http"
"io"
)

func main() {

url := "https://api.topsort.com/public/v1/toptimize/forecasting/campaign"

payload := strings.NewReader("{\n \"campaignFormat\": \"listing\",\n \"dailyBudget\": 123,\n \"dateRange\": {\n \"startDate\": \"2023-12-25\",\n \"endDate\": \"2023-12-25\"\n },\n \"targetRoas\": 123,\n \"campaignType\": \"autobidding\",\n \"products\": [\n {\n \"id\": \"<string>\"\n }\n ],\n \"triggers\": [\n {\n \"value\": \"<string>\"\n }\n ],\n \"targets\": []\n}")

req, _ := http.NewRequest("POST", url, payload)

req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")

res, _ := http.DefaultClient.Do(req)

defer res.Body.Close()
body, _ := io.ReadAll(res.Body)

fmt.Println(string(body))

}
HttpResponse<String> response = Unirest.post("https://api.topsort.com/public/v1/toptimize/forecasting/campaign")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"campaignFormat\": \"listing\",\n \"dailyBudget\": 123,\n \"dateRange\": {\n \"startDate\": \"2023-12-25\",\n \"endDate\": \"2023-12-25\"\n },\n \"targetRoas\": 123,\n \"campaignType\": \"autobidding\",\n \"products\": [\n {\n \"id\": \"<string>\"\n }\n ],\n \"triggers\": [\n {\n \"value\": \"<string>\"\n }\n ],\n \"targets\": []\n}")
.asString();
require 'uri'
require 'net/http'

url = URI("https://api.topsort.com/public/v1/toptimize/forecasting/campaign")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"campaignFormat\": \"listing\",\n \"dailyBudget\": 123,\n \"dateRange\": {\n \"startDate\": \"2023-12-25\",\n \"endDate\": \"2023-12-25\"\n },\n \"targetRoas\": 123,\n \"campaignType\": \"autobidding\",\n \"products\": [\n {\n \"id\": \"<string>\"\n }\n ],\n \"triggers\": [\n {\n \"value\": \"<string>\"\n }\n ],\n \"targets\": []\n}"

response = http.request(request)
puts response.read_body
{
  "forecasts": {
    "impressions": {
      "forecastValue": 150000,
      "forecastIntervalMin": 142000,
      "forecastIntervalMax": 158000
    },
    "clicks": {
      "forecastValue": 12500,
      "forecastIntervalMin": 11800,
      "forecastIntervalMax": 13200
    },
    "purchases": {
      "forecastValue": 875,
      "forecastIntervalMin": 820,
      "forecastIntervalMax": 930
    },
    "sales": {
      "forecastValue": 52500,
      "forecastIntervalMin": 49000,
      "forecastIntervalMax": 56000
    },
    "adSpend": {
      "forecastValue": 10500,
      "forecastIntervalMin": 10000,
      "forecastIntervalMax": 11000
    }
  }
}
{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}

Autorizaciones

Authorization
string
header
requerido

A valid API key generated in Topsort's UI. Use the TSE API key if calling auctions or events API, otherwise use the TSC API key.

Cuerpo

application/json

Public API request for a listing campaign performance forecast.

campaignFormat
enum<string>
requerido

Campaign format type. Currently only 'listing' is supported.

Opciones disponibles:
listing
dailyBudget
number
requerido

Daily budget for the campaign

dateRange
PublicDateRange · object
requerido

Campaign date range

targetRoas
number
requerido

Target Return on Ad Spend

campaignType
enum<string>
requerido

Campaign type (required)

Opciones disponibles:
autobidding
products
PublicProductRequest · object[]
requerido

List of products in the campaign (required)

Minimum array length: 1
triggers
PublicTriggerRequest · object[]

List of campaign triggers (optional, defaults to empty list)

targets
enum<string>[] | null

Optional list of target variables to forecast. If not provided, all targets will be forecasted.

Opciones disponibles:
ad_spend,
clicks,
impressions,
purchases,
sales

Respuesta

Successful Response

forecasts
PublicCampaignForecastMetrics · object
requerido

Campaign performance forecasts