AuthorizationstringObligatoireClé API active envoyée avec le schéma Bearer.
Comptez des audiences, gérez vos campagnes, récupérez les statistiques et accédez aux factures depuis vos propres outils.
https://api.dmseurope.com/v1/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.
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: frLes 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.
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.
/audiences/countCompter une audienceRetourne les volumes agrégés actuels sans enregistrer d’audience.AuthorizationstringObligatoireClé API active envoyée avec le schéma Bearer.
Accept-LanguageenumOptionnelLangue préférée des messages d’erreur ; l’anglais est utilisé par défaut.
Content-TypestringObligatoireType de média JSON obligatoire pour le corps de la requête.
channelenumObligatoireProduit de campagne utilisé pour le comptage.
emailEmail uniquementsmsSMS uniquementemail_smsEmail et SMS à leurs dates programméesemail_retargeting_smsEmail suivi d’un retargeting SMStargetingobjectObligatoireObjet JSON imbriqué.
countriesarrayObligatoirePays sélectionnés : FR France, GB Royaume-Uni, ES Espagne, IT Italie.
FRFranceGBRoyaume-UniESEspagneITItaliegeographyobjectObligatoireCritères géographiques regroupés par pays sélectionné.
{country}objectObligatoireObjet JSON imbriqué.
regionsarrayOptionnelIdentifiants de région retournés par GET /targeting/geography avec type=region.
departmentsarrayOptionnelIdentifiants de département ou zone administrative retournés par GET /targeting/geography avec type=department.
citiesarrayOptionnelIdentifiants 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.
postal_codesarrayOptionnelCodes postaux disponibles pour le pays.
profileobjectObligatoireCritères démographiques et de foyer ; utilisez un objet vide sans filtre.
age_minintegerOptionnelÂge minimum inclus.
age_maxintegerOptionnelÂge maximum inclus.
gender_idsarrayOptionnelChoisissez un ou plusieurs identifiants de genre affichés ci-dessous. Un tableau vide inclut tous les genres.
1maleHomme2femaleFemme3unknownInconnucsp_idsarrayOptionnelChoisissez un ou plusieurs identifiants de catégorie socioprofessionnelle affichés ci-dessous. Un tableau vide inclut toutes les catégories.
6csp_plusCSP+7csp_middleCSP moyenne8csp_minusCSP-9unknownInconnuhousing_status_idsarrayOptionnelChoisissez un ou plusieurs identifiants de statut d’occupation affichés ci-dessous. Un tableau vide inclut tous les statuts.
10ownerPropriétaire11tenantLocataire12otherAutre statut4unknownInconnuhousing_type_idsarrayOptionnelChoisissez un ou plusieurs identifiants de type de logement affichés ci-dessous. Un tableau vide inclut tous les types.
14houseMaison15apartmentAppartement16otherAutre type de logement5unknownInconnucar_owner_status_idsarrayOptionnelChoisissez ci-dessous l’identifiant correspondant aux propriétaires de voiture. Un tableau vide n’applique aucun filtre automobile.
18ownerPossède un véhicule19non_ownerNe possède pas de véhicule20unknownInconnuexclusionsobjectObligatoireExclusions de contacts récents et de campagnes précédentes.
recent_daysenumOptionnel0 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.
0Aucune exclusion de contact récente15Exclure les contacts sollicités au cours des 15 derniers jours30Exclure les contacts sollicités au cours des 30 derniers jours60Exclure les contacts sollicités au cours des 60 derniers jourscampaign_referencesarrayOptionnelExclut les contacts de campagnes envoyées par le compte pendant les 12 derniers mois.
https://api.dmseurope.com/v1/audiences/countcurl -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":[]}}}'<?php
$url = 'https://api.dmseurope.com/v1/audiences/count';
$payload = <<<'JSON'
{
"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": []
}
}
}
JSON;
$curl = curl_init($url);
curl_setopt_array($curl, [
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer API_KEY',
'Content-Type: application/json'
],
CURLOPT_POSTFIELDS => $payload,
]);
$response = curl_exec($curl);
$status = curl_getinfo($curl, CURLINFO_RESPONSE_CODE);
curl_close($curl);
var_dump($status, json_decode((string) $response, true));// Run this code server-side with Node.js 18 or later.
const response = await fetch('https://api.dmseurope.com/v1/audiences/count', {
method: 'POST',
headers: {
"Authorization": "Bearer API_KEY",
"Content-Type": "application/json"
},
body: JSON.stringify({
"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": []
}
}
})
});
const data = await response.json();
if (!response.ok) throw new Error(JSON.stringify(data));
console.log(data);import json
import requests
url = "https:\/\/api.dmseurope.com\/v1\/audiences\/count"
headers = {
"Authorization": "Bearer API_KEY",
"Content-Type": "application/json"
}
payload = json.loads(r'''
{
"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": []
}
}
}
''')
response = requests.request("POST", url, headers=headers, json=payload)
response.raise_for_status()
print(response.json())Succès — Toutes les réponses HTTP contiennent X-Request-Id ; les réponses JSON contiennent aussi request_id.
L’API est temporairement désactivée.
La configuration du serveur est incomplète.
L’en-tête Bearer est absent.
La clé API est invalide ou révoquée.
Le compte n’est pas actif.
Le compte ne peut pas utiliser l’environnement actif.
Le quota de requêtes est dépassé.
Une erreur inattendue du serveur est survenue.
Un paramètre ou champ JSON est invalide.
Le corps JSON ne peut pas être décodé.
Une valeur de ciblage est inconnue ou indisponible.
Le corps JSON dépasse la taille autorisée.
Content-Type doit être application/json.
/targeting/geographyRechercher des identifiants géographiquesRetourne les identifiants de région, département ou ville acceptés par le ciblage.AuthorizationstringObligatoireClé API active envoyée avec le schéma Bearer.
Accept-LanguageenumOptionnelLangue préférée des messages d’erreur ; l’anglais est utilisé par défaut.
countryenumObligatoirePays dont le référentiel géographique est interrogé.
FRFranceGBRoyaume-UniESEspagneITItalietypeenumObligatoireNiveau de référentiel retourné : régions, départements ou villes.
regionRégiondepartmentDépartement ou zone administrativecityVillequerystringConditionnelFacultatif pour les régions et départements. Obligatoire pour les villes, avec au moins 2 caractères.
https://api.dmseurope.com/v1/targeting/geographycurl 'https://api.dmseurope.com/v1/targeting/geography?country=FR&type=city&query=Paris' \
-H 'Authorization: Bearer API_KEY'<?php
$url = 'https://api.dmseurope.com/v1/targeting/geography?country=FR&type=city&query=Paris';
$curl = curl_init($url);
curl_setopt_array($curl, [
CURLOPT_CUSTOMREQUEST => 'GET',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer API_KEY'
],
]);
$response = curl_exec($curl);
$status = curl_getinfo($curl, CURLINFO_RESPONSE_CODE);
curl_close($curl);
var_dump($status, json_decode((string) $response, true));// Run this code server-side with Node.js 18 or later.
const response = await fetch('https://api.dmseurope.com/v1/targeting/geography?country=FR&type=city&query=Paris', {
method: 'GET',
headers: {
"Authorization": "Bearer API_KEY"
}
});
const data = await response.json();
if (!response.ok) throw new Error(JSON.stringify(data));
console.log(data);import json
import requests
url = "https:\/\/api.dmseurope.com\/v1\/targeting\/geography?country=FR&type=city&query=Paris"
headers = {
"Authorization": "Bearer API_KEY"
}
response = requests.request("GET", url, headers=headers)
response.raise_for_status()
print(response.json())Succès — Toutes les réponses HTTP contiennent X-Request-Id ; les réponses JSON contiennent aussi request_id.
L’API est temporairement désactivée.
La configuration du serveur est incomplète.
L’en-tête Bearer est absent.
La clé API est invalide ou révoquée.
Le compte n’est pas actif.
Le compte ne peut pas utiliser l’environnement actif.
Le quota de requêtes est dépassé.
Une erreur inattendue du serveur est survenue.
Un paramètre ou champ JSON est invalide.
/campaignsLister les campagnesRetourne les campagnes du compte avec pagination et filtres.AuthorizationstringObligatoireClé API active envoyée avec le schéma Bearer.
Accept-LanguageenumOptionnelLangue préférée des messages d’erreur ; l’anglais est utilisé par défaut.
pageintegerOptionnelNuméro de page demandé.
per_pageintegerOptionnelNombre de résultats par page.
statusenumOptionnelStatut exact de campagne.
draftBrouillonpending_validationEn attente de validationneeds_changesCorrections demandéesscheduledProgramméesendingEn cours d’envoisentEnvoyéecancelledAnnuléeproductenumOptionnelFiltre sur le produit de campagne.
emailEmail uniquementsmsSMS uniquementemail_smsEmail et SMS à leurs dates programméesemail_retargeting_smsEmail suivi d’un retargeting SMScountryenumOptionnelFiltre par pays.
FRFranceGBRoyaume-UniESEspagneITItaliecreated_fromstringOptionnelDate minimale de création incluse.
created_tostringOptionnelDate maximale de création incluse.
scheduled_fromstringOptionnelDate minimale de programmation incluse.
scheduled_tostringOptionnelDate maximale de programmation incluse.
searchstringOptionnelRecherche sur le nom ou la référence publique.
https://api.dmseurope.com/v1/campaignscurl 'https://api.dmseurope.com/v1/campaigns?page=1&per_page=20&status=scheduled&country=FR' \
-H 'Authorization: Bearer API_KEY'<?php
$url = 'https://api.dmseurope.com/v1/campaigns?page=1&per_page=20&status=scheduled&country=FR';
$curl = curl_init($url);
curl_setopt_array($curl, [
CURLOPT_CUSTOMREQUEST => 'GET',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer API_KEY'
],
]);
$response = curl_exec($curl);
$status = curl_getinfo($curl, CURLINFO_RESPONSE_CODE);
curl_close($curl);
var_dump($status, json_decode((string) $response, true));// Run this code server-side with Node.js 18 or later.
const response = await fetch('https://api.dmseurope.com/v1/campaigns?page=1&per_page=20&status=scheduled&country=FR', {
method: 'GET',
headers: {
"Authorization": "Bearer API_KEY"
}
});
const data = await response.json();
if (!response.ok) throw new Error(JSON.stringify(data));
console.log(data);import json
import requests
url = "https:\/\/api.dmseurope.com\/v1\/campaigns?page=1&per_page=20&status=scheduled&country=FR"
headers = {
"Authorization": "Bearer API_KEY"
}
response = requests.request("GET", url, headers=headers)
response.raise_for_status()
print(response.json())Succès — Toutes les réponses HTTP contiennent X-Request-Id ; les réponses JSON contiennent aussi request_id.
L’API est temporairement désactivée.
La configuration du serveur est incomplète.
L’en-tête Bearer est absent.
La clé API est invalide ou révoquée.
Le compte n’est pas actif.
Le compte ne peut pas utiliser l’environnement actif.
Le quota de requêtes est dépassé.
Une erreur inattendue du serveur est survenue.
Un paramètre ou champ JSON est invalide.
/campaignsCréer une campagneCompte l’audience, calcule le prix, réserve le crédit et soumet une campagne complète.AuthorizationstringObligatoireClé API active envoyée avec le schéma Bearer.
Accept-LanguageenumOptionnelLangue préférée des messages d’erreur ; l’anglais est utilisé par défaut.
Content-TypestringObligatoireType de média JSON obligatoire pour le corps de la requête.
Client-ReferencestringObligatoireRéférence métier permanente et unique pour cette création. Une seconde création avec la même valeur est refusée.
namestringObligatoireNom de la campagne.
productenumObligatoireemail : email seul ; sms : SMS seul ; email_sms : les deux canaux ; email_retargeting_sms : email suivi d’un retargeting SMS.
emailEmail uniquementsmsSMS uniquementemail_smsEmail et SMS à leurs dates programméesemail_retargeting_smsEmail suivi d’un retargeting SMStargetingobjectObligatoireObjet JSON imbriqué.
countriesarrayObligatoirePays sélectionnés : FR France, GB Royaume-Uni, ES Espagne, IT Italie.
FRFranceGBRoyaume-UniESEspagneITItaliegeographyobjectObligatoireCritères géographiques regroupés par pays sélectionné.
{country}objectObligatoireObjet JSON imbriqué.
regionsarrayOptionnelIdentifiants de région retournés par GET /targeting/geography avec type=region.
departmentsarrayOptionnelIdentifiants de département ou zone administrative retournés par GET /targeting/geography avec type=department.
citiesarrayOptionnelIdentifiants 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.
postal_codesarrayOptionnelCodes postaux disponibles pour le pays.
profileobjectObligatoireCritères démographiques et de foyer ; utilisez un objet vide sans filtre.
age_minintegerOptionnelÂge minimum inclus.
age_maxintegerOptionnelÂge maximum inclus.
gender_idsarrayOptionnelChoisissez un ou plusieurs identifiants de genre affichés ci-dessous. Un tableau vide inclut tous les genres.
1maleHomme2femaleFemme3unknownInconnucsp_idsarrayOptionnelChoisissez un ou plusieurs identifiants de catégorie socioprofessionnelle affichés ci-dessous. Un tableau vide inclut toutes les catégories.
6csp_plusCSP+7csp_middleCSP moyenne8csp_minusCSP-9unknownInconnuhousing_status_idsarrayOptionnelChoisissez un ou plusieurs identifiants de statut d’occupation affichés ci-dessous. Un tableau vide inclut tous les statuts.
10ownerPropriétaire11tenantLocataire12otherAutre statut4unknownInconnuhousing_type_idsarrayOptionnelChoisissez un ou plusieurs identifiants de type de logement affichés ci-dessous. Un tableau vide inclut tous les types.
14houseMaison15apartmentAppartement16otherAutre type de logement5unknownInconnucar_owner_status_idsarrayOptionnelChoisissez ci-dessous l’identifiant correspondant aux propriétaires de voiture. Un tableau vide n’applique aucun filtre automobile.
18ownerPossède un véhicule19non_ownerNe possède pas de véhicule20unknownInconnuexclusionsobjectObligatoireExclusions de contacts récents et de campagnes précédentes.
recent_daysenumOptionnel0 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.
0Aucune exclusion de contact récente15Exclure les contacts sollicités au cours des 15 derniers jours30Exclure les contacts sollicités au cours des 30 derniers jours60Exclure les contacts sollicités au cours des 60 derniers jourscampaign_referencesarrayOptionnelExclut les contacts de campagnes envoyées par le compte pendant les 12 derniers mois.
volumesobjectObligatoireVolumes demandés par pays ; les clés doivent correspondre exactement à targeting.countries.
{country}integerObligatoireVolume de contacts demandé pour ce pays.
contentsobjectObligatoireContenus par pays ; les clés doivent correspondre exactement à targeting.countries.
{country}objectObligatoireObjet de contenu de chaque pays sélectionné ; ses clés exactes dépendent du produit.
emailobjectConditionnelObligatoire pour chaque pays sélectionné lorsque le produit inclut l’email.
sender_namestringConditionnelNom d’expéditeur de l’email.
subjectstringConditionnelObjet de l’email.
preheaderstringOptionnelPréheader facultatif de l’email.
htmlstringConditionnelHTML complet de l’email.
smsobjectConditionnelObligatoire pour chaque pays sélectionné lorsque le produit inclut le SMS.
sender_namestringConditionnel1 à 11 lettres ASCII ou chiffres, avec au moins une lettre ; une valeur ressemblant à un numéro de téléphone est refusée.
messagestringConditionnelCorps 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.
destination_urlstringOptionnelURL 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.
scheduleobjectObligatoireFuseau IANA et dates d’envoi requises. Chaque envoi doit être programmé au moins 48 heures ouvrées à l’avance.
timezonestringObligatoireFuseau IANA utilisé pour valider le décalage des dates.
email_atstringConditionnelRequis si le produit inclut l’email ; interdit pour sms. Pour email_sms, l’écart avec sms_at ne peut pas dépasser 48 heures.
sms_atstringConditionnelRequis 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.
retargeting_delay_hoursintegerOptionnelUtilisé uniquement pour email_retargeting_sms : entier de 6 à 72 heures après l’email ; 24 par défaut.
promo_codestringOptionnelCode promotionnel facultatif : 1 à 64 lettres majuscules, chiffres, tirets bas ou tirets ; le premier caractère doit être une lettre ou un chiffre.
https://api.dmseurope.com/v1/campaignscurl -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
}'<?php
$url = 'https://api.dmseurope.com/v1/campaigns';
$payload = <<<'JSON'
{
"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
}
JSON;
$curl = curl_init($url);
curl_setopt_array($curl, [
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer API_KEY',
'Client-Reference: crm-campaign-20260829-001',
'Content-Type: application/json'
],
CURLOPT_POSTFIELDS => $payload,
]);
$response = curl_exec($curl);
$status = curl_getinfo($curl, CURLINFO_RESPONSE_CODE);
curl_close($curl);
var_dump($status, json_decode((string) $response, true));// Run this code server-side with Node.js 18 or later.
const response = await fetch('https://api.dmseurope.com/v1/campaigns', {
method: 'POST',
headers: {
"Authorization": "Bearer API_KEY",
"Client-Reference": "crm-campaign-20260829-001",
"Content-Type": "application/json"
},
body: JSON.stringify({
"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
})
});
const data = await response.json();
if (!response.ok) throw new Error(JSON.stringify(data));
console.log(data);import json
import requests
url = "https:\/\/api.dmseurope.com\/v1\/campaigns"
headers = {
"Authorization": "Bearer API_KEY",
"Client-Reference": "crm-campaign-20260829-001",
"Content-Type": "application/json"
}
payload = json.loads(r'''
{
"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
}
''')
response = requests.request("POST", url, headers=headers, json=payload)
response.raise_for_status()
print(response.json())Succès — Toutes les réponses HTTP contiennent X-Request-Id ; les réponses JSON contiennent aussi request_id.
L’API est temporairement désactivée.
La configuration du serveur est incomplète.
L’en-tête Bearer est absent.
La clé API est invalide ou révoquée.
Le compte n’est pas actif.
Le compte ne peut pas utiliser l’environnement actif.
Un compte postpaiement actif avec une limite positive est requis.
Le quota de requêtes est dépassé.
Une erreur inattendue du serveur est survenue.
Un paramètre ou champ JSON est invalide.
Le corps JSON ne peut pas être décodé.
Client-Reference est absent.
Client-Reference ne respecte pas le format attendu.
Une valeur de ciblage est inconnue ou indisponible.
Le corps JSON dépasse la taille autorisée.
Content-Type doit être application/json.
La référence identifie déjà une création de campagne.
Le crédit disponible est insuffisant.
La campagne complète enfreint une règle métier.
/campaigns/{reference}Consulter une campagneRetourne le ciblage, les contenus, la programmation, le prix, la modération et la production.AuthorizationstringObligatoireClé API active envoyée avec le schéma Bearer.
Accept-LanguageenumOptionnelLangue préférée des messages d’erreur ; l’anglais est utilisé par défaut.
referencestringObligatoireRéférence publique de campagne.
https://api.dmseurope.com/v1/campaigns/{reference}curl 'https://api.dmseurope.com/v1/campaigns/CMP-2026-0000123' \
-H 'Authorization: Bearer API_KEY'<?php
$url = 'https://api.dmseurope.com/v1/campaigns/CMP-2026-0000123';
$curl = curl_init($url);
curl_setopt_array($curl, [
CURLOPT_CUSTOMREQUEST => 'GET',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer API_KEY'
],
]);
$response = curl_exec($curl);
$status = curl_getinfo($curl, CURLINFO_RESPONSE_CODE);
curl_close($curl);
var_dump($status, json_decode((string) $response, true));// Run this code server-side with Node.js 18 or later.
const response = await fetch('https://api.dmseurope.com/v1/campaigns/CMP-2026-0000123', {
method: 'GET',
headers: {
"Authorization": "Bearer API_KEY"
}
});
const data = await response.json();
if (!response.ok) throw new Error(JSON.stringify(data));
console.log(data);import json
import requests
url = "https:\/\/api.dmseurope.com\/v1\/campaigns\/CMP-2026-0000123"
headers = {
"Authorization": "Bearer API_KEY"
}
response = requests.request("GET", url, headers=headers)
response.raise_for_status()
print(response.json())Succès — Toutes les réponses HTTP contiennent X-Request-Id ; les réponses JSON contiennent aussi request_id.
L’API est temporairement désactivée.
La configuration du serveur est incomplète.
L’en-tête Bearer est absent.
La clé API est invalide ou révoquée.
Le compte n’est pas actif.
Le compte ne peut pas utiliser l’environnement actif.
Le quota de requêtes est dépassé.
Une erreur inattendue du serveur est survenue.
Un paramètre ou champ JSON est invalide.
La campagne est absente ou appartient à un autre compte.
/campaigns/{reference}Modifier une campagneRemplace entièrement une campagne modifiable. La même Client-Reference peut être réutilisée avec un nouveau contenu.AuthorizationstringObligatoireClé API active envoyée avec le schéma Bearer.
Accept-LanguageenumOptionnelLangue préférée des messages d’erreur ; l’anglais est utilisé par défaut.
Content-TypestringObligatoireType de média JSON obligatoire pour le corps de la requête.
Client-ReferencestringObligatoireRéférence métier de la modification. Elle peut être réutilisée pour les modifications suivantes, avec un JSON identique ou différent.
referencestringObligatoireRéférence publique de campagne.
namestringObligatoireNom de la campagne.
productenumObligatoireemail : email seul ; sms : SMS seul ; email_sms : les deux canaux ; email_retargeting_sms : email suivi d’un retargeting SMS.
emailEmail uniquementsmsSMS uniquementemail_smsEmail et SMS à leurs dates programméesemail_retargeting_smsEmail suivi d’un retargeting SMStargetingobjectObligatoireObjet JSON imbriqué.
countriesarrayObligatoirePays sélectionnés : FR France, GB Royaume-Uni, ES Espagne, IT Italie.
FRFranceGBRoyaume-UniESEspagneITItaliegeographyobjectObligatoireCritères géographiques regroupés par pays sélectionné.
{country}objectObligatoireObjet JSON imbriqué.
regionsarrayOptionnelIdentifiants de région retournés par GET /targeting/geography avec type=region.
departmentsarrayOptionnelIdentifiants de département ou zone administrative retournés par GET /targeting/geography avec type=department.
citiesarrayOptionnelIdentifiants 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.
postal_codesarrayOptionnelCodes postaux disponibles pour le pays.
profileobjectObligatoireCritères démographiques et de foyer ; utilisez un objet vide sans filtre.
age_minintegerOptionnelÂge minimum inclus.
age_maxintegerOptionnelÂge maximum inclus.
gender_idsarrayOptionnelChoisissez un ou plusieurs identifiants de genre affichés ci-dessous. Un tableau vide inclut tous les genres.
1maleHomme2femaleFemme3unknownInconnucsp_idsarrayOptionnelChoisissez un ou plusieurs identifiants de catégorie socioprofessionnelle affichés ci-dessous. Un tableau vide inclut toutes les catégories.
6csp_plusCSP+7csp_middleCSP moyenne8csp_minusCSP-9unknownInconnuhousing_status_idsarrayOptionnelChoisissez un ou plusieurs identifiants de statut d’occupation affichés ci-dessous. Un tableau vide inclut tous les statuts.
10ownerPropriétaire11tenantLocataire12otherAutre statut4unknownInconnuhousing_type_idsarrayOptionnelChoisissez un ou plusieurs identifiants de type de logement affichés ci-dessous. Un tableau vide inclut tous les types.
14houseMaison15apartmentAppartement16otherAutre type de logement5unknownInconnucar_owner_status_idsarrayOptionnelChoisissez ci-dessous l’identifiant correspondant aux propriétaires de voiture. Un tableau vide n’applique aucun filtre automobile.
18ownerPossède un véhicule19non_ownerNe possède pas de véhicule20unknownInconnuexclusionsobjectObligatoireExclusions de contacts récents et de campagnes précédentes.
recent_daysenumOptionnel0 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.
0Aucune exclusion de contact récente15Exclure les contacts sollicités au cours des 15 derniers jours30Exclure les contacts sollicités au cours des 30 derniers jours60Exclure les contacts sollicités au cours des 60 derniers jourscampaign_referencesarrayOptionnelExclut les contacts de campagnes envoyées par le compte pendant les 12 derniers mois.
volumesobjectObligatoireVolumes demandés par pays ; les clés doivent correspondre exactement à targeting.countries.
{country}integerObligatoireVolume de contacts demandé pour ce pays.
contentsobjectObligatoireContenus par pays ; les clés doivent correspondre exactement à targeting.countries.
{country}objectObligatoireObjet de contenu de chaque pays sélectionné ; ses clés exactes dépendent du produit.
emailobjectConditionnelObligatoire pour chaque pays sélectionné lorsque le produit inclut l’email.
sender_namestringConditionnelNom d’expéditeur de l’email.
subjectstringConditionnelObjet de l’email.
preheaderstringOptionnelPréheader facultatif de l’email.
htmlstringConditionnelHTML complet de l’email.
smsobjectConditionnelObligatoire pour chaque pays sélectionné lorsque le produit inclut le SMS.
sender_namestringConditionnel1 à 11 lettres ASCII ou chiffres, avec au moins une lettre ; une valeur ressemblant à un numéro de téléphone est refusée.
messagestringConditionnelCorps 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.
destination_urlstringOptionnelURL 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.
scheduleobjectObligatoireFuseau IANA et dates d’envoi requises. Chaque envoi doit être programmé au moins 48 heures ouvrées à l’avance.
timezonestringObligatoireFuseau IANA utilisé pour valider le décalage des dates.
email_atstringConditionnelRequis si le produit inclut l’email ; interdit pour sms. Pour email_sms, l’écart avec sms_at ne peut pas dépasser 48 heures.
sms_atstringConditionnelRequis 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.
retargeting_delay_hoursintegerOptionnelUtilisé uniquement pour email_retargeting_sms : entier de 6 à 72 heures après l’email ; 24 par défaut.
promo_codestringOptionnelCode promotionnel facultatif : 1 à 64 lettres majuscules, chiffres, tirets bas ou tirets ; le premier caractère doit être une lettre ou un chiffre.
https://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
}'<?php
$url = 'https://api.dmseurope.com/v1/campaigns/CMP-2026-0000123';
$payload = <<<'JSON'
{
"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
}
JSON;
$curl = curl_init($url);
curl_setopt_array($curl, [
CURLOPT_CUSTOMREQUEST => 'PUT',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer API_KEY',
'Client-Reference: crm-update-20260829-001',
'Content-Type: application/json'
],
CURLOPT_POSTFIELDS => $payload,
]);
$response = curl_exec($curl);
$status = curl_getinfo($curl, CURLINFO_RESPONSE_CODE);
curl_close($curl);
var_dump($status, json_decode((string) $response, true));// Run this code server-side with Node.js 18 or later.
const response = await fetch('https://api.dmseurope.com/v1/campaigns/CMP-2026-0000123', {
method: 'PUT',
headers: {
"Authorization": "Bearer API_KEY",
"Client-Reference": "crm-update-20260829-001",
"Content-Type": "application/json"
},
body: JSON.stringify({
"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
})
});
const data = await response.json();
if (!response.ok) throw new Error(JSON.stringify(data));
console.log(data);import json
import requests
url = "https:\/\/api.dmseurope.com\/v1\/campaigns\/CMP-2026-0000123"
headers = {
"Authorization": "Bearer API_KEY",
"Client-Reference": "crm-update-20260829-001",
"Content-Type": "application/json"
}
payload = json.loads(r'''
{
"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
}
''')
response = requests.request("PUT", url, headers=headers, json=payload)
response.raise_for_status()
print(response.json())Succès — Toutes les réponses HTTP contiennent X-Request-Id ; les réponses JSON contiennent aussi request_id.
L’API est temporairement désactivée.
La configuration du serveur est incomplète.
L’en-tête Bearer est absent.
La clé API est invalide ou révoquée.
Le compte n’est pas actif.
Le compte ne peut pas utiliser l’environnement actif.
Un compte postpaiement actif avec une limite positive est requis.
Le quota de requêtes est dépassé.
Une erreur inattendue du serveur est survenue.
Un paramètre ou champ JSON est invalide.
Le corps JSON ne peut pas être décodé.
Client-Reference est absent.
Client-Reference ne respecte pas le format attendu.
Une valeur de ciblage est inconnue ou indisponible.
Le corps JSON dépasse la taille autorisée.
Content-Type doit être application/json.
La campagne est absente ou appartient à un autre compte.
Le statut de la campagne interdit sa modification.
Le crédit disponible est insuffisant.
La campagne complète enfreint une règle métier.
/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.AuthorizationstringObligatoireClé API active envoyée avec le schéma Bearer.
Accept-LanguageenumOptionnelLangue préférée des messages d’erreur ; l’anglais est utilisé par défaut.
Content-TypestringConditionnelObligatoire uniquement lorsqu’un corps JSON d’annulation est envoyé.
referencestringObligatoireRéférence publique de campagne.
reasonstringOptionnelMotif d’annulation facultatif.
https://api.dmseurope.com/v1/campaigns/{reference}/cancelcurl -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"}'<?php
$url = 'https://api.dmseurope.com/v1/campaigns/CMP-2026-0000123/cancel';
$payload = <<<'JSON'
{
"reason": "Cancelled by CRM operator"
}
JSON;
$curl = curl_init($url);
curl_setopt_array($curl, [
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer API_KEY',
'Content-Type: application/json'
],
CURLOPT_POSTFIELDS => $payload,
]);
$response = curl_exec($curl);
$status = curl_getinfo($curl, CURLINFO_RESPONSE_CODE);
curl_close($curl);
var_dump($status, json_decode((string) $response, true));// Run this code server-side with Node.js 18 or later.
const response = await fetch('https://api.dmseurope.com/v1/campaigns/CMP-2026-0000123/cancel', {
method: 'POST',
headers: {
"Authorization": "Bearer API_KEY",
"Content-Type": "application/json"
},
body: JSON.stringify({
"reason": "Cancelled by CRM operator"
})
});
const data = await response.json();
if (!response.ok) throw new Error(JSON.stringify(data));
console.log(data);import json
import requests
url = "https:\/\/api.dmseurope.com\/v1\/campaigns\/CMP-2026-0000123\/cancel"
headers = {
"Authorization": "Bearer API_KEY",
"Content-Type": "application/json"
}
payload = json.loads(r'''
{
"reason": "Cancelled by CRM operator"
}
''')
response = requests.request("POST", url, headers=headers, json=payload)
response.raise_for_status()
print(response.json())Succès — Toutes les réponses HTTP contiennent X-Request-Id ; les réponses JSON contiennent aussi request_id.
L’API est temporairement désactivée.
La configuration du serveur est incomplète.
L’en-tête Bearer est absent.
La clé API est invalide ou révoquée.
Le compte n’est pas actif.
Le compte ne peut pas utiliser l’environnement actif.
Le quota de requêtes est dépassé.
Une erreur inattendue du serveur est survenue.
Un paramètre ou champ JSON est invalide.
Le corps JSON ne peut pas être décodé.
Le corps JSON dépasse la taille autorisée.
Content-Type doit être application/json.
La campagne est absente ou appartient à un autre compte.
Le statut de la campagne interdit son annulation.
/campaigns/{reference}/statisticsConsulter les statistiquesRetourne les totaux actuels et les ventilations par pays, langue et canal.AuthorizationstringObligatoireClé API active envoyée avec le schéma Bearer.
Accept-LanguageenumOptionnelLangue préférée des messages d’erreur ; l’anglais est utilisé par défaut.
referencestringObligatoireRéférence publique de campagne.
https://api.dmseurope.com/v1/campaigns/{reference}/statisticscurl 'https://api.dmseurope.com/v1/campaigns/CMP-2026-0000123/statistics' \
-H 'Authorization: Bearer API_KEY'<?php
$url = 'https://api.dmseurope.com/v1/campaigns/CMP-2026-0000123/statistics';
$curl = curl_init($url);
curl_setopt_array($curl, [
CURLOPT_CUSTOMREQUEST => 'GET',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer API_KEY'
],
]);
$response = curl_exec($curl);
$status = curl_getinfo($curl, CURLINFO_RESPONSE_CODE);
curl_close($curl);
var_dump($status, json_decode((string) $response, true));// Run this code server-side with Node.js 18 or later.
const response = await fetch('https://api.dmseurope.com/v1/campaigns/CMP-2026-0000123/statistics', {
method: 'GET',
headers: {
"Authorization": "Bearer API_KEY"
}
});
const data = await response.json();
if (!response.ok) throw new Error(JSON.stringify(data));
console.log(data);import json
import requests
url = "https:\/\/api.dmseurope.com\/v1\/campaigns\/CMP-2026-0000123\/statistics"
headers = {
"Authorization": "Bearer API_KEY"
}
response = requests.request("GET", url, headers=headers)
response.raise_for_status()
print(response.json())Succès — Toutes les réponses HTTP contiennent X-Request-Id ; les réponses JSON contiennent aussi request_id.
L’API est temporairement désactivée.
La configuration du serveur est incomplète.
L’en-tête Bearer est absent.
La clé API est invalide ou révoquée.
Le compte n’est pas actif.
Le compte ne peut pas utiliser l’environnement actif.
Le quota de requêtes est dépassé.
Une erreur inattendue du serveur est survenue.
Un paramètre ou champ JSON est invalide.
La campagne est absente ou appartient à un autre compte.
/invoicesLister les facturesRetourne les factures et avoirs. Chaque élément contient pdf_url, dont le chemin inclut opaque_reference.AuthorizationstringObligatoireClé API active envoyée avec le schéma Bearer.
Accept-LanguageenumOptionnelLangue préférée des messages d’erreur ; l’anglais est utilisé par défaut.
pageintegerOptionnelNuméro de page demandé.
per_pageintegerOptionnelNombre de résultats par page.
typeenumOptionnelFiltre sur le type de document.
invoiceFacturecredit_noteAvoirstatusstringOptionnelStatut exact du cycle de vie de la facture.
payment_statusstringOptionnelStatut exact du paiement.
issued_fromstringOptionnelDate minimale d’émission incluse.
issued_tostringOptionnelDate maximale d’émission incluse.
campaign_referencestringOptionnelFiltre par référence publique de campagne.
https://api.dmseurope.com/v1/invoicescurl 'https://api.dmseurope.com/v1/invoices?page=1&per_page=20&type=invoice&payment_status=paid' \
-H 'Authorization: Bearer API_KEY'<?php
$url = 'https://api.dmseurope.com/v1/invoices?page=1&per_page=20&type=invoice&payment_status=paid';
$curl = curl_init($url);
curl_setopt_array($curl, [
CURLOPT_CUSTOMREQUEST => 'GET',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer API_KEY'
],
]);
$response = curl_exec($curl);
$status = curl_getinfo($curl, CURLINFO_RESPONSE_CODE);
curl_close($curl);
var_dump($status, json_decode((string) $response, true));// Run this code server-side with Node.js 18 or later.
const response = await fetch('https://api.dmseurope.com/v1/invoices?page=1&per_page=20&type=invoice&payment_status=paid', {
method: 'GET',
headers: {
"Authorization": "Bearer API_KEY"
}
});
const data = await response.json();
if (!response.ok) throw new Error(JSON.stringify(data));
console.log(data);import json
import requests
url = "https:\/\/api.dmseurope.com\/v1\/invoices?page=1&per_page=20&type=invoice&payment_status=paid"
headers = {
"Authorization": "Bearer API_KEY"
}
response = requests.request("GET", url, headers=headers)
response.raise_for_status()
print(response.json())Succès — Toutes les réponses HTTP contiennent X-Request-Id ; les réponses JSON contiennent aussi request_id.
L’API est temporairement désactivée.
La configuration du serveur est incomplète.
L’en-tête Bearer est absent.
La clé API est invalide ou révoquée.
Le compte n’est pas actif.
Le compte ne peut pas utiliser l’environnement actif.
Le quota de requêtes est dépassé.
Une erreur inattendue du serveur est survenue.
Un paramètre ou champ JSON est invalide.
/invoices/{number}Consulter une factureRetourne le document légal structuré et pdf_url contenant opaque_reference.AuthorizationstringObligatoireClé API active envoyée avec le schéma Bearer.
Accept-LanguageenumOptionnelLangue préférée des messages d’erreur ; l’anglais est utilisé par défaut.
numberstringObligatoireNuméro légal de facture ou d’avoir.
https://api.dmseurope.com/v1/invoices/{number}curl 'https://api.dmseurope.com/v1/invoices/INV-2026-000123' \
-H 'Authorization: Bearer API_KEY'<?php
$url = 'https://api.dmseurope.com/v1/invoices/INV-2026-000123';
$curl = curl_init($url);
curl_setopt_array($curl, [
CURLOPT_CUSTOMREQUEST => 'GET',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer API_KEY'
],
]);
$response = curl_exec($curl);
$status = curl_getinfo($curl, CURLINFO_RESPONSE_CODE);
curl_close($curl);
var_dump($status, json_decode((string) $response, true));// Run this code server-side with Node.js 18 or later.
const response = await fetch('https://api.dmseurope.com/v1/invoices/INV-2026-000123', {
method: 'GET',
headers: {
"Authorization": "Bearer API_KEY"
}
});
const data = await response.json();
if (!response.ok) throw new Error(JSON.stringify(data));
console.log(data);import json
import requests
url = "https:\/\/api.dmseurope.com\/v1\/invoices\/INV-2026-000123"
headers = {
"Authorization": "Bearer API_KEY"
}
response = requests.request("GET", url, headers=headers)
response.raise_for_status()
print(response.json())Succès — Toutes les réponses HTTP contiennent X-Request-Id ; les réponses JSON contiennent aussi request_id.
L’API est temporairement désactivée.
La configuration du serveur est incomplète.
L’en-tête Bearer est absent.
La clé API est invalide ou révoquée.
Le compte n’est pas actif.
Le compte ne peut pas utiliser l’environnement actif.
Le quota de requêtes est dépassé.
Une erreur inattendue du serveur est survenue.
Un paramètre ou champ JSON est invalide.
Le document est absent ou appartient à un autre compte.