Motorical

API · Built for automation

Not just send. Inspect, automate, export, and stream.

Roughly 50 transactional and platform operations, published as a live OpenAPI document. The analytics are the part most providers do not give you: reputation, deliverability, provider breakdowns and SMTP error codes — each scoped to one Motor Block, so one project's numbers are never diluted by another's.
One call to send

POST /v1/send with an mk_live_ key. GET /v1/status needs no auth at all, so your monitoring can check us without holding a credential.

Analytics per project

reputation, deliverability by recipient domain, provider breakdown across Gmail/Outlook/Yahoo, SMTP error-code diagnostics, and bounce-spike anomaly detection — all under /motor-blocks/{id}/.

Webhooks you can debug

Create, update and delete webhooks per block, fire a test delivery on demand, and read back the delivery history and success stats. Most providers make you guess.

Exports that scale

Kick off an async export job, poll it, and download through a signed URL — or use the preview endpoint to read recent logs without creating a job at all.

A live event stream

GET /motor-blocks/{id}/events/stream is server-sent events on the public API, not a dashboard-only feed. Tail one project’s delivery events in real time.

Auth that fits the caller

Short-lived analytics bearer tokens minted from an ak_live_ key, mk_live_ keys for send, and full OAuth 2.0 (authorize / token / validate) when a third party needs delegated access.

How it works

1

Authenticate

mk_live_ for sending, or mint a short-lived bearer from an ak_live_ key for the analytics surface.

2

Send

POST /v1/send. Validate first if you want — the endpoint supports a validate-only mode.

3

Observe

Read the message timeline, or subscribe to the SSE stream for that Motor Block.

4

Automate

Register a webhook, fire a test delivery, then watch its own delivery stats.

The surface, grouped

Paths are relative to /api/public/v1. Sending lives at POST /v1/send.

Inspect — per Motor Block

Each of these is scoped to a single Motor Block, so the numbers describe one project rather than an account-wide average.

  • /motor-blocks/{id}/overview
  • /motor-blocks/{id}/metrics
  • /motor-blocks/{id}/reputation
  • /motor-blocks/{id}/deliverability
  • /motor-blocks/{id}/providers
  • /motor-blocks/{id}/error-codes
  • /motor-blocks/{id}/anomalies
  • /motor-blocks/{id}/domain-health
  • /motor-blocks/{id}/rate-limits
  • /motor-blocks/{id}/logs
Automate — webhooks

Full CRUD per block, plus the delivery history and success stats for the webhooks themselves.

  • GET/POST /motor-blocks/{id}/webhooks
  • PUT/DELETE /webhooks/{webhookId}
  • GET /webhooks/{webhookId}/deliveries
  • GET /webhooks/{webhookId}/stats
  • POST /webhooks/{webhookId}/test
Export & stream

Async export jobs with signed download URLs, and a live server-sent event stream per block.

  • POST /motor-blocks/{id}/exports
  • GET /motor-blocks/{id}/exports/preview
  • GET /exports/{jobId}
  • GET /exports/{jobId}/download
  • GET /motor-blocks/{id}/events/stream

Frequently asked questions

Yes — the live spec is published at docs.motorical.com/openapi.json, and the MCP server exposes it as a resource so an AI agent can read the current contract directly.

Because pooled analytics hide problems. If a client newsletter starts collecting complaints, an account-wide average absorbs it while your password-reset delivery quietly degrades. Per-block numbers make that visible.

Yes. Create an export job for a Motor Block, poll its status, and download the result through a signed URL. For quick checks the preview endpoint returns recent logs with no job at all.

Those belong to Bulk Sending and live under a separate Communications API — campaigns, lists, recipients, templates, suppressions and tracking. See the Bulk Sending product page.

Not just send. Inspect, automate, export, and stream.