> ## Documentation Index
> Fetch the complete documentation index at: https://www.ayrshare.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Campanhas de pesquisa do Google

> Crie uma campanha de pesquisa do Google Ads com orçamento, palavras-chave, texto do anúncio e segmentação por local em uma única solicitação

Crie uma campanha de pesquisa do Google Ads em uma única solicitação. A Ayrshare monta o orçamento, a campanha, um grupo de anúncios, suas palavras-chave, um anúncio responsivo de pesquisa e a segmentação por local, tudo de uma vez. Se o Google recusar qualquer parte, nada é criado.

A solicitação usa o formato compartilhado de [Campanhas de anúncios](https://www.ayrshare.com/docs/apis/ads/campaigns.md). Esta página aborda o que é específico do Google.

<ul>
  <li>Os anúncios do Google são ativados por conta. Entre em contato conosco para habilitá-los.</li>
  <li>Primeiro, vincule o Google Ads na página "Social Accounts" (Contas sociais). `accountId` é o ID de cliente do Google Ads com 10 dígitos, com ou sem hífens (`123-456-7890`).</li>
  <li>O usuário do Google que você vincular deve ter acesso direto à conta de anúncios. Contas que você acessa apenas por meio de uma conta de administrador não são listadas e ainda não podem ser usadas: adicione esse usuário à própria conta de anúncios. Contas de administrador também não são listadas: elas não podem conter campanhas.</li>
  <li>Novas campanhas começam como `paused`, a menos que você envie `status: "active"`.</li>
  <li>O orçamento é diário, na moeda da conta de anúncios. Não envie `budget.currency`: isso retorna `code: 101`.</li>
  <li>Gastos em outra moeda são convertidos em USD para cobrança pela taxa de câmbio do dia da Open Exchange Rates. Uma conta em uma moeda que não pode ser convertida retorna `code: 101` antes que qualquer coisa seja criada.</li>
  <li>Os anúncios são exibidos apenas na Pesquisa Google, não nos parceiros de pesquisa nem na Rede de Display.</li>
</ul>

> [!NOTE]
>
> **Acompanhamento de conversões.** `maximizeConversions` só funciona quando o acompanhamento de conversões está configurado na sua conta do Google Ads. A Ayrshare não faz essa configuração por você. Sem ele, use `maximizeClicks` ou `manualCpc`.

## Parâmetros de cabeçalho

**Authorization** `string` *required*

[API Key](https://www.ayrshare.com/docs/apis/overview.md#authorization) of the Primary Profile.

Format: `Authorization: Bearer API_KEY`
**Profile-Key** `string`

[Profile Key](https://www.ayrshare.com/docs/apis/overview.md#profile-key-format) of a User Profile.

Format: `Profile-Key: PROFILE_KEY`

**Idempotency-Key** `string` *required*

Um valor novo e único, como um UUID, para cada nova campanha. Repetir uma solicitação com a mesma chave retorna a primeira resposta e não cria nada novo. Quando uma criação falha antes de a Ayrshare enviar a campanha ao Google, a chave é liberada, então você pode corrigir a solicitação e tentar novamente com a mesma chave. Isso inclui um valor que a Ayrshare recusa (como uma estratégia de lances não suportada), uma conta em uma moeda que não pode ser convertida em USD e qualquer falha na verificação de conta que a Ayrshare faz primeiro, inclusive quando o Google a recusa. Uma criação que falha depois que a campanha foi enviada ao Google mantém sua resposta: tente novamente com uma nova chave.

## Parâmetros do corpo

Os campos compartilhados funcionam conforme descrito em [Campanhas de anúncios](https://www.ayrshare.com/docs/apis/ads/campaigns.md). No Google:

**type** `string` *required*

`search`.

**bidding.strategy** `string` *required*

`maximizeClicks`, `manualCpc` ou `maximizeConversions`. Qualquer outro valor retorna `code: 101`.

**euPoliticalAdvertising** `boolean` *required*

O Google exige essa declaração em todas as campanhas. Enquanto houver alguma campanha não declarada em uma conta, o Google rejeita qualquer alteração nas campanhas dessa conta.

**schedule** `object`

O Google programa dias inteiros no fuso horário da conta de anúncios. `start` começa às 00:00:00 do seu dia e `end` termina às 23:59:59 do seu dia; um horário enviado serve apenas para escolher o dia. `start` pode ser hoje, mas não um dia anterior. Para uma campanha de um dia, envie a mesma data em `start` e `end`. Um `end` em um dia anterior a `start` retorna `code: 101`.

**targeting** `object`

O Google associa os anúncios de pesquisa às pessoas pelo idioma do texto do seu anúncio, por isso não há configuração de idioma. Enviar `targeting.languages` retorna `code: 101`.

**propriedades**

**locations** `string[]`

IDs de local do Google, por exemplo `2840` para os Estados Unidos. Encontre os IDs na [lista de segmentações geográficas](https://developers.google.com/google-ads/api/data/geotargets) do Google. Omita para segmentar todos os locais.

**platformOptions.google** `object` *required*

**propriedades**

**finalUrl** `string` *required*

A página `http` ou `https` que o anúncio abre.

**headlines** `string[]` *required*

De 3 a 15 títulos, cada um com até 30 caracteres.

**descriptions** `string[]` *required*

De 2 a 4 descrições, cada uma com até 90 caracteres.

**path1** `string`

Primeira parte do caminho de exibição mostrado após o domínio, com até 15 caracteres.

**path2** `string`

Segunda parte do caminho de exibição, com até 15 caracteres. Requer `path1`.

**keywords** `object[]` *required*

Pelo menos uma palavra-chave: `{ "text": string, "matchType": "exact" | "phrase" | "broad" }`. `text` tem até 80 caracteres e 10 palavras.

**maxCpc** `number`

O valor máximo a pagar por clique, na moeda da conta. Obrigatório com `manualCpc`. Com `maximizeClicks`, limita cada lance. Não é aceito com `maximizeConversions`.

```bash cURL theme={"system"}
curl \
-H "Authorization: Bearer API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: 6f1c2d4e-0b7a-4c55-9a3e-2f8d1b7c9e10" \
-X POST https://api.ayrshare.com/api/ads/google/campaigns \
-d '{
  "accountId": "123-456-7890",
  "name": "Fall sale",
  "type": "search",
  "budget": { "amount": 25, "type": "daily" },
  "bidding": { "strategy": "maximizeClicks" },
  "targeting": { "locations": ["2840"] },
  "euPoliticalAdvertising": false,
  "platformOptions": {
    "google": {
      "finalUrl": "https://example.com/fall-sale",
      "headlines": ["Fall sale", "Shoes 30% off", "Free returns"],
      "descriptions": ["Every shoe 30% off this week.", "Free returns on every order."],
      "path1": "shoes",
      "keywords": [
        { "text": "running shoes", "matchType": "phrase" },
        { "text": "trail running shoes", "matchType": "exact" }
      ]
    }
  }
}'
```

```javascript JavaScript theme={"system"}
const API_KEY = "API_KEY";

fetch("https://api.ayrshare.com/api/ads/google/campaigns", {
  method: "POST",
  headers: {
    "Authorization": `Bearer ${API_KEY}`,
    "Content-Type": "application/json",
    "Idempotency-Key": "6f1c2d4e-0b7a-4c55-9a3e-2f8d1b7c9e10"
  },
  body: JSON.stringify({
    "accountId": "123-456-7890",
    "name": "Fall sale",
    "type": "search",
    "budget": { "amount": 25, "type": "daily" },
    "bidding": { "strategy": "maximizeClicks" },
    "targeting": { "locations": ["2840"] },
    "euPoliticalAdvertising": false,
    "platformOptions": {
      "google": {
        "finalUrl": "https://example.com/fall-sale",
        "headlines": ["Fall sale", "Shoes 30% off", "Free returns"],
        "descriptions": ["Every shoe 30% off this week.", "Free returns on every order."],
        "path1": "shoes",
        "keywords": [
          { "text": "running shoes", "matchType": "phrase" },
          { "text": "trail running shoes", "matchType": "exact" }
        ]
      }
    }
  })
})
  .then((res) => res.json())
  .then((json) => console.log(json))
  .catch(console.error);
```

```python Python theme={"system"}
import requests

headers = {
    "Authorization": "Bearer API_KEY",
    "Idempotency-Key": "6f1c2d4e-0b7a-4c55-9a3e-2f8d1b7c9e10",
}

payload = {
  "accountId": "123-456-7890",
  "name": "Fall sale",
  "type": "search",
  "budget": { "amount": 25, "type": "daily" },
  "bidding": { "strategy": "maximizeClicks" },
  "targeting": { "locations": ["2840"] },
  "euPoliticalAdvertising": False,
  "platformOptions": {
    "google": {
      "finalUrl": "https://example.com/fall-sale",
      "headlines": ["Fall sale", "Shoes 30% off", "Free returns"],
      "descriptions": ["Every shoe 30% off this week.", "Free returns on every order."],
      "path1": "shoes",
      "keywords": [
        { "text": "running shoes", "matchType": "phrase" },
        { "text": "trail running shoes", "matchType": "exact" }
      ]
    }
  }
}

r = requests.post("https://api.ayrshare.com/api/ads/google/campaigns", headers=headers, json=payload)

print(r.json())
```

```php PHP theme={"system"}
<?php
$payload = <<<'JSON'
{
  "accountId": "123-456-7890",
  "name": "Fall sale",
  "type": "search",
  "budget": { "amount": 25, "type": "daily" },
  "bidding": { "strategy": "maximizeClicks" },
  "targeting": { "locations": ["2840"] },
  "euPoliticalAdvertising": false,
  "platformOptions": {
    "google": {
      "finalUrl": "https://example.com/fall-sale",
      "headlines": ["Fall sale", "Shoes 30% off", "Free returns"],
      "descriptions": ["Every shoe 30% off this week.", "Free returns on every order."],
      "path1": "shoes",
      "keywords": [
        { "text": "running shoes", "matchType": "phrase" },
        { "text": "trail running shoes", "matchType": "exact" }
      ]
    }
  }
}
JSON;

$curl = curl_init();

curl_setopt_array($curl, [
    CURLOPT_URL => "https://api.ayrshare.com/api/ads/google/campaigns",
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST => "POST",
    CURLOPT_HTTPHEADER => [
        "Authorization: Bearer API_KEY",
        "Content-Type: application/json",
        "Idempotency-Key: 6f1c2d4e-0b7a-4c55-9a3e-2f8d1b7c9e10"
    ],
    CURLOPT_POSTFIELDS => $payload
]);

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

curl_close($curl);

if ($err) {
    echo "cURL Error: " . $err;
} else {
    echo $response;
}
?>
```

```csharp C# theme={"system"}
using System;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;

class Program
{
    static async Task Main(string[] args)
    {
        var client = new HttpClient();
        client.DefaultRequestHeaders.Add("Authorization", "Bearer API_KEY");
        client.DefaultRequestHeaders.Add("Idempotency-Key", "6f1c2d4e-0b7a-4c55-9a3e-2f8d1b7c9e10");

        var payload = """
            {
              "accountId": "123-456-7890",
              "name": "Fall sale",
              "type": "search",
              "budget": { "amount": 25, "type": "daily" },
              "bidding": { "strategy": "maximizeClicks" },
              "targeting": { "locations": ["2840"] },
              "euPoliticalAdvertising": false,
              "platformOptions": {
                "google": {
                  "finalUrl": "https://example.com/fall-sale",
                  "headlines": ["Fall sale", "Shoes 30% off", "Free returns"],
                  "descriptions": ["Every shoe 30% off this week.", "Free returns on every order."],
                  "path1": "shoes",
                  "keywords": [
                    { "text": "running shoes", "matchType": "phrase" },
                    { "text": "trail running shoes", "matchType": "exact" }
                  ]
                }
              }
            }
            """;

        var response = await client.PostAsync(
            "https://api.ayrshare.com/api/ads/google/campaigns",
            new StringContent(payload, Encoding.UTF8, "application/json"));
        var content = await response.Content.ReadAsStringAsync();

        Console.WriteLine(content);
    }
}
```

```go Go theme={"system"}
package main

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

func main() {
    payload := `{
  "accountId": "123-456-7890",
  "name": "Fall sale",
  "type": "search",
  "budget": { "amount": 25, "type": "daily" },
  "bidding": { "strategy": "maximizeClicks" },
  "targeting": { "locations": ["2840"] },
  "euPoliticalAdvertising": false,
  "platformOptions": {
    "google": {
      "finalUrl": "https://example.com/fall-sale",
      "headlines": ["Fall sale", "Shoes 30% off", "Free returns"],
      "descriptions": ["Every shoe 30% off this week.", "Free returns on every order."],
      "path1": "shoes",
      "keywords": [
        { "text": "running shoes", "matchType": "phrase" },
        { "text": "trail running shoes", "matchType": "exact" }
      ]
    }
  }
}`

    req, _ := http.NewRequest("POST", "https://api.ayrshare.com/api/ads/google/campaigns", strings.NewReader(payload))
    req.Header.Add("Authorization", "Bearer API_KEY")
    req.Header.Add("Content-Type", "application/json")
    req.Header.Add("Idempotency-Key", "6f1c2d4e-0b7a-4c55-9a3e-2f8d1b7c9e10")

    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))
}
```

```java Java theme={"system"}
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;

public class CreateCampaign {
    public static void main(String[] args) throws Exception {
        String payload = """
            {
              "accountId": "123-456-7890",
              "name": "Fall sale",
              "type": "search",
              "budget": { "amount": 25, "type": "daily" },
              "bidding": { "strategy": "maximizeClicks" },
              "targeting": { "locations": ["2840"] },
              "euPoliticalAdvertising": false,
              "platformOptions": {
                "google": {
                  "finalUrl": "https://example.com/fall-sale",
                  "headlines": ["Fall sale", "Shoes 30% off", "Free returns"],
                  "descriptions": ["Every shoe 30% off this week.", "Free returns on every order."],
                  "path1": "shoes",
                  "keywords": [
                    { "text": "running shoes", "matchType": "phrase" },
                    { "text": "trail running shoes", "matchType": "exact" }
                  ]
                }
              }
            }
            """;

        HttpRequest request = HttpRequest.newBuilder()
            .uri(URI.create("https://api.ayrshare.com/api/ads/google/campaigns"))
            .header("Authorization", "Bearer API_KEY")
            .header("Content-Type", "application/json")
            .header("Idempotency-Key", "6f1c2d4e-0b7a-4c55-9a3e-2f8d1b7c9e10")
            .POST(HttpRequest.BodyPublishers.ofString(payload))
            .build();

        HttpResponse<String> response = HttpClient.newHttpClient()
            .send(request, HttpResponse.BodyHandlers.ofString());
        System.out.println(response.body());
    }
}
```

```ruby Ruby theme={"system"}
require 'net/http'
require 'uri'

uri = URI.parse('https://api.ayrshare.com/api/ads/google/campaigns')

request = Net::HTTP::Post.new(uri)
request['Authorization'] = 'Bearer API_KEY'
request['Content-Type'] = 'application/json'
request['Idempotency-Key'] = '6f1c2d4e-0b7a-4c55-9a3e-2f8d1b7c9e10'
request.body = <<~JSON
  {
    "accountId": "123-456-7890",
    "name": "Fall sale",
    "type": "search",
    "budget": { "amount": 25, "type": "daily" },
    "bidding": { "strategy": "maximizeClicks" },
    "targeting": { "locations": ["2840"] },
    "euPoliticalAdvertising": false,
    "platformOptions": {
      "google": {
        "finalUrl": "https://example.com/fall-sale",
        "headlines": ["Fall sale", "Shoes 30% off", "Free returns"],
        "descriptions": ["Every shoe 30% off this week.", "Free returns on every order."],
        "path1": "shoes",
        "keywords": [
          { "text": "running shoes", "matchType": "phrase" },
          { "text": "trail running shoes", "matchType": "exact" }
        ]
      }
    }
  }
JSON

response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) do |http|
  http.request(request)
end

puts response.body
```

```json 200: Campaign Created theme={"system"}
{
  "status": "success",
  "platform": "google",
  "campaignId": "21534567890",
  "adGroupId": "16812345678",
  "adId": "71234567890",
  "campaignStatus": "paused"
}
```

```json 400: Too Few Headlines theme={"system"}
{
  "action": "request",
  "status": "error",
  "code": 101,
  "message": "Missing or incorrect parameters. Please verify with the docs. https://www.ayrshare.com/docs/apis",
  "details": "platformOptions.google.headlines: Supply at least 3 headlines."
}
```

## Erros

| Código | Quando |
| - | - |
| `101` | Um campo está ausente ou é inválido. `details` informa qual. |
| `205` | O Google recusou a solicitação: por exemplo, a conta já tem uma campanha com esse nome ou o texto do anúncio viola as políticas de publicidade do Google. `details` informa o que alterar. |
| `400` | O usuário do Google que você vinculou não pode acessar esta conta de anúncios, o acesso ao Google Ads foi revogado, a campanha não é sua ou uma alteração se destina a uma campanha removida no Google Ads. |
| `370` | O Google não conseguiu concluir a solicitação ou ainda não aprovou o acesso da Ayrshare. `details` inclui o ID da solicitação do Google, quando houver. Uma criação que retorna `370` porque a resposta do Google se perdeu ainda pode ter criado a campanha. O Google recusa uma segunda campanha com o mesmo nome em uma conta, então tentar novamente com o mesmo `name` retorna `205` em vez de criar uma duplicata. |


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.