Aller au contenu

Référence de l'API

Chaque endpoint, chaque champ et chaque réponse de l'API, générés à partir de la spécification OpenAPI. Pour démarrer en cinq minutes, commencez par la vue d'ensemble pour les développeurs.

La spécification est rédigée en italien et cette page la reproduit telle quelle, dans toutes les langues du site.

Vue d'ensemble pour les développeursTélécharger la spécification (openapi.yaml)

Version de la spécification: 1.13.0

Vue d'ensemble

Production
https://api.mailronix.com
Développement local
http://localhost:8080

Authentification

apiKeyType: http bearer

sessionCookieType: apiKey

Endpoints

POST/email/send

Invia un'email transazionale

Authentification: l'une de apiKey, sessionCookie

Paramètres

Idempotency-Keystring · dans l'en-têtefacultatif

Corps de la requête · obligatoire

Variante 1: SendRequestDirect

fromstring (email)obligatoire
from_namestringfacultatif
Contraintes: lunghezza minima 1; lunghezza massima 78
reply_tostring (email)facultatif
languagestringfacultatif
Valeurs autorisées: it, en, es, de, fr
attachmentsarray di valorifacultatif
Contraintes: al massimo 5 elementi
attachments[].filenamestringobligatoire
Contraintes: lunghezza minima 1; lunghezza massima 100
attachments[].content_typestringobligatoire
Valeurs autorisées: application/pdf, image/png, image/jpeg, image/gif, text/plain, text/csv, text/calendar
attachments[].contentstring (byte)obligatoire
tostring (email)obligatoire
subjectstringobligatoire
html_bodystringfacultatif
text_bodystringfacultatif
brand_idstring (uuid)facultatif
marketingbooleanfacultatif
Valeur par défaut: false

Variante 2: SendRequestTemplate

fromstring (email)obligatoire
from_namestringfacultatif
Contraintes: lunghezza minima 1; lunghezza massima 78
reply_tostring (email)facultatif
languagestringfacultatif
Valeurs autorisées: it, en, es, de, fr
attachmentsarray di valorifacultatif
Contraintes: al massimo 5 elementi
attachments[].filenamestringobligatoire
Contraintes: lunghezza minima 1; lunghezza massima 100
attachments[].content_typestringobligatoire
Valeurs autorisées: application/pdf, image/png, image/jpeg, image/gif, text/plain, text/csv, text/calendar
attachments[].contentstring (byte)obligatoire
tostring (email)obligatoire
template_idstring (uuid)obligatoire
variablesobjectfacultatif
brand_idstring (uuid)facultatif
marketingbooleanfacultatif
Valeur par défaut: false

Exemples

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"
  }
}

Réponses

202

statusstringobligatoire
Valeurs autorisées: queued
email_log_idstring (uuid)obligatoire
{
  "status": "queued",
  "email_log_id": "9c4e2f1a-7d3b-4a5e-8f6c-1b2a3d4e5f6a"
}

400

errorobjectobligatoire
error.codestringobligatoire
error.messagestringobligatoire

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

errorobjectobligatoire
error.codestringobligatoire
error.messagestringobligatoire
{
  "error": {
    "code": "unauthenticated",
    "message": "Autenticazione richiesta."
  }
}

403

errorobjectobligatoire
error.codestringobligatoire
error.messagestringobligatoire

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

errorobjectobligatoire
error.codestringobligatoire
error.messagestringobligatoire
{
  "error": {
    "code": "template_not_found",
    "message": "Template non trovato."
  }
}

409

errorobjectobligatoire
error.codestringobligatoire
error.messagestringobligatoire

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

errorobjectobligatoire
error.codestringobligatoire
error.messagestringobligatoire

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

errorobjectobligatoire
error.codestringobligatoire
error.messagestringobligatoire
{
  "error": {
    "code": "idempotency_key_body_mismatch",
    "message": "Questa Idempotency-Key è già stata usata con un corpo diverso."
  }
}

429

En-têtes de la réponse

  • Retry-After (integer)

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

errorobjectobligatoire
error.codestringobligatoire
error.messagestringobligatoire

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

errorobjectobligatoire
error.codestringobligatoire
error.messagestringobligatoire
{
  "error": {
    "code": "internal_error",
    "message": "Errore interno."
  }
}

503

errorobjectobligatoire
error.codestringobligatoire
error.messagestringobligatoire
{
  "error": {
    "code": "auth_unavailable",
    "message": "Verifica della chiave non disponibile."
  }
}

GET/email/{id}

Leggi lo stato del tuo invio

Authentification: l'une de apiKey, sessionCookie

Paramètres

idstring (uuid) · dans le cheminobligatoire

Réponses

200

email_log_idstring (uuid)obligatoire
statusstringobligatoire
Valeurs autorisées: queued, sent, complained, undelivered
{
  "email_log_id": "9c4e2f1a-7d3b-4a5e-8f6c-1b2a3d4e5f6a",
  "status": "sent"
}

401

errorobjectobligatoire
error.codestringobligatoire
error.messagestringobligatoire

403

errorobjectobligatoire
error.codestringobligatoire
error.messagestringobligatoire

404

errorobjectobligatoire
error.codestringobligatoire
error.messagestringobligatoire

429

errorobjectobligatoire
error.codestringobligatoire
error.messagestringobligatoire

POST/contacts

Crea un contatto e avvia la conferma double opt-in

Authentification: l'une de apiKey, sessionCookie

Corps de la requête · obligatoire

emailstring (email)obligatoire
namestringfacultatif
brand_idstring (uuid)facultatif
languagestringfacultatif
Valeurs autorisées: it, en, es, de, fr

Réponses

201

204

400

errorobjectobligatoire
error.codestringobligatoire
error.messagestringobligatoire

401

errorobjectobligatoire
error.codestringobligatoire
error.messagestringobligatoire

403

errorobjectobligatoire
error.codestringobligatoire
error.messagestringobligatoire

409

errorobjectobligatoire
error.codestringobligatoire
error.messagestringobligatoire

429

errorobjectobligatoire
error.codestringobligatoire
error.messagestringobligatoire

POST/contacts/revoke

Registra la disiscrizione di un contatto

Authentification: l'une de apiKey, sessionCookie

Corps de la requête · obligatoire

emailstring (email)obligatoire
brand_idstring (uuid)facultatif

Réponses

204

400

errorobjectobligatoire
error.codestringobligatoire
error.messagestringobligatoire

401

errorobjectobligatoire
error.codestringobligatoire
error.messagestringobligatoire

403

errorobjectobligatoire
error.codestringobligatoire
error.messagestringobligatoire

409

errorobjectobligatoire
error.codestringobligatoire
error.messagestringobligatoire

POST/contacts/delete

Elimina un contatto

Authentification: l'une de apiKey, sessionCookie

Corps de la requête · obligatoire

emailstring (email)obligatoire
brand_idstring (uuid)facultatif

Réponses

204

400

errorobjectobligatoire
error.codestringobligatoire
error.messagestringobligatoire

401

errorobjectobligatoire
error.codestringobligatoire
error.messagestringobligatoire

403

errorobjectobligatoire
error.codestringobligatoire
error.messagestringobligatoire

409

errorobjectobligatoire
error.codestringobligatoire
error.messagestringobligatoire

GET/contacts/revocations

Scorri le revoche del tuo brand

Authentification: apiKey

Paramètres

sincestring · dans la requêtefacultatif
limitinteger · dans la requêtefacultatif

Réponses

200

itemsarray di valoriobligatoire
items[].emailstring (email)obligatoire
items[].revoked_atstring (date-time)obligatoire
items[].originstringobligatoire
Valeurs autorisées: unsubscribe_link, console, api_key, undeclared, unknown
next_cursorstring | nullobligatoire
has_morebooleanobligatoire

400

errorobjectobligatoire
error.codestringobligatoire
error.messagestringobligatoire

401

errorobjectobligatoire
error.codestringobligatoire
error.messagestringobligatoire

403

errorobjectobligatoire
error.codestringobligatoire
error.messagestringobligatoire

409

errorobjectobligatoire
error.codestringobligatoire
error.messagestringobligatoire

429

errorobjectobligatoire
error.codestringobligatoire
error.messagestringobligatoire

Événements webhook

mailronix envoie cet événement à votre adresse ; ce n'est pas un endpoint que vous appelez. La manière de vérifier la signature est dans le guide des webhooks.

Guide des webhooks

receiveMailronixEvent

Un evento del tuo account, consegnato al tuo endpoint

Paramètres

Mailronix-Signaturestring · dans l'en-têteobligatoire
Mailronix-Event-Idstring · dans l'en-têteobligatoire
Mailronix-Delivery-Idstring · dans l'en-têteobligatoire
Mailronix-Event-Typestring · dans l'en-têteobligatoire
Valeurs autorisées: email.sent, email.delivered, email.bounced, email.complained, email.failed, email.suppressed, email.clicked, contact.confirmed, contact.unsubscribed, webhook.test

Corps de la requête · obligatoire

idstringobligatoire
typestringobligatoire
Valeurs autorisées: email.sent, email.delivered, email.bounced, email.complained, email.failed, email.suppressed, email.clicked, contact.confirmed, contact.unsubscribed, webhook.test
api_versionstringobligatoire
created_atstring (date-time)obligatoire
brand_idstring | null (uuid)obligatoire
dataobligatoire

Exemples

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]"
  }
}

Réponses

2XX

3XX

4XX

5XX