v0.6.0: Access tokens for the API
Changed:
- API keys no longer authenticate requests directly. Exchange your key once at POST /api/v1/token for an access token, then send that token in the Authorization header
- Access tokens are valid for one hour, so the long-lived key stays off the wire for almost every call
- The token exchange is rate limited on the same tight budget as sending mail, so a key cannot be guessed at speed
- Every API reference page now shows the exchange step and bearer-token examples
Action required: integrations sending x-api-key on data routes must add the exchange step and switch to an Authorization: Bearer header. Your existing keys keep working, they are just what you exchange rather than what you send. Revoking a key stops it buying new tokens immediately; any token already issued from it stops working within the hour.
v0.5.0: API key lifecycle
Changed:
- API keys now expire 180 days after they are created. The expiry date is shown next to each key in Settings
- You can hold two live keys at once, so rotating never takes your integration offline: create the new key, deploy it, then revoke the old one
- Creating a third key retires the oldest automatically
- Keys are stored only as a SHA-256 hash. A key is shown once, when it is created, and cannot be recovered afterwards
- Keys can be revoked individually from Settings, effective immediately
- Creating or revoking a key now asks for your password again
- We email you when a key is created or revoked, and 30, 7 and 1 days before one expires
Existing keys were carried over and keep working. Nothing needs to change in your integration today, but keys issued from now on are time bound, so plan a rotation before the expiry date.
v0.4.0: DNS management
Added:
- Connect a domain and manage its DNS through Reinterface nameservers (POST /api/v1/dns/domains)
- Existing public records are imported automatically when a domain is added, so switching nameservers doesn't break anything
- Delegation status check with pending/active states (GET /api/v1/dns/domains/{domain})
- Record management: create, list, update, delete for A, AAAA, CNAME, MX and TXT (/api/v1/dns/records)
- NS records are managed by Reinterface and protected from modification
- Domains & DNS page in the dashboard with nameserver instructions and inline record editing
- DNS API reference (/docs/dns)
All DNS endpoints authenticate with your personal API key (x-api-key), same as Gmail and Calendar.
v0.3.0: Personal API keys
Added:
- Personal API keys: Gmail and Calendar endpoints now authenticate with x-api-key instead of a session JWT
- API key management in Dashboard → Settings (view, copy, regenerate)
- connection_id is now optional everywhere, defaults to your most recently connected Google account
- GET /api/v1/google/accounts works with the API key and no longer requires application_id
- Dedicated Gmail (/docs/gmail) and Calendar (/docs/calendar) API references
Session JWT authentication still works on these endpoints, so existing integrations are unaffected.
v0.2.0: Calendars & user-level API docs
Added:
- calendar.readonly scope on the Google connect flow
- List calendars endpoint (GET /api/v1/calendar/calendars)
- Optional calendar_id on the calendar event endpoints (defaults to the primary calendar)
- Calendar picker on the dashboard Calendar page
- User-level API (session JWT) documented: /api/v1/google/*, /api/v1/gmail/*, /api/v1/calendar/*
v0.1.1: Email Connectors
Added:
- Outlook dashboard integration via Integration Application Email Connectors API
- Next.js proxy routes: /api/outlook/accounts, /connect, /send, /fetch
- provider-neutral connections table for application-scoped account metadata
- Email Connectors API documentation (/docs/email-connectors)
- Outlook Dashboard API reference (/docs/email-connectors/outlook)
- IMAP / SMTP dashboard and API (/dashboard/imap-smtp, /docs/email-connectors/imap-smtp)
- Google OAuth migrated to Connectors API (/api/google/*, /docs/email-connectors/google)
v0.1.0: First Stable Milestone
Added:
- Google OAuth connect flow (POST /api/v1/google/connect)
- Google OAuth callback handler (GET /api/v1/google/oauth/callback)
- Connected Google account listing (GET /api/v1/google/accounts)
- Google account disconnect (DELETE /api/v1/google/accounts/{id})
- Health check endpoint (GET /healthz)
- Session JWT authentication on protected routes
- Organization and application access verification
- AES-256-GCM encrypted token storage