Changelog

A chronological record of platform updates, new features, and important changes to Sent's APIs and services.


2026

May 2026

  • Added: New ERR_CONSENT_BLOCKED send-time error code. Every outbound message now runs through a pre-routing consent check that refuses sends to recipients with opt_out = true or whose phone is on the customer's phone-channel suppression list. Blocked messages are finalized as FAILED before any provider call is made, so no carrier charge applies. Inspect description on the message detail or in GET /v3/messages/{id}/activities to see the reason.
  • Updated: BUSINESS_004 is now scoped to the all-recipients-opted-out case. When some recipients are still reachable, the API accepts the batch and only the blocked recipients fail asynchronously with ERR_CONSENT_BLOCKED. See API Errors and the error catalog.

Inbound Message Webhooks

  • Fixed: message.received webhook events now fire correctly for inbound messages across all channels. Previously, subscribing to message.received produced no deliveries despite the event appearing in the subscription list — the webhook notification was only sent for outbound status changes. All inbound messages persisted since this release trigger a message.received event to your webhook endpoint.
  • Updated: message.received payload channel field now reflects the actual inbound channel (sms or whatsapp). WhatsApp replies fire the same message.received event shape as SMS replies.
  • Fixed: Inbound WhatsApp replies now reliably resolve to the correct account when a number has been used across multiple WhatsApp Business Accounts.

Profile Completion API

  • Updated: POST /v3/profiles/{profileId}/complete now returns distinct typed responses:
    • 200 — Profile was already in a completed state. Response body: {success: true, data: {status: "completed", message: "..."}}.
    • 202 — Completion accepted and running in the background. Response body: {success: true, data: {message: "..."}}. The provided webhook URL is called when processing finishes.
    • Previously both paths returned an opaque object type, which made it difficult to distinguish synchronous completion from asynchronous processing in generated SDK clients.

API Schema

  • Updated: event_data and metadata fields on webhook event and message objects are now typed as open JSON objects in the OpenAPI spec. This resolves ambiguity in generated SDK clients where these fields previously appeared as untyped empty schemas. Runtime behaviour is unchanged.

April 2026

Opt-In / Opt-Out Keyword Management

  • Added: Per-account keyword management for SMS opt-in and opt-out flows. You can now configure custom keywords (beyond the standard STOP/START/HELP) that trigger automatic replies and consent state changes. Contacts who send an opt-out keyword are automatically suppressed from future messages.
  • Added: Inbound keyword matches now trigger configurable auto-replies, billed as standard outbound messages.

Inbound Message Processing

  • Added: Inbound messages from contacts are now persisted and fully tracked across all supported channels. Each inbound message appears in your message history with direction: "INBOUND" and status: "RECEIVED".
  • Added: Inbound messages generate a message.received webhook event. Subscribe to this event to receive real-time notifications when contacts reply to your messages. See webhook event types for payload details.
  • Added: The from field is now captured on all message activities, so you can see the sender's phone number throughout the full message lifecycle.

Webhook Event Filtering

  • Added: Granular webhook event filtering by sub_type. When creating or updating a webhook, you can now specify which message sub-types to receive (e.g. only delivered and failed) instead of subscribing to all status transitions. This reduces webhook volume for high-throughput integrations.

March 2026

Template Approval Enforcement

  • Added: Messages using WhatsApp templates that have not been approved by Meta are now blocked before dispatch, with a clear error response. Previously, unapproved templates could reach the provider and produce a delayed failure. Approved templates continue to send without any change.

OTP Delivery via WhatsApp

  • Added: OTP codes can now be delivered via WhatsApp. The platform waits for a delivery confirmation before reporting success, and automatically falls back to SMS if WhatsApp delivery is not confirmed within the timeout window. No API changes required — channel selection follows your normal routing configuration.

Account Suspension

  • Added: Accounts flagged as suspended are blocked from sending messages and receive a clear account_suspended error response on all API calls. This applies to both the messaging API and webhook delivery.
  • Updated: All API error responses now include a doc_url field pointing to the relevant documentation page for that specific error code. This makes it easier to diagnose and resolve integration issues without searching the docs manually.

Message Metadata

  • Added: Messages now carry a metadata object that captures origin context (e.g. the API endpoint that created the message). This field is returned in message detail and activity responses as an open JSON object.

February 2026

Per-Customer Pricing

  • Added: Two billing models are now supported — Active Contact (charged per unique contact reached in a billing period) and Per Message (charged per message sent). Your account's billing model is configured at account setup. Charges are deducted automatically after each successful send.

Number Provisioning

  • Added: Phone numbers associated with your account are now visible via the API. Use GET /v3/lookup/number/{phone} to retrieve carrier and capability information for any number.

Playground Message Endpoint

  • Added: A dedicated endpoint for sending test messages during onboarding, without requiring a fully provisioned profile. Useful for verifying end-to-end message delivery before going live.

January 2026

Organizations & Sender Profiles (Multi-Tenancy)

  • Added: Full multi-tenancy support via Organizations and Sender Profiles. An Organization is the top-level account; Sender Profiles are sub-accounts that can inherit or isolate contacts, templates, brands, and campaigns from the parent organization.
  • Added: Profile CRUD — create, list, retrieve, update, and delete sender profiles via the API.
  • Added: POST /v3/profiles/{id}/complete — trigger the compliance setup workflow for a profile (TCR registration, WhatsApp connection).
  • Added: Contact and template inheritance — profiles can be configured to share contacts and templates with the parent organization (inheritContacts, inheritTemplates), or to maintain their own isolated sets.
  • Added: Template sharing — templates created at the organization level can be shared with child profiles without duplication.

User Management

  • Added: Full user management for your organization:
    • GET /v3/users / GET /v3/users/{id} — list and retrieve users
    • POST /v3/users — invite a user by email with a specified role
    • PATCH /v3/users/{id} — update a user's role
    • DELETE /v3/users/{id} — remove a user from the organization
  • Added: Role-based access — OWNER, ADMIN, and MEMBER roles with appropriate permission scopes. Owners have implicit admin access across all endpoints.
  • Added: User invitation emails with organization and profile context included in the invitation link.

WhatsApp Template Synchronization

  • Added: WhatsApp templates are now automatically synchronized from your connected WhatsApp Business Account. Template status updates (approved, rejected, paused) are reflected in real time via webhook-driven sync — no manual re-import needed.
  • Added: Template soft-deletion — when a WhatsApp Business Account is disconnected or deleted, all associated templates are soft-deleted rather than permanently removed, preserving message history.
  • Added: AUTHENTICATION template category support, including OTP and COPY_CODE button types for one-time password flows.

Error Codes

  • Added: Comprehensive error code system for message sending failures. Each failure now includes a machine-readable error_code field in the message activity, making it straightforward to programmatically distinguish temporary failures (retry) from permanent ones (suppress).

API v3

Overview

Sent API v3 is the current major version, featuring a redesigned authentication system, consistent response formats, and expanded functionality for multi-channel messaging.

Key Changes from v2

Featurev2v3
Authenticationx-sender-id + x-api-key headersx-api-key header only
Response FormatFastEndpoints problem detailsConsistent JSON envelope
Property NamingMixed casesnake_case
Sandbox ModeNot availablesandbox field in body
IdempotencyNot availableIdempotency-Key header
Error CodesLimitedComprehensive error catalog
ProfilesLimitedFull CRUD operations
Brands/CampaignsNot availableFull 10DLC support
UsersNot availableOrganization management
Webhooksv2 endpointsEnhanced v3 webhooks

2024

December 2024

API v3 General Availability

  • Added: Sent API v3 is now the recommended version for all integrations
  • Added: Comprehensive API documentation for v3 endpoints
  • Added: New getting started guide for v3

November 2024

Webhook Enhancements

  • Added: GET /v3/webhooks/event-types endpoint to list available event types
  • Added: POST /v3/webhooks/{id}/test endpoint to test webhook delivery
  • Added: POST /v3/webhooks/{id}/rotate-secret endpoint for security rotation
  • Added: PATCH /v3/webhooks/{id}/toggle-status endpoint to enable/disable webhooks

User Management

  • Added: GET /v3/users and GET /v3/users/{id} for user listing and details
  • Added: POST /v3/users to invite users to your organization
  • Added: PATCH /v3/users/{id} to update user roles
  • Added: DELETE /v3/users/{id} to remove users

October 2024

10DLC Compliance (Brands & Campaigns)

  • Added: Brand registration endpoints for 10DLC compliance
    • POST /v3/brands - Create brand
    • GET /v3/brands - List brands
    • PUT /v3/brands/{id} - Update brand
    • DELETE /v3/brands/{id} - Delete brand
  • Added: Campaign management endpoints
    • POST /v3/brands/{id}/campaigns - Create campaign
    • GET /v3/brands/{id}/campaigns - List campaigns
    • PUT /v3/brands/{id}/campaigns/{id} - Update campaign
    • DELETE /v3/brands/{id}/campaigns/{id} - Delete campaign

Profile Management

  • Added: Full profile CRUD operations
    • POST /v3/profiles - Create profile
    • GET /v3/profiles - List profiles
    • GET /v3/profiles/{id} - Get profile details
    • PATCH /v3/profiles/{id} - Update profile
    • DELETE /v3/profiles/{id} - Delete profile
  • Added: POST /v3/profiles/{id}/complete for profile setup completion

September 2024

API v3 Beta Release

  • Added: Core messaging endpoints
    • POST /v3/messages - Send messages
    • GET /v3/messages/{id} - Get message status
    • GET /v3/messages/{id}/activities - Get message activities
  • Added: Contact management
    • GET /v3/contacts - List contacts
    • POST /v3/contacts - Create contact
    • GET /v3/contacts/{id} - Get contact
    • PATCH /v3/contacts/{id} - Update contact
    • DELETE /v3/contacts/{id} - Delete contact
  • Added: Template management
    • GET /v3/templates - List templates
    • POST /v3/templates - Create template
    • GET /v3/templates/{id} - Get template
    • PUT /v3/templates/{id} - Update template
    • DELETE /v3/templates/{id} - Delete template
  • Added: Webhook management
    • GET /v3/webhooks - List webhooks
    • POST /v3/webhooks - Create webhook
    • GET /v3/webhooks/{id} - Get webhook
    • PUT /v3/webhooks/{id} - Update webhook
    • DELETE /v3/webhooks/{id} - Delete webhook
    • GET /v3/webhooks/{id}/events - List webhook events
  • Added: Number lookup
    • GET /v3/lookup/number/{phone} - Lookup phone number information
  • Added: Account information
    • GET /v3/me - Get authenticated account details

New Features

  • Added: Sandbox mode (sandbox: true) for all mutation endpoints
  • Added: Idempotency key support via Idempotency-Key header
  • Added: Consistent JSON response envelope (success, data, error, meta)
  • Added: Standardized error codes with documentation URLs
  • Added: snake_case property naming convention
  • Added: Enhanced rate limiting with detailed headers

2023

Legacy API v2

The v2 API remains fully supported for existing integrations. All v2 endpoints continue to operate at /v2/ paths.

Key v2 endpoints:

  • POST /v2/messages/contact - Send message to contact
  • POST /v2/messages/phone - Send message to phone number
  • GET /v2/contacts - List contacts
  • GET /v2/templates - List templates

See Legacy API Reference for complete v2 documentation.


Deprecation Notices

API v2

  • Status: Legacy (still supported)
  • Recommendation: New integrations should use v3
  • End of Support: No end date announced

Upcoming Changes

Planned for 2025

  • Analytics API: Message delivery analytics and reporting endpoints
  • Bulk Operations: Endpoints for batch contact and message operations
  • Advanced Templates: Template versioning and A/B testing support
  • SDKs: Official client libraries for JavaScript, Python, and Go

Subscribe to our API Status page for real-time updates on API changes and service status.


Feedback

Have suggestions for API improvements? Contact us at support@sent.dm.


On this page