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

# Mettre à jour une campagne

> Démarrez ou mettez en pause une campagne Google Ads, renommez-la, ou modifiez son budget quotidien ou sa date de fin.

Démarrez ou mettez en pause une campagne Google Ads que vous avez créée via Ayrshare, renommez-la, ou modifiez son budget quotidien ou sa date de fin.

<ul>
  <li>Envoyez au moins un champ. Toutes les modifications d'une même requête s'appliquent ensemble ou pas du tout.</li>
  <li>Vous ne pouvez pas modifier `type`, `accountId` ni `euPoliticalAdvertising` après avoir créé la campagne.</li>
  <li>Aucun `Idempotency-Key` n'est nécessaire : renvoyer la même modification définit les mêmes valeurs.</li>
  <li>La réponse renvoie le `campaignStatus` de la campagne. Utilisez [Obtenir une campagne](https://www.ayrshare.com/docs/apis/ads/google/get-campaign.md) pour lire les autres champs.</li>
</ul>

## Paramètres d'en-tête

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

## Paramètres de chemin

**id** `string` *required*

Le `campaignId` renvoyé lors de la création de la campagne.

## Paramètres du corps

**status** `string`

`active` ou `paused`. Une requête qui envoie uniquement `status: "paused"` n'est pas bloquée lorsqu'Ayrshare a mis en pause les annonces sur Google.

**name** `string`

Le nouveau nom de la campagne, de 1 à 255 caractères, sans saut de ligne.

**budget** `object`

`{ "amount": number }` : le nouveau montant à dépenser par jour, dans la devise du compte publicitaire, avec au plus deux décimales. Pour une campagne dont vous avez partagé le budget avec d'autres campagnes dans Google Ads, la requête renvoie `code: 101` : modifiez le budget partagé dans Google Ads.

**schedule** `object`

`{ "end": string }` : la nouvelle date de fin, sous forme de date ISO (`2026-11-30`) ou de date et heure. Google planifie des journées entières dans le fuseau horaire du compte publicitaire : la campagne s'arrête donc à 23:59:59 ce jour-là. Elle peut tomber le même jour que le début, mais pas avant.

## Erreurs

| Code | Quand |
| - | - |
| `101` | Aucun champ n'a été envoyé, un champ est invalide, ou le budget est partagé avec d'autres campagnes. `details` indique lequel. |
| `205` | Google a refusé la modification. `details` indique ce qu'il faut modifier. |
| `400` | La campagne ne vous appartient pas, n'existe pas ou a été supprimée dans Google Ads. Également lorsque l'utilisateur Google que vous avez associé ne peut pas accéder au compte publicitaire, ou que l'accès à Google Ads a été révoqué. |
| `370` | Google n'a pas pu traiter la requête. Réessayez. |

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