AuthorizationstringObligatorioClave API activa enviada con el esquema Bearer.
Cuente audiencias, gestione campañas, recupere estadísticas y acceda a facturas desde sus propias herramientas.
https://api.dmseurope.com/v1/Cree una clave en Mi cuenta → API, guárdela en el gestor de secretos de su servidor y úsela solo para intercambios de servidor a servidor.
Cada solicitud requiere autenticación Bearer. Accept-Language admite fr, en, es o it y determina el idioma de los mensajes de error.
Authorization: Bearer API_KEY
Accept-Language: esLos límites son 120 lecturas, 20 mutaciones y 20 recuentos de audiencia por minuto, por cuenta y por IP. Ante HTTP 429, espere los segundos indicados por Retry-After.
Abra una ruta para consultar todos los parámetros aceptados, una solicitud completa, la estructura exacta de la respuesta correcta y los posibles errores.
/audiences/countContar una audienciaDevuelve los volúmenes agregados actuales sin guardar una audiencia.AuthorizationstringObligatorioClave API activa enviada con el esquema Bearer.
Accept-LanguageenumOpcionalIdioma preferido de los mensajes de error; se usa inglés por defecto.
Content-TypestringObligatorioTipo de medio JSON obligatorio para el cuerpo de la solicitud.
channelenumObligatorioProducto de campaña utilizado para el recuento.
emailSolo emailsmsSolo SMSemail_smsEmail y SMS en sus fechas programadasemail_retargeting_smsEmail seguido de retargeting SMStargetingobjectObligatorioObjeto JSON anidado.
countriesarrayObligatorioPaíses seleccionados: FR Francia, GB Reino Unido, ES España, IT Italia.
FRFranciaGBReino UnidoESEspañaITItaliageographyobjectObligatorioCriterios geográficos agrupados por país seleccionado.
{country}objectObligatorioObjeto JSON anidado.
regionsarrayOpcionalIdentificadores de región devueltos por GET /targeting/geography con type=region.
departmentsarrayOpcionalIdentificadores de departamento o zona administrativa devueltos por GET /targeting/geography con type=department.
citiesarrayOpcionalIdentificadores de ciudad devueltos por GET /targeting/geography con type=city. Cada ciudad incluye su región y departamento para distinguir nombres idénticos.
postal_codesarrayOpcionalCódigos postales disponibles para el país.
profileobjectObligatorioCriterios demográficos y del hogar; use un objeto vacío sin filtro.
age_minintegerOpcionalEdad mínima incluida.
age_maxintegerOpcionalEdad máxima incluida.
gender_idsarrayOpcionalElija uno o varios identificadores de género mostrados a continuación. Una matriz vacía incluye todos los géneros.
1maleHombre2femaleMujer3unknownDesconocidocsp_idsarrayOpcionalElija uno o varios identificadores de categoría socioprofesional mostrados a continuación. Una matriz vacía incluye todas las categorías.
6csp_plusNivel socioeconómico alto7csp_middleNivel socioeconómico medio8csp_minusNivel socioeconómico bajo9unknownDesconocidohousing_status_idsarrayOpcionalElija uno o varios identificadores de régimen de vivienda mostrados a continuación. Una matriz vacía incluye todos los regímenes.
10ownerPropietario11tenantInquilino12otherOtro régimen4unknownDesconocidohousing_type_idsarrayOpcionalElija uno o varios identificadores de tipo de vivienda mostrados a continuación. Una matriz vacía incluye todos los tipos.
14houseCasa15apartmentPiso o apartamento16otherOtro tipo de vivienda5unknownDesconocidocar_owner_status_idsarrayOpcionalElija a continuación el identificador correspondiente a propietarios de coches. Una matriz vacía no aplica ningún filtro de automóvil.
18ownerPosee un vehículo19non_ownerNo posee ningún vehículo20unknownDesconocidoexclusionsobjectObligatorioExclusiones de contactos recientes y campañas anteriores.
recent_daysenumOpcional0 no aplica exclusión reciente; 15, 30 o 60 excluye contactos alcanzados durante ese número de días anteriores.
0Sin exclusión de contactos recientes15Excluir contactos alcanzados en los últimos 15 días30Excluir contactos alcanzados en los últimos 30 días60Excluir contactos alcanzados en los últimos 60 díascampaign_referencesarrayOpcionalExcluye contactos de campañas enviadas por la cuenta durante los últimos 12 meses.
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())Éxito — Todas las respuestas HTTP incluyen X-Request-Id; las respuestas JSON también incluyen request_id.
La API está temporalmente desactivada.
La configuración del servidor está incompleta.
Falta el encabezado Bearer.
La clave API no es válida o está revocada.
La cuenta no está activa.
La cuenta no puede usar el entorno activo.
Se ha superado el límite de solicitudes.
Se produjo un error inesperado del servidor.
Un parámetro o campo JSON no es válido.
No se puede decodificar el cuerpo JSON.
Un valor de segmentación es desconocido o no está disponible.
El cuerpo JSON supera el tamaño permitido.
Content-Type debe ser application/json.
/targeting/geographyBuscar identificadores geográficosDevuelve los identificadores de región, departamento o ciudad aceptados por la segmentación.AuthorizationstringObligatorioClave API activa enviada con el esquema Bearer.
Accept-LanguageenumOpcionalIdioma preferido de los mensajes de error; se usa inglés por defecto.
countryenumObligatorioPaís cuyo catálogo geográfico se consulta.
FRFranciaGBReino UnidoESEspañaITItaliatypeenumObligatorioNivel del catálogo devuelto: regiones, departamentos o ciudades.
regionRegióndepartmentDepartamento o zona administrativacityCiudadquerystringCondicionalOpcional para regiones y departamentos. Obligatorio para ciudades, con al menos 2 caracteres.
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())Éxito — Todas las respuestas HTTP incluyen X-Request-Id; las respuestas JSON también incluyen request_id.
La API está temporalmente desactivada.
La configuración del servidor está incompleta.
Falta el encabezado Bearer.
La clave API no es válida o está revocada.
La cuenta no está activa.
La cuenta no puede usar el entorno activo.
Se ha superado el límite de solicitudes.
Se produjo un error inesperado del servidor.
Un parámetro o campo JSON no es válido.
/campaignsListar campañasDevuelve las campañas de la cuenta con paginación y filtros.AuthorizationstringObligatorioClave API activa enviada con el esquema Bearer.
Accept-LanguageenumOpcionalIdioma preferido de los mensajes de error; se usa inglés por defecto.
pageintegerOpcionalNúmero de página solicitado.
per_pageintegerOpcionalNúmero de resultados por página.
statusenumOpcionalEstado exacto de la campaña.
draftBorradorpending_validationPendiente de validaciónneeds_changesRequiere cambiosscheduledProgramadasendingEnviándosesentEnviadacancelledCanceladaproductenumOpcionalFiltro por producto de campaña.
emailSolo emailsmsSolo SMSemail_smsEmail y SMS en sus fechas programadasemail_retargeting_smsEmail seguido de retargeting SMScountryenumOpcionalFiltro por país.
FRFranciaGBReino UnidoESEspañaITItaliacreated_fromstringOpcionalFecha mínima de creación incluida.
created_tostringOpcionalFecha máxima de creación incluida.
scheduled_fromstringOpcionalFecha mínima programada incluida.
scheduled_tostringOpcionalFecha máxima programada incluida.
searchstringOpcionalBúsqueda por nombre o referencia pública.
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())Éxito — Todas las respuestas HTTP incluyen X-Request-Id; las respuestas JSON también incluyen request_id.
La API está temporalmente desactivada.
La configuración del servidor está incompleta.
Falta el encabezado Bearer.
La clave API no es válida o está revocada.
La cuenta no está activa.
La cuenta no puede usar el entorno activo.
Se ha superado el límite de solicitudes.
Se produjo un error inesperado del servidor.
Un parámetro o campo JSON no es válido.
/campaignsCrear una campañaCuenta la audiencia, calcula el precio, reserva el crédito y envía una campaña completa.AuthorizationstringObligatorioClave API activa enviada con el esquema Bearer.
Accept-LanguageenumOpcionalIdioma preferido de los mensajes de error; se usa inglés por defecto.
Content-TypestringObligatorioTipo de medio JSON obligatorio para el cuerpo de la solicitud.
Client-ReferencestringObligatorioReferencia de negocio permanente y exclusiva para esta creación. Se rechaza una segunda creación con el mismo valor.
namestringObligatorioNombre de la campaña.
productenumObligatorioemail: solo email; sms: solo SMS; email_sms: ambos canales; email_retargeting_sms: email seguido de retargeting SMS.
emailSolo emailsmsSolo SMSemail_smsEmail y SMS en sus fechas programadasemail_retargeting_smsEmail seguido de retargeting SMStargetingobjectObligatorioObjeto JSON anidado.
countriesarrayObligatorioPaíses seleccionados: FR Francia, GB Reino Unido, ES España, IT Italia.
FRFranciaGBReino UnidoESEspañaITItaliageographyobjectObligatorioCriterios geográficos agrupados por país seleccionado.
{country}objectObligatorioObjeto JSON anidado.
regionsarrayOpcionalIdentificadores de región devueltos por GET /targeting/geography con type=region.
departmentsarrayOpcionalIdentificadores de departamento o zona administrativa devueltos por GET /targeting/geography con type=department.
citiesarrayOpcionalIdentificadores de ciudad devueltos por GET /targeting/geography con type=city. Cada ciudad incluye su región y departamento para distinguir nombres idénticos.
postal_codesarrayOpcionalCódigos postales disponibles para el país.
profileobjectObligatorioCriterios demográficos y del hogar; use un objeto vacío sin filtro.
age_minintegerOpcionalEdad mínima incluida.
age_maxintegerOpcionalEdad máxima incluida.
gender_idsarrayOpcionalElija uno o varios identificadores de género mostrados a continuación. Una matriz vacía incluye todos los géneros.
1maleHombre2femaleMujer3unknownDesconocidocsp_idsarrayOpcionalElija uno o varios identificadores de categoría socioprofesional mostrados a continuación. Una matriz vacía incluye todas las categorías.
6csp_plusNivel socioeconómico alto7csp_middleNivel socioeconómico medio8csp_minusNivel socioeconómico bajo9unknownDesconocidohousing_status_idsarrayOpcionalElija uno o varios identificadores de régimen de vivienda mostrados a continuación. Una matriz vacía incluye todos los regímenes.
10ownerPropietario11tenantInquilino12otherOtro régimen4unknownDesconocidohousing_type_idsarrayOpcionalElija uno o varios identificadores de tipo de vivienda mostrados a continuación. Una matriz vacía incluye todos los tipos.
14houseCasa15apartmentPiso o apartamento16otherOtro tipo de vivienda5unknownDesconocidocar_owner_status_idsarrayOpcionalElija a continuación el identificador correspondiente a propietarios de coches. Una matriz vacía no aplica ningún filtro de automóvil.
18ownerPosee un vehículo19non_ownerNo posee ningún vehículo20unknownDesconocidoexclusionsobjectObligatorioExclusiones de contactos recientes y campañas anteriores.
recent_daysenumOpcional0 no aplica exclusión reciente; 15, 30 o 60 excluye contactos alcanzados durante ese número de días anteriores.
0Sin exclusión de contactos recientes15Excluir contactos alcanzados en los últimos 15 días30Excluir contactos alcanzados en los últimos 30 días60Excluir contactos alcanzados en los últimos 60 díascampaign_referencesarrayOpcionalExcluye contactos de campañas enviadas por la cuenta durante los últimos 12 meses.
volumesobjectObligatorioVolúmenes solicitados por país; las claves deben coincidir exactamente con targeting.countries.
{country}integerObligatorioVolumen de contactos solicitado para este país.
contentsobjectObligatorioContenidos por país; las claves deben coincidir exactamente con targeting.countries.
{country}objectObligatorioObjeto de contenido para cada país seleccionado; sus claves exactas dependen del producto.
emailobjectCondicionalObligatorio para cada país cuando el producto incluye email.
sender_namestringCondicionalNombre del remitente del email.
subjectstringCondicionalAsunto del email.
preheaderstringOpcionalPreheader opcional del email.
htmlstringCondicionalHTML completo del email.
smsobjectCondicionalObligatorio para cada país cuando el producto incluye SMS.
sender_namestringCondicionalEntre 1 y 11 letras ASCII o dígitos, con al menos una letra; se rechazan los valores que parecen números de teléfono.
messagestringCondicionalCuerpo sin el sufijo STOP automático. Máximo 4 segmentos SMS, incluido el sufijo STOP del país, las reservas de personalización y el enlace corto de 20 caracteres.
destination_urlstringOpcionalURL HTTP(S) pública opcional de hasta 2.048 caracteres. Es obligatoria exactamente cuando el mensaje contiene una etiqueta {{short_url}}; se rechazan las URL escritas directamente en el mensaje.
scheduleobjectObligatorioZona IANA y fechas de envío requeridas. Cada envío debe programarse con al menos 48 horas laborables de antelación.
timezonestringObligatorioZona IANA utilizada para validar los desfases de fecha.
email_atstringCondicionalObligatorio si el producto incluye email; prohibido para sms. Para email_sms, la diferencia con sms_at no puede superar 48 horas.
sms_atstringCondicionalObligatorio para sms y email_sms; prohibido para email y email_retargeting_sms. La hora local debe estar entre las 08:00 y las 19:45 y, para email_sms, a no más de 48 horas de email_at.
retargeting_delay_hoursintegerOpcionalSolo para email_retargeting_sms: entero de 6 a 72 horas después del email; 24 por defecto.
promo_codestringOpcionalCódigo promocional opcional: entre 1 y 64 letras mayúsculas, dígitos, guiones bajos o guiones; el primer carácter debe ser una letra o un dígito.
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())Éxito — Todas las respuestas HTTP incluyen X-Request-Id; las respuestas JSON también incluyen request_id.
La API está temporalmente desactivada.
La configuración del servidor está incompleta.
Falta el encabezado Bearer.
La clave API no es válida o está revocada.
La cuenta no está activa.
La cuenta no puede usar el entorno activo.
Se requiere una cuenta pospago activa con límite positivo.
Se ha superado el límite de solicitudes.
Se produjo un error inesperado del servidor.
Un parámetro o campo JSON no es válido.
No se puede decodificar el cuerpo JSON.
Falta Client-Reference.
Client-Reference no cumple el formato requerido.
Un valor de segmentación es desconocido o no está disponible.
El cuerpo JSON supera el tamaño permitido.
Content-Type debe ser application/json.
La referencia ya identifica una creación de campaña.
El crédito disponible es insuficiente.
La campaña completa incumple una regla de negocio.
/campaigns/{reference}Consultar una campañaDevuelve segmentación, contenidos, programación, precio, moderación y producción.AuthorizationstringObligatorioClave API activa enviada con el esquema Bearer.
Accept-LanguageenumOpcionalIdioma preferido de los mensajes de error; se usa inglés por defecto.
referencestringObligatorioReferencia pública de campaña.
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())Éxito — Todas las respuestas HTTP incluyen X-Request-Id; las respuestas JSON también incluyen request_id.
La API está temporalmente desactivada.
La configuración del servidor está incompleta.
Falta el encabezado Bearer.
La clave API no es válida o está revocada.
La cuenta no está activa.
La cuenta no puede usar el entorno activo.
Se ha superado el límite de solicitudes.
Se produjo un error inesperado del servidor.
Un parámetro o campo JSON no es válido.
La campaña no existe o pertenece a otra cuenta.
/campaigns/{reference}Modificar una campañaSustituye por completo una campaña modificable. La misma Client-Reference puede reutilizarse con contenido nuevo.AuthorizationstringObligatorioClave API activa enviada con el esquema Bearer.
Accept-LanguageenumOpcionalIdioma preferido de los mensajes de error; se usa inglés por defecto.
Content-TypestringObligatorioTipo de medio JSON obligatorio para el cuerpo de la solicitud.
Client-ReferencestringObligatorioReferencia de negocio de la modificación. Puede reutilizarse en modificaciones posteriores, con JSON idéntico o diferente.
referencestringObligatorioReferencia pública de campaña.
namestringObligatorioNombre de la campaña.
productenumObligatorioemail: solo email; sms: solo SMS; email_sms: ambos canales; email_retargeting_sms: email seguido de retargeting SMS.
emailSolo emailsmsSolo SMSemail_smsEmail y SMS en sus fechas programadasemail_retargeting_smsEmail seguido de retargeting SMStargetingobjectObligatorioObjeto JSON anidado.
countriesarrayObligatorioPaíses seleccionados: FR Francia, GB Reino Unido, ES España, IT Italia.
FRFranciaGBReino UnidoESEspañaITItaliageographyobjectObligatorioCriterios geográficos agrupados por país seleccionado.
{country}objectObligatorioObjeto JSON anidado.
regionsarrayOpcionalIdentificadores de región devueltos por GET /targeting/geography con type=region.
departmentsarrayOpcionalIdentificadores de departamento o zona administrativa devueltos por GET /targeting/geography con type=department.
citiesarrayOpcionalIdentificadores de ciudad devueltos por GET /targeting/geography con type=city. Cada ciudad incluye su región y departamento para distinguir nombres idénticos.
postal_codesarrayOpcionalCódigos postales disponibles para el país.
profileobjectObligatorioCriterios demográficos y del hogar; use un objeto vacío sin filtro.
age_minintegerOpcionalEdad mínima incluida.
age_maxintegerOpcionalEdad máxima incluida.
gender_idsarrayOpcionalElija uno o varios identificadores de género mostrados a continuación. Una matriz vacía incluye todos los géneros.
1maleHombre2femaleMujer3unknownDesconocidocsp_idsarrayOpcionalElija uno o varios identificadores de categoría socioprofesional mostrados a continuación. Una matriz vacía incluye todas las categorías.
6csp_plusNivel socioeconómico alto7csp_middleNivel socioeconómico medio8csp_minusNivel socioeconómico bajo9unknownDesconocidohousing_status_idsarrayOpcionalElija uno o varios identificadores de régimen de vivienda mostrados a continuación. Una matriz vacía incluye todos los regímenes.
10ownerPropietario11tenantInquilino12otherOtro régimen4unknownDesconocidohousing_type_idsarrayOpcionalElija uno o varios identificadores de tipo de vivienda mostrados a continuación. Una matriz vacía incluye todos los tipos.
14houseCasa15apartmentPiso o apartamento16otherOtro tipo de vivienda5unknownDesconocidocar_owner_status_idsarrayOpcionalElija a continuación el identificador correspondiente a propietarios de coches. Una matriz vacía no aplica ningún filtro de automóvil.
18ownerPosee un vehículo19non_ownerNo posee ningún vehículo20unknownDesconocidoexclusionsobjectObligatorioExclusiones de contactos recientes y campañas anteriores.
recent_daysenumOpcional0 no aplica exclusión reciente; 15, 30 o 60 excluye contactos alcanzados durante ese número de días anteriores.
0Sin exclusión de contactos recientes15Excluir contactos alcanzados en los últimos 15 días30Excluir contactos alcanzados en los últimos 30 días60Excluir contactos alcanzados en los últimos 60 díascampaign_referencesarrayOpcionalExcluye contactos de campañas enviadas por la cuenta durante los últimos 12 meses.
volumesobjectObligatorioVolúmenes solicitados por país; las claves deben coincidir exactamente con targeting.countries.
{country}integerObligatorioVolumen de contactos solicitado para este país.
contentsobjectObligatorioContenidos por país; las claves deben coincidir exactamente con targeting.countries.
{country}objectObligatorioObjeto de contenido para cada país seleccionado; sus claves exactas dependen del producto.
emailobjectCondicionalObligatorio para cada país cuando el producto incluye email.
sender_namestringCondicionalNombre del remitente del email.
subjectstringCondicionalAsunto del email.
preheaderstringOpcionalPreheader opcional del email.
htmlstringCondicionalHTML completo del email.
smsobjectCondicionalObligatorio para cada país cuando el producto incluye SMS.
sender_namestringCondicionalEntre 1 y 11 letras ASCII o dígitos, con al menos una letra; se rechazan los valores que parecen números de teléfono.
messagestringCondicionalCuerpo sin el sufijo STOP automático. Máximo 4 segmentos SMS, incluido el sufijo STOP del país, las reservas de personalización y el enlace corto de 20 caracteres.
destination_urlstringOpcionalURL HTTP(S) pública opcional de hasta 2.048 caracteres. Es obligatoria exactamente cuando el mensaje contiene una etiqueta {{short_url}}; se rechazan las URL escritas directamente en el mensaje.
scheduleobjectObligatorioZona IANA y fechas de envío requeridas. Cada envío debe programarse con al menos 48 horas laborables de antelación.
timezonestringObligatorioZona IANA utilizada para validar los desfases de fecha.
email_atstringCondicionalObligatorio si el producto incluye email; prohibido para sms. Para email_sms, la diferencia con sms_at no puede superar 48 horas.
sms_atstringCondicionalObligatorio para sms y email_sms; prohibido para email y email_retargeting_sms. La hora local debe estar entre las 08:00 y las 19:45 y, para email_sms, a no más de 48 horas de email_at.
retargeting_delay_hoursintegerOpcionalSolo para email_retargeting_sms: entero de 6 a 72 horas después del email; 24 por defecto.
promo_codestringOpcionalCódigo promocional opcional: entre 1 y 64 letras mayúsculas, dígitos, guiones bajos o guiones; el primer carácter debe ser una letra o un dígito.
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())Éxito — Todas las respuestas HTTP incluyen X-Request-Id; las respuestas JSON también incluyen request_id.
La API está temporalmente desactivada.
La configuración del servidor está incompleta.
Falta el encabezado Bearer.
La clave API no es válida o está revocada.
La cuenta no está activa.
La cuenta no puede usar el entorno activo.
Se requiere una cuenta pospago activa con límite positivo.
Se ha superado el límite de solicitudes.
Se produjo un error inesperado del servidor.
Un parámetro o campo JSON no es válido.
No se puede decodificar el cuerpo JSON.
Falta Client-Reference.
Client-Reference no cumple el formato requerido.
Un valor de segmentación es desconocido o no está disponible.
El cuerpo JSON supera el tamaño permitido.
Content-Type debe ser application/json.
La campaña no existe o pertenece a otra cuenta.
El estado de la campaña no permite modificarla.
El crédito disponible es insuficiente.
La campaña completa incumple una regla de negocio.
/campaigns/{reference}/cancelCancelar una campañaCancela una campaña elegible y libera el crédito reservado cuando corresponda. Client-Reference no es necesario.AuthorizationstringObligatorioClave API activa enviada con el esquema Bearer.
Accept-LanguageenumOpcionalIdioma preferido de los mensajes de error; se usa inglés por defecto.
Content-TypestringCondicionalObligatorio solo cuando se envía un cuerpo JSON de cancelación.
referencestringObligatorioReferencia pública de campaña.
reasonstringOpcionalMotivo opcional de cancelación.
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())Éxito — Todas las respuestas HTTP incluyen X-Request-Id; las respuestas JSON también incluyen request_id.
La API está temporalmente desactivada.
La configuración del servidor está incompleta.
Falta el encabezado Bearer.
La clave API no es válida o está revocada.
La cuenta no está activa.
La cuenta no puede usar el entorno activo.
Se ha superado el límite de solicitudes.
Se produjo un error inesperado del servidor.
Un parámetro o campo JSON no es válido.
No se puede decodificar el cuerpo JSON.
El cuerpo JSON supera el tamaño permitido.
Content-Type debe ser application/json.
La campaña no existe o pertenece a otra cuenta.
El estado de la campaña no permite cancelarla.
/campaigns/{reference}/statisticsConsultar estadísticasDevuelve totales actuales y desglose por país, idioma y canal.AuthorizationstringObligatorioClave API activa enviada con el esquema Bearer.
Accept-LanguageenumOpcionalIdioma preferido de los mensajes de error; se usa inglés por defecto.
referencestringObligatorioReferencia pública de campaña.
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())Éxito — Todas las respuestas HTTP incluyen X-Request-Id; las respuestas JSON también incluyen request_id.
La API está temporalmente desactivada.
La configuración del servidor está incompleta.
Falta el encabezado Bearer.
La clave API no es válida o está revocada.
La cuenta no está activa.
La cuenta no puede usar el entorno activo.
Se ha superado el límite de solicitudes.
Se produjo un error inesperado del servidor.
Un parámetro o campo JSON no es válido.
La campaña no existe o pertenece a otra cuenta.
/invoicesListar facturasDevuelve facturas y abonos. Cada elemento contiene pdf_url, cuya ruta incluye opaque_reference.AuthorizationstringObligatorioClave API activa enviada con el esquema Bearer.
Accept-LanguageenumOpcionalIdioma preferido de los mensajes de error; se usa inglés por defecto.
pageintegerOpcionalNúmero de página solicitado.
per_pageintegerOpcionalNúmero de resultados por página.
typeenumOpcionalFiltro por tipo de documento.
invoiceFacturacredit_noteAbonostatusstringOpcionalEstado exacto del ciclo de vida de la factura.
payment_statusstringOpcionalEstado exacto del pago.
issued_fromstringOpcionalFecha mínima de emisión incluida.
issued_tostringOpcionalFecha máxima de emisión incluida.
campaign_referencestringOpcionalFiltro por referencia pública de campaña.
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())Éxito — Todas las respuestas HTTP incluyen X-Request-Id; las respuestas JSON también incluyen request_id.
La API está temporalmente desactivada.
La configuración del servidor está incompleta.
Falta el encabezado Bearer.
La clave API no es válida o está revocada.
La cuenta no está activa.
La cuenta no puede usar el entorno activo.
Se ha superado el límite de solicitudes.
Se produjo un error inesperado del servidor.
Un parámetro o campo JSON no es válido.
/invoices/{number}Consultar una facturaDevuelve el documento legal estructurado y pdf_url que contiene opaque_reference.AuthorizationstringObligatorioClave API activa enviada con el esquema Bearer.
Accept-LanguageenumOpcionalIdioma preferido de los mensajes de error; se usa inglés por defecto.
numberstringObligatorioNúmero legal de factura o abono.
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())Éxito — Todas las respuestas HTTP incluyen X-Request-Id; las respuestas JSON también incluyen request_id.
La API está temporalmente desactivada.
La configuración del servidor está incompleta.
Falta el encabezado Bearer.
La clave API no es válida o está revocada.
La cuenta no está activa.
La cuenta no puede usar el entorno activo.
Se ha superado el límite de solicitudes.
Se produjo un error inesperado del servidor.
Un parámetro o campo JSON no es válido.
El documento no existe o pertenece a otra cuenta.