Skip to Content
Changelog

Changelog

This is the API & developer changelog — endpoint additions, schema changes, SDK releases, breaking changes, and deprecations. For product-level updates (new UI features, platform support, app improvements), see the Product changelog .

Track API changes, new features, and breaking updates for VoxBurst.

How to read this changelog

Each entry is labeled with one of:

LabelMeaning
AddedNew endpoints, fields, or features. Backwards-compatible.
ChangedModifications to existing behavior. Non-breaking unless labeled Breaking.
FixedBug fixes and correctness improvements.
BreakingChanges that require client updates. Announced 30 days in advance.
DeprecatedFields or endpoints that will be removed. 90-day removal window.
SecuritySecurity improvements.

Backwards compatibility: additive changes (new optional fields, new endpoints, new enum values) are deployed without prior notice. Clients must ignore unknown fields. Non-additive changes are always labeled Breaking and announced in advance.

Contract precedence: API source code → this documentation → OpenAPI spec → SDK docs → examples. See Contract Precedence.


PUBLIC CHANGELOG ENTRY

2026-06-15 — TikTok Privacy Level, Publish Warnings, Unpublish Behavior Change & Threads Replies

Added:

  • platformMetadata on POST /v1/posts and PATCH /v1/posts/:id — New optional request field for per-platform metadata overrides. Keys are platform constants (e.g. "TIKTOK"); values are objects merged into the post’s platform-specific metadata. First supported key: TIKTOK.tiktokPrivacyLevel — set the TikTok privacy level (PUBLIC_TO_EVERYONE, MUTUAL_FOLLOW_FRIENDS, SELF_ONLY, FOLLOWER_OF_CREATOR) per post. Available values depend on the connected TikTok account’s creator permissions. See Platform Metadata.

  • publishWarning on PostPlatform response objects — Non-fatal publishing warnings are now returned on per-platform publish state entries (the platforms[] array in all post responses). The field is string | nullnull when no warning occurred. First value: TIKTOK_SELF_ONLY_FALLBACK — the requested TikTok privacy level was rejected by the API and the post was automatically retried with SELF_ONLY visibility and published successfully. See PostPlatform fields.

  • GET /v1/posts/:id/replies — New endpoint to fetch replies for a published Threads post. Returns up to 25 replies. Requires the posts:read scope. If the connected Threads account does not have threads_read_replies permission (granted at OAuth time), the response is always { "data": [] } — no error is returned. Returns { "data": [] } for posts not published on Threads. See Get Post Replies.

  • /v1/settings/notifications — now documentedGET and PUT endpoints for managing per-user notification preferences are now part of the public API reference. All existing fields (emailEnabled, pushEnabled, postPublished, postFailed, weeklyDigest, analyticsReport, timezone, dormant account reminder fields, and marketingEmails) are documented. Two fields added in this release: webhookFailed (default true) — alerts when a webhook endpoint fails or is auto-disabled; and approvalUpdates (default true) — alerts when an approval workflow state changes (submitted, approved, or rejected). All fields accept partial updates — send only the fields you want to change. See Notification Settings.

Changed:

  • POST /v1/posts/:id/unpublish now deletes posts from platforms — Previously this endpoint only marked the VoxBurst post as unpublished without touching the content on social platforms. It now attempts to delete the post from each connected platform before marking it unpublished. The response shape has changed:

    Previous response: { "success": true } (or similar — behavior was undocumented)

    New response:

    { "results": { "INSTAGRAM": { "success": true }, "TWITTER": { "success": false, "reason": "platform_not_supported" } }, "unsupported_platforms": ["TWITTER"], "note": "Posts on unsupported platforms must be deleted manually." }

    The results object contains per-platform outcomes (success: boolean, optional reason: string on failure). unsupported_platforms lists platforms where deletion is not supported — you must remove posts on those platforms manually. The VoxBurst post is marked unpublished regardless of per-platform deletion outcomes.

    Migration: If your integration calls POST /v1/posts/:id/unpublish and reads the response body, update your handler to parse the new shape. If you were manually deleting posts from platforms after calling unpublish, review whether that logic is still needed for platforms listed in unsupported_platforms. See Unpublish Post.

Breaking: No — platformMetadata and publishWarning are additive. The unpublish response shape change affects integrations that parse the response body; the previous response was undocumented, so no stable contract existed. Update handlers that read the unpublish response.


2026-06-13 — Instagram Page Selection, Audio Search & AI Add-On Clarifications

Added:

  • GET /v1/accounts/:id/pages now supports Instagram — for accounts connected via Facebook Login, returns a list of Instagram Business accounts linked to the connected Facebook user token. The response shape differs from LinkedIn: Instagram entries use pageId, pageName, type, and avatarUrl fields (LinkedIn uses urn and logoUrl). See List Pages.
  • POST /v1/accounts/:id/select-page now supports Instagram — re-fetches IG business accounts from the Graph API, matches on pageId, and updates the account with username, instagramAccountId, pageAccessToken, pageId, pageName, and oauthVersion: 'fb_login'. Returns 400 INVALID_PAGE_ID if pageId is not found. See Select Page.
  • GET /v1/instagram/audio/search — search for audio tracks for use in Instagram Reels. Requires a Facebook Login-connected Instagram account. Returns trending tracks (omit q) or search results (q=<term>). Feature-flagged behind INSTAGRAM_AUDIO_ENABLED=true — currently returns 503 FEATURE_DISABLED while pending Meta App Review. See Instagram Audio Search.
  • POST /v1/users/me/ga4-client-id — stores the browser GA4 client ID for server-side Measurement Protocol event stitching. Body: { "clientId": "XXXXXXXXX.XXXXXXXXX" } (must match /^\d+\.\d+$/). Returns { ok: true }. See User Endpoints.

Changed:

  • GET /v1/billing/currentaiAddon field clarifications: subscribed: true, tier: null is now a valid combination for complimentary or admin-granted AI access. creditsLimit: null and creditsRemaining: null mean unlimited credits (not missing data). Previously these null combinations were undocumented. See Get Current Billing Status.

Breaking: No


2026-06-07 — WhatsApp Business Live, Analytics Expansion & AI Insights

Added:

  • WhatsApp Business is now a live platform — connect your WhatsApp Business Account (WABA) via OAuth and start publishing TEXT, IMAGE (up to 30 images), and VIDEO posts to your business number. Requires Meta Business verification and a registered phone number ID. See WhatsApp platform guide.
  • AI Insights — a new collapsible panel on the analytics dashboard surfaces AI-generated recommendations (priority-ranked, categorized as posting_time, content_quality, platform_mix, growth, engagement) with actionable next steps and direct navigation links to the relevant dashboard section. Available on paid plans with a system-level AI provider configured.
  • 10 new analytics endpoints:
    • GET /v1/analytics/hashtag-performance — top hashtags by post count and average engagement rate
    • GET /v1/analytics/content-types — engagement breakdown by content type (TEXT, IMAGE, VIDEO, etc.)
    • GET /v1/analytics/insights — AI-generated insights (paid plan, 2-hour cache, configurable per workspace)
    • GET /v1/analytics/publishing-calendar — post frequency calendar heatmap by date
    • GET /v1/analytics/content-themes — top words/themes by engagement rate across posts
    • GET /v1/analytics/goals — retrieve current follower, impression, engagement, and post goals
    • POST /v1/analytics/goals — set or update analytics goals (all fields optional, null to clear)
    • GET /v1/analytics/report-schedule — retrieve the email report schedule (frequency, recipients)
    • POST /v1/analytics/report-schedule — configure weekly or monthly email reports with up to 10 recipients
    • POST /v1/analytics/send-report — immediately dispatch an analytics email report to configured or override recipients
  • Engagement Per Post KPI card added to the analytics dashboard overview
  • Email report redesign — new visual layout with platform breakdown, top posts, and insights summary; accessible via a toolbar button in the analytics panel

Changed:

  • Facebook first commentpages_manage_engagement permission required for Facebook first comments is currently under review by Meta. Posts that include firstComment will publish normally; the comment is silently skipped on Facebook until the permission is approved and re-enabled. All other platforms are unaffected.
  • GET /v1/analytics/posting-heatmap now accepts platforms and accountIds filter parameters; response now includes hasEngagementData boolean

Fixed:

  • AI Insights panel no longer shows fabricated data for workspaces with no post history — a structured onboarding state is returned instead
  • Funnel bars now use the true maximum value in the dataset instead of clamping all bars relative to 100%, so a single high-performing post no longer makes all other posts appear flat
  • “View breakdown” insight action link now correctly scrolls to the platform breakdown section

Breaking: No


2026-06-01 — AI Credit Costs Updated & Analytics Filtering Fixed

Added:

  • Meta deauthorize and data deletion compliance webhooks (POST /webhooks/meta/deauthorize, POST /webhooks/meta/data-deletion, GET /webhooks/meta/data-deletion?id=<code>) for OAuth app review and live-mode Instagram/Facebook support
  • Credit usage tracking in ledger for unlimited/admin-granted accounts (audit visibility without blocking generation)
  • Follower count display in /v1/accounts response and account UI cards
  • Engagement per Post KPI card to analytics dashboard

Changed:

  • AI credit costs realigned: image generation, best time analysis, and hashtag suggestions now each consume credits
  • Default credit cost per post updated — varies by content type (text-only vs. text+image)
  • Workspace AI key (/v1/ai/hashtags) now consumes credits
  • /v1/overview analytics endpoint now respects platforms filter parameter (previously ignored)
  • OAuth scopes: removed instagram_business_messaging from required scopes to unblock account reconnection during Meta app review

Fixed:

  • Analytics dashboard platform filter now correctly returns posts for selected platforms only (was showing all platforms regardless of filter)
  • Account follower counts now display correctly after reconnection (separate followers_count fetch to gracefully handle restricted personal accounts)
  • Instagram account sync no longer fails on personal accounts or accounts with restricted follower_count field
  • OAuth result page no longer flashes “Connection failed” during redirect hydration
  • Instagram Direct Login OAuth callback now correctly broadcasts result to parent window (was treating Instagram’s #_=_ hash artifact as pure page load)

Breaking: No



2026-05-26 — Instagram Discovery Improvements

Added:

  • Setup guide — new “How to connect Instagram for Discovery” section in the Getting Started help page walks through the 5-step Facebook Business Manager + Instagram Professional Account setup
  • Requirements banner — Discovery search now shows an inline banner listing which requirements are not yet met, with a direct link to the setup guide
  • Per-account readiness check — each connected Instagram account is now checked for Discovery eligibility before you search; accounts that are missing the Facebook connection or are personal accounts show a specific, actionable warning
  • Hashtag chips — hashtags are stripped from post captions and rendered as clickable chips; clicking any chip searches that hashtag immediately
  • Copy-all hashtags — each result card has a “Copy all N” button that copies the post’s hashtags to the clipboard
  • FAQ — “How Discovery works” FAQ is shown in the empty state, covering data source, top-post ranking, missing engagement fields, and the 30-hashtag platform limit
  • Clickable media-type badge — the Photo / Video / Carousel badge on each result card links directly to the post on Instagram

Changed:

  • “Album” renamed to “Carousel” across Discovery results (correct Instagram term)
  • Post result cards are now compact text-only cards; image placeholders removed (Meta’s hashtag search API does not return media URLs for public posts)
  • Relative timestamps (“3d ago”, “2w ago”) replace formatted dates on result cards
  • Search button is disabled when the selected account is not Discovery-ready, so issues are surfaced before an API call is made

Fixed:

  • Error messages are now specific and actionable — each error type returns its own message and suggested next steps
  • Invalid account ID errors (code 100) are now distinguished from permission denied errors (code 10) and handled separately

Breaking: No


2026-05-25 — Workspace Ownership Transfer & Plan Enforcement

Added:

  • POST /v1/workspaces/:id/transfer-requests — Owner initiates a transfer request to any workspace member
  • POST /v1/workspaces/:id/transfer-requests/:requestId/accept — Target accepts the ownership transfer (re-validates plan capacity at accept time)
  • POST /v1/workspaces/:id/transfer-requests/:requestId/decline — Target declines the transfer request
  • DELETE /v1/workspaces/:id/transfer-requests/:requestId — Owner cancels a pending transfer request
  • GET /v1/billing/scheduled-post-count — Returns count of SCHEDULED and PAYMENT_PAUSED posts across owned workspaces
  • POST /v1/billing/cancel now accepts { cancelScheduledPosts: boolean } to bulk-move scheduled posts to DRAFT before cancellation
  • Workspace transfer requests expire after 7 days and auto-reject
  • Email notifications sent to both owner and target on successful transfer (non-blocking; failures logged but do not roll back)
  • Old owner becomes admin (retains data access); ownership transfer does not affect Stripe subscription

Changed:

  • Workspace ownership transfer now uses request/acceptance flow instead of immediate transfer
  • Plan capacity validation now occurs at acceptance time (not just request initiation) to prevent race conditions
  • Scheduled posts targeting disconnected social accounts are now skipped at dispatch time (marked SKIPPED with skipReason: 'account_disconnected') instead of failing — posts auto-recover if the account reconnects before the scheduled time
  • WhatsApp moved back to Early Access (Channels API not yet available from Meta); renamed to “WhatsApp Business” in platform listings
  • /enhance, /hashtags, /suggest-time now require plan-level AI access (Starter or higher, or active AI add-on) — documented in API reference
  • POST /v1/accounts/store-oauth-tokens now enforces plan account limits at OAuth callback time; returns 402 if limit reached
  • AI credit enforcement for plan-only users (non-addon) is now atomic — credits reserved before provider call on all three plan AI endpoints

Fixed:

  • Scheduled post month calculation now uses scheduledFor (publish month) instead of createdAt for accurate plan limit enforcement
  • Scheduler now correctly handles posts that exceed plan limits, preventing indefinite reprocessing
  • Posts paused due to plan limits automatically resume when the plan is upgraded, within a recovery window
  • Dispatch-time plan limit re-check added — posts scheduled before downgrade now correctly blocked
  • WhatsApp OAuth account reconnection now preserves stable account identity
  • AI usage reports now read from an updated data source
  • Publish Now button no longer schedules posts that were auto-populated with a scheduled time
  • Plan-only AI routes (/enhance, /hashtags, /suggest-time) now log usage correctly for billing reports
  • Automatic image quality correction passes no longer charge credits
  • Post deletion now correctly releases the associated scheduling capacity reservation
  • Persona overage now visible in downgrade confirmation email
  • Bulk post creation (/posts, /bulk-video) now correctly enforce post limits based on the number of posts being created
  • Post creation enforcement is now consistent across all validation layers
  • Facebook OAuth flow no longer overridden by secondary #= artifact redirect

Breaking: No



2026-05-20 — @voxburst/sdk v1.2.0

Added:

  • client.media — new MediaResource with get(id), delete(id), and getUploadUrl({ filename, contentType, sizeBytes }) methods. New Media type exported from the package root.
  • client.webhooks — new WebhooksResource with create(input), list(), get(id), update(id, input), and delete(id) methods. New Webhook type exported from the package root.
  • client.batch.createPosts(posts, options?) — now hits POST /posts/bulk directly (up to 50 posts per call). Accepts { dryRun?: boolean }. Returns BulkPostResponse with per-post status (created | failed | valid). BulkPostResponse and BulkPostResult types exported from BatchResource.
  • client.posts.cancel(id) — cancel a draft or scheduled post without deleting it.
  • client.posts.unpublish(id) — attempt to delete a published post from each connected platform. Returns { results: Record<string, { success, reason? }>, unsupported_platforms, note }.
  • client.accounts.listAll(options?) — async generator that auto-paginates all accounts, mirroring posts.listAll().
  • Per-request timeout overrideclient.request() now accepts { timeout?: number } as a third argument. Pass a per-call timeout in milliseconds to override the global client timeout.
  • X-Request-ID on errors — when the API returns an x-request-id response header, it is now attached to the thrown VoxBurstError as error.requestId for easier support debugging.
  • 429 Retry-After respected — on rate-limit responses the SDK now waits exactly the number of seconds specified in the Retry-After header (capped at 60 s) before retrying, rather than applying an exponential multiplier.

Upgrade: npm install @voxburst/sdk@latest


2026-05-20 — @voxburst/sdk v1.1.0

Added:

  • client.posts.validate(input) — new method on PostsResource. Checks content against platform character limits and rules without creating a post. Accepts { content: string; platforms: string[] }, returns { valid: boolean; platforms: Record<string, ValidatePlatformResult> }. Types ValidateContentResult and ValidatePlatformResult are exported from the package root.

Upgrade: npm install @voxburst/sdk@latest


2026-05-20 — @voxburst/sdk v1.0.1

Fixed:

  • Error class names preserved through minificationinstanceof ValidationError, instanceof NotFoundError, instanceof AuthenticationError etc. now work correctly in bundled/minified consumer code. Previously all error instances appeared as a generic minified class.
  • fromResponse dispatches to the correct error subclass — API errors are now thrown as the appropriate subclass based on HTTP status (400ValidationError, 401AuthenticationError, 404NotFoundError, 409ConflictError, 429RateLimitError) instead of always throwing a base VoxBurstError.
  • ValidationError preserves the API’s error code — the code field now reflects the actual code returned by the API (e.g. INVALID_INPUT) rather than always being hardcoded to VALIDATION_ERROR.

Upgrade: npm install @voxburst/sdk@latest


2026-05-20 — TypeScript SDK, CLI & MCP Server Published

Added:

  • @voxburst/sdk v1.0.0 is now publicly available on npm. Install with npm install @voxburst/sdk. The SDK provides full TypeScript support, cursor-based auto-pagination via listAll(), automatic retries with exponential backoff, and typed error classes. See the TypeScript SDK docs for installation and usage examples.
  • @voxburst/cli v0.2.2 — updated release with API response shape fixes. Install with npm install -g @voxburst/cli.
  • @voxburst/mcp-server v0.2.2 — updated release with API path fixes (see API Correctness Fixes below). Install with npm install -g @voxburst/mcp-server.

Breaking: No — SDK is a new package; CLI and MCP Server updates are backwards-compatible.


2026-05-20 — API Correctness Fixes

Fixed:

  • POST /v1/posts/validate schema clarified — this endpoint requires a platforms array (e.g. ["TWITTER", "INSTAGRAM"]), not accountIds. It validates content rules for the named platforms without performing any account lookup. Previous documentation incorrectly showed accountIds in the example. See Validate Post for the corrected schema.
  • Post status values are lowercase — the API has always returned lowercase status strings (draft, scheduled, published, failed, partial, etc.). Documentation examples incorrectly showed uppercase values (DRAFT, SCHEDULED, etc.). Updated throughout the API reference, SDK docs, and examples.
  • Health check endpoint pathGET /v1/health and GET /v1/ready are the correct paths. Requests to /health (without the /v1 prefix) return 403 from CloudFront and do not reach the API. See Health Check.
  • Malformed resource IDs return 400, not 404 — Passing a malformed ID returns a 400 BAD_REQUEST. Handle both 400 and 404 when accepting user-supplied IDs. See Resource ID Format.
  • @voxburst/mcp-server v0.2.2 — API path fix — all internal HTTP client paths were incorrectly prefixed with /api/v1/ instead of /v1/. This caused every MCP tool call to return 403. Update to 0.2.2 or later. If you are running the MCP server from source, pull the latest main.

2026-05-11 — Trial Countdown, Plan Features Control Plane, and Security Hardening

Added:

  • GET /billing/current now returns trialEnd, trialTotalDays, and recentlyExpiredTrial fields for accurate trial status tracking
  • POST /v1/admin/system/plans/sync-limits endpoint to push plan limit updates without redeploying
  • Plan feature changes now take effect immediately without requiring a redeploy
  • API key validation (POST /v1/admin/system/ai/keys/:provider/validate) for OpenAI, Anthropic, Google, and Qwen providers
  • PDF analytics report generation (GET /v1/reports/pdf, PRO/AGENCY plan-gated, white-label option for AGENCY)
  • New plan feature gates: brand_voice, persona_evolution, ai_image_generation, pdf_reports, mcp_cli

Changed:

  • Trial polling reduced for Twitter: account-level snapshots cached 24h (was 4x/day), post metrics use 7-day lookback with 24h staleness (was 90-day, 6h)
  • “White-label Reports” renamed to “White-label Client Portal” (feature is CNAME-verified agency portal, not PDF branding)
  • Qwen models updated to Qwen3.6 series with US-endpoint variants
  • AI add-on credit system now enforces per-token rate limits on generation endpoints

Fixed:

  • User avatar uploads now accept Cognito sub or DB ID (fixed 403 for all avatar uploads)
  • Qwen API key validation fixed: uses correct US endpoint (dashscope-us.aliyuncs.com) and chat completion probe
  • Unlimited team members now correctly enforced on Pro/Agency plans
  • ai-sitemap and ai-context endpoints no longer blocked by CloudFront index.html rewrite
  • Plan limit sync now occurs on cold start without overwriting admin edits
  • Trial end dates now properly cleared from DB when subscription canceled to FREE
  • Fixed a race condition on concurrent review submissions

Security:

  • Improved prompt injection defense on AI generation endpoints
  • Improved cost abuse prevention: tightened input field validation on AI generation and image prompt fields
  • Improved rate limiting on review submissions and contact form attachments
  • Improved webhook signature verification
  • Improved Qwen key validation: added timeout to prevent hangs on network failures

Breaking: No


2026-05-06 — Webhook Auto-Disable, Downgrade Endpoints & Security Hardening

Added: New API fields and endpoints for webhook health management and plan downgrade workflows.

  • Webhook objects now include autoDisabledAt (ISO timestamp, null if active) and consecutiveFailures (integer) — use these to detect and alert on unhealthy webhook endpoints in your integration.
  • Webhook auto-disable behavior: after repeated consecutive delivery failures VoxBurst sends a warning email; after further failures it disables the webhook. Re-enabling via PATCH /v1/webhooks/:id resets the failure state and resumes delivery immediately.
  • GET /v1/billing/downgrade-readiness — returns a checklist of items to resolve before a plan downgrade (over-quota posts, connected accounts above the lower limit, active AI addons, etc.). Use this before initiating a plan change to surface blockers proactively.
  • GET /v1/billing/downgrade-designations — lists the connected accounts that will remain active after a downgrade (workspace owner chooses which to keep up to the lower plan’s limit).

Changed:

  • Plan enforcement is now consistent between API responses, feature gates, and display — upgrading mid-period activates new limits immediately; downgrading activates at the next renewal.

Fixed:

  • Improved input validation on file upload endpoints (MIME type enforcement) and AI generation fields (length and content checks).

Breaking: No — autoDisabledAt and consecutiveFailures are additive webhook fields. Existing handlers that ignore unknown fields are unaffected.


2026-04-02 — Partial Failure Retry & Fix Endpoints

Added: Two new endpoints for recovering from partial or failed posts without re-publishing to platforms that already succeeded.

  • POST /v1/posts/:id/retry — Re-queues all failed platform targets automatically. Platforms with status: published are never touched. Returns retriedPlatforms and skippedPlatforms arrays indicating which platforms were retried and which had exhausted retries.
  • POST /v1/posts/:id/platforms/:platformId/fix — Fixes a single failed platform and optionally replaces the image (mediaUrl) or caption (content) before resubmitting. This is the correct path for platforms that have exhausted automatic retries.
  • post.published webhook payload now includes status and a full per-platform platforms array (with postPlatformId, status, error, platformPostUrl per entry) so handlers can detect partial failures and identify which platform needs fixing.

Breaking: No — existing post.published webhook handlers that only read postId are unaffected. New fields are additive.


2026-03-24 — Bulk Generation v2.1

Added: Queue-based bulk generation with credit reservation and decision engine foundation.

  • New POST /v1/bulk-generation/jobs endpoint for creating bulk post generation jobs
  • Credit reservation system ensures credits are held before generation begins
  • Decision engine scores and categorizes generated content

Breaking: No


2026-03-16 — Persona Support for Posts

Added: Posts can now be linked to personas for AI-generated content with consistent voice.

  • Added personaId field to posts
  • Persona memory updates after publishing enable learning from successful posts
  • Persona profiles define tone, style, and platform-specific adaptations

Breaking: No — personaId is optional; existing posts unaffected.


2026-03-15 — AI Generation Improvements

Added: Enhanced tracking for AI content generation.

  • workspace_id added to AI generation records for billing queries by workspace
  • resolved_model field stores the actual model used when aliases redirect requests
  • New AI providers: Qwen added to supported models

Breaking: No


2026-03-14 — Account Permission Modes

Added: Granular permission controls for connected social accounts.

  • Accounts now support permission modes: read, publish, full
  • Fine-grained access control for team workspaces
  • Permission checks enforced at the API level

Breaking: No — existing accounts have full access unless a permission mode is specified.


2026-02-22 — Webhook Delivery Logs

Added: Comprehensive webhook delivery tracking and improved delivery diagnostics.

  • Delivery status tracking: pending, delivering, delivered, failed
  • Automatic retry with exponential backoff for failed deliveries

Breaking: No


2026-02-19 — Webhook Delivery Fields

Added: Enhanced webhook endpoint reliability features.

  • failureCount tracking on webhook endpoints
  • lastDeliveryAt timestamp for monitoring
  • Improved delivery diagnostics

Breaking: No


Versioning Policy

VoxBurst follows semantic versioning principles for API changes:

  • Non-breaking changes (new fields, new endpoints) are deployed continuously
  • Breaking changes are announced 30 days in advance via email and changelog
  • Deprecated fields are marked in documentation 90 days before removal

Follow @voxburst  on X for announcements.


Docs & contract changes

This feed tracks changes to the documentation and OpenAPI spec — new pages, schema corrections, field additions to reference tables, and spec updates. It is distinct from the API changelog above, which tracks live API behavior changes.

2026-06-15 — Updated Posts API reference: added platformMetadata request field to POST /v1/posts and PATCH /v1/posts/:id; added publishWarning to PostPlatform fields; corrected POST /v1/posts/:id/unpublish behavior description and response schema; added GET /v1/posts/:id/replies endpoint

2026-06-13 — Updated Accounts API reference: expanded GET /v1/accounts/:id/pages and POST /v1/accounts/:id/select-page to document Instagram support alongside LinkedIn; added GET /v1/instagram/audio/search endpoint; added POST /v1/users/me/ga4-client-id endpoint

2026-06-13 — Updated Subscription API reference: clarified aiAddon field in GET /v1/billing/current — documented subscribed: true, tier: null (complimentary access) and creditsLimit: null / creditsRemaining: null (unlimited) as valid states

2026-05-31 — Added OpenAPI Spec page: codegen examples (openapi-typescript, openapi-generator, openapi-zod-client), Postman/Insomnia import, and generated type excerpts for Post and CreatePostInput

2026-05-31 — Added Post with media and Scheduled campaign end-to-end production workflow guides

2026-05-31 — Added Versioning & Compatibility page: explicit breaking-change tables, deprecation timeline, SDK semver rules, stability tiers, contract precedence

2026-05-31 — Added SDK↔REST mapping tables for 8 previously undocumented resources: Batch, Personas, Hashtag Sets, Contacts, Broadcasts, Sequences, Approval Workflows, Image Generation Jobs

2026-05-31 — Surfaced OpenAPI spec URLs on homepage, Getting Started, and SDK mapping page; added idempotency and versioning to Getting Started Next Steps

2026-05-31 — Added Python (REST) page to SDK navigation — clarifies no official Python package exists, REST-only with comparison table

2026-05-31 — Added client.media and client.webhooks reference sections to TypeScript SDK docs; completed client.posts with publish, cancel, clone, fixPlatform

2026-05-31 — Added API conventions section to Canonical Schemas: camelCase naming, ISO 8601 UTC dates, cuid2 ID prefix table, enum casing rules, null-vs-absent, pagination envelope 2026-05-31 — Corrected TypeScript SDK method coverage to match published @voxburst/sdk@1.2.1: removed publish(), clone(), fixPlatform() from client.posts (REST-only); removed completeConnect(), test(), listPages(), listPlaylists(), selectPage() from client.accounts (REST-only); removed client.personas, client.hashtagSets, client.approvalWorkflows (REST-only); corrected recurrence field to REST-only for creation. All affected examples replaced with raw-fetch equivalents.

2026-05-31 — Improved docs lint script: stale-pip check uses denial-text detection instead of path exemption; response-shape check extended to let/var and multiline destructuring, scoped to code blocks only; platforms-on-create check replaced line-window heuristic with fenced-code-block parser

2026-05-31 — Added scripts/sdk-methods.json (snapshot of @voxburst/sdk@1.2.1 resource/method surface derived from published package types) and scripts/generate-sdk-methods.js (regenerates the snapshot from the npm registry tarball). Added check 5 to the docs lint script: validates every client.X.Y() call in TypeScript code blocks against the snapshot — CI now fails if a documented SDK method does not exist in the published package. Immediately caught 22 violations across four files, all corrected.

2026-05-31 — Corrected Personas and Hashtag Sets tables in the SDK ↔ REST mapping: TypeScript SDK column incorrectly listed client.personas.* and client.hashtagSets.* as SDK methods. Both resources are REST-only and do not exist in @voxburst/sdk@1.2.1. All entries updated to REST only, resolving the contradiction between the mapping page and the TypeScript SDK page.

2026-06-07 — Added WhatsApp Business MCP guide: content types, failure cookbook, account requirements, cross-platform override example, benchmark checklist

2026-06-07 — Added 10 new analytics endpoints to Analytics API reference: hashtag-performance, content-types, insights, publishing-calendar, content-themes, goals (GET/POST), report-schedule (GET/POST), send-report

2026-06-07 — Expanded SDK ↔ REST mapping Analytics section from 2 to 21 endpoints; corrected prior client.analytics.* entries which incorrectly implied TypeScript/Go SDK coverage (all analytics endpoints are REST-only)

2026-06-07 — Updated platform count from 8 → 9 across platforms-at-a-glance, same-post-all-platforms, 7 MCP platform guide breadcrumbs, and facebook-mcp guide; WhatsApp row added to all comparison tables

2026-06-07 — Documented Facebook first-comment pending-approval state in api-reference/posts, sdks/mcp, platforms/index, and guides/facebook-mcp with consistent ✗ † notation and footnote explaining the pages_manage_engagement Meta review status

Last updated on