API · v1

Automatisez vos campagnes

Comptez des audiences, gérez vos campagnes, récupérez les statistiques et accédez aux factures depuis vos propres outils.

URL de basehttps://api.dmseurope.com/v1/

Démarrage

Créez une clé dans Mon compte → API, conservez-la dans le coffre de secrets de votre serveur et utilisez-la uniquement pour des échanges serveur à serveur.

La clé donne accès aux données et opérations de son compte. Ne l’insérez jamais dans du JavaScript public, une URL ou un dépôt de code.

Authentification et langue

Chaque requête exige une authentification Bearer. Accept-Language accepte fr, en, es ou it et détermine la langue des messages d’erreur.

Authorization: Bearer API_KEY
Accept-Language: fr

Quotas

Les limites sont de 120 lectures, 20 mutations et 20 comptages d’audience par minute, par compte et par IP. En cas de HTTP 429, attendez le nombre de secondes indiqué par Retry-After.

Détail des routes

Ouvrez une route pour consulter tous les paramètres acceptés, une requête complète, la structure exacte de la réponse en cas de succès et les erreurs possibles.

POST/audiences/countCompter une audienceRetourne les volumes agrégés actuels sans enregistrer d’audience.

Paramètres attendus

En-têtes

AuthorizationstringObligatoire

Clé API active envoyée avec le schéma Bearer.

Format et limitesBearer dms_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Accept-LanguageenumOptionnel

Langue préférée des messages d’erreur ; l’anglais est utilisé par défaut.

Format et limitesfr | en | es | itExemple ou valeur par défauten
Content-TypestringObligatoire

Type de média JSON obligatoire pour le corps de la requête.

Format et limitesapplication/json

Corps JSON

channelenumObligatoire

Produit de campagne utilisé pour le comptage.

Format et limitesemail | sms | email_sms | email_retargeting_smsExemple ou valeur par défautemail
Valeurs acceptées
  • emailEmail uniquement
  • smsSMS uniquement
  • email_smsEmail et SMS à leurs dates programmées
  • email_retargeting_smsEmail suivi d’un retargeting SMS
targetingobjectObligatoire

Objet JSON imbriqué.

Format et limitesobject
countriesarrayObligatoire

Pays sélectionnés : FR France, GB Royaume-Uni, ES Espagne, IT Italie.

Format et limitesarray[1..4]<enum(FR,GB,ES,IT), unique>Exemple ou valeur par défaut["FR","GB"]
Valeurs acceptées
  • FRFrance
  • GBRoyaume-Uni
  • ESEspagne
  • ITItalie
geographyobjectObligatoire

Critères géographiques regroupés par pays sélectionné.

Format et limitesobject<country, geography>Exemple ou valeur par défaut{"FR":{…}}
{country}objectObligatoire

Objet JSON imbriqué.

regionsarrayOptionnel

Identifiants de région retournés par GET /targeting/geography avec type=region.

Format et limitesarray[0..250]<integer≥1, unique>Exemple ou valeur par défaut[11]
departmentsarrayOptionnel

Identifiants de département ou zone administrative retournés par GET /targeting/geography avec type=department.

Format et limitesarray[0..250]<integer≥1, unique>Exemple ou valeur par défaut[75]
citiesarrayOptionnel

Identifiants de ville retournés par GET /targeting/geography avec type=city. Chaque ville indique sa région et son département pour distinguer les noms identiques.

Format et limitesarray[0..250]<integer≥1, unique>Exemple ou valeur par défaut[1234]
postal_codesarrayOptionnel

Codes postaux disponibles pour le pays.

Format et limitesarray[0..250]<string[1..20], unique>Exemple ou valeur par défaut["75001"]
profileobjectObligatoire

Critères démographiques et de foyer ; utilisez un objet vide sans filtre.

Format et limitesobjectExemple ou valeur par défaut{}
age_minintegerOptionnel

Âge minimum inclus.

Format et limitesinteger 18–100Exemple ou valeur par défaut30
age_maxintegerOptionnel

Âge maximum inclus.

Format et limitesinteger 18–100, ≥ age_minExemple ou valeur par défaut55
gender_idsarrayOptionnel

Choisissez un ou plusieurs identifiants de genre affichés ci-dessous. Un tableau vide inclut tous les genres.

Format et limitesarray[0..50]<integer≥1, unique>Exemple ou valeur par défaut[1]
Valeurs acceptées
  • 1maleHomme
  • 2femaleFemme
  • 3unknownInconnu
csp_idsarrayOptionnel

Choisissez un ou plusieurs identifiants de catégorie socioprofessionnelle affichés ci-dessous. Un tableau vide inclut toutes les catégories.

Format et limitesarray[0..50]<integer≥1, unique>Exemple ou valeur par défaut[2,3]
Valeurs acceptées
  • 6csp_plusCSP+
  • 7csp_middleCSP moyenne
  • 8csp_minusCSP-
  • 9unknownInconnu
housing_status_idsarrayOptionnel

Choisissez un ou plusieurs identifiants de statut d’occupation affichés ci-dessous. Un tableau vide inclut tous les statuts.

Format et limitesarray[0..50]<integer≥1, unique>Exemple ou valeur par défaut[1]
Valeurs acceptées
  • 10ownerPropriétaire
  • 11tenantLocataire
  • 12otherAutre statut
  • 4unknownInconnu
housing_type_idsarrayOptionnel

Choisissez un ou plusieurs identifiants de type de logement affichés ci-dessous. Un tableau vide inclut tous les types.

Format et limitesarray[0..50]<integer≥1, unique>Exemple ou valeur par défaut[2]
Valeurs acceptées
  • 14houseMaison
  • 15apartmentAppartement
  • 16otherAutre type de logement
  • 5unknownInconnu
car_owner_status_idsarrayOptionnel

Choisissez ci-dessous l’identifiant correspondant aux propriétaires de voiture. Un tableau vide n’applique aucun filtre automobile.

Format et limitesarray[0..50]<integer≥1, unique>Exemple ou valeur par défaut[1]
Valeurs acceptées
  • 18ownerPossède un véhicule
  • 19non_ownerNe possède pas de véhicule
  • 20unknownInconnu
exclusionsobjectObligatoire

Exclusions de contacts récents et de campagnes précédentes.

Format et limitesobjectExemple ou valeur par défaut{}
recent_daysenumOptionnel

0 n’applique aucune exclusion récente ; 15, 30 ou 60 exclut les contacts déjà sollicités pendant le nombre de jours précédent correspondant.

Format et limitesenum(0,15,30,60)Exemple ou valeur par défautdefault 0
Valeurs acceptées
  • 0Aucune exclusion de contact récente
  • 15Exclure les contacts sollicités au cours des 15 derniers jours
  • 30Exclure les contacts sollicités au cours des 30 derniers jours
  • 60Exclure les contacts sollicités au cours des 60 derniers jours
campaign_referencesarrayOptionnel

Exclut les contacts de campagnes envoyées par le compte pendant les 12 derniers mois.

Format et limitesarray[0..100]<CMP-YYYY-0000000, unique>Exemple ou valeur par défaut["CMP-2026-0000123"]
POSThttps://api.dmseurope.com/v1/audiences/count
curl -X POST 'https://api.dmseurope.com/v1/audiences/count' \
  -H 'Authorization: Bearer API_KEY' -H 'Content-Type: application/json' \
  -d '{"channel":"email","targeting":{"countries":["FR"],"geography":{"FR":{"regions":[11],"departments":[75],"cities":[],"postal_codes":["75001"]}},"profile":{"age_min":30,"age_max":55,"gender_ids":[1],"csp_ids":[],"housing_status_ids":[],"housing_type_ids":[],"car_owner_status_ids":[]},"exclusions":{"recent_days":30,"campaign_references":[]}}}'
GET/targeting/geographyRechercher des identifiants géographiquesRetourne les identifiants de région, département ou ville acceptés par le ciblage.

Paramètres attendus

En-têtes

AuthorizationstringObligatoire

Clé API active envoyée avec le schéma Bearer.

Format et limitesBearer dms_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Accept-LanguageenumOptionnel

Langue préférée des messages d’erreur ; l’anglais est utilisé par défaut.

Format et limitesfr | en | es | itExemple ou valeur par défauten

Paramètres de requête

countryenumObligatoire

Pays dont le référentiel géographique est interrogé.

Format et limitesFR | GB | ES | ITExemple ou valeur par défautFR
Valeurs acceptées
  • FRFrance
  • GBRoyaume-Uni
  • ESEspagne
  • ITItalie
typeenumObligatoire

Niveau de référentiel retourné : régions, départements ou villes.

Format et limitesregion | department | cityExemple ou valeur par défautcity
Valeurs acceptées
  • regionRégion
  • departmentDépartement ou zone administrative
  • cityVille
querystringConditionnel

Facultatif pour les régions et départements. Obligatoire pour les villes, avec au moins 2 caractères.

Format et limitesstring[0..80]Exemple ou valeur par défautParis
GEThttps://api.dmseurope.com/v1/targeting/geography

Succès — Toutes les réponses HTTP contiennent X-Request-Id ; les réponses JSON contiennent aussi request_id.

GET/campaignsLister les campagnesRetourne les campagnes du compte avec pagination et filtres.

Paramètres attendus

En-têtes

AuthorizationstringObligatoire

Clé API active envoyée avec le schéma Bearer.

Format et limitesBearer dms_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Accept-LanguageenumOptionnel

Langue préférée des messages d’erreur ; l’anglais est utilisé par défaut.

Format et limitesfr | en | es | itExemple ou valeur par défauten

Paramètres de requête

pageintegerOptionnel

Numéro de page demandé.

Format et limitesinteger[1..1000000]Exemple ou valeur par défautdefault 1
per_pageintegerOptionnel

Nombre de résultats par page.

Format et limitesinteger[1..100]Exemple ou valeur par défautdefault 20
statusenumOptionnel

Statut exact de campagne.

Format et limitesdraft | pending_validation | needs_changes | scheduled | sending | sent | cancelled
Valeurs acceptées
  • draftBrouillon
  • pending_validationEn attente de validation
  • needs_changesCorrections demandées
  • scheduledProgrammée
  • sendingEn cours d’envoi
  • sentEnvoyée
  • cancelledAnnulée
productenumOptionnel

Filtre sur le produit de campagne.

Format et limitesemail | sms | email_sms | email_retargeting_sms
Valeurs acceptées
  • emailEmail uniquement
  • smsSMS uniquement
  • email_smsEmail et SMS à leurs dates programmées
  • email_retargeting_smsEmail suivi d’un retargeting SMS
countryenumOptionnel

Filtre par pays.

Format et limitesFR | GB | ES | ITExemple ou valeur par défautFR
Valeurs acceptées
  • FRFrance
  • GBRoyaume-Uni
  • ESEspagne
  • ITItalie
created_fromstringOptionnel

Date minimale de création incluse.

Format et limitesdate YYYY-MM-DDExemple ou valeur par défaut2026-08-01
created_tostringOptionnel

Date maximale de création incluse.

Format et limitesdate YYYY-MM-DDExemple ou valeur par défaut2026-08-31
scheduled_fromstringOptionnel

Date minimale de programmation incluse.

Format et limitesdate YYYY-MM-DDExemple ou valeur par défaut2026-09-01
scheduled_tostringOptionnel

Date maximale de programmation incluse.

Format et limitesdate YYYY-MM-DDExemple ou valeur par défaut2026-09-30
searchstringOptionnel

Recherche sur le nom ou la référence publique.

Format et limitesstring ≤ 180Exemple ou valeur par défautCMP-2026-0000123 | Summer launch
GEThttps://api.dmseurope.com/v1/campaigns

Succès — Toutes les réponses HTTP contiennent X-Request-Id ; les réponses JSON contiennent aussi request_id.

POST/campaignsCréer une campagneCompte l’audience, calcule le prix, réserve le crédit et soumet une campagne complète.

Paramètres attendus

En-têtes

AuthorizationstringObligatoire

Clé API active envoyée avec le schéma Bearer.

Format et limitesBearer dms_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Accept-LanguageenumOptionnel

Langue préférée des messages d’erreur ; l’anglais est utilisé par défaut.

Format et limitesfr | en | es | itExemple ou valeur par défauten
Content-TypestringObligatoire

Type de média JSON obligatoire pour le corps de la requête.

Format et limitesapplication/json
Client-ReferencestringObligatoire

Référence métier permanente et unique pour cette création. Une seconde création avec la même valeur est refusée.

Format et limitesASCII string[8..128] [A-Za-z0-9._:-]Exemple ou valeur par défautcrm-campaign-20260829-001

Corps JSON

namestringObligatoire

Nom de la campagne.

Format et limitesstring[1..180]Exemple ou valeur par défautSummer launch 2026
productenumObligatoire

email : email seul ; sms : SMS seul ; email_sms : les deux canaux ; email_retargeting_sms : email suivi d’un retargeting SMS.

Format et limitesemail | sms | email_sms | email_retargeting_sms
Valeurs acceptées
  • emailEmail uniquement
  • smsSMS uniquement
  • email_smsEmail et SMS à leurs dates programmées
  • email_retargeting_smsEmail suivi d’un retargeting SMS
targetingobjectObligatoire

Objet JSON imbriqué.

Format et limitesobject
countriesarrayObligatoire

Pays sélectionnés : FR France, GB Royaume-Uni, ES Espagne, IT Italie.

Format et limitesarray[1..4]<enum(FR,GB,ES,IT), unique>Exemple ou valeur par défaut["FR","GB"]
Valeurs acceptées
  • FRFrance
  • GBRoyaume-Uni
  • ESEspagne
  • ITItalie
geographyobjectObligatoire

Critères géographiques regroupés par pays sélectionné.

Format et limitesobject<country, geography>Exemple ou valeur par défaut{"FR":{…}}
{country}objectObligatoire

Objet JSON imbriqué.

regionsarrayOptionnel

Identifiants de région retournés par GET /targeting/geography avec type=region.

Format et limitesarray[0..250]<integer≥1, unique>Exemple ou valeur par défaut[11]
departmentsarrayOptionnel

Identifiants de département ou zone administrative retournés par GET /targeting/geography avec type=department.

Format et limitesarray[0..250]<integer≥1, unique>Exemple ou valeur par défaut[75]
citiesarrayOptionnel

Identifiants de ville retournés par GET /targeting/geography avec type=city. Chaque ville indique sa région et son département pour distinguer les noms identiques.

Format et limitesarray[0..250]<integer≥1, unique>Exemple ou valeur par défaut[1234]
postal_codesarrayOptionnel

Codes postaux disponibles pour le pays.

Format et limitesarray[0..250]<string[1..20], unique>Exemple ou valeur par défaut["75001"]
profileobjectObligatoire

Critères démographiques et de foyer ; utilisez un objet vide sans filtre.

Format et limitesobjectExemple ou valeur par défaut{}
age_minintegerOptionnel

Âge minimum inclus.

Format et limitesinteger 18–100Exemple ou valeur par défaut30
age_maxintegerOptionnel

Âge maximum inclus.

Format et limitesinteger 18–100, ≥ age_minExemple ou valeur par défaut55
gender_idsarrayOptionnel

Choisissez un ou plusieurs identifiants de genre affichés ci-dessous. Un tableau vide inclut tous les genres.

Format et limitesarray[0..50]<integer≥1, unique>Exemple ou valeur par défaut[1]
Valeurs acceptées
  • 1maleHomme
  • 2femaleFemme
  • 3unknownInconnu
csp_idsarrayOptionnel

Choisissez un ou plusieurs identifiants de catégorie socioprofessionnelle affichés ci-dessous. Un tableau vide inclut toutes les catégories.

Format et limitesarray[0..50]<integer≥1, unique>Exemple ou valeur par défaut[2,3]
Valeurs acceptées
  • 6csp_plusCSP+
  • 7csp_middleCSP moyenne
  • 8csp_minusCSP-
  • 9unknownInconnu
housing_status_idsarrayOptionnel

Choisissez un ou plusieurs identifiants de statut d’occupation affichés ci-dessous. Un tableau vide inclut tous les statuts.

Format et limitesarray[0..50]<integer≥1, unique>Exemple ou valeur par défaut[1]
Valeurs acceptées
  • 10ownerPropriétaire
  • 11tenantLocataire
  • 12otherAutre statut
  • 4unknownInconnu
housing_type_idsarrayOptionnel

Choisissez un ou plusieurs identifiants de type de logement affichés ci-dessous. Un tableau vide inclut tous les types.

Format et limitesarray[0..50]<integer≥1, unique>Exemple ou valeur par défaut[2]
Valeurs acceptées
  • 14houseMaison
  • 15apartmentAppartement
  • 16otherAutre type de logement
  • 5unknownInconnu
car_owner_status_idsarrayOptionnel

Choisissez ci-dessous l’identifiant correspondant aux propriétaires de voiture. Un tableau vide n’applique aucun filtre automobile.

Format et limitesarray[0..50]<integer≥1, unique>Exemple ou valeur par défaut[1]
Valeurs acceptées
  • 18ownerPossède un véhicule
  • 19non_ownerNe possède pas de véhicule
  • 20unknownInconnu
exclusionsobjectObligatoire

Exclusions de contacts récents et de campagnes précédentes.

Format et limitesobjectExemple ou valeur par défaut{}
recent_daysenumOptionnel

0 n’applique aucune exclusion récente ; 15, 30 ou 60 exclut les contacts déjà sollicités pendant le nombre de jours précédent correspondant.

Format et limitesenum(0,15,30,60)Exemple ou valeur par défautdefault 0
Valeurs acceptées
  • 0Aucune exclusion de contact récente
  • 15Exclure les contacts sollicités au cours des 15 derniers jours
  • 30Exclure les contacts sollicités au cours des 30 derniers jours
  • 60Exclure les contacts sollicités au cours des 60 derniers jours
campaign_referencesarrayOptionnel

Exclut les contacts de campagnes envoyées par le compte pendant les 12 derniers mois.

Format et limitesarray[0..100]<CMP-YYYY-0000000, unique>Exemple ou valeur par défaut["CMP-2026-0000123"]
volumesobjectObligatoire

Volumes demandés par pays ; les clés doivent correspondre exactement à targeting.countries.

Format et limitesobject<country, integer[1..1000000]>Exemple ou valeur par défaut{"FR":4000,"GB":1500}
{country}integerObligatoire

Volume de contacts demandé pour ce pays.

Format et limitesinteger 1–1 000 000Exemple ou valeur par défaut4000
contentsobjectObligatoire

Contenus par pays ; les clés doivent correspondre exactement à targeting.countries.

Format et limitesobject<country, content>
{country}objectObligatoire

Objet de contenu de chaque pays sélectionné ; ses clés exactes dépendent du produit.

Format et limitesobject<email | sms | email+sms>
emailobjectConditionnel

Obligatoire pour chaque pays sélectionné lorsque le produit inclut l’email.

Format et limitesobject<email>
sender_namestringConditionnel

Nom d’expéditeur de l’email.

Format et limitesstring[1..120]Exemple ou valeur par défautMy brand
subjectstringConditionnel

Objet de l’email.

Format et limitesstring[1..255]Exemple ou valeur par défautSummer offer
preheaderstringOptionnel

Préheader facultatif de l’email.

Format et limitesstring[0..255]Exemple ou valeur par défautDiscover our offer
htmlstringConditionnel

HTML complet de l’email.

Format et limitesHTML string[1..5242880]Exemple ou valeur par défaut<p>Hello</p>
smsobjectConditionnel

Obligatoire pour chaque pays sélectionné lorsque le produit inclut le SMS.

Format et limitesobject<sms>
sender_namestringConditionnel

1 à 11 lettres ASCII ou chiffres, avec au moins une lettre ; une valeur ressemblant à un numéro de téléphone est refusée.

Format et limitesASCII alphanumeric string[1..11]Exemple ou valeur par défautMyBrand
messagestringConditionnel

Corps du message sans le suffixe STOP automatique. Maximum 4 segments SMS, suffixe STOP du pays, réserves de personnalisation et lien court de 20 caractères compris.

Format et limitesstringExemple ou valeur par défautmaximum 4 SMS segments · Discover the offer: {{short_url}}
destination_urlstringOptionnel

URL HTTP(S) publique facultative, limitée à 2 048 caractères. Elle est requise exactement lorsque le message contient une balise {{short_url}} ; les URL écrites directement dans le message sont refusées.

Format et limitespublic HTTP(S) URL[1..2048] | nullExemple ou valeur par défauthttps://example.com/offer
scheduleobjectObligatoire

Fuseau IANA et dates d’envoi requises. Chaque envoi doit être programmé au moins 48 heures ouvrées à l’avance.

Format et limitesobject
timezonestringObligatoire

Fuseau IANA utilisé pour valider le décalage des dates.

Format et limitesIANA timezone string[1..64]Exemple ou valeur par défautEurope/Paris
email_atstringConditionnel

Requis si le produit inclut l’email ; interdit pour sms. Pour email_sms, l’écart avec sms_at ne peut pas dépasser 48 heures.

Format et limitesRFC 3339 date-timeExemple ou valeur par défaut2026-09-15T10:00:00+02:00
sms_atstringConditionnel

Requis pour sms et email_sms ; interdit pour email et email_retargeting_sms. L’heure locale doit être comprise entre 08:00 et 19:45 et, pour email_sms, l’écart avec email_at ne peut pas dépasser 48 heures.

Format et limitesRFC 3339 date-timeExemple ou valeur par défaut2026-09-15T12:00:00+02:00
retargeting_delay_hoursintegerOptionnel

Utilisé uniquement pour email_retargeting_sms : entier de 6 à 72 heures après l’email ; 24 par défaut.

Format et limitesinteger[6..72]Exemple ou valeur par défautdefault 24
promo_codestringOptionnel

Code promotionnel facultatif : 1 à 64 lettres majuscules, chiffres, tirets bas ou tirets ; le premier caractère doit être une lettre ou un chiffre.

Format et limitesstring[0..64] | nullExemple ou valeur par défautWELCOME10
POSThttps://api.dmseurope.com/v1/campaigns
curl -X POST 'https://api.dmseurope.com/v1/campaigns' \
  -H 'Authorization: Bearer API_KEY' \
  -H 'Client-Reference: crm-campaign-20260829-001' \
  -H 'Content-Type: application/json' \
  -d '{
    "name":"Summer launch 2026",
    "product":"email_sms",
    "targeting":{
      "countries":["FR"],
      "geography":{"FR":{"regions":[11],"departments":[75],"cities":[],"postal_codes":["75001"]}},
      "profile":{"age_min":30,"age_max":55,"gender_ids":[1],"csp_ids":[2],"housing_status_ids":[],"housing_type_ids":[],"car_owner_status_ids":[]},
      "exclusions":{"recent_days":30,"campaign_references":[]}
    },
    "volumes":{"FR":4000},
    "contents":{"FR":{
      "email":{"sender_name":"My brand","subject":"Summer offer","preheader":"Discover our offer","html":"<p>Hello</p>"},
      "sms":{"sender_name":"MyBrand","message":"Discover the offer: {{short_url}}","destination_url":"https://example.com/offer"}
    }},
    "schedule":{"timezone":"Europe/Paris","email_at":"2026-09-15T10:00:00+02:00","sms_at":"2026-09-15T12:00:00+02:00"},
    "promo_code":null
  }'
GET/campaigns/{reference}Consulter une campagneRetourne le ciblage, les contenus, la programmation, le prix, la modération et la production.

Paramètres attendus

En-têtes

AuthorizationstringObligatoire

Clé API active envoyée avec le schéma Bearer.

Format et limitesBearer dms_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Accept-LanguageenumOptionnel

Langue préférée des messages d’erreur ; l’anglais est utilisé par défaut.

Format et limitesfr | en | es | itExemple ou valeur par défauten

Paramètres de chemin

referencestringObligatoire

Référence publique de campagne.

Format et limitesCMP-AAAA-0000000Exemple ou valeur par défautCMP-2026-0000123
GEThttps://api.dmseurope.com/v1/campaigns/{reference}

Succès — Toutes les réponses HTTP contiennent X-Request-Id ; les réponses JSON contiennent aussi request_id.

PUT/campaigns/{reference}Modifier une campagneRemplace entièrement une campagne modifiable. La même Client-Reference peut être réutilisée avec un nouveau contenu.

Paramètres attendus

En-têtes

AuthorizationstringObligatoire

Clé API active envoyée avec le schéma Bearer.

Format et limitesBearer dms_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Accept-LanguageenumOptionnel

Langue préférée des messages d’erreur ; l’anglais est utilisé par défaut.

Format et limitesfr | en | es | itExemple ou valeur par défauten
Content-TypestringObligatoire

Type de média JSON obligatoire pour le corps de la requête.

Format et limitesapplication/json
Client-ReferencestringObligatoire

Référence métier de la modification. Elle peut être réutilisée pour les modifications suivantes, avec un JSON identique ou différent.

Format et limitesASCII string[8..128] [A-Za-z0-9._:-]Exemple ou valeur par défautcrm-campaign-20260829-001

Paramètres de chemin

referencestringObligatoire

Référence publique de campagne.

Format et limitesCMP-AAAA-0000000Exemple ou valeur par défautCMP-2026-0000123

Corps JSON

namestringObligatoire

Nom de la campagne.

Format et limitesstring[1..180]Exemple ou valeur par défautSummer launch 2026
productenumObligatoire

email : email seul ; sms : SMS seul ; email_sms : les deux canaux ; email_retargeting_sms : email suivi d’un retargeting SMS.

Format et limitesemail | sms | email_sms | email_retargeting_sms
Valeurs acceptées
  • emailEmail uniquement
  • smsSMS uniquement
  • email_smsEmail et SMS à leurs dates programmées
  • email_retargeting_smsEmail suivi d’un retargeting SMS
targetingobjectObligatoire

Objet JSON imbriqué.

Format et limitesobject
countriesarrayObligatoire

Pays sélectionnés : FR France, GB Royaume-Uni, ES Espagne, IT Italie.

Format et limitesarray[1..4]<enum(FR,GB,ES,IT), unique>Exemple ou valeur par défaut["FR","GB"]
Valeurs acceptées
  • FRFrance
  • GBRoyaume-Uni
  • ESEspagne
  • ITItalie
geographyobjectObligatoire

Critères géographiques regroupés par pays sélectionné.

Format et limitesobject<country, geography>Exemple ou valeur par défaut{"FR":{…}}
{country}objectObligatoire

Objet JSON imbriqué.

regionsarrayOptionnel

Identifiants de région retournés par GET /targeting/geography avec type=region.

Format et limitesarray[0..250]<integer≥1, unique>Exemple ou valeur par défaut[11]
departmentsarrayOptionnel

Identifiants de département ou zone administrative retournés par GET /targeting/geography avec type=department.

Format et limitesarray[0..250]<integer≥1, unique>Exemple ou valeur par défaut[75]
citiesarrayOptionnel

Identifiants de ville retournés par GET /targeting/geography avec type=city. Chaque ville indique sa région et son département pour distinguer les noms identiques.

Format et limitesarray[0..250]<integer≥1, unique>Exemple ou valeur par défaut[1234]
postal_codesarrayOptionnel

Codes postaux disponibles pour le pays.

Format et limitesarray[0..250]<string[1..20], unique>Exemple ou valeur par défaut["75001"]
profileobjectObligatoire

Critères démographiques et de foyer ; utilisez un objet vide sans filtre.

Format et limitesobjectExemple ou valeur par défaut{}
age_minintegerOptionnel

Âge minimum inclus.

Format et limitesinteger 18–100Exemple ou valeur par défaut30
age_maxintegerOptionnel

Âge maximum inclus.

Format et limitesinteger 18–100, ≥ age_minExemple ou valeur par défaut55
gender_idsarrayOptionnel

Choisissez un ou plusieurs identifiants de genre affichés ci-dessous. Un tableau vide inclut tous les genres.

Format et limitesarray[0..50]<integer≥1, unique>Exemple ou valeur par défaut[1]
Valeurs acceptées
  • 1maleHomme
  • 2femaleFemme
  • 3unknownInconnu
csp_idsarrayOptionnel

Choisissez un ou plusieurs identifiants de catégorie socioprofessionnelle affichés ci-dessous. Un tableau vide inclut toutes les catégories.

Format et limitesarray[0..50]<integer≥1, unique>Exemple ou valeur par défaut[2,3]
Valeurs acceptées
  • 6csp_plusCSP+
  • 7csp_middleCSP moyenne
  • 8csp_minusCSP-
  • 9unknownInconnu
housing_status_idsarrayOptionnel

Choisissez un ou plusieurs identifiants de statut d’occupation affichés ci-dessous. Un tableau vide inclut tous les statuts.

Format et limitesarray[0..50]<integer≥1, unique>Exemple ou valeur par défaut[1]
Valeurs acceptées
  • 10ownerPropriétaire
  • 11tenantLocataire
  • 12otherAutre statut
  • 4unknownInconnu
housing_type_idsarrayOptionnel

Choisissez un ou plusieurs identifiants de type de logement affichés ci-dessous. Un tableau vide inclut tous les types.

Format et limitesarray[0..50]<integer≥1, unique>Exemple ou valeur par défaut[2]
Valeurs acceptées
  • 14houseMaison
  • 15apartmentAppartement
  • 16otherAutre type de logement
  • 5unknownInconnu
car_owner_status_idsarrayOptionnel

Choisissez ci-dessous l’identifiant correspondant aux propriétaires de voiture. Un tableau vide n’applique aucun filtre automobile.

Format et limitesarray[0..50]<integer≥1, unique>Exemple ou valeur par défaut[1]
Valeurs acceptées
  • 18ownerPossède un véhicule
  • 19non_ownerNe possède pas de véhicule
  • 20unknownInconnu
exclusionsobjectObligatoire

Exclusions de contacts récents et de campagnes précédentes.

Format et limitesobjectExemple ou valeur par défaut{}
recent_daysenumOptionnel

0 n’applique aucune exclusion récente ; 15, 30 ou 60 exclut les contacts déjà sollicités pendant le nombre de jours précédent correspondant.

Format et limitesenum(0,15,30,60)Exemple ou valeur par défautdefault 0
Valeurs acceptées
  • 0Aucune exclusion de contact récente
  • 15Exclure les contacts sollicités au cours des 15 derniers jours
  • 30Exclure les contacts sollicités au cours des 30 derniers jours
  • 60Exclure les contacts sollicités au cours des 60 derniers jours
campaign_referencesarrayOptionnel

Exclut les contacts de campagnes envoyées par le compte pendant les 12 derniers mois.

Format et limitesarray[0..100]<CMP-YYYY-0000000, unique>Exemple ou valeur par défaut["CMP-2026-0000123"]
volumesobjectObligatoire

Volumes demandés par pays ; les clés doivent correspondre exactement à targeting.countries.

Format et limitesobject<country, integer[1..1000000]>Exemple ou valeur par défaut{"FR":4000,"GB":1500}
{country}integerObligatoire

Volume de contacts demandé pour ce pays.

Format et limitesinteger 1–1 000 000Exemple ou valeur par défaut4000
contentsobjectObligatoire

Contenus par pays ; les clés doivent correspondre exactement à targeting.countries.

Format et limitesobject<country, content>
{country}objectObligatoire

Objet de contenu de chaque pays sélectionné ; ses clés exactes dépendent du produit.

Format et limitesobject<email | sms | email+sms>
emailobjectConditionnel

Obligatoire pour chaque pays sélectionné lorsque le produit inclut l’email.

Format et limitesobject<email>
sender_namestringConditionnel

Nom d’expéditeur de l’email.

Format et limitesstring[1..120]Exemple ou valeur par défautMy brand
subjectstringConditionnel

Objet de l’email.

Format et limitesstring[1..255]Exemple ou valeur par défautSummer offer
preheaderstringOptionnel

Préheader facultatif de l’email.

Format et limitesstring[0..255]Exemple ou valeur par défautDiscover our offer
htmlstringConditionnel

HTML complet de l’email.

Format et limitesHTML string[1..5242880]Exemple ou valeur par défaut<p>Hello</p>
smsobjectConditionnel

Obligatoire pour chaque pays sélectionné lorsque le produit inclut le SMS.

Format et limitesobject<sms>
sender_namestringConditionnel

1 à 11 lettres ASCII ou chiffres, avec au moins une lettre ; une valeur ressemblant à un numéro de téléphone est refusée.

Format et limitesASCII alphanumeric string[1..11]Exemple ou valeur par défautMyBrand
messagestringConditionnel

Corps du message sans le suffixe STOP automatique. Maximum 4 segments SMS, suffixe STOP du pays, réserves de personnalisation et lien court de 20 caractères compris.

Format et limitesstringExemple ou valeur par défautmaximum 4 SMS segments · Discover the offer: {{short_url}}
destination_urlstringOptionnel

URL HTTP(S) publique facultative, limitée à 2 048 caractères. Elle est requise exactement lorsque le message contient une balise {{short_url}} ; les URL écrites directement dans le message sont refusées.

Format et limitespublic HTTP(S) URL[1..2048] | nullExemple ou valeur par défauthttps://example.com/offer
scheduleobjectObligatoire

Fuseau IANA et dates d’envoi requises. Chaque envoi doit être programmé au moins 48 heures ouvrées à l’avance.

Format et limitesobject
timezonestringObligatoire

Fuseau IANA utilisé pour valider le décalage des dates.

Format et limitesIANA timezone string[1..64]Exemple ou valeur par défautEurope/Paris
email_atstringConditionnel

Requis si le produit inclut l’email ; interdit pour sms. Pour email_sms, l’écart avec sms_at ne peut pas dépasser 48 heures.

Format et limitesRFC 3339 date-timeExemple ou valeur par défaut2026-09-15T10:00:00+02:00
sms_atstringConditionnel

Requis pour sms et email_sms ; interdit pour email et email_retargeting_sms. L’heure locale doit être comprise entre 08:00 et 19:45 et, pour email_sms, l’écart avec email_at ne peut pas dépasser 48 heures.

Format et limitesRFC 3339 date-timeExemple ou valeur par défaut2026-09-15T12:00:00+02:00
retargeting_delay_hoursintegerOptionnel

Utilisé uniquement pour email_retargeting_sms : entier de 6 à 72 heures après l’email ; 24 par défaut.

Format et limitesinteger[6..72]Exemple ou valeur par défautdefault 24
promo_codestringOptionnel

Code promotionnel facultatif : 1 à 64 lettres majuscules, chiffres, tirets bas ou tirets ; le premier caractère doit être une lettre ou un chiffre.

Format et limitesstring[0..64] | nullExemple ou valeur par défautWELCOME10
PUThttps://api.dmseurope.com/v1/campaigns/{reference}
curl -X PUT 'https://api.dmseurope.com/v1/campaigns/CMP-2026-0000123' \
  -H 'Authorization: Bearer API_KEY' \
  -H 'Client-Reference: crm-update-20260829-001' \
  -H 'Content-Type: application/json' \
  -d '{
    "name":"Summer launch 2026",
    "product":"email_sms",
    "targeting":{
      "countries":["FR"],
      "geography":{"FR":{"regions":[11],"departments":[75],"cities":[],"postal_codes":["75001"]}},
      "profile":{"age_min":30,"age_max":55,"gender_ids":[1],"csp_ids":[2],"housing_status_ids":[],"housing_type_ids":[],"car_owner_status_ids":[]},
      "exclusions":{"recent_days":30,"campaign_references":[]}
    },
    "volumes":{"FR":4000},
    "contents":{"FR":{
      "email":{"sender_name":"My brand","subject":"Summer offer","preheader":"Discover our offer","html":"<p>Hello</p>"},
      "sms":{"sender_name":"MyBrand","message":"Discover the offer: {{short_url}}","destination_url":"https://example.com/offer"}
    }},
    "schedule":{"timezone":"Europe/Paris","email_at":"2026-09-15T10:00:00+02:00","sms_at":"2026-09-15T12:00:00+02:00"},
    "promo_code":null
  }'
POST/campaigns/{reference}/cancelAnnuler une campagneAnnule une campagne éligible et libère le crédit réservé lorsque nécessaire. Client-Reference n’est pas requis.

Paramètres attendus

En-têtes

AuthorizationstringObligatoire

Clé API active envoyée avec le schéma Bearer.

Format et limitesBearer dms_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Accept-LanguageenumOptionnel

Langue préférée des messages d’erreur ; l’anglais est utilisé par défaut.

Format et limitesfr | en | es | itExemple ou valeur par défauten
Content-TypestringConditionnel

Obligatoire uniquement lorsqu’un corps JSON d’annulation est envoyé.

Format et limitesapplication/json

Paramètres de chemin

referencestringObligatoire

Référence publique de campagne.

Format et limitesCMP-AAAA-0000000Exemple ou valeur par défautCMP-2026-0000123

Corps JSON

reasonstringOptionnel

Motif d’annulation facultatif.

Format et limitesstring[0..1000]Exemple ou valeur par défautCancelled by CRM operator
POSThttps://api.dmseurope.com/v1/campaigns/{reference}/cancel
curl -X POST 'https://api.dmseurope.com/v1/campaigns/CMP-2026-0000123/cancel' \
  -H 'Authorization: Bearer API_KEY' -H 'Content-Type: application/json' \
  -d '{"reason":"Cancelled by CRM operator"}'
GET/campaigns/{reference}/statisticsConsulter les statistiquesRetourne les totaux actuels et les ventilations par pays, langue et canal.

Paramètres attendus

En-têtes

AuthorizationstringObligatoire

Clé API active envoyée avec le schéma Bearer.

Format et limitesBearer dms_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Accept-LanguageenumOptionnel

Langue préférée des messages d’erreur ; l’anglais est utilisé par défaut.

Format et limitesfr | en | es | itExemple ou valeur par défauten

Paramètres de chemin

referencestringObligatoire

Référence publique de campagne.

Format et limitesCMP-AAAA-0000000Exemple ou valeur par défautCMP-2026-0000123
GEThttps://api.dmseurope.com/v1/campaigns/{reference}/statistics

Succès — Toutes les réponses HTTP contiennent X-Request-Id ; les réponses JSON contiennent aussi request_id.

GET/invoicesLister les facturesRetourne les factures et avoirs. Chaque élément contient pdf_url, dont le chemin inclut opaque_reference.

Paramètres attendus

En-têtes

AuthorizationstringObligatoire

Clé API active envoyée avec le schéma Bearer.

Format et limitesBearer dms_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Accept-LanguageenumOptionnel

Langue préférée des messages d’erreur ; l’anglais est utilisé par défaut.

Format et limitesfr | en | es | itExemple ou valeur par défauten

Paramètres de requête

pageintegerOptionnel

Numéro de page demandé.

Format et limitesinteger[1..1000000]Exemple ou valeur par défautdefault 1
per_pageintegerOptionnel

Nombre de résultats par page.

Format et limitesinteger[1..100]Exemple ou valeur par défautdefault 20
typeenumOptionnel

Filtre sur le type de document.

Format et limitesinvoice | credit_noteExemple ou valeur par défautinvoice
Valeurs acceptées
  • invoiceFacture
  • credit_noteAvoir
statusstringOptionnel

Statut exact du cycle de vie de la facture.

Format et limitesstring [A-Za-z0-9._:-] ≤ 40Exemple ou valeur par défautissued
payment_statusstringOptionnel

Statut exact du paiement.

Format et limitesstring [A-Za-z0-9._:-] ≤ 40Exemple ou valeur par défautpaid
issued_fromstringOptionnel

Date minimale d’émission incluse.

Format et limitesdate YYYY-MM-DDExemple ou valeur par défaut2026-08-01
issued_tostringOptionnel

Date maximale d’émission incluse.

Format et limitesdate YYYY-MM-DDExemple ou valeur par défaut2026-08-31
campaign_referencestringOptionnel

Filtre par référence publique de campagne.

Format et limitesCMP-AAAA-0000000Exemple ou valeur par défautCMP-2026-0000123
GEThttps://api.dmseurope.com/v1/invoices

Succès — Toutes les réponses HTTP contiennent X-Request-Id ; les réponses JSON contiennent aussi request_id.

GET/invoices/{number}Consulter une factureRetourne le document légal structuré et pdf_url contenant opaque_reference.

Paramètres attendus

En-têtes

AuthorizationstringObligatoire

Clé API active envoyée avec le schéma Bearer.

Format et limitesBearer dms_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Accept-LanguageenumOptionnel

Langue préférée des messages d’erreur ; l’anglais est utilisé par défaut.

Format et limitesfr | en | es | itExemple ou valeur par défauten

Paramètres de chemin

numberstringObligatoire

Numéro légal de facture ou d’avoir.

Format et limitesstring[1..80]Exemple ou valeur par défautINV-2026-000123
GEThttps://api.dmseurope.com/v1/invoices/{number}

Succès — Toutes les réponses HTTP contiennent X-Request-Id ; les réponses JSON contiennent aussi request_id.