CLI
Gérez interviews et invitations depuis le terminal ou un agent IA avec @raconte/cli.
@raconte/cli pilote Raconte depuis un terminal ou un agent IA. Il enveloppe la même surface que l’API REST et le serveur MCP : créer et gérer les interviews et les invitations, authentifié avec une clé d’API d’organisation. Chaque commande affiche du JSON, ce qui se scripte proprement et qu’un agent peut parser.
Vous voulez confier le CLI à un agent IA ? Pointez-le sur la skill prête à l’emploi : raconte.ai/skill.md.
Installation
npm install -g @raconte/cli
Ou sans installer :
npx @raconte/cli interviews list
Nécessite Node.js 20 ou plus récent.
Authentification
Créez une clé d’API d’organisation depuis Paramètres → API, puis exposez-la :
export RACONTE_API_KEY="VOTRE_CLE_API"
Chaque commande lit RACONTE_API_KEY. Vous pouvez aussi passer --api-key <clé> par appel.
Sortie et codes de sortie
- Toute la sortie est du JSON sur stdout. Redirigez-la vers
jqou parsez-la directement. - Les erreurs sont du JSON sur stderr :
{ "status", "error" }pour les erreurs API,{ "error" }pour les erreurs de transport ou d’usage. - Codes de sortie :
0succès,2erreur d’usage,3échec d’authentification (401/403),1toute autre erreur. - Les commandes ne demandent jamais d’interaction : elles sont déterministes et non interactives.
Commandes
Lancez raconte --help ou raconte <groupe> <commande> --help pour la liste de référence.
Interviews
| Commande | Description |
|---|---|
interviews list [--archived] | Lister les interviews. |
interviews get <id> | Récupérer une interview. |
interviews create --prompt --locale --voice-id [...] | Créer une interview. |
interviews update <id> [...] | Mettre à jour une interview. |
interviews archive <id> | Archiver une interview. |
interviews restore <id> | Restaurer une interview archivée. |
interviews logs <id> | Lire les logs d’activité. |
interviews regenerate-intro <id> | Régénérer le message d’introduction de l’IA. |
interviews regenerate-first-message <id> | Régénérer le premier message de l’IA. |
Invitations
| Commande | Description |
|---|---|
invitations list <interviewId> | Lister les invitations d’une interview. |
invitations get <invitationId> | Récupérer une invitation. |
invitations create <interviewId> [--name --email --phone] | Créer une invitation. Sans champ, renvoie une invitation vierge partageable ; name/email/phone ne font que la pré-remplir et ne sont pas envoyés. |
invitations create-bulk <interviewId> --invitees '<json>' | Créer des invitations en masse et envoyer chacune immédiatement. |
invitations update <invitationId> --name <name> | Modifier le nom affiché de l’invité. Email et téléphone ne sont pas modifiables ici (utiliser send). |
invitations send <invitationId> [--email --phone] | Envoyer par email ou SMS (définit le contact et envoie). |
invitations cancel <invitationId> | Annuler une invitation prête. |
invitations reactivate <invitationId> | Réactiver une invitation annulée. |
invitations archive <invitationId> | Archiver une invitation. |
invitations restore <invitationId> | Restaurer une invitation archivée. |
invitations logs <invitationId> | Lire les logs d’activité. |
invitations audio-url <invitationId> <messageId> | Obtenir une URL audio temporaire pour un message de transcription. |
Juste besoin d’un lien partageable ? Lancez invitations create <interviewId> sans autre champ. Cela crée une invitation READY ; le lien à partager est https://raconte.ai/invitation/<slug> (le slug est dans la réponse). Quiconque a le lien peut passer l’interview, et rien n’est envoyé par email ni SMS. Changer l’email ou le téléphone d’un destinataire envoie toujours (via send) ; update ne change que le nom affiché, les coordonnées ne sont donc jamais modifiées en silence.
Voices
| Commande | Description |
|---|---|
voices list [--language <code>] | Lister les voix à passer en --voice-id. Public, aucune clé d’API requise. |
voices test-audio-url <voiceId> | Obtenir une URL audio d’aperçu éphémère pour une voix. Public, aucune clé d’API requise. |
Les commandes de modification acceptent aussi --data '<objet json>' pour le corps complet de la requête. Les options explicites priment sur ses clés.
Exemple
# Choisir une voix, puis créer une interview et garder son id
VOICE=$(raconte voices list --language fr | jq -r '.[0].id')
ID=$(raconte interviews create \
--title "Retour onboarding" \
--prompt "Interroger sur la première semaine, relancer sur les points de friction." \
--locale fr \
--voice-id "$VOICE" | jq -r '.id')
# Obtenir un lien partageable sans rien envoyer
raconte invitations create "$ID" | jq -r '"https://raconte.ai/invitation/" + .slug'
# Ou inviter des personnes directement (chacune reçoit un email ou un SMS aussitôt)
raconte invitations create-bulk "$ID" \
--invitees '[{"name":"Ada","email":"ada@example.com"},{"name":"Bo","phone":"+33600000000"}]'
Usage programmatique
Vous construisez une intégration TypeScript ou Node ? Utilisez le SDK (@raconte/node-sdk) plutôt que d’appeler le CLI : la même surface en fonctions typées avec des schémas Zod.