curl --request POST \
--url https://api.adside.ai/v1/workspaces/{workspaceId}/linkedin/campaigns/search \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"account_id": "<string>",
"campaign_ids": [
"<string>"
],
"statuses": [],
"campaign_group_ids": [
"<string>"
],
"types": [],
"page_size": 100,
"page_token": "<string>"
}
'import requests
url = "https://api.adside.ai/v1/workspaces/{workspaceId}/linkedin/campaigns/search"
payload = {
"account_id": "<string>",
"campaign_ids": ["<string>"],
"statuses": [],
"campaign_group_ids": ["<string>"],
"types": [],
"page_size": 100,
"page_token": "<string>"
}
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({
account_id: '<string>',
campaign_ids: ['<string>'],
statuses: [],
campaign_group_ids: ['<string>'],
types: [],
page_size: 100,
page_token: '<string>'
})
};
fetch('https://api.adside.ai/v1/workspaces/{workspaceId}/linkedin/campaigns/search', 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.adside.ai/v1/workspaces/{workspaceId}/linkedin/campaigns/search",
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([
'account_id' => '<string>',
'campaign_ids' => [
'<string>'
],
'statuses' => [
],
'campaign_group_ids' => [
'<string>'
],
'types' => [
],
'page_size' => 100,
'page_token' => '<string>'
]),
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.adside.ai/v1/workspaces/{workspaceId}/linkedin/campaigns/search"
payload := strings.NewReader("{\n \"account_id\": \"<string>\",\n \"campaign_ids\": [\n \"<string>\"\n ],\n \"statuses\": [],\n \"campaign_group_ids\": [\n \"<string>\"\n ],\n \"types\": [],\n \"page_size\": 100,\n \"page_token\": \"<string>\"\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.adside.ai/v1/workspaces/{workspaceId}/linkedin/campaigns/search")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"account_id\": \"<string>\",\n \"campaign_ids\": [\n \"<string>\"\n ],\n \"statuses\": [],\n \"campaign_group_ids\": [\n \"<string>\"\n ],\n \"types\": [],\n \"page_size\": 100,\n \"page_token\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.adside.ai/v1/workspaces/{workspaceId}/linkedin/campaigns/search")
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 \"account_id\": \"<string>\",\n \"campaign_ids\": [\n \"<string>\"\n ],\n \"statuses\": [],\n \"campaign_group_ids\": [\n \"<string>\"\n ],\n \"types\": [],\n \"page_size\": 100,\n \"page_token\": \"<string>\"\n}"
response = http.request(request)
puts response.read_bodyCampaigns search
Search campaigns with multiple filters (IDs, statuses, types, campaign groups). More flexible than adside linkedin campaigns list for complex queries. As there, servingStatuses — not status — says whether a campaign is actually delivering. VOCABULARY: the API’s campaign is what Campaign Manager shows as “Ad set” (campaignGroup=“Campaign”, campaign=“Ad set”, creative=“Ad”). Say both names when reporting to a user, or they will look in the wrong tab and think nothing happened.
CLI: adside linkedin campaigns search
curl --request POST \
--url https://api.adside.ai/v1/workspaces/{workspaceId}/linkedin/campaigns/search \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"account_id": "<string>",
"campaign_ids": [
"<string>"
],
"statuses": [],
"campaign_group_ids": [
"<string>"
],
"types": [],
"page_size": 100,
"page_token": "<string>"
}
'import requests
url = "https://api.adside.ai/v1/workspaces/{workspaceId}/linkedin/campaigns/search"
payload = {
"account_id": "<string>",
"campaign_ids": ["<string>"],
"statuses": [],
"campaign_group_ids": ["<string>"],
"types": [],
"page_size": 100,
"page_token": "<string>"
}
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({
account_id: '<string>',
campaign_ids: ['<string>'],
statuses: [],
campaign_group_ids: ['<string>'],
types: [],
page_size: 100,
page_token: '<string>'
})
};
fetch('https://api.adside.ai/v1/workspaces/{workspaceId}/linkedin/campaigns/search', 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.adside.ai/v1/workspaces/{workspaceId}/linkedin/campaigns/search",
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([
'account_id' => '<string>',
'campaign_ids' => [
'<string>'
],
'statuses' => [
],
'campaign_group_ids' => [
'<string>'
],
'types' => [
],
'page_size' => 100,
'page_token' => '<string>'
]),
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.adside.ai/v1/workspaces/{workspaceId}/linkedin/campaigns/search"
payload := strings.NewReader("{\n \"account_id\": \"<string>\",\n \"campaign_ids\": [\n \"<string>\"\n ],\n \"statuses\": [],\n \"campaign_group_ids\": [\n \"<string>\"\n ],\n \"types\": [],\n \"page_size\": 100,\n \"page_token\": \"<string>\"\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.adside.ai/v1/workspaces/{workspaceId}/linkedin/campaigns/search")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"account_id\": \"<string>\",\n \"campaign_ids\": [\n \"<string>\"\n ],\n \"statuses\": [],\n \"campaign_group_ids\": [\n \"<string>\"\n ],\n \"types\": [],\n \"page_size\": 100,\n \"page_token\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.adside.ai/v1/workspaces/{workspaceId}/linkedin/campaigns/search")
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 \"account_id\": \"<string>\",\n \"campaign_ids\": [\n \"<string>\"\n ],\n \"statuses\": [],\n \"campaign_group_ids\": [\n \"<string>\"\n ],\n \"types\": [],\n \"page_size\": 100,\n \"page_token\": \"<string>\"\n}"
response = http.request(request)
puts response.read_bodyAuthorizations
A personal API key (adside_pat_…) or a token from adside login. Either carries the permissions of the person it belongs to.
Path Parameters
1Body
LinkedIn Ad Account ID. Omit it: it defaults to the account this workspace is connected to, and any other account is refused.
List of campaign IDs to fetch
Filter by multiple statuses
ACTIVE, PAUSED, ARCHIVED, COMPLETED, CANCELED, DRAFT, PENDING_DELETION, REMOVED Filter by multiple campaign group IDs
Filter by multiple campaign types
TEXT_AD, SPONSORED_UPDATES, SPONSORED_INMAILS, DYNAMIC Sort order by campaign ID
ASCENDING, DESCENDING Page size
1 <= x <= 1000Cursor token for next page
Response
Success