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:
| Label | Meaning |
|---|---|
| Added | New endpoints, fields, or features. Backwards-compatible. |
| Changed | Modifications to existing behavior. Non-breaking unless labeled Breaking. |
| Fixed | Bug fixes and correctness improvements. |
| Breaking | Changes that require client updates. Announced 30 days in advance. |
| Deprecated | Fields or endpoints that will be removed. 90-day removal window. |
| Security | Security 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:
-
platformMetadataonPOST /v1/postsandPATCH /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. -
publishWarningonPostPlatformresponse objects — Non-fatal publishing warnings are now returned on per-platform publish state entries (theplatforms[]array in all post responses). The field isstring | null—nullwhen 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 withSELF_ONLYvisibility 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 theposts:readscope. If the connected Threads account does not havethreads_read_repliespermission (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 documented —GETandPUTendpoints 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, andmarketingEmails) are documented. Two fields added in this release:webhookFailed(defaulttrue) — alerts when a webhook endpoint fails or is auto-disabled; andapprovalUpdates(defaulttrue) — 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/unpublishnow deletes posts from platforms — Previously this endpoint only marked the VoxBurst post asunpublishedwithout touching the content on social platforms. It now attempts to delete the post from each connected platform before marking itunpublished. 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
resultsobject contains per-platform outcomes (success: boolean, optionalreason: stringon failure).unsupported_platformslists platforms where deletion is not supported — you must remove posts on those platforms manually. The VoxBurst post is markedunpublishedregardless of per-platform deletion outcomes.Migration: If your integration calls
POST /v1/posts/:id/unpublishand 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 inunsupported_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/pagesnow 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 usepageId,pageName,type, andavatarUrlfields (LinkedIn usesurnandlogoUrl). See List Pages.POST /v1/accounts/:id/select-pagenow supports Instagram — re-fetches IG business accounts from the Graph API, matches onpageId, and updates the account withusername,instagramAccountId,pageAccessToken,pageId,pageName, andoauthVersion: 'fb_login'. Returns400 INVALID_PAGE_IDifpageIdis 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 (omitq) or search results (q=<term>). Feature-flagged behindINSTAGRAM_AUDIO_ENABLED=true— currently returns503 FEATURE_DISABLEDwhile 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/current—aiAddonfield clarifications:subscribed: true, tier: nullis now a valid combination for complimentary or admin-granted AI access.creditsLimit: nullandcreditsRemaining: nullmean 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 rateGET /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 dateGET /v1/analytics/content-themes— top words/themes by engagement rate across postsGET /v1/analytics/goals— retrieve current follower, impression, engagement, and post goalsPOST /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 recipientsPOST /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 comment —
pages_manage_engagementpermission required for Facebook first comments is currently under review by Meta. Posts that includefirstCommentwill 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-heatmapnow acceptsplatformsandaccountIdsfilter parameters; response now includeshasEngagementDataboolean
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/accountsresponse 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/overviewanalytics endpoint now respectsplatformsfilter parameter (previously ignored)- OAuth scopes: removed
instagram_business_messagingfrom 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 memberPOST /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 requestDELETE /v1/workspaces/:id/transfer-requests/:requestId— Owner cancels a pending transfer requestGET /v1/billing/scheduled-post-count— Returns count of SCHEDULED and PAYMENT_PAUSED posts across owned workspacesPOST /v1/billing/cancelnow 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
SKIPPEDwithskipReason: '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-timenow require plan-level AI access (Starter or higher, or active AI add-on) — documented in API referencePOST /v1/accounts/store-oauth-tokensnow 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 ofcreatedAtfor 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— newMediaResourcewithget(id),delete(id), andgetUploadUrl({ filename, contentType, sizeBytes })methods. NewMediatype exported from the package root.client.webhooks— newWebhooksResourcewithcreate(input),list(),get(id),update(id, input), anddelete(id)methods. NewWebhooktype exported from the package root.client.batch.createPosts(posts, options?)— now hitsPOST /posts/bulkdirectly (up to 50 posts per call). Accepts{ dryRun?: boolean }. ReturnsBulkPostResponsewith per-post status (created | failed | valid).BulkPostResponseandBulkPostResulttypes exported fromBatchResource.client.posts.cancel(id)— cancel adraftorscheduledpost 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, mirroringposts.listAll().- Per-request timeout override —
client.request()now accepts{ timeout?: number }as a third argument. Pass a per-call timeout in milliseconds to override the global client timeout. X-Request-IDon errors — when the API returns anx-request-idresponse header, it is now attached to the thrownVoxBurstErroraserror.requestIdfor easier support debugging.- 429 Retry-After respected — on rate-limit responses the SDK now waits exactly the number of seconds specified in the
Retry-Afterheader (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 onPostsResource. Checks content against platform character limits and rules without creating a post. Accepts{ content: string; platforms: string[] }, returns{ valid: boolean; platforms: Record<string, ValidatePlatformResult> }. TypesValidateContentResultandValidatePlatformResultare 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 minification —
instanceof ValidationError,instanceof NotFoundError,instanceof AuthenticationErroretc. now work correctly in bundled/minified consumer code. Previously all error instances appeared as a generic minified class. fromResponsedispatches to the correct error subclass — API errors are now thrown as the appropriate subclass based on HTTP status (400→ValidationError,401→AuthenticationError,404→NotFoundError,409→ConflictError,429→RateLimitError) instead of always throwing a baseVoxBurstError.ValidationErrorpreserves the API’s error code — thecodefield now reflects the actual code returned by the API (e.g.INVALID_INPUT) rather than always being hardcoded toVALIDATION_ERROR.
Upgrade: npm install @voxburst/sdk@latest
2026-05-20 — TypeScript SDK, CLI & MCP Server Published
Added:
@voxburst/sdkv1.0.0 is now publicly available on npm. Install withnpm install @voxburst/sdk. The SDK provides full TypeScript support, cursor-based auto-pagination vialistAll(), automatic retries with exponential backoff, and typed error classes. See the TypeScript SDK docs for installation and usage examples.@voxburst/cliv0.2.2 — updated release with API response shape fixes. Install withnpm install -g @voxburst/cli.@voxburst/mcp-serverv0.2.2 — updated release with API path fixes (see API Correctness Fixes below). Install withnpm 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/validateschema clarified — this endpoint requires aplatformsarray (e.g.["TWITTER", "INSTAGRAM"]), notaccountIds. It validates content rules for the named platforms without performing any account lookup. Previous documentation incorrectly showedaccountIdsin the example. See Validate Post for the corrected schema.- Post
statusvalues 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 path —
GET /v1/healthandGET /v1/readyare the correct paths. Requests to/health(without the/v1prefix) return403from CloudFront and do not reach the API. See Health Check. - Malformed resource IDs return
400, not404— Passing a malformed ID returns a400 BAD_REQUEST. Handle both400and404when accepting user-supplied IDs. See Resource ID Format. @voxburst/mcp-serverv0.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 return403. Update to0.2.2or later. If you are running the MCP server from source, pull the latestmain.
2026-05-11 — Trial Countdown, Plan Features Control Plane, and Security Hardening
Added:
GET /billing/currentnow returnstrialEnd,trialTotalDays, andrecentlyExpiredTrialfields for accurate trial status trackingPOST /v1/admin/system/plans/sync-limitsendpoint 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,nullif active) andconsecutiveFailures(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/:idresets 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 withstatus: publishedare never touched. ReturnsretriedPlatformsandskippedPlatformsarrays 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.publishedwebhook payload now includesstatusand a full per-platformplatformsarray (withpostPlatformId,status,error,platformPostUrlper 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/jobsendpoint 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
personaIdfield 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_idadded to AI generation records for billing queries by workspaceresolved_modelfield 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.
failureCounttracking on webhook endpointslastDeliveryAttimestamp 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