REST API reference

NoticeAPI exposes a JSON REST API for transactional email, consent-based broadcasts, templates, suppressions, receiving, and status retrieval. Use this page as the endpoint map, then follow the linked feature docs for request and response fields.

Base URL and auth

GET/api/v1/...

Production endpoints live under https://www.noticeapi.com/api/v1. Authenticate with Authorization: Bearer ntc_.... API keys are created in the portal under API keys and are shown once.

auth
curl https://www.noticeapi.com/api/v1/emails/EMAIL_ID \
  -H "Authorization: Bearer ntc_xxxxxxxxxxxxxxxxxxxx"

Scoped keys

Full-access keys carry every scope. For apps, CI jobs, and authorized agents, create a key with only the scopes that workflow needs. Out-of-scope calls return 403 and the stable insufficient_scope code.

FieldTypeDescription
email:sendscopeSend, batch send, email status, cancel, and reschedule.
templates:writescopeCreate, list, update, delete, and seed templates.
audiences:writescopeCreate audiences and manage opted-in contacts.
broadcasts:writescopeCreate, schedule, cancel, inspect, and send broadcasts.
automations:writescopeCreate and manage audience-triggered automations.
suppressions:writescopeList, add, and remove suppressions.
receiving:readscopeRead received emails and attachments.
receiving:writescopeCreate, verify, list, and remove receiving domains.
domains:writescopeReserved for sending-domain API access. Sending domains are dashboard-managed today.
webhooks:writescopeReserved for webhook endpoint API access. Webhook endpoints are dashboard-managed today.
403 insufficient_scope
{
  "error": "This API key does not have the broadcasts:write scope. Create a key with the scopes this integration needs.",
  "code": "insufficient_scope"
}

Idempotency and retries

Send endpoints accept an Idempotency-Key header up to 256 characters. Repeating the same key returns the original result instead of sending twice, which is the safest retry pattern for agents, queues, and webhooks.

idempotent send
curl -X POST https://www.noticeapi.com/api/v1/email/send \
  -H "Authorization: Bearer ntc_xxxxxxxxxxxxxxxxxxxx" \
  -H "Idempotency-Key: receipt-8412" \
  -H "Content-Type: application/json" \
  -d '{
    "from": "Acme <[email protected]>",
    "to": "[email protected]",
    "subject": "Your receipt",
    "html": "<p>Thanks for your purchase.</p>"
  }'

Endpoint inventory

Transactional email

MethodEndpointScopePurpose
POST/api/v1/email/sendemail:sendSend one email now or schedule it with sendAt.
POST/api/v1/email/batchemail:sendSend up to 100 transactional emails in one request.
GET/api/v1/emails/:idemail:sendRead status, stored body, and per-recipient events.
POST/api/v1/emails/:id/cancelemail:sendCancel a scheduled transactional email.
POST/api/v1/emails/:id/rescheduleemail:sendMove a scheduled transactional email.

Request fields: Transactional email docs

Templates

MethodEndpointScopePurpose
GET/api/v1/templatestemplates:writeList stored templates.
POST/api/v1/templatestemplates:writeCreate a reusable subject/html/text template.
GET/api/v1/templates/:idtemplates:writeFetch one template.
PATCH/api/v1/templates/:idtemplates:writeUpdate a template.
DELETE/api/v1/templates/:idtemplates:writeDelete a template.
POST/api/v1/templates/starterstemplates:writeSeed the starter templates again.

Request fields: Templates docs

Audiences and broadcasts

MethodEndpointScopePurpose
GET/api/v1/audiencesaudiences:writeList audiences.
POST/api/v1/audiencesaudiences:writeCreate an audience.
GET/api/v1/audiences/:idaudiences:writeFetch one audience and contact counts.
DELETE/api/v1/audiences/:idaudiences:writeDelete an audience.
GET/api/v1/audiences/:id/contactsaudiences:writeList contacts in an audience.
POST/api/v1/audiences/:id/contactsaudiences:writeCreate or update an opted-in contact.
GET/api/v1/audiences/:id/contacts/:contactIdaudiences:writeFetch one contact.
PATCH/api/v1/audiences/:id/contacts/:contactIdaudiences:writeUpdate name fields or subscribed state.
DELETE/api/v1/audiences/:id/contacts/:contactIdaudiences:writeRemove a contact from an audience.
GET/api/v1/broadcastsbroadcasts:writeList broadcasts.
POST/api/v1/broadcastsbroadcasts:writeCreate a consent-based broadcast draft.
GET/api/v1/broadcasts/:idbroadcasts:writeFetch one broadcast and delivery stats.
DELETE/api/v1/broadcasts/:idbroadcasts:writeDelete a draft or scheduled broadcast.
POST/api/v1/broadcasts/:id/sendbroadcasts:writeSend a draft broadcast to subscribed contacts.
POST/api/v1/broadcasts/:id/schedulebroadcasts:writeSchedule or reschedule a broadcast.
POST/api/v1/broadcasts/:id/cancelbroadcasts:writeCancel a scheduled broadcast.

Request fields: Audiences and broadcasts docs

Automations

MethodEndpointScopePurpose
GET/api/v1/automationsautomations:writeList audience-triggered sequences.
POST/api/v1/automationsautomations:writeCreate an automation.
GET/api/v1/automations/:idautomations:writeFetch one automation and recent runs.
PATCH/api/v1/automations/:idautomations:writeUpdate steps, sender, tracking, or enabled state.
DELETE/api/v1/automations/:idautomations:writeDelete an automation.

Request fields: Automations docs

Suppressions

MethodEndpointScopePurpose
GET/api/v1/suppressionssuppressions:writeList suppressed recipients.
POST/api/v1/suppressionssuppressions:writeAdd a suppression manually.
DELETE/api/v1/suppressionssuppressions:writeRemove a suppression after a confirmed re-opt-in.

Request fields: Suppressions docs

Receiving

MethodEndpointScopePurpose
GET/api/v1/receiving/domainsreceiving:writeList receiving domains.
POST/api/v1/receiving/domainsreceiving:writeCreate a custom or managed receiving domain.
GET/api/v1/receiving/domains/:idreceiving:writeFetch one receiving domain.
POST/api/v1/receiving/domains/:id/verifyreceiving:writeCheck required TXT and MX records.
DELETE/api/v1/receiving/domains/:idreceiving:writeRemove a receiving domain.
GET/api/v1/receiving/emailsreceiving:readList received messages.
GET/api/v1/receiving/emails/:idreceiving:readFetch a received message body and headers.
GET/api/v1/receiving/emails/:id/attachmentsreceiving:readList attachment metadata.
GET/api/v1/receiving/emails/:id/attachments/:attachmentIdreceiving:readDownload attachment bytes.

Request fields: Receiving docs

Testing without sending real mail

Use [email protected] as the sender and recipients at simulator.noticeapi.com to exercise delivered, bounced, complained, and suppressed outcomes without using ACS or sending real mail.

Errors and limits

API errors return JSON with error and a stable code. Agents should branch on the code, respect Retry-After on 429, and stop on policy boundaries such as insufficient_scope, recipient_suppressed, and quota_exceeded. See Errors and limits.