API keys and permissions

Key permissions, domain limits, send limits, approvals and the audit log.

Every API key has a permission, can be held to one domain, and can carry its own limits. This page explains each setting, the key page, approvals and the audit log. To make your first key, see Create an API key.

Permissions

PermissionWhat it reaches
Full accessEvery endpoint: sending, contacts, domains, broadcasts and analytics. Only team admins can make one.
Send onlySending an email or a batch, reading back an email it sent, one-time codes, the deliverability check and enrolling a contact in an automation. Everything else answers 403 SCOPE_DENIED.
Read onlyLists, lookups and stats. Send calls work only as a practice run with the header Notix-Dry-Run: true. Every write answers 403.
Live AIMade on Connect your AI for one AI app and one verified domain. Its permission cannot be changed.

Give a backend that only sends email a Send only key. If it leaks, it cannot read your contacts, delete a domain or cancel a scheduled broadcast.

A key can never do more than the person who made it. A member's keys can send email or read, but not reach admin-only endpoints.

Hold a key to one domain

Under Domain access, choose one verified domain instead of All Domains. The key then sends only from that domain, and reads only that domain's emails, analytics and received mail. It cannot add domains, send SMS or codes, or use webhooks. Those answer 403 DOMAIN_PINNED. Contacts, templates and segments belong to the whole team, so it still reaches them.

Open a key

  1. Open API keys

    Go to API keys. Keys and agents lists every key with its permission, domain and what it did today.

    The API keys page with the list of API keys and agentsThe API keys page with the list of API keys and agents
    API keys: every key and agent, and what each did today.
  2. Press a key

    Press a key's name. Its page shows who uses it, who made it and its last call, with Running or Paused at the top right. The tiles show emails today against its daily cap, SMS today, and the broadcast size that needs approval. What it did today lists each call.

    An API key page with today's usage tiles, today's calls and the pause boxAn API key page with today's usage tiles, today's calls and the pause box
    One key: usage against its limits, what it did today, and the pause box.
  3. Set its limits

    Press Limits. A team admin can set any of these, or leave a field blank for no cap:

    LimitWhat it counts
    Emails per dayRecipients this key may send to each UTC day.
    Emails per monthRecipients this key may send to each UTC month.
    Requests per minuteAPI and MCP calls this key may make each minute.
    SMS per dayTexts, one-time codes included, this key may send each UTC day.
    People reached per dayPeople this key may add to automations or send opt-in emails to each day. Default 1,000, up to 10,000.

    Over a limit, a call answers 429 LIMIT_EXCEEDED. At 80% of a cap, the owner and admins get an email. Read a key's limits from code with Read this key's limits.

Broadcast approval

Also under Limits, Broadcast approval decides what happens when this key schedules a broadcast:

ChoiceWhat happens
Ask for approval above the thresholdA broadcast for more people than the threshold waits for a person to approve it.
Refuse broadcasts above the thresholdA broadcast for more people than the threshold is refused with 403. Send it from the console instead.
Drafts only: never schedule a broadcastEvery schedule answers 403. The key only saves drafts, and a person schedules them.
No approvalBroadcasts go out without approval.

The threshold is a number of recipients. Every key starts with Ask for approval above the threshold at 50. Keys made before broadcast approval existed use the same default since 10 October 2026; choose No approval on a key to turn it off.

When a broadcast needs approval, the call answers 409 APPROVAL_REQUIRED and nothing is sent. Notix emails a 6-digit code and a link to the approval page to the key's owner and the team's admins. The code works for 15 minutes, and an approval expires after 24 hours.

  1. Open the approval

    Press the link in the email. The page Approve an agent's broadcast shows what the key asked to send: the broadcast, the sender, the subject, the recipients, the checks and a preview.

    The approval page showing a broadcast an agent asked to send, with Approve and DeclineThe approval page showing a broadcast an agent asked to send, with Approve and Decline
    Approve an agent's broadcast: check it, then approve or decline.
  2. Approve or decline

    Press Approve or Decline. A declined or expired request means the agent must ask again. A person can also read the code to the agent, which sends it with Approve a broadcast with the emailed code.

Pause a key

At the bottom of a key's page, press the button in Pause this agent. It stops within a minute, wherever it runs. Emails it queued are held and go out when it resumes. Any member can pause a key. Only an admin can resume it. A paused key answers 403 KEY_PAUSED.

The audit log

Open the Audit log tab in Settings to see What your agents did. It lists every change made with your API keys or by an AI agent, every AI tool call and every refusal. Notix stores which key, which tool and what happened, never the message itself. Entries are kept for 13 months.

The audit log with filters for date, key, tool and resultThe audit log with filters for date, key, tool and result
The audit log. Filter by date range, key, tool and what happened.

Filter by date range, key, tool and result, such as Refused, Practice runs or Needs your OK. A team admin can press Export to download the log as CSV or JSON. Read it from code with Read the audit log.

Check a key from code

Check an API key answers which team and key you are using and its permission. It is a quick way to test a new key.

curl https://app.usenotix.dev/api/v1/auth/check \
  -H "Authorization: Bearer $NOTIX_API_KEY"
Open in ClaudeOpen in ChatGPT