curl --request PATCH \
--url https://app.voicehire.io/api/v1/campaigns/{campaign_id} \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"enable_close": true,
"close_message": "Merci pour votre temps, nous reviendrons vers vous sous 48h."
}
'{
"campaign_id": "abc123",
"updated_at": "2026-04-30T14:23:11.123456"
}
Campagnes
Modifier une campagne
Met à jour les champs fournis d’une campagne existante. Tous les champs sont optionnels.
PATCH
/
api
/
v1
/
campaigns
/
{campaign_id}
curl --request PATCH \
--url https://app.voicehire.io/api/v1/campaigns/{campaign_id} \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"enable_close": true,
"close_message": "Merci pour votre temps, nous reviendrons vers vous sous 48h."
}
'{
"campaign_id": "abc123",
"updated_at": "2026-04-30T14:23:11.123456"
}
Paramètres
string
required
Identifiant unique de la campagne
Corps de la requête
Tous les champs sont optionnels — seuls les champs fournis dans le payload sont modifiés. Siquestions est fourni, l’ensemble des questions est remplacé (et question_weights devient obligatoire).
Métadonnées
string
Titre du poste à pourvoir
string
Type de contrat (mêmes valeurs que la création)
string
Description détaillée du poste
string
Informations complémentaires
string
Nom de l’entreprise cliente
string
Langue de la campagne (
fr, en, es)Voix de l’agent IA
string
Nouvel ID de voix. Récupérer la liste via
GET /api/v1/voices.Passer null réinitialise sur la voix par défaut de la langue de la campagne.Questions
array
Liste de questions (max 10). Si fourni, remplace toutes les questions existantes.
array
Poids de chaque question (
0, 0.5, 1, 1.5, 2). Requis si questions est fourni.array
Évaluation binaire (oui/non) par question.
Toggles d’entretien
string
Non, Annuelles, Mensuelles ou Horairesboolean
boolean
boolean
boolean
boolean
boolean
boolean
Messages personnalisés
string
Message d’accroche (350 caractères max). Passer
null ou chaîne vide pour le retirer.string
Message de clôture (350 caractères max).
string
Message de récap offre (350 caractères max).
Sélection automatique
number
8.0, 8.5, 9.0, 9.5, 10.0, ou null pour désactiver.Test linguistique
string
none, english, spanish, italian, german, chinese, portuguese, arabic.Passer none efface aussi custom_language_question.string
Question additionnelle (traduite automatiquement). Nécessite
language_test_mode != "none".Réponse
{
"campaign_id": "abc123",
"updated_at": "2026-04-30T14:23:11.123456"
}
string
required
Identifiant de la campagne modifiée
string
required
Timestamp ISO 8601 de la mise à jour
Exemples
# Activer le message de clôture
curl -X PATCH https://app.voicehire.io/api/v1/campaigns/abc123 \
-H "X-API-Key: vh_live_XXXXXXXXXXXXX" \
-H "Content-Type: application/json" \
-d '{
"enable_close": true,
"close_message": "Merci pour votre temps, nous reviendrons vers vous sous 48h."
}'
curl -X PATCH https://app.voicehire.io/api/v1/campaigns/abc123 \
-H "X-API-Key: vh_live_XXXXXXXXXXXXX" \
-H "Content-Type: application/json" \
-d '{
"questions": [
"Quelle est votre expérience avec Node.js ?",
"Préférez-vous le télétravail ou le présentiel ?"
],
"question_weights": [2, 1],
"question_binary_evaluations": [false, true]
}'
import requests
response = requests.patch(
"https://app.voicehire.io/api/v1/campaigns/abc123",
headers={
"X-API-Key": "vh_live_XXXXXXXXXXXXX",
"Content-Type": "application/json"
},
json={
"automatic_selection_threshold": 9.0,
"enable_close": True,
"close_message": "Merci pour votre temps !"
}
)
const axios = require('axios');
const response = await axios.patch(
'https://app.voicehire.io/api/v1/campaigns/abc123',
{
automatic_selection_threshold: 9.0,
enable_close: true,
close_message: 'Merci pour votre temps !'
},
{
headers: {
'X-API-Key': 'vh_live_XXXXXXXXXXXXX',
'Content-Type': 'application/json'
}
}
);
Notes importantes
- Pour changer uniquement le statut (
active/paused/completed), utiliser plutôtPATCH /campaigns/{campaign_id}/status. - Si
questionsest fourni, toutes les questions existantes sont remplacées (pas de patch partiel sur les questions). - Le drapeau
is_voice_cloneest toujours déduit automatiquement depuisoverride_agent_id, vous ne devez pas l’envoyer.
Codes d’erreur
| Code | code | Description |
|---|---|---|
| 400 | INVALID_CONTRACT_TYPE | Type de contrat invalide |
| 400 | INVALID_LANGUAGE | Langue non supportée |
| 400 | INVALID_OVERRIDE_AGENT_ID | Voix introuvable ou non accessible |
| 400 | WEIGHTS_MISMATCH / BINARY_EVALUATIONS_MISMATCH | Tableau de poids/évaluations incohérent |
| 400 | MESSAGE_TOO_LONG | Message > 350 caractères |
| 401 | INVALID_API_KEY / MISSING_API_KEY | Clé API invalide |
| 404 | CAMPAIGN_NOT_FOUND | Campagne introuvable ou n’appartenant pas à votre agence |
Authorizations
Clé API au format vh_live_XXXXX
Path Parameters
Identifiant de la campagne
Body
application/json
Modification d'une campagne existante. Tous les champs sont optionnels — seuls les champs
fournis sont modifiés. Si questions est fourni, question_weights est obligatoire et
l'ensemble des questions est remplacé.
Available options:
CDI, CDD, Stage, Intérim, Contrat d'apprentissage, Contrat de professionnalisation, Freelance Available options:
fr, en, es Maximum array length:
10Available options:
0, 0.5, 1, 1.5, 2 Available options:
Non, Annuelles, Mensuelles, Horaires Maximum string length:
350Maximum string length:
350Maximum string length:
350Available options:
8, 8.5, 9, 9.5, 10 Available options:
none, english, spanish, italian, german, chinese, portuguese, arabic 
