Mail · API Reference

Pulpo Reach API

Reach skickar transactional mail. Välj template + brand och skicka färdiga display-strängar — Pulpo räknar inte priser.

Bas-URL
http://localhost:3847
Auth
X-API-Key: <MAIL_API_KEY>
Notering
send kräver API-nyckel. preview kräver ingen nyckel.

Om Reach

Felformat

Error responsejson
{
  "ok": false,
  "error": "Unknown template"
}

Mail

POST/api/sendAuth

Skicka mail

Auth krävs. 404 om template eller brand saknas.

Request

FältTypBeskrivning
template*stringMall-slug
brand*stringVarumärkes-slug
to*string | string[]Mottagare
dataobjectMallfält — se kontrakt per mall
notifyInternalbooleanRelevant för order_confirmation
overridesobjectTillfällig override av logo/from/färg/subject
Bodyapplication/json
{
  "template": "delivery_confirmation",
  "brand": "trirebels",
  "to": "kund@example.com",
  "data": {
    "customerName": "Anna",
    "orderNumber": "TR-10482",
    "trackingNumber": "SE123",
    "carrier": "PostNord",
    "trackingUrl": "https://www.postnord.se/",
    "street": "Storgatan 12",
    "postalCode": "111 22",
    "city": "Stockholm"
  }
}

Response

Skickat (eller mockat)

Exampleapplication/json
{
  "ok": true,
  "mocked": false,
  "messageId": "<…@mail>",
  "outboxId": "obx_…",
  "subject": "Din leverans är på väg",
  "from": "Trirebels <noreply@trirebels.se>",
  "to": [
    "kund@example.com"
  ],
  "internal": null
}
POST/api/previewPublik

Förhandsgranska HTML

Ingen auth. Samma body som send (utan to).

Request

Bodyapplication/json
{
  "template": "order_confirmation",
  "brand": "trirebels",
  "data": {
    "customerName": "Anna Andersson",
    "orderNumber": "TR-10482",
    "orderDate": "2 september 2026",
    "total": "1 249 kr",
    "shippingAddress": "Storgatan 12\n111 22 Stockholm",
    "items": [
      {
        "name": "Race bib – herr",
        "qty": 2,
        "price": "398 kr"
      }
    ]
  }
}

Response

Renderad HTML

Exampleapplication/json
{
  "subject": "Tack för din order TR-10482",
  "html": "<!DOCTYPE html>…",
  "from": "Trirebels <noreply@trirebels.se>",
  "geocoded": false,
  "latitude": null,
  "longitude": null
}

Mallar

POST/api/sendAuth

Mall: order_confirmation

Order lagd/betald. Kan skicka intern notis till brandets notifyEmail.

Request

FältTypBeskrivning
data.customerName*stringKundnamn
data.orderNumber*stringOrdernr
data.orderDate*stringVisningsdatum
data.shippingAddress*stringAdress, gärna med \n
data.items*arrayname, qty, price (display)
data.totalstringTotalsumma display
Bodyapplication/json
{
  "template": "order_confirmation",
  "brand": "trirebels",
  "to": "kund@example.com",
  "data": {
    "customerName": "Anna Andersson",
    "orderNumber": "TR-10482",
    "orderDate": "2 september 2026",
    "total": "1 249 kr",
    "shippingAddress": "Storgatan 12\n111 22 Stockholm",
    "items": [
      {
        "name": "Race bib – herr",
        "qty": 2,
        "price": "398 kr"
      }
    ]
  }
}

Response

Skickat

Exampleapplication/json
{
  "ok": true,
  "mocked": true,
  "subject": "Tack för din order TR-10482",
  "to": [
    "kund@example.com"
  ]
}

Att tänka på

  • Belopp är display-strängar, t.ex. "1 249 kr"
  • Mallar: order_confirmation, delivery_confirmation, generic, order_internal, back_in_stock*
  • MAIL_MOCK=true → utskick landar i outbox utan SMTP