Skip to content

Versioning & changelog

Versioning policy

  • The API is versioned in the path: /v1. Webhook payloads carry "apiVersion": "v1".
  • Within v1 we only make backwards-compatible changes:
    • new endpoints, optional request fields, response fields, enum values, event types and error codes;
    • stricter validation only where the previous behaviour was a bug.
  • Clients must ignore unknown response fields and handle unknown enum values (e.g. treat an unknown status as "other"). Both SDKs model statuses as strings for this reason.
  • Breaking changes go to a new major version (/v2). /v1 stays available for at least 12 months after /v2 is released, with deprecation announced in this changelog and via Deprecation/Sunset response headers.
  • The machine-readable contract is GET /api/openapi.json (OpenAPI 3.1). CI fails when the implementation and the committed contract diverge.

Changelog

1.4.0 — 2026-10

  • Follow-ups and reminders: sequences (/v1/followups/sequences with draft, versioned publish, pause, resume, archive and statistics), enrollments (/v1/followups/enrollments with dedupeKey, reschedule, pause, resume, cancel and bulk jobs), rules (/v1/followups/rules), settings (/v1/followups/settings) and /v1/conversations/{id}/followups. See the Follow-ups API.
  • New scopes followups:read, followups:write, followups:enroll.
  • New webhook events followup.enrolled, followup.step_queued, followup.completed, followup.stopped, followup.failed; message.* events of follow-up messages carry followUpEnrollmentId.
  • Campaigns accept followUpSequenceId (non-responders enter a no-reply sequence).
  • New message source followup; new error codes FOLLOWUP_LIMIT_REACHED, FOLLOWUP_SEQUENCE_NOT_ACTIVE, FOLLOWUP_ALREADY_ENROLLED.

1.3.0 — 2026-10

  • CRM: leads (/v1/leads with capture/merge, status, assignment, conversion, rescoring, AI extraction, timeline, bulk updates and CSV export), deals and the board (/v1/deals), pipelines (/v1/pipelines), companies (/v1/companies, merge), notes and tasks (/v1/crm/notes, /v1/crm/tasks), settings, custom fields, scoring and assignment rules (/v1/crm/*), lead forms (/v1/lead-forms), click-to-chat links (/v1/lead-links) and reports (/v1/crm/reports). See the CRM API.
  • New scopes leads:read, leads:write, deals:read, deals:write, companies:read, companies:write, crm:admin (in the default scopes of new keys).
  • New webhook events lead.created, lead.updated, lead.status_changed, lead.qualified, lead.assigned, lead.converted, lead.sla_breached, deal.created, deal.updated, deal.stage_changed, deal.won, deal.lost, company.created, company.updated, task.created, task.due, task.completed.
  • Contact imports accept lead options to capture a lead per row.
  • New error codes LEAD_LIMIT_REACHED, PIPELINE_LIMIT_REACHED, FORM_LIMIT_REACHED, ORIGIN_NOT_ALLOWED, RULE_TOO_COMPLEX, INVALID_FIELD_VALUE, CAPTCHA_FAILED, INVALID_TRANSITION, STAGE_NOT_IN_PIPELINE, FORM_NOT_ACCEPTING.

1.2.0 — 2026-10

  • Contacts are a core resource (no team inbox needed): POST /v1/contacts (upsert by phone or externalId), POST /v1/contacts/batch, PUT /v1/contacts/{id}/tags, POST /v1/contacts/bulk-tags, consent (POST /v1/contacts/{id}/consent, POST /v1/contacts/{id}/opt-out, GET /v1/contacts/{id}/consent-events) and CSV imports (/v1/contacts/imports). Contacts gain tags, consent, externalId, source and lastInboundAt.
  • Tags can be managed through the API: POST /v1/tags, PATCH/DELETE /v1/tags/{id}.
  • Segments: /v1/segments with rule-based audiences and POST /v1/segments/preview.
  • Campaigns: /v1/campaigns (drafts, launch, unschedule, pause, resume, cancel, duplicate, test sends, recipients) and /v1/campaign-settings.
  • New scopes campaigns:read, campaigns:write, campaigns:launch (in the default scopes of new keys).
  • New webhook events campaign.started, campaign.paused, campaign.resumed, campaign.completed, campaign.cancelled, campaign.failed, contact.opted_out, contact.opted_in. message.* events of campaign messages carry campaignId.
  • Messages have a new source value campaign. Opt-out keywords (STOP...) are recorded for every project.
  • New error codes SEGMENT_TOO_COMPLEX, CONTACT_LIMIT_REACHED, CAMPAIGN_LIMIT_REACHED, CAMPAIGN_STATE_CONFLICT, CONTACT_OPTED_OUT.

1.1.0 — 2026-10

  • Team inbox: GET/POST /v1/conversations, GET/PATCH /v1/conversations/{id}, timeline, replies with collision detection (REPLY_COLLISION), internal notes, tags (GET /v1/tags, PUT /v1/conversations/{id}/tags).
  • Contacts: GET /v1/contacts, GET/PATCH /v1/contacts/{id}, erasure with DELETE /v1/contacts/{id}.
  • New scopes conversations:read, conversations:write, contacts:read, contacts:write (in the default scopes of new keys; existing keys keep their scopes).
  • New webhook events conversation.created, conversation.assigned, conversation.status_changed.
  • AI assistant (dashboard): conversation timeline activities ai_replied, ai_handoff, ai_paused, ai_resumed. Assistant replies are outbound messages with source: "automation".
  • New error codes FEATURE_NOT_AVAILABLE, SEAT_LIMIT_REACHED, REPLY_COLLISION.

1.0.0 — 2026-10

Initial release.

  • Instances: create, list (by externalReference), update, delete, connect via QR or pairing code, status, QR, reconnect, disconnect, logout, hosted connect links.
  • Messages: text, image and document sends with mandatory idempotency, status history with certainty, inbound messages.
  • Media: multipart upload, import from URL, pre-signed downloads.
  • Webhooks: signed events with retries, delivery log, replay, test events; event log at /v1/events.
  • API keys with scopes, rotation and revocation; usage endpoint.
  • SDKs: @whatstig/sdk 1.0.0 (TypeScript), WhatsTig.Client 1.0.0 (.NET 8/10).

Not yet available (planned): audio, video, location and contact messages; interactive messages; group chats; online payments.