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
Obter campanha
Leia o status e o orçamento diário de uma campanha do Google Ads, e a análise do Google de cada um dos seus anúncios ou recursos.
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."
}
Obtenha uma campanha do Google Ads que você criou pela Ayrshare: nome, status, orçamento diário e a análise do Google de cada um dos seus anúncios.
Um anúncio reprovado não é veiculado. Altere-o no Google Ads ou crie uma nova campanha com um texto que esteja em conformidade.
O nome da empresa, os logotipos e os logotipos horizontais são recursos de marca, vinculados à campanha e não ao grupo de recursos. Eles também têm uma linha aqui, depois das linhas do grupo de recursos, com o ID da campanha como chave:
Parâmetros de cabeçalho
Parâmetros de caminho
string
obrigatório
O
campaignId retornado quando você criou a campanha.Resposta
| Campo | O que contém |
|---|---|
campaignId | O ID da campanha |
name | O nome da campanha |
campaignStatus | active ou paused |
platformStatus | O status próprio do Google: ENABLED, PAUSED ou REMOVED para uma campanha excluída no Google Ads. Uma campanha removida mantém o último campaignStatus que você definiu pela Ayrshare |
budget | O orçamento diário: amount, currency (a moeda da conta de anúncios) e type (daily) |
ads | A análise do Google de cada anúncio (Pesquisa) ou recurso (Performance Max). Consulte Análise de anúncios |
Análise de anúncios
O Google analisa cada novo anúncio em relação às suas políticas de publicidade, geralmente em até um dia útil. Cada linha emads contém:
| Campo | O que contém |
|---|---|
adId | O ID do anúncio, conforme retornado pela criação |
approvalStatus | A decisão do Google: APPROVED, APPROVED_LIMITED (exibido com limitações, por exemplo, não em alguns países), AREA_OF_INTEREST_ONLY ou DISAPPROVED. Até o Google decidir, contém outro valor, como UNKNOWN ou UNSPECIFIED |
reviewStatus | Em que ponto está a análise, por exemplo, REVIEW_IN_PROGRESS ou REVIEWED |
policyTopics | As políticas por trás de uma limitação ou reprovação: [{ "topic": "ALCOHOL", "type": "PROHIBITED" }] |
ads é omitido quando não foi possível ler a análise do Google naquele momento, ou quando ela levou mais do que alguns segundos; leia a campanha novamente mais tarde.
Todas as noites, a Ayrshare também verifica cada análise e envia um webhook ads com type: "reviewChanged" quando a decisão do Google muda. Consulte Ads Action.
Análise de recursos
O Google analisa individualmente cada recurso de uma campanha Performance Max.ads contém uma linha por recurso, com os mesmos campos de uma análise de anúncio, além de:
| Campo | O que contém |
|---|---|
adId | A chave do recurso nesta campanha: asset:<assetGroupId>~<assetId>~<fieldType>, ou asset:<campaignId>~<assetId>~<fieldType> para um recurso de marca |
assetId | O ID do Google para o recurso |
fieldType | Onde ele é usado, por exemplo HEADLINE, MARKETING_IMAGE, SQUARE_MARKETING_IMAGE, BUSINESS_NAME ou LOGO |
primaryStatus | Se ele pode ser veiculado, por exemplo ELIGIBLE ou NOT_ELIGIBLE |
asset:<campaignId>~<assetId>~<fieldType>, em que fieldType é BUSINESS_NAME, LOGO ou LANDSCAPE_LOGO.
Erros
| Código | Quando |
|---|---|
400 | A campanha não é sua, não existe ou não está mais na conta do Google Ads. Também quando o usuário do Google que você vinculou não pode acessar a conta de anúncios ou o acesso ao Google Ads foi revogado. |
370 | O Google não conseguiu concluir a solicitação. Tente novamente. |
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."
}