Changelog

GuidesUpdated June 14, 2026

Changelog

Use this page to note API changes over time (new endpoints, request/response changes, deprecations). Update it when you ship changes.


Format

  • Added – New endpoints or new request/response fields.
  • Changed – Behavior or response shape change.
  • Deprecated – Still supported but will be removed later (e.g. sequence_id in favor of list_id).
  • Removed – No longer supported.

2026-06-14 — Phase 4 (Campaign creation — granular HITL)

  • Added: POST /api/v1/campaigns — create a campaign shell (scope campaigns:write). Returns 409 NOT_READY (detail.missing) if the workspace isn't ready to build, and 403 FORBIDDEN (detail = { reason: "campaign_build_limit", limit, used }) when the plan's build limit is reached. No credits (builds are gated by the campaign build limit). Supports Idempotency-Key. See Create & Build a Campaign.
  • Added: GET /api/v1/target-audiences — list selectable TA segments (scope campaigns:read).
  • Added: POST /api/v1/campaigns/:id/target-audience — submit TA (existing id or custom segment); kicks the background research. Returns 202 + a campaign.target_audience job (scope campaigns:write).
  • Added: GET /api/v1/campaigns/:id/assets/:type/options (campaigns:read) and PUT /api/v1/campaigns/:id/assets/:type/selection (campaigns:write) for social_proof | lead_magnet | risk_reversal | value_proposition. SP/LM/RR return 200; value_proposition selection kicks the build chain and returns 202 + a campaign.build job.
  • Added: POST /api/v1/campaigns/:id/assets/value_proposition/generate — generate campaign-scoped VP options; 409 NOT_READY until SP/LM/RR selections are submitted. Returns 202 + a campaign.value_propositions job (scope campaigns:write).
  • Added: GET /api/v1/campaigns/:id/build-status — derived per-stage + overall (draft|building|ready|failed) readiness (scope campaigns:read). campaign.* jobs report derived (non-enqueued) status via GET /api/v1/jobs/:id, like workspace.regenerate. See Build Status.

2026-06-14 — Phase 3A (Workspace, imports, regenerate, agent chat, conversations)

  • Added: GET /api/v1/workspace (profile + onboarding + document status) and PUT /api/v1/workspace/details (save-only; does not regenerate documents) (scopes workspace:read / workspace:write). See Workspace.
  • Added: POST /api/v1/workspace/imports/document (multipart upload → extract + merge into workspace_details) and POST /api/v1/workspace/imports/url (company research → merge details only). Both async (poll GET /api/v1/jobs/:id) and free (rate limited) (scope workspace:write). See Imports.
  • Added: POST /api/v1/workspace/regenerate + GET /api/v1/workspace/regenerate/:id — rebuild company summary + market research; status is derived from live document readiness (not worker-hosted). Free (rate limited) (scopes workspace:write / workspace:read). See Regenerate.
  • Added: POST /api/v1/agent/chat — synchronous, JSON-only campaign chat. Free (no credits); messages are persisted server-side. Returns 409 NOT_READY if the campaign has no knowledge base yet (scope agent:write). See Agent Chat & Conversations.
  • Added: GET /api/v1/conversations and GET /api/v1/conversations/:id/messages — workspace-scoped conversation history, paginated (sender normalized to role) (scope agent:read). See Agent Chat & Conversations.

2026-06-14 — Phase 2 (Tier 2 CRUD, branch, reprocess, signatures)

  • Added: PATCH /api/v1/campaigns/:id (rename) and DELETE /api/v1/campaigns/:id (scope campaigns:write). Delete removes the campaign and its regenerable artifacts but retains the campaign's lists and their CSVs (lists are detached: campaign_id becomes null). Returns 409 CONFLICT while any list is processing. See Update, Delete & Branch.
  • Added: POST /api/v1/campaigns/:id/branch — create a new campaign from a chosen step of an existing one (synchronous, no credits; supports Idempotency-Key) (scope campaigns:write). See Update, Delete & Branch.
  • Added: POST /api/v1/lists/:id — reprocess a list's pending batches (async; poll GET /api/v1/lists/:id) (scope lists:write). See Lists.
  • Added: Email signature CRUD — GET/POST /api/v1/signatures and PUT/DELETE /api/v1/signatures/:id (scopes signatures:read / signatures:write). See Email Signatures.

2026-06-14 — Phase 1 (Tier 1 reads & cheap CRUD)

  • Added: GET /api/v1/credits and GET /api/v1/credits/check?required=N (scope credits:read). See Credits.
  • Added: GET /api/v1/campaigns/:id/selections (scope campaigns:read). See Campaign Selections.
  • Added: GET /api/v1/campaigns/:id/documents and GET /api/v1/workspace/documents with short-lived signed download_urls (scopes campaigns:read / workspace:read). See Campaign Documents and Workspace Documents.
  • Added: PATCH /api/v1/lists/:id (rename) and DELETE /api/v1/lists/:id (delete + storage cleanup; 409 while processing) (scope lists:write). See Lists.
  • Added: POST /api/v1/campaigns/:id/preview — preview emails from 5 synthetic leads (scope campaigns:write). Costs 5 credits per call with partial/total-failure refunds; supports Idempotency-Key; returns 409 NOT_READY when campaign instructions aren't built yet. See Preview.

2026-06-14 — API platform foundation

  • Added: API platform foundation. All responses now include a request_id (and X-Request-Id header) and a standardized error envelope ({ error, message, detail?, request_id }).
  • Added: Per-key rate limiting with X-RateLimit-* headers and a 429 RATE_LIMITED response (honor Retry-After). Distinct from WORKSPACE_LIMIT. See Rate Limits.
  • Added: Idempotency-Key header support on selected write requests — campaign create, target-audience submit, asset selection, and preview (safe retries; same key + different body → 409 CONFLICT). Not supported on generate / generate-batch.
  • Added: Pagination (limit/offset + has_more/total) on GET /campaigns and GET /lists. Existing campaigns/lists array keys are retained for back-compat.
  • Added: GET /api/v1/jobs/:id (generic async job polling) and GET /api/v1/health.
  • Changed: Credit checks are now pay-as-you-go aware; 402 INSUFFICIENT_CREDITS includes detail { required, available, payg_enabled, pct_of_cap }.

2026-04-14

  • Added: enrichment_enabled option on /generate and /generate-batch. When true, leads are enriched via web research (persona description, company data, industry, employee count, etc.) before email generation. Costs 2 credits per lead instead of 1.
  • Fixed: Batch generate (/generate-batch) no longer double-charges credits. Previously, credits were deducted upfront at acceptance and again per successful lead during background processing. Now credits are only deducted per successful lead.

2025-02-14

  • Added: Public API documentation (Campaigns, Generate, Generate Batch, Lists, Export).
  • Note: sequence_id in generate response is deprecated; use list_id for new integrations.