/ changelog

What changed in Torpedo.

Changes to the API, the SDKs and the dashboard, by date.

torpedo-sdk 0.3.0 · torpedo-java 0.2.0
WhatsAppAPIWebhooksSDK

Phone number verification over WhatsApp

Verify sends a one-time code over WhatsApp and checks the code your user types back. If WhatsApp fails, the code can go by SMS instead. Torpedo generates the code, counts wrong guesses and expires the code for you.

  • › POST /v1/verify to send and POST /v1/verify/{id}/check to confirm
  • › torpedo.verify in the TypeScript SDK (0.3.0) and verify() in the Java SDK (0.2.0)
  • › verification.* webhooks for sent, delivered, fallback and approved
  • › GET /v1/workspace/usage now works with an API key and includes your WhatsApp balance
  • › If you already use the verification.fallback webhook, read the channel from data.toChannel: data.to is now always the phone number
curl -X POST https://api.torpedo.co.mz/v1/verify \
  -H "X-API-Key: $TORPEDO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "to": "+258841234567", "fallback": "sms" }'
sms
SMSAPIWebhooks

Undelivered status and a deadline for delivery confirmation

An SMS the operator accepted but could not deliver now has the undelivered status, separate from failed. If the operator does not confirm delivery within 25 hours, the SMS is marked unconfirmed.

  • › undelivered: the operator could not deliver it (invalid number, unreachable phone, expired)
  • › failed: the SMS never reached the operator
  • › New sms.delivery_unknown webhook when no confirmation arrives
  • › If your integration checks status === "failed", also check for "undelivered"
painel
Dashboard

Two-step verification

You can turn on two-step verification for your account. After your password, the dashboard asks for a 6-digit code sent to your email.

painel
DashboardEmailSMS

Test sends from the dashboard

Send a test email or SMS without writing code. The message follows the same path as an API send, with status and history.

api
APIDashboard

Unified message log

Email and SMS appear in the same list, in the dashboard and in the API. Useful when a customer calls saying they got nothing and doesn’t know which channel.

curl https://api.torpedo.co.mz/v1/messages \
  -H "X-API-Key: $TORPEDO_API_KEY"
webhooks
Webhooks

Webhook retries with exponential backoff

If your endpoint fails, Torpedo tries again with growing intervals, from 5 seconds up to 5 minutes between attempts.

sms
SMS

Delivery lifecycle for every SMS

Every SMS shows the stages it went through, from request to carrier receipt, and the reason when it isn’t delivered.

  • › sms.delivered when the carrier confirms
  • › sms.undelivered and sms.failed with the reason
painel
Dashboard

Bot protection on sign-up and sign-in

Account forms now use Cloudflare Turnstile. Fewer fake accounts, no puzzles for humans.

torpedo-java 0.1.0
SDKEmail

Java SDK and batch idempotency

First release of the Java 17 SDK, with sync and async clients. Batch email sends accept an Idempotency-Key, like single sends.

<dependency>
  <groupId>mz.co.torpedo</groupId>
  <artifactId>torpedo-java</artifactId>
  <version>0.1.0</version>
</dependency>