GET /api/v1/campaigns/{campaignId}
Renvoie une campagne avec son nombre de destinataires en temps réel et la progression de son envoi. recipientCount est calculé
à partir de la cible actuelle ; ce n'est pas une estimation enregistrée.
Autorisation
| Rôle dans l'organisation | Cet endpoint |
|---|---|
OWNER | Autorisé |
ADMIN | Autorisé |
MEMBER | Autorisé |
Paramètres de chemin
| Paramètre | Type | Description |
|---|---|---|
campaignId | string | Identifiant unique d'une campagne |
Exemple
bash
curl -H "x-api-key: $AGENTMAIL_API_KEY" \
"https://www.agentsmail.io/api/v1/campaigns/$CAMPAIGN_ID"Réponse
200 OK— la campagne et ses informations d'envoi actuelles.401 Unauthorized— clé absente ou invalide, ou son propriétaire a quitté l'organisation.404 Not Found— aucune campagne de ce type, ou elle appartient à une autre organisation.429 Too Many Requests— plus de 120 requêtes en une minute pour cette clé.
Champs de la réponse
| Champ | Type | Description |
|---|---|---|
success | boolean | Indique si l'opération a réussi |
data | object | Objet campagne. |
data.campaignUrl | string | null | Page de la campagne. |
data.campaignEditorUrl | string | null | Éditeur du contenu pour un brouillon modifiable. |
data.campaignStatsUrl | string | null | Statistiques d’une campagne envoyée. |
data.campaignPreviewUrl | string | null | Aperçu interne d’une campagne envoyée. |
data.publicCampaignUrl | string | null | Archive partageable d’une campagne envoyée dont les archives publiques sont activées. |
data.id | string | Identifiant unique de la campagne |
data.name | string | Nom interne de la campagne |
data.subject | string | Objet affiché aux destinataires |
data.previewText | string | null | Texte d'aperçu enregistré ; égal à data.preheader |
data.preheader | string | null | Texte d'aperçu affiché après l'objet ; null s'il n'y en a pas |
data.content | string | Contenu HTML envoyé aux destinataires |
data.status | string | draft, scheduled, paused, sending, sent, failed ou deleted |
data.templateId | string | null | Modèle d'origine, si la campagne a été créée à partir d'un modèle |
data.listId | string | Liste ciblée par la campagne |
data.tagId | string | null | Tag facultatif qui restreint la liste |
data.topicId | string | null | Sujet éditorial que porte cette campagne, le cas échéant |
data.sendingIdentityId | string | null | Identité d'expéditeur choisie ; null utilise l'identité par défaut |
data.scheduledAt | string | null | Heure de départ programmée au format ISO 8601 ; conservée tant qu'elle est paused |
data.sentAt | string | null | Heure de fin au format ISO 8601 |
data.createdAt | string | Heure de création au format ISO 8601 |
data.updatedAt | string | Dernière modification de la campagne au format ISO 8601 |
data.recipientCount | number | Contacts abonnés correspondant à la cible à cet instant |
data.progress.total | number | Enregistrements d'envoi créés pour la campagne |
data.progress.sent | number | Messages confirmés comme envoyés |
data.progress.failed | number | Messages qui se sont soldés par un échec |
data.progress.pending | number | Messages pas encore tentés |
data.progress.sending | number | Messages actuellement réservés pour traitement |
data.progress.staleSending | number | Messages réservés dont la fenêtre de traitement a expiré |
data.progress.lastActivityAt | string | null | Dernière activité d'envoi réelle : sentAt pour un message expédié, heure de passage à l'état final pour un message en échec ou ignoré |
data.progress.chunkSize | number | Nombre de messages attribués à un lot de traitement |
data.sendingEnabled | boolean | Indique si l'envoi de campagnes est actuellement activé sur tout AgentsMail |
en par défaut). Les liens indisponibles valent null ; ils sont tous null si l’organisation n’a pas de slug d’URL. Les liens internes nécessitent une connexion et les droits sur l’organisation ; seul publicCampaignUrl est public. Les agents API et MCP affichent les liens pertinents non nuls en Markdown cliquable, par exemple [Ouvrir la campagne](campaignUrl) en utilisant l’URL reçue. Créer ou consulter une campagne ne la publie pas.
Exemple de réponse
json
{
"success": true,
"data": {
"id": "4d19c0a2-75ba-4c3e-a0b2-f8a759282c4d",
"name": "Newsletter",
"subject": "August news",
"previewText": "Three new things this month",
"preheader": "Three new things this month",
"content": "<p>Hello {{firstName}}</p>",
"status": "sending",
"templateId": null,
"listId": "0b7c51e8-5df6-4e87-9fc2-d272dca63214",
"tagId": "7c2ef4b1-94da-46df-b2c4-b390282adf64",
"topicId": null,
"sendingIdentityId": null,
"scheduledAt": "2026-08-23T10:22:05.000Z",
"sentAt": null,
"createdAt": "2026-08-23T10:20:05.000Z",
"updatedAt": "2026-08-23T10:22:05.000Z",
"recipientCount": 1240,
"progress": {
"total": 1240,
"sent": 1200,
"failed": 2,
"pending": 35,
"sending": 3,
"staleSending": 1,
"lastActivityAt": "2026-08-23T10:31:44.000Z",
"chunkSize": 14
},
"sendingEnabled": true,
"campaignUrl": "https://www.agentsmail.io/fr/team/my-team/campaigns/4d19c0a2-75ba-4c3e-a0b2-f8a759282c4d",
"campaignEditorUrl": null,
"campaignStatsUrl": null,
"campaignPreviewUrl": null,
"publicCampaignUrl": null
}
}Remarques
staleSendingest inclus danssending; n'additionnez pas les deux valeurs.- Les ouvertures et les clics ne mettent pas à jour
lastActivityAt. - Une valeur
staleSendingnon nulle ne prouve pas qu'un message n'a pas été accepté. Ne le renvoyez pas automatiquement. recipientCountexclut les contacts désabonnés, en rebond ou ayant porté plainte.