curl \
-H "Authorization: Bearer API_KEY" \
-X GET "https://api.ayrshare.com/api/ads/google/campaigns/21534567890"
const API_KEY = "API_KEY";
fetch("https://api.ayrshare.com/api/ads/google/campaigns/21534567890", {
method: "GET",
headers: {
"Authorization": `Bearer ${API_KEY}`
}
})
.then((res) => res.json())
.then((json) => console.log(json))
.catch(console.error);
import requests
headers = {
"Authorization": "Bearer API_KEY",
}
r = requests.get("https://api.ayrshare.com/api/ads/google/campaigns/21534567890", headers=headers)
print(r.json())
<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.ayrshare.com/api/ads/google/campaigns/21534567890",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer API_KEY"
]
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error: " . $err;
} else {
echo $response;
}
?>
using System;
using System.Net.Http;
using System.Threading.Tasks;
class Program
{
static async Task Main(string[] args)
{
var client = new HttpClient();
client.DefaultRequestHeaders.Add("Authorization", "Bearer API_KEY");
var response = await client.GetAsync("https://api.ayrshare.com/api/ads/google/campaigns/21534567890");
var content = await response.Content.ReadAsStringAsync();
Console.WriteLine(content);
}
}
package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("GET", "https://api.ayrshare.com/api/ads/google/campaigns/21534567890", nil)
req.Header.Add("Authorization", "Bearer API_KEY")
resp, err := http.DefaultClient.Do(req)
if err != nil {
fmt.Println("Error:", err)
return
}
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
fmt.Println(string(body))
}
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class GetCampaign {
public static void main(String[] args) throws Exception {
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.ayrshare.com/api/ads/google/campaigns/21534567890"))
.header("Authorization", "Bearer API_KEY")
.GET()
.build();
HttpResponse<String> response = HttpClient.newHttpClient()
.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}
}
require 'net/http'
require 'uri'
uri = URI.parse('https://api.ayrshare.com/api/ads/google/campaigns/21534567890')
request = Net::HTTP::Get.new(uri)
request['Authorization'] = 'Bearer API_KEY'
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) do |http|
http.request(request)
end
puts response.body
{
"status": "success",
"platform": "google",
"campaignId": "21534567890",
"name": "Fall sale",
"campaignStatus": "active",
"platformStatus": "ENABLED",
"budget": { "amount": 25, "currency": "USD", "type": "daily" },
"ads": [
{
"adId": "71234567890",
"approvalStatus": "APPROVED_LIMITED",
"reviewStatus": "REVIEWED",
"policyTopics": [{ "topic": "ALCOHOL", "type": "LIMITED" }]
}
]
}
{
"status": "success",
"platform": "google",
"campaignId": "21534567891",
"name": "Fall sale PMax",
"campaignStatus": "paused",
"platformStatus": "PAUSED",
"budget": { "amount": 40, "currency": "USD", "type": "daily" },
"ads": [
{
"adId": "asset:6512345678~31234567890~HEADLINE",
"assetId": "31234567890",
"fieldType": "HEADLINE",
"primaryStatus": "ELIGIBLE",
"approvalStatus": "APPROVED",
"reviewStatus": "REVIEWED",
"policyTopics": []
}
]
}
{
"action": "ads",
"status": "error",
"code": 400,
"message": "Campaign not found or you are not authorized to access it."
}
Google Ads
Kampagne abrufen
Lesen Sie Status und Tagesbudget einer Google Ads-Kampagne sowie die Prüfung jeder ihrer Anzeigen oder Assets durch Google.
GET
/
ads
/
google
/
campaigns
/
{id}
curl \
-H "Authorization: Bearer API_KEY" \
-X GET "https://api.ayrshare.com/api/ads/google/campaigns/21534567890"
const API_KEY = "API_KEY";
fetch("https://api.ayrshare.com/api/ads/google/campaigns/21534567890", {
method: "GET",
headers: {
"Authorization": `Bearer ${API_KEY}`
}
})
.then((res) => res.json())
.then((json) => console.log(json))
.catch(console.error);
import requests
headers = {
"Authorization": "Bearer API_KEY",
}
r = requests.get("https://api.ayrshare.com/api/ads/google/campaigns/21534567890", headers=headers)
print(r.json())
<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.ayrshare.com/api/ads/google/campaigns/21534567890",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer API_KEY"
]
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error: " . $err;
} else {
echo $response;
}
?>
using System;
using System.Net.Http;
using System.Threading.Tasks;
class Program
{
static async Task Main(string[] args)
{
var client = new HttpClient();
client.DefaultRequestHeaders.Add("Authorization", "Bearer API_KEY");
var response = await client.GetAsync("https://api.ayrshare.com/api/ads/google/campaigns/21534567890");
var content = await response.Content.ReadAsStringAsync();
Console.WriteLine(content);
}
}
package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("GET", "https://api.ayrshare.com/api/ads/google/campaigns/21534567890", nil)
req.Header.Add("Authorization", "Bearer API_KEY")
resp, err := http.DefaultClient.Do(req)
if err != nil {
fmt.Println("Error:", err)
return
}
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
fmt.Println(string(body))
}
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class GetCampaign {
public static void main(String[] args) throws Exception {
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.ayrshare.com/api/ads/google/campaigns/21534567890"))
.header("Authorization", "Bearer API_KEY")
.GET()
.build();
HttpResponse<String> response = HttpClient.newHttpClient()
.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}
}
require 'net/http'
require 'uri'
uri = URI.parse('https://api.ayrshare.com/api/ads/google/campaigns/21534567890')
request = Net::HTTP::Get.new(uri)
request['Authorization'] = 'Bearer API_KEY'
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) do |http|
http.request(request)
end
puts response.body
{
"status": "success",
"platform": "google",
"campaignId": "21534567890",
"name": "Fall sale",
"campaignStatus": "active",
"platformStatus": "ENABLED",
"budget": { "amount": 25, "currency": "USD", "type": "daily" },
"ads": [
{
"adId": "71234567890",
"approvalStatus": "APPROVED_LIMITED",
"reviewStatus": "REVIEWED",
"policyTopics": [{ "topic": "ALCOHOL", "type": "LIMITED" }]
}
]
}
{
"status": "success",
"platform": "google",
"campaignId": "21534567891",
"name": "Fall sale PMax",
"campaignStatus": "paused",
"platformStatus": "PAUSED",
"budget": { "amount": 40, "currency": "USD", "type": "daily" },
"ads": [
{
"adId": "asset:6512345678~31234567890~HEADLINE",
"assetId": "31234567890",
"fieldType": "HEADLINE",
"primaryStatus": "ELIGIBLE",
"approvalStatus": "APPROVED",
"reviewStatus": "REVIEWED",
"policyTopics": []
}
]
}
{
"action": "ads",
"status": "error",
"code": 400,
"message": "Campaign not found or you are not authorized to access it."
}
Rufen Sie eine Google Ads-Kampagne ab, die Sie über Ayrshare erstellt haben: ihren Namen, Status, ihr Tagesbudget und die Prüfung jeder ihrer Anzeigen durch Google.
Eine abgelehnte Anzeige wird nicht ausgeliefert. Ändern Sie sie in Google Ads oder erstellen Sie eine neue Kampagne mit richtlinienkonformem Text.
Der Unternehmensname, die Logos und die Querformat-Logos sind Marken-Assets, die mit der Kampagne statt mit der Asset-Gruppe verknüpft sind. Sie haben hier ebenfalls eine Zeile, nach den Zeilen der Asset-Gruppe, mit der Kampagnen-ID als Schlüssel:
Header-Parameter
Pfad-Parameter
string
erforderlich
Die
campaignId, die beim Erstellen der Kampagne zurückgegeben wurde.Antwort
| Feld | Inhalt |
|---|---|
campaignId | Die ID der Kampagne |
name | Der Name der Kampagne |
campaignStatus | active oder paused |
platformStatus | Der eigene Status bei Google: ENABLED, PAUSED oder REMOVED für eine Kampagne, die in Google Ads gelöscht wurde. Eine entfernte Kampagne behält den letzten campaignStatus, den Sie über Ayrshare gesetzt haben |
budget | Das Tagesbudget: amount, currency (die Währung des Werbekontos) und type (daily) |
ads | Die Prüfung jeder Anzeige (Suche) oder jedes Assets (Performance Max) durch Google. Siehe Anzeigenprüfung |
Anzeigenprüfung
Google prüft jede neue Anzeige anhand seiner Werberichtlinien, in der Regel innerhalb eines Werktags. Jede Zeile inads enthält:
| Feld | Inhalt |
|---|---|
adId | Die ID der Anzeige, wie von der Erstellung zurückgegeben |
approvalStatus | Die Entscheidung von Google: APPROVED, APPROVED_LIMITED (mit Einschränkungen ausgeliefert, zum Beispiel nicht in einigen Ländern), AREA_OF_INTEREST_ONLY oder DISAPPROVED. Bis Google entscheidet, enthält das Feld einen anderen Wert, etwa UNKNOWN oder UNSPECIFIED |
reviewStatus | Der Stand der Prüfung, zum Beispiel REVIEW_IN_PROGRESS oder REVIEWED |
policyTopics | Die Richtlinien hinter einer Einschränkung oder Ablehnung: [{ "topic": "ALCOHOL", "type": "PROHIBITED" }] |
ads fehlt, wenn die Prüfung von Google in diesem Moment nicht gelesen werden konnte oder länger als einige Sekunden gedauert hat; rufen Sie die Kampagne später erneut ab.
Jede Nacht ruft Ayrshare außerdem den Prüfstatus jeder Anzeige ab und sendet einen ads-Webhook mit type: "reviewChanged", wenn sich die Entscheidung von Google ändert. Siehe Ads Action.
Asset-Prüfung
Google prüft jedes Asset einer Performance Max-Kampagne einzeln.ads enthält eine Zeile pro Asset, mit denselben Feldern wie bei einer Anzeigenprüfung und zusätzlich:
| Feld | Inhalt |
|---|---|
adId | Der Schlüssel des Assets in dieser Kampagne: asset:<assetGroupId>~<assetId>~<fieldType> oder bei einem Marken-Asset asset:<campaignId>~<assetId>~<fieldType> |
assetId | Die ID des Assets bei Google |
fieldType | Wo es verwendet wird, zum Beispiel HEADLINE, MARKETING_IMAGE, SQUARE_MARKETING_IMAGE, BUSINESS_NAME oder LOGO |
primaryStatus | Ob es ausgeliefert werden kann, zum Beispiel ELIGIBLE oder NOT_ELIGIBLE |
asset:<campaignId>~<assetId>~<fieldType>, wobei fieldType BUSINESS_NAME, LOGO oder LANDSCAPE_LOGO ist.
Fehler
| Code | Wann |
|---|---|
400 | Die Kampagne gehört nicht Ihnen, existiert nicht oder ist nicht mehr im Google Ads-Konto vorhanden. Auch wenn der verknüpfte Google-Nutzer keinen Zugriff auf das Werbekonto hat oder der Zugriff auf Google Ads widerrufen wurde. |
370 | Google konnte die Anfrage nicht abschließen. Versuchen Sie es erneut. |
curl \
-H "Authorization: Bearer API_KEY" \
-X GET "https://api.ayrshare.com/api/ads/google/campaigns/21534567890"
const API_KEY = "API_KEY";
fetch("https://api.ayrshare.com/api/ads/google/campaigns/21534567890", {
method: "GET",
headers: {
"Authorization": `Bearer ${API_KEY}`
}
})
.then((res) => res.json())
.then((json) => console.log(json))
.catch(console.error);
import requests
headers = {
"Authorization": "Bearer API_KEY",
}
r = requests.get("https://api.ayrshare.com/api/ads/google/campaigns/21534567890", headers=headers)
print(r.json())
<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.ayrshare.com/api/ads/google/campaigns/21534567890",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer API_KEY"
]
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error: " . $err;
} else {
echo $response;
}
?>
using System;
using System.Net.Http;
using System.Threading.Tasks;
class Program
{
static async Task Main(string[] args)
{
var client = new HttpClient();
client.DefaultRequestHeaders.Add("Authorization", "Bearer API_KEY");
var response = await client.GetAsync("https://api.ayrshare.com/api/ads/google/campaigns/21534567890");
var content = await response.Content.ReadAsStringAsync();
Console.WriteLine(content);
}
}
package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("GET", "https://api.ayrshare.com/api/ads/google/campaigns/21534567890", nil)
req.Header.Add("Authorization", "Bearer API_KEY")
resp, err := http.DefaultClient.Do(req)
if err != nil {
fmt.Println("Error:", err)
return
}
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
fmt.Println(string(body))
}
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class GetCampaign {
public static void main(String[] args) throws Exception {
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.ayrshare.com/api/ads/google/campaigns/21534567890"))
.header("Authorization", "Bearer API_KEY")
.GET()
.build();
HttpResponse<String> response = HttpClient.newHttpClient()
.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}
}
require 'net/http'
require 'uri'
uri = URI.parse('https://api.ayrshare.com/api/ads/google/campaigns/21534567890')
request = Net::HTTP::Get.new(uri)
request['Authorization'] = 'Bearer API_KEY'
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) do |http|
http.request(request)
end
puts response.body
{
"status": "success",
"platform": "google",
"campaignId": "21534567890",
"name": "Fall sale",
"campaignStatus": "active",
"platformStatus": "ENABLED",
"budget": { "amount": 25, "currency": "USD", "type": "daily" },
"ads": [
{
"adId": "71234567890",
"approvalStatus": "APPROVED_LIMITED",
"reviewStatus": "REVIEWED",
"policyTopics": [{ "topic": "ALCOHOL", "type": "LIMITED" }]
}
]
}
{
"status": "success",
"platform": "google",
"campaignId": "21534567891",
"name": "Fall sale PMax",
"campaignStatus": "paused",
"platformStatus": "PAUSED",
"budget": { "amount": 40, "currency": "USD", "type": "daily" },
"ads": [
{
"adId": "asset:6512345678~31234567890~HEADLINE",
"assetId": "31234567890",
"fieldType": "HEADLINE",
"primaryStatus": "ELIGIBLE",
"approvalStatus": "APPROVED",
"reviewStatus": "REVIEWED",
"policyTopics": []
}
]
}
{
"action": "ads",
"status": "error",
"code": 400,
"message": "Campaign not found or you are not authorized to access it."
}