Changelog

API Changelog

Every change an integrator can notice, dated. Inside /v1 the API only changes additively.

← Back to the documentationVersioning and deprecation policy

Sandbox test numbers, error catalogue, versioning

  • New: with a sandbox key, +212600000002 fails, +212600000003 is undeliverable, +212600000004 is opted out (403 OPTED_OUT) and +212600000005 never gets a receipt — each with its webhook.
  • Fixed: a sandbox key's simulated receipt went out under the event name message.message.delivered; it is now message.delivered.
  • Versioning policy: /v1 only changes additively; a removal is announced 12 months ahead, with Deprecation and Sunset headers on the route concerned.
  • Webhooks: GET /v1/webhooks/logs and POST /v1/webhooks/logs/{log_id}/replay to read and resend a delivery.
  • WhatsApp templates: carousels and FLOW buttons in POST /v1/templates; an automatic EnvoiSMS review before Meta (TEMPLATE_PENDING_REVIEW, TEMPLATE_REJECTED_BY_REVIEW).
  • WhatsApp campaigns: template_variables (_header_media_url, _button_<i>, "static:…") and consent_attested, required for a marketing template (CONSENT_ATTESTATION_REQUIRED).
  • A common wrong route (/v1/sms, /v1/send…) answers 404 naming the right one.

WhatsApp abroad

  • A WhatsApp message abroad is priced by the recipient's Meta market.
  • New 429 OTP_COUNTRY_PAUSED: codes to a country outside Morocco paused for the day when too few are confirmed.
  • An API key may upload media for a send (POST /v1/whatsapp/media/upload); other WhatsApp changes stay dashboard-only.

Unregistered Sender ID

  • SENDER_ID_NOT_REGISTERED is no longer returned: an unregistered custom Sender ID is sent automatically at the standard rate.

Sandbox keys

  • A sandbox key simulates the whole verification flow (send, resend, check) and number lookup, billing nothing; sandbox_code is returned.

Idempotency, signed webhooks v2, number lookup

  • Idempotency-Key header on POST /v1/messages and /v1/messages/bulk.
  • X-EnvoiSMS-Signature-256 (timestamped, replay-proof) on every webhook; the older X-EnvoiSMS-Signature is still sent.
  • GET /v1/lookup/{number}: a number's validity, country and carrier.

API v1 stable

  • SMS to Moroccan carriers and WhatsApp Business, WhatsApp → SMS cascade, signed delivery webhooks.