Spotzee-Version request header. See API versioning for the full pinning model.
2026-09-15
Template email headers
Email templates support optionaldata.customHeaders rows with name and value fields. Add per-contact values in email advanced settings across all editor types. Campaigns, journeys and proofs use the template’s values, and preview and proof requests preserve supplied journey variables.
Both the campaign wizard and template details form show compact header rows with names inside empty fields and a minus button in the third column. Failed saves keep your form open so you can correct validation errors. WYSIWYG saves preserve header rows, including literal empty values, and accept supported generated list styles.
Template names override matching provider headers without regard to case. An empty or whitespace-only rendered value suppresses the matching provider header; removing the template row restores the provider default. Reserved names and duplicate names prevent saving. Unsafe rendered control characters stop the send before provider submission.
Existing templates need no migration. See Custom email headers for configuration, variables and validation rules, or Set up email delivery for provider configuration.
Tooling, 2026-04-29 (afternoon)
Extended API consolidated onto apix.spotzee.com
Both the Main API and Extended API now serve from the same hostname. Update your client configuration:
This is a hard cutover with no overlap. Update your integrations.
Extended API conventions aligned with Main API
The Extended API now ships the same wire-level conventions as the Main API:Spotzee-Versionheader: required to be either2026-04-28or omitted (server defaults to current). Echoed on every response.X-Request-Idheader:req_<id>on every response. Globally unique per request. Quote it in support tickets.application/problem+json: error responses now use the RFC 7807 media type.- OpenAPI 3.1: the published spec is now OpenAPI 3.1.0 (was 3.0.0).
- Canonical error envelope:
{status, code, title, message, error, type, request_id}matches the Main API exactly. The legacyerrorfield is kept as the canonical envelope’s optional mirror until a future major version.
2026-04-28
The first publicly-versioned release of the Spotzee API.New surface
- Project-scoped surface at
https://apix.spotzee.com/api/clientwithsk_(secret) andpk_(publishable) keys. - Organisation-scoped surface at
https://apix.spotzee.com/api/adminwithok_keys for cross-project administration.
New conventions
- Versioning:
Spotzee-Versionrequest header (date-based). Echoed back on every response. - Idempotency:
Idempotency-Keyheader onPOSTandPATCH. 24-hour TTL, scoped per API key. Same key + same body returns the cached response; same key + different body returns409 idempotency_key_mismatch. - Rate limits: per-key sliding window, separate read and write buckets, generous tiers for MCP and agent workloads (
x-spotzee-client-type: mcpdoubles the base limit). - Errors: RFC 7807
application/problem+jsonenvelope with stable stringcode,title,message,request_id, optionalparamanderrors[]for per-field validation breakdowns. - Correlation: every response carries an
X-Request-Idheader (req_<ULID>). Quote it in support tickets.
New endpoints
Public surface for the first time:- Users: list, get, upsert (single + batch up to 100), delete. Public name is User.
- Lists: full CRUD. Static and dynamic flavours; dynamic lists are how you express segments via the API.
- Subscriptions: opt-in management per channel.
- Templates: multi-channel template management with preview and proof endpoints.
- Campaigns: full CRUD plus duplicate, preview, and trigger.
- Journeys: full CRUD plus trigger. Live status required for entrances.
- Tags: full CRUD.
- Events: single + batch ingestion (up to 100 events per call), publishable-key-allowlisted for browser use.
- Project API keys: manage your own
sk_andpk_keys. - Organisation API keys: manage
ok_keys (admin role required). - Webhook endpoints: manage outgoing webhook subscriptions and signing secrets.
Migration notes
This is the first dated release, so there’s nothing to migrate from.Tooling, 2026-04-29
These don’t change the API surface but are worth knowing about if you’re building against the spec.Typed JavaScript SDK
The@spotzee/js-sdk package now ships a fully typed client generated from the live OpenAPI 3.1 spec at the /generated subpath. Every operation is exposed as a typed function with inputs, outputs, and the full RFC 7807 error envelope. The hand-written Client / BrowserClient / Spotzee classes for browser tracking are unchanged. The typed surface is purely additive.
Cross-API schema sharing
Cross-cutting types (ErrorResponse, PaginationQuery, Channel, prefixed identifiers) now resolve to the same canonical definitions across the Main API and the Extended API. Client code that handles errors uniformly across both APIs is a single import.
Coming soon
- Autogenerated code samples in curl / JavaScript / Python / Go on every endpoint page.