Développeurs · Référence API

Documentation API

Référence technique des API HTTP Sendarix, de l’authentification et des modèles d’intégration courants. Vue produit : API e-mail.

cURL Node SMTP
# Envoyer un email critique via une routing policy
curl -sS -X POST 'https://app.sendarix.com/v1/email/send' \
  -H 'Content-Type: application/json' \
  -H 'X-API-Key: YOUR_API_KEY' \
  -H 'Idempotency-Key: otp_8842' \
  -d '{"to":"user@acme.com","template":"password_reset","routing_policy":"transactional-critical"}'
const sendarix = require("sendarix")(process.env.SENDARIX_KEY);

await sendarix.email.send({
  to: "user@acme.com",
  template: "password_reset",
  routingPolicy: "transactional-critical",
  idempotencyKey: "otp_8842"
});
# SMTP drop-in — gardez votre intégration et gagnez un control plane
host:     smtp.sendarix.com
port:     587  (STARTTLS)
username: "your_sending_key"
header:   X-Sendarix-Policy: transactional-critical

Audit des capacités (cette plateforme)

Les comptes ci-dessous reflètent ce que l’application expose aux intégrateurs aujourd’hui. Tout langage capable d’HTTPS + JSON peut appeler ces points de terminaison ; la page inclut six piles d’exemples prêtes à copier.

5

Surfaces d’intégration

6

Langages d’exemple

6

Modèles d’usage

Surfaces : (1) envoi transactionnel REST, (2) ingestion d’alertes client REST, (3) Deliverability Intel REST, (4) relais SMTP (protocole, pas JSON), (5) webhooks d’engagement sortants (vous recevez des POST HTTPS depuis Sendarix). Les points de terminaison de session tableau de bord comme GET /api/keys sont des flux navigateur/session, pas de l’automatisation X-API-Key.

Surfaces d’intégration

SurfaceMécanismeBase / entrée
Envoi transactionnelPOST JSON, clé API comptePOST /v1/email/send (alias /v1/send)
Alertes clientPOST JSON, même middleware de clé qu’envoiPOST /v1/alerts/ingest
Deliverability IntelGET/POST JSON, clé API délivrabilité workspace/api/deliverability/v1/* (7 routes)
Relais SMTPSMTP AUTH (hôte, port, utilisateur, mot de passe depuis le tableau de bord)Voir Relais SMTP
Webhooks d’engagementVotre point de terminaison HTTPS reçoit des POST signésConfigurer dans l’app → Webhooks

Authentification

  • Clé API compte (envoi + alertes) : en-tête X-API-Key: … ou Authorization: Bearer …. Paramètre de requête optionnel ?api_key= pris en charge pour les outils ; les en-têtes sont recommandés.
  • Clé API délivrabilité : en-tête X-API-Key (périmètre workspace ; émise pour Intel / surveillance délivrabilité).
  • Idempotence (envoi) : en-tête optionnel Idempotency-Key pour des nouvelles tentatives sûres.

Les clés sont créées et tournées depuis le tableau de bord client (gestion API). Les modes de périmètre sont décrits dans la politique de périmètre interne de l’application pour les clés restreintes.

API d’envoi

POST https://app.sendarix.com/v1/email/send

Champs JSON du corps (obligatoires sauf mention) :

  • from — adresse d’expéditeur vérifiée
  • to — chaîne ou tableau d’adresses
  • subject
  • html et/ou text — au moins un corps non vide attendu (le texte brut peut être dérivé du HTML)
Note multi-destinataires : l’API valide chaque adresse dans to, mais le chemin de transport actuel livre au premier destinataire. Pour plusieurs livraisons distinctes, une requête par destinataire (ou SMTP pour workflows multi-RCPT).

Les réponses réussies incluent des identifiants tels que message_id et sx_trace_id pour corréler avec journaux et webhooks.

Ingestion d’alertes client

POST https://app.sendarix.com/v1/alerts/ingest

Champs JSON typiques : event_type, severity (info, warning, critical), source, message, optionnellement entity_type, entity_id, context (objet). La livraison dépend des règles d’alerte configurées dans le tableau de bord.

API Deliverability Intel

Base : /api/deliverability/v1/. Points de terminaison : espaces de travail, clients, domaines, statut liste noire et génération de rapports. Tous exigent la clé API délivrabilité workspace.

GET/workspaces
GET/clients
POST/clients
GET/domains
POST/domains
GET/blacklists/status
POST/reports/generate

Relais SMTP et webhooks de type entrant

SMTP utilise la soumission mail standard avec identifiants du tableau de bord — adapté aux applications héritées et MTA. Webhooks d’engagement sont sortants de Sendarix vers votre URL pour livraison et engagement (voir page produit pour charge utile et sécurité).

Les webhooks entrants côté fournisseur (ex. Postal) sont des points d’infrastructure, pas des cibles d’intégration client.

API d’envoi — exemples (6 langages)

Remplacez YOUR_API_KEY et les adresses. Même JSON pour chaque pile.

# Bash — envoi transactionnel
curl -sS -X POST 'https://app.sendarix.com/v1/email/send' \
  -H 'Content-Type: application/json' \
  -H 'X-API-Key: YOUR_API_KEY' \
  -H 'Idempotency-Key: order-10042-reset' \
  -d '{
    "from": "noreply@example.com",
    "to": "user@example.com",
    "subject": "R\u00e9initialisation du mot de passe",
    "text": "Utilisez ce lien pour r\u00e9initialiser votre mot de passe.",
    "html": "<p>Utilisez ce lien pour r\u00e9initialiser votre mot de passe.</p>"
}'
// Node 18+ (fetch global)
const res = await fetch('https://app.sendarix.com/v1/email/send', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'X-API-Key': 'YOUR_API_KEY',
    'Idempotency-Key': 'order-10042-reset',
  },
  body: JSON.stringify({
    from: 'noreply@example.com',
    to: 'user@example.com',
    subject: "Réinitialisation du mot de passe",
    text: "Utilisez ce lien pour réinitialiser votre mot de passe.",
    html: "<p>Utilisez ce lien pour réinitialiser votre mot de passe.<\/p>",
  }),
});
console.log(await res.json());
# Python 3
import json, urllib.request

req = urllib.request.Request(
    'https://app.sendarix.com/v1/email/send',
    data=json.dumps({
        'from': 'noreply@example.com',
        'to': 'user@example.com',
        'subject': "Réinitialisation du mot de passe",
        'text': "Utilisez ce lien pour réinitialiser votre mot de passe.",
        'html': "<p>Utilisez ce lien pour réinitialiser votre mot de passe.<\/p>",
    }).encode(),
    headers={
        'Content-Type': 'application/json',
        'X-API-Key': 'YOUR_API_KEY',
        'Idempotency-Key': 'order-10042-reset',
    },
    method='POST',
)
with urllib.request.urlopen(req) as r:
    print(r.read().decode())
<?php
$ch = curl_init('https://app.sendarix.com/v1/email/send');
$payload = json_encode([
    'from' => 'noreply@example.com',
    'to' => 'user@example.com',
    'subject' => 'Réinitialisation du mot de passe',
    'text' => 'Utilisez ce lien pour réinitialiser votre mot de passe.',
    'html' => '<p>Utilisez ce lien pour réinitialiser votre mot de passe.</p>',
]);\ncurl_setopt_array($ch, [
    CURLOPT_POST => true,
    CURLOPT_HTTPHEADER => [
        'Content-Type: application/json',
        'X-API-Key: YOUR_API_KEY',
        'Idempotency-Key: order-10042-reset',
    ],
    CURLOPT_POSTFIELDS => $payload,
    CURLOPT_RETURNTRANSFER => true,
]);
echo curl_exec($ch);
// Go
package main

import (
    "bytes"
    "encoding/json"
    "net/http"
)

func main() {
    body, _ := json.Marshal(map[string]any{
        "from":    "noreply@example.com",
        "to":      "user@example.com",
        "subject": "Réinitialisation du mot de passe",
        "text":    "Utilisez ce lien pour réinitialiser votre mot de passe.",
        "html":    "<p>Utilisez ce lien pour réinitialiser votre mot de passe.<\/p>",
    })
    req, _ := http.NewRequest("POST", "https://app.sendarix.com/v1/email/send", bytes.NewReader(body))
    req.Header.Set("Content-Type", "application/json")
    req.Header.Set("X-API-Key", "YOUR_API_KEY")
    req.Header.Set("Idempotency-Key", "order-10042-reset")
    res, _ := http.DefaultClient.Do(req)
    defer res.Body.Close()
}
# Ruby — net/http
require 'json'
require 'net/http'
uri = URI('https://app.sendarix.com/v1/email/send')
req = Net::HTTP::Post.new(uri)
req['Content-Type'] = 'application/json'
req['X-API-Key'] = 'YOUR_API_KEY'
req['Idempotency-Key'] = 'order-10042-reset'
req.body = {
  from: 'noreply@example.com',
  to: 'user@example.com',
  subject: "Réinitialisation du mot de passe",
  text: "Utilisez ce lien pour réinitialiser votre mot de passe.",
  html: "<p>Utilisez ce lien pour réinitialiser votre mot de passe.<\/p>",
}.to_json
res = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |h| h.request(req) }
puts res.body

Modèles d’usage (6)

  1. Envoi ponctuel — un POST par message, sans en-tête d’idempotence.
  2. Nouvelle tentative idempotente — même Idempotency-Key + corps en cas d’échec réseau.
  3. Auth Bearer — remplacez X-API-Key par Authorization: Bearer YOUR_API_KEY.
  4. HTML + texte — fournissez les deux pour un rendu multipart/alternative là où c’est pris en charge.
  5. Diffusion d’alertes — POST vers /v1/alerts/ingest depuis vos moniteurs ; le routage est piloté par politique dans l’interface.
  6. Automatisation délivrabilité — interrogez ou modifiez les ressources Intel sous /api/deliverability/v1/* avec la clé workspace.

Protégez l’email critique de chaque tenant.

Déplacez votre stream le plus critique vers Sendarix cette semaine. Laissez tout le reste exactement où il est.