The Spotzee API uses date-based versions. Pin a version with theDocumentation Index
Fetch the complete documentation index at: https://docs.spotzee.com/llms.txt
Use this file to discover all available pages before exploring further.
Spotzee-Version request header — see API versioning for the full pinning model.
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:
| Surface | Old base URL | New base URL |
|---|---|---|
| Main API | https://apix.spotzee.com/api/client | unchanged |
| Extended API | https://app.spotzee.com/api/ext | https://apix.spotzee.com/api/ext |
| Extended API spec | https://app.spotzee.com/api/ext/openapi.json | https://apix.spotzee.com/api/ext/openapi.json |
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 — Stripe-stylereq_<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 (Stripe-stylereq_<ULID>). Quote it in support tickets.
New endpoints
Public surface for the first time:- Contacts — list, get, upsert (single + batch up to 100), delete. Public name is Contact.
- 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
- Mintlify-autogenerated code samples in curl / JavaScript / Python / Go on every endpoint page.