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

# Mettre à jour le statut d'une campagne

> Change le statut d'une campagne pour contrôler le flux des appels

## Paramètres

<ParamField path="campaign_id" type="string" required>
  Identifiant unique de la campagne
</ParamField>

## Corps de la requête

<ParamField body="status" type="string" required>
  Nouveau statut de la campagne

  Valeurs possibles:

  * `active` - Activer la campagne et reprendre les appels
  * `paused` - Mettre en pause la campagne (arrêter les nouveaux appels)
  * `completed` - Marquer la campagne comme terminée
</ParamField>

## Réponse

<ResponseExample>
  ```json theme={null}
  {
    "campaign_id": "abc123def456",
    "status": "paused"
  }
  ```
</ResponseExample>

<ResponseField name="campaign_id" type="string" required>
  Identifiant unique de la campagne
</ResponseField>

<ResponseField name="status" type="string" required>
  Nouveau statut de la campagne
</ResponseField>

## Exemple de requête

<CodeGroup>
  ```bash cURL theme={null}
  curl -X PATCH https://app.voicehire.io/api/v1/campaigns/abc123def456/status \
    -H "X-API-Key: vh_live_XXXXXXXXXXXXX" \
    -H "Content-Type: application/json" \
    -d '{
      "status": "paused"
    }'
  ```

  ```python Python theme={null}
  import requests

  response = requests.patch(
      "https://app.voicehire.io/api/v1/campaigns/abc123def456/status",
      headers={
          "X-API-Key": "vh_live_XXXXXXXXXXXXX",
          "Content-Type": "application/json"
      },
      json={
          "status": "paused"
      }
  )
  ```

  ```javascript Node.js theme={null}
  const axios = require('axios');

  const response = await axios.patch(
    'https://app.voicehire.io/api/v1/campaigns/abc123def456/status',
    {
      status: 'paused'
    },
    {
      headers: {
        'X-API-Key': 'vh_live_XXXXXXXXXXXXX',
        'Content-Type': 'application/json'
      }
    }
  );
  ```
</CodeGroup>

## Notes importantes

* **Active → Paused**: Les appels en cours continuent, mais aucun nouvel appel n'est initié et aucun nouveau candidat ne peut être ajouté
* **Paused → Active**: La campagne accepte à nouveau l'ajout de nouveaux candidats
* **Any → Completed**: Statut définitif, la campagne ne peut plus être réactivée

## Codes d'erreur

| Code | Description                                 |
| ---- | ------------------------------------------- |
| 400  | Statut invalide ou transition non autorisée |
| 401  | Clé API manquante ou invalide               |
| 404  | Campagne non trouvée                        |


## OpenAPI

````yaml PATCH /api/v1/campaigns/{campaign_id}/status
openapi: 3.0.3
info:
  title: VoiceHire API
  description: >
    API REST pour automatiser les campagnes de recrutement avec VoiceHire.


    ## Authentification


    L'API utilise une authentification par clé API. Vous devez inclure votre clé
    API dans l'en-tête `X-API-Key` de chaque requête.


    ```

    X-API-Key: vh_live_XXXXXXXXXXXXX

    ```


    ## Format des réponses


    Toutes les réponses sont au format JSON. Les erreurs suivent un format
    standardisé :


    ```json

    {
      "error": {
        "code": "ERROR_CODE",
        "message": "Description de l'erreur",
        "details": {}
      }
    }

    ```


    ## Limites


    - Les numéros de téléphone doivent être des numéros français (06 ou 07)

    - Maximum 100 candidats par requête d'ajout

    - Les campagnes génèrent automatiquement 6 questions d'entretien
  version: 1.0.0
  contact:
    name: Support VoiceHire
    email: support@voicehire.io
    url: https://www.voicehire.io
servers:
  - url: https://app.voicehire.io
    description: Production
  - url: http://localhost:8080
    description: Développement local
security:
  - ApiKeyAuth: []
tags:
  - name: Campagnes
    description: Gestion des campagnes de recrutement
  - name: Candidats
    description: Gestion des candidats
  - name: Compte
    description: Informations du compte
paths:
  /api/v1/campaigns/{campaign_id}/status:
    patch:
      tags:
        - Campagnes
      summary: Modifier le statut d'une campagne
      description: Change le statut d'une campagne (active, paused, completed)
      operationId: updateCampaignStatus
      parameters:
        - name: campaign_id
          in: path
          required: true
          description: Identifiant de la campagne
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - status
              properties:
                status:
                  type: string
                  enum:
                    - active
                    - paused
                    - completed
                  description: Nouveau statut
            example:
              status: paused
      responses:
        '200':
          description: Statut mis à jour
          content:
            application/json:
              schema:
                type: object
                properties:
                  campaign_id:
                    type: string
                  status:
                    type: string
              example:
                campaign_id: CAMP-20250701-ABC123
                status: paused
        '400':
          description: Statut invalide
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Campagne non trouvée
components:
  schemas:
    Error:
      type: object
      required:
        - error
      properties:
        error:
          type: object
          required:
            - code
            - message
          properties:
            code:
              type: string
              description: Code d'erreur machine-readable
              example: MISSING_API_KEY
            message:
              type: string
              description: Message d'erreur human-readable
              example: API key is required
            details:
              type: object
              description: Détails supplémentaires sur l'erreur
              additionalProperties: true
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: X-API-Key
      description: Clé API au format vh_live_XXXXX

````