> ## 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.

# Actualizar campaña

> Inicia o pausa una campaña de Google Ads, cámbiale el nombre o modifica su presupuesto diario o su fecha de finalización.

Inicia o pausa una campaña de Google Ads que creaste a través de Ayrshare, cámbiale el nombre o modifica su presupuesto diario o su fecha de finalización.

<ul>
  <li>Envía al menos un campo. Todos los cambios de una solicitud se aplican juntos o no se aplica ninguno.</li>
  <li>No puedes cambiar `type`, `accountId` ni `euPoliticalAdvertising` después de crear la campaña.</li>
  <li>No hace falta `Idempotency-Key`: enviar el mismo cambio otra vez establece los mismos valores.</li>
  <li>La respuesta devuelve el `campaignStatus` de la campaña. Usa [Obtener campaña](https://www.ayrshare.com/docs/apis/ads/google/get-campaign.md) para leer los demás campos.</li>
</ul>

## Parámetros del encabezado

**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`

## Parámetros de ruta

**id** `string` *required*

El `campaignId` que se devolvió al crear la campaña.

## Parámetros del cuerpo

**status** `string`

`active` o `paused`. Una solicitud que solo envía `status: "paused"` no se bloquea cuando Ayrshare ha pausado los anuncios en Google.

**name** `string`

El nuevo nombre de la campaña, de 1 a 255 caracteres, sin saltos de línea.

**budget** `object`

`{ "amount": number }`: el nuevo importe que se gastará por día, en la moneda de la cuenta publicitaria, con dos decimales como máximo. Una campaña cuyo presupuesto compartiste con otras campañas en Google Ads responde `code: 101`: modifica el presupuesto compartido en Google Ads.

**schedule** `object`

`{ "end": string }`: la nueva fecha de finalización, como fecha ISO (`2026-11-30`) o fecha y hora. Google programa días completos en la zona horaria de la cuenta publicitaria, así que la campaña se detiene a las 23:59:59 de ese día. Puede ser el mismo día del inicio, pero no uno anterior.

## Errores

| Código | Cuándo |
| - | - |
| `101` | No se envió ningún campo, un campo no es válido o el presupuesto se comparte con otras campañas. `details` indica cuál. |
| `205` | Google rechazó el cambio. `details` indica qué cambiar. |
| `400` | La campaña no es tuya, no existe o se eliminó en Google Ads. También cuando el usuario de Google que vinculaste no puede acceder a la cuenta publicitaria o se revocó el acceso a Google Ads. |
| `370` | Google no pudo completar la solicitud. Inténtalo de nuevo. |

```bash cURL theme={"system"}
curl \
-H "Authorization: Bearer API_KEY" \
-H "Content-Type: application/json" \
-X PUT https://api.ayrshare.com/api/ads/google/campaigns/21534567890 \
-d '{"status": "active", "budget": { "amount": 30 }}'
```

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

fetch("https://api.ayrshare.com/api/ads/google/campaigns/21534567890", {
  method: "PUT",
  headers: {
    "Authorization": `Bearer ${API_KEY}`,
    "Content-Type": "application/json"
  },
  body: JSON.stringify({"status": "active", "budget": { "amount": 30 }})
})
  .then((res) => res.json())
  .then((json) => console.log(json))
  .catch(console.error);
```

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

headers = {
    "Authorization": "Bearer API_KEY",
}

payload = {"status": "active", "budget": { "amount": 30 }}

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

print(r.json())
```

```php PHP theme={"system"}
<?php
$payload = <<<'JSON'
{"status": "active", "budget": { "amount": 30 }}
JSON;

$curl = curl_init();

curl_setopt_array($curl, [
    CURLOPT_URL => "https://api.ayrshare.com/api/ads/google/campaigns/21534567890",
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST => "PUT",
    CURLOPT_HTTPHEADER => [
        "Authorization: Bearer API_KEY",
        "Content-Type: application/json"
    ],
    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");

        var payload = """
            {"status": "active", "budget": { "amount": 30 }}
            """;

        var response = await client.PutAsync(
            "https://api.ayrshare.com/api/ads/google/campaigns/21534567890",
            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 := `{"status": "active", "budget": { "amount": 30 }}`

    req, _ := http.NewRequest("PUT", "https://api.ayrshare.com/api/ads/google/campaigns/21534567890", strings.NewReader(payload))
    req.Header.Add("Authorization", "Bearer API_KEY")
    req.Header.Add("Content-Type", "application/json")

    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 UpdateCampaign {
    public static void main(String[] args) throws Exception {
        String payload = """
            {"status": "active", "budget": { "amount": 30 }}
            """;

        HttpRequest request = HttpRequest.newBuilder()
            .uri(URI.create("https://api.ayrshare.com/api/ads/google/campaigns/21534567890"))
            .header("Authorization", "Bearer API_KEY")
            .header("Content-Type", "application/json")
            .PUT(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/21534567890')

request = Net::HTTP::Put.new(uri)
request['Authorization'] = 'Bearer API_KEY'
request['Content-Type'] = 'application/json'
request.body = <<~JSON
  {"status": "active", "budget": { "amount": 30 }}
JSON

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

puts response.body
```

```json 200: Success theme={"system"}
{
  "status": "success",
  "platform": "google",
  "campaignId": "21534567890",
  "campaignStatus": "active"
}
```

```json 400: Shared Budget 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": "This campaign uses a budget shared with other campaigns in Google Ads. Change the shared budget in Google Ads."
}
```


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