Ir al contenido

Referencia de la API

Cada endpoint, cada campo y cada respuesta de la API, generados desde la especificación OpenAPI. Para empezar en cinco minutos, comienza por la visión general para desarrolladores.

La especificación está escrita en italiano y esta página la reproduce tal cual, en todos los idiomas del sitio.

Visión general para desarrolladoresDescarga la especificación (openapi.yaml)

Versión de la especificación: 1.13.0

Visión general

Producción
https://api.mailronix.com
Desarrollo local
http://localhost:8080

Autenticación

apiKeyTipo: http bearer

sessionCookieTipo: apiKey

Endpoints

POST/email/send

Invia un'email transazionale

Autenticación: una de apiKey, sessionCookie

Parámetros

Idempotency-Keystring · en la cabeceraopcional

Cuerpo de la solicitud · obligatorio

Variante 1: SendRequestDirect

fromstring (email)obligatorio
from_namestringopcional
Restricciones: lunghezza minima 1; lunghezza massima 78
reply_tostring (email)opcional
languagestringopcional
Valores permitidos: it, en, es, de, fr
attachmentsarray di valoriopcional
Restricciones: al massimo 5 elementi
attachments[].filenamestringobligatorio
Restricciones: lunghezza minima 1; lunghezza massima 100
attachments[].content_typestringobligatorio
Valores permitidos: application/pdf, image/png, image/jpeg, image/gif, text/plain, text/csv, text/calendar
attachments[].contentstring (byte)obligatorio
tostring (email)obligatorio
subjectstringobligatorio
html_bodystringopcional
text_bodystringopcional
brand_idstring (uuid)opcional
marketingbooleanopcional
Valor por defecto: false

Variante 2: SendRequestTemplate

fromstring (email)obligatorio
from_namestringopcional
Restricciones: lunghezza minima 1; lunghezza massima 78
reply_tostring (email)opcional
languagestringopcional
Valores permitidos: it, en, es, de, fr
attachmentsarray di valoriopcional
Restricciones: al massimo 5 elementi
attachments[].filenamestringobligatorio
Restricciones: lunghezza minima 1; lunghezza massima 100
attachments[].content_typestringobligatorio
Valores permitidos: application/pdf, image/png, image/jpeg, image/gif, text/plain, text/csv, text/calendar
attachments[].contentstring (byte)obligatorio
tostring (email)obligatorio
template_idstring (uuid)obligatorio
variablesobjectopcional
brand_idstring (uuid)opcional
marketingbooleanopcional
Valor por defecto: false

Ejemplos

Contenuto diretto (senza template)

{
  "from": "[email protected]",
  "to": "[email protected]",
  "subject": "Conferma ordine #4821",
  "html_body": "<p>Il tuo ordine #4821 è confermato.</p>"
}

Con brand_id come asserzione (facoltativo)

{
  "from": "[email protected]",
  "to": "[email protected]",
  "subject": "Conferma ordine #4821",
  "html_body": "<p>Il tuo ordine #4821 è confermato.</p>",
  "brand_id": "3f2b8c1d-9a4e-4c7b-8e5f-1a2b3c4d5e6f"
}

Solo testo (la parte HTML viene derivata)

{
  "from": "[email protected]",
  "to": "[email protected]",
  "subject": "Conferma ordine #4821",
  "text_body": "Il tuo ordine #4821 è confermato.\n\nDettaglio: https://negozio.example/ordini/4821"
}

Da template con variabili

{
  "from": "[email protected]",
  "to": "[email protected]",
  "template_id": "5f1d6c2e-3b4a-4f0e-9c1a-2d8e7f6a1b3c",
  "variables": {
    "nome_cliente": "Maria",
    "numero_ordine": "4821"
  }
}

Respuestas

202

statusstringobligatorio
Valores permitidos: queued
email_log_idstring (uuid)obligatorio
{
  "status": "queued",
  "email_log_id": "9c4e2f1a-7d3b-4a5e-8f6c-1b2a3d4e5f6a"
}

400

errorobjectobligatorio
error.codestringobligatorio
error.messagestringobligatorio

Payload malformato o campi incompatibili/mancanti

{
  "error": {
    "code": "invalid_request",
    "message": "from e to sono obbligatori."
  }
}

Autenticazione via sessione senza brand_id

{
  "error": {
    "code": "invalid_request",
    "message": "brand_id è obbligatorio: indica il brand da cui parte questo invio."
  }
}

from non è un indirizzo email

{
  "error": {
    "code": "invalid_request",
    "message": "from non è un indirizzo email valido."
  }
}

from_name non valido

{
  "error": {
    "code": "invalid_from_name",
    "message": "from_name non è valido: da 1 a 78 caratteri, senza «@», «<», «>», virgolette, a-capo o indirizzi web."
  }
}

reply_to non valido

{
  "error": {
    "code": "invalid_reply_to",
    "message": "reply_to non è un indirizzo email valido: serve un solo indirizzo, senza nome e senza spazi."
  }
}

language non valida

{
  "error": {
    "code": "invalid_language",
    "message": "language deve essere una tra it, en, es, de, fr."
  }
}

Più di 5 allegati

{
  "error": {
    "code": "too_many_attachments",
    "message": "Troppi allegati: al massimo 5 per messaggio."
  }
}

Allegato non valido

{
  "error": {
    "code": "invalid_attachment",
    "message": "Allegato non valido: servono filename, content_type e content in base64 standard, non vuoti."
  }
}

Tipo di allegato non ammesso

{
  "error": {
    "code": "attachment_type_not_allowed",
    "message": "Tipo di allegato non ammesso. Sono ammessi application/pdf, image/png, image/jpeg, image/gif, text/plain, text/csv e text/calendar; il contenuto e l'estensione del nome devono corrispondere al tipo dichiarato."
  }
}

Allegati su un messaggio marketing

{
  "error": {
    "code": "attachments_not_allowed_for_marketing",
    "message": "Un messaggio marketing non può avere allegati: gli allegati sono ammessi solo sui messaggi transazionali."
  }
}

Variabile del template non fornita

{
  "error": {
    "code": "missing_template_variable",
    "message": "Il template referenzia una variabile non fornita."
  }
}

401

errorobjectobligatorio
error.codestringobligatorio
error.messagestringobligatorio
{
  "error": {
    "code": "unauthenticated",
    "message": "Autenticazione richiesta."
  }
}

403

errorobjectobligatorio
error.codestringobligatorio
error.messagestringobligatorio

Il mittente non è sul dominio del brand dell'invio

{
  "error": {
    "code": "from_address_not_of_brand",
    "message": "Il dominio del mittente non è quello del brand da cui parte questo invio: un brand invia dal proprio dominio (o da un suo sottodominio verificato). Vedi il dominio del brand su GET /brands."
  }
}

Dominio del mittente non verificato

{
  "error": {
    "code": "domain_not_verified",
    "message": "Il dominio del mittente non è verificato per questo tenant."
  }
}

Tenant sospeso

{
  "error": {
    "code": "tenant_suspended",
    "message": "Il tenant è sospeso."
  }
}

Limite giornaliero di destinatari unici del piano Free raggiunto

{
  "error": {
    "code": "free_daily_recipients_exceeded",
    "message": "Limite giornaliero di destinatari unici del piano Free raggiunto."
  }
}

Limite mensile del piano superato

{
  "error": {
    "code": "plan_limit_exceeded",
    "message": "Limite mensile del piano superato."
  }
}

reply_to non consentito dal brand

{
  "error": {
    "code": "reply_to_not_allowed",
    "message": "Questo brand non consente di indicare un reply_to nella richiesta: attivalo nelle impostazioni del brand in console."
  }
}

brand_id diverso da quello della chiave

{
  "error": {
    "code": "brand_mismatch",
    "message": "Il brand dichiarato non è quello a cui questa chiave è legata: la chiave scrive sotto un brand solo, e il campo brand_id può solo confermarlo."
  }
}

404

errorobjectobligatorio
error.codestringobligatorio
error.messagestringobligatorio
{
  "error": {
    "code": "template_not_found",
    "message": "Template non trovato."
  }
}

409

errorobjectobligatorio
error.codestringobligatorio
error.messagestringobligatorio

Brand archiviato

{
  "error": {
    "code": "brand_archived",
    "message": "Il brand è archiviato: riattivalo prima di usarlo."
  }
}

Il brand non ha ancora un indirizzo mittente

{
  "error": {
    "code": "brand_sender_not_configured",
    "message": "Questo brand non ha ancora un indirizzo mittente: impostane uno, su un dominio verificato, prima di inviare in suo nome."
  }
}

413

errorobjectobligatorio
error.codestringobligatorio
error.messagestringobligatorio

Allegati oltre 7 MB in totale, o email oltre 10 MB

{
  "error": {
    "code": "attachments_too_large",
    "message": "Gli allegati superano 7 MB in totale (dimensione dopo la decodifica base64)."
  }
}

Corpo della richiesta troppo grande

{
  "error": {
    "code": "payload_too_large",
    "message": "Corpo della richiesta troppo grande."
  }
}

422

errorobjectobligatorio
error.codestringobligatorio
error.messagestringobligatorio
{
  "error": {
    "code": "idempotency_key_body_mismatch",
    "message": "Questa Idempotency-Key è già stata usata con un corpo diverso."
  }
}

429

Cabeceras de la respuesta

  • Retry-After (integer)

    Secondi da attendere prima di riprovare (solo con attachments_backlog e server_busy).

errorobjectobligatorio
error.codestringobligatorio
error.messagestringobligatorio

Rate limit per chiave

{
  "error": {
    "code": "rate_limited",
    "message": "Troppe richieste, riprova più tardi."
  }
}

Troppe richieste con corpo grande in corso

{
  "error": {
    "code": "server_busy",
    "message": "Troppe richieste con corpo grande in corso: riprova fra qualche secondo."
  }
}

Troppi allegati in attesa di invio

{
  "error": {
    "code": "attachments_backlog",
    "message": "Hai troppi allegati in attesa di invio: riprova fra qualche secondo, quando quelli già accodati saranno partiti."
  }
}

500

errorobjectobligatorio
error.codestringobligatorio
error.messagestringobligatorio
{
  "error": {
    "code": "internal_error",
    "message": "Errore interno."
  }
}

503

errorobjectobligatorio
error.codestringobligatorio
error.messagestringobligatorio
{
  "error": {
    "code": "auth_unavailable",
    "message": "Verifica della chiave non disponibile."
  }
}

GET/email/{id}

Leggi lo stato del tuo invio

Autenticación: una de apiKey, sessionCookie

Parámetros

idstring (uuid) · en la rutaobligatorio

Respuestas

200

email_log_idstring (uuid)obligatorio
statusstringobligatorio
Valores permitidos: queued, sent, complained, undelivered
{
  "email_log_id": "9c4e2f1a-7d3b-4a5e-8f6c-1b2a3d4e5f6a",
  "status": "sent"
}

401

errorobjectobligatorio
error.codestringobligatorio
error.messagestringobligatorio

403

errorobjectobligatorio
error.codestringobligatorio
error.messagestringobligatorio

404

errorobjectobligatorio
error.codestringobligatorio
error.messagestringobligatorio

429

errorobjectobligatorio
error.codestringobligatorio
error.messagestringobligatorio

POST/contacts

Crea un contatto e avvia la conferma double opt-in

Autenticación: una de apiKey, sessionCookie

Cuerpo de la solicitud · obligatorio

emailstring (email)obligatorio
namestringopcional
brand_idstring (uuid)opcional
languagestringopcional
Valores permitidos: it, en, es, de, fr

Respuestas

201

204

400

errorobjectobligatorio
error.codestringobligatorio
error.messagestringobligatorio

401

errorobjectobligatorio
error.codestringobligatorio
error.messagestringobligatorio

403

errorobjectobligatorio
error.codestringobligatorio
error.messagestringobligatorio

409

errorobjectobligatorio
error.codestringobligatorio
error.messagestringobligatorio

429

errorobjectobligatorio
error.codestringobligatorio
error.messagestringobligatorio

POST/contacts/revoke

Registra la disiscrizione di un contatto

Autenticación: una de apiKey, sessionCookie

Cuerpo de la solicitud · obligatorio

emailstring (email)obligatorio
brand_idstring (uuid)opcional

Respuestas

204

400

errorobjectobligatorio
error.codestringobligatorio
error.messagestringobligatorio

401

errorobjectobligatorio
error.codestringobligatorio
error.messagestringobligatorio

403

errorobjectobligatorio
error.codestringobligatorio
error.messagestringobligatorio

409

errorobjectobligatorio
error.codestringobligatorio
error.messagestringobligatorio

POST/contacts/delete

Elimina un contatto

Autenticación: una de apiKey, sessionCookie

Cuerpo de la solicitud · obligatorio

emailstring (email)obligatorio
brand_idstring (uuid)opcional

Respuestas

204

400

errorobjectobligatorio
error.codestringobligatorio
error.messagestringobligatorio

401

errorobjectobligatorio
error.codestringobligatorio
error.messagestringobligatorio

403

errorobjectobligatorio
error.codestringobligatorio
error.messagestringobligatorio

409

errorobjectobligatorio
error.codestringobligatorio
error.messagestringobligatorio

GET/contacts/revocations

Scorri le revoche del tuo brand

Autenticación: apiKey

Parámetros

sincestring · en la consultaopcional
limitinteger · en la consultaopcional

Respuestas

200

itemsarray di valoriobligatorio
items[].emailstring (email)obligatorio
items[].revoked_atstring (date-time)obligatorio
items[].originstringobligatorio
Valores permitidos: unsubscribe_link, console, api_key, undeclared, unknown
next_cursorstring | nullobligatorio
has_morebooleanobligatorio

400

errorobjectobligatorio
error.codestringobligatorio
error.messagestringobligatorio

401

errorobjectobligatorio
error.codestringobligatorio
error.messagestringobligatorio

403

errorobjectobligatorio
error.codestringobligatorio
error.messagestringobligatorio

409

errorobjectobligatorio
error.codestringobligatorio
error.messagestringobligatorio

429

errorobjectobligatorio
error.codestringobligatorio
error.messagestringobligatorio

Eventos de webhook

mailronix envía este evento a tu dirección; no es un endpoint que llames tú. La forma de verificar la firma está en la guía de webhooks.

Guía de webhooks

receiveMailronixEvent

Un evento del tuo account, consegnato al tuo endpoint

Parámetros

Mailronix-Signaturestring · en la cabeceraobligatorio
Mailronix-Event-Idstring · en la cabeceraobligatorio
Mailronix-Delivery-Idstring · en la cabeceraobligatorio
Mailronix-Event-Typestring · en la cabeceraobligatorio
Valores permitidos: email.sent, email.delivered, email.bounced, email.complained, email.failed, email.suppressed, email.clicked, contact.confirmed, contact.unsubscribed, webhook.test

Cuerpo de la solicitud · obligatorio

idstringobligatorio
typestringobligatorio
Valores permitidos: email.sent, email.delivered, email.bounced, email.complained, email.failed, email.suppressed, email.clicked, contact.confirmed, contact.unsubscribed, webhook.test
api_versionstringobligatorio
created_atstring (date-time)obligatorio
brand_idstring | null (uuid)obligatorio
dataobligatorio

Ejemplos

Un rifiuto permanente

{
  "id": "evt_3f1a9c2e7b6d4e8f9a0b1c2d3e4f5a6b",
  "type": "email.bounced",
  "api_version": "2026-10-22",
  "created_at": "2026-10-22T14:03:11Z",
  "brand_id": "6f1d2c0e-8b1a-4c53-9a77-0d6a7b3a2c11",
  "data": {
    "email_log_id": "0b7c1e52-3f0a-4d3e-8a8e-5b1f2c9d4e60",
    "recipient": "[email protected]",
    "category": "transactional",
    "bounce_type": "permanent"
  }
}

Una disiscrizione di un indirizzo che non è un contatto

{
  "id": "evt_9c4e2a1b7d3f4a6e8b0c1d2e3f4a5b6c",
  "type": "contact.unsubscribed",
  "api_version": "2026-10-22",
  "created_at": "2026-10-22T14:07:42Z",
  "brand_id": "6f1d2c0e-8b1a-4c53-9a77-0d6a7b3a2c11",
  "data": {
    "contact_id": null,
    "email": "[email protected]"
  }
}

Respuestas

2XX

3XX

4XX

5XX