Skip to content

Activate a sender channel

View .md
POST

Switch on the account connected to this sender for one channel, so it sends and receives. This is the same switch as Activate on the dashboard's Accounts screen, with the same price and the same limits.

A newly connected account that your plan already includes (nothing charged now, nothing added to the monthly bill) is switched on by itself as soon as it can carry messages. One that would cost money starts inactive: every send on it is refused and it is not listed in the sender's channels until you activate it here or from Accounts, after seeing the price. A connection you switched off stays off.

Billing. Activating is billed as a channel connection. On a paid plan that is one full month charged from the balance at once, and the same amount every month while the connection stays active; the response states both as chargedCents and monthlyCents. The first connections a plan includes cost nothing, and so does re-activating a connection whose current month is already paid. A WhatsApp Business Account is never charged from the balance for its month: one beyond the ones the plan includes is billed on the subscription instead. The exception is a WhatsApp account switched off for non-payment, which settles its past-due fee from the balance when re-activated.

Calling this on a channel that is already active changes nothing and charges nothing. Not available with test-mode keys.

Authorization

  • Authorizationheaderrequired

    Bearer YOUR_API_KEY. Create a key in the dashboard.

Path parameters

  • senderIdstringrequired
  • channelstringrequired

    The channel to switch.

    One ofwhatsapptelegraminstagrammessengeremail

Responses

200The channel is active.
  • senderobjectrequired

    The sender after the change. channels includes the channel once it is active.

    12 properties
    • idstringrequired
    • namestringrequired
    • phoneNumberstring

      Phone number in E.164 format. Absent on a sender that has none: an email-only sender, or one created with only enableSmsOneway.

    • channelsstring[]

      Channels this sender can actually send on right now: configured AND activated. Empty means the sender cannot send or receive anything yet: a phoneNumber alone does not enable SMS or voice, and a connected account that is not activated is left out, because every send on it is refused. Check this rather than inferring capability from phoneNumber or emailAddress, and turn a connected channel on with POST /v1/senders/{senderId}/channels/{channel}/activate.

    • isDefaultboolean

      Whether this sender is the project's default.

      Defaultfalse
    • webhookobject

      Webhook configuration for the sender.

      5 properties
      • urlstring<uri>required

        HTTPS URL that will receive webhook events.

      • eventsstring[]required

        List of events the webhook is subscribed to.

        One ofmessage.queuedmessage.sentmessage.deliveredmessage.readmessage.statusmessage.failedmessage.inboundmessage.unsupportedbroadcast.status_changedconversation.newcontact.identity_linkedtemplate.status_changedinvitation.status_changedcall.initiatedcall.answeredcall.completedcall.faileddomain.verifieddomain.failed
      • secretstring

        Webhook secret for signature verification. Only returned on create or regenerate.

      • activebooleanrequired

        Whether the webhook is active.

        Defaulttrue
      • signatureVersionstringrequired

        Which X-Zavu-Signature scheme this receiver is sent.

        • v1: v1=HMAC_SHA256(secret, body). The scheme used before this was configurable. Existing webhooks stay on it until you move them.
        • v2: v2=HMAC_SHA256(secret, "{t}.{body}"). The current scheme, and the default for new senders. It signs the timestamp together with the body.
        • v1+v2: both signatures, sharing one t. The migration setting: a receiver reading either one works, so you can deploy and confirm your new verifier before switching over.

        Moving from v1 straight to v2 returns 400. Set v1+v2 first. See https://www.zavu.dev/docs/guides/receiving-messages/signature-migration

        One ofv1v1+v2v2
    • whatsappobject

      WhatsApp Business Account information. Only present if a WABA is connected.

      3 properties
      • phoneNumberIdstring

        WhatsApp phone number ID from Meta.

      • displayPhoneNumberstring

        Display phone number.

      • paymentStatusobject

        Payment configuration status from Meta.

        3 properties
        • setupStatusstring

          Payment setup status (COMPLETE, NOT_STARTED, etc.).

        • methodStatusstring

          Payment method status (VALID, NONE, etc.).

        • canSendTemplatesboolean

          Whether template messages can be sent. Requires setupStatus=COMPLETE and methodStatus=VALID.

    • emailAddressstring

      From-address for the email channel, if configured.

    • emailReceivingEnabledboolean

      Whether inbound email receiving is enabled for this sender.

      Defaultfalse
    • emailCatchAllEnabledboolean

      Whether catch-all receiving is enabled. When true (and emailReceivingEnabled is true), this sender receives email addressed to any local part at its domain, not just its own address. The original recipient is delivered in the message.inbound webhook's data.to.

      Defaultfalse
    • createdAtstring<date-time>
    • updatedAtstring<date-time>
  • channelstringrequired

    A channel whose connection has an on/off switch. sms, sms_oneway and voice are billed per message and per phone number, are always on, and have nothing to activate.

    One ofwhatsapptelegraminstagrammessengeremail
  • activatedbooleanrequired

    True when this call switched the channel on. False when it was already active; nothing was charged.

  • chargedCentsintegerrequired

    Cents taken from the balance by this call. Zero when the channel was already active, its month is already paid, or the plan includes it.

  • monthlyCentsintegerrequired

    Cents this connection adds to each month while it stays active. Zero when the plan includes it.

400The channel has no activation (`sms`, `sms_oneway`, `voice`), or the key is a test-mode key.
  • codestringrequired
  • messagestringrequired
  • detailsobject
401Unauthorized.
  • codestringrequired
  • messagestringrequired
  • detailsobject
402The balance cannot cover what activating charges now.
  • codestringrequired
  • messagestringrequired
  • detailsobject
403The plan has no room for another active connection.
  • codestringrequired
  • messagestringrequired
  • detailsobject
404Sender not found.
  • codestringrequired
  • messagestringrequired
  • detailsobject
409`channel_not_connected`: the sender has no account for this channel. `connection_not_ready`: the account is connected but cannot carry messages yet.
  • codestringrequired
  • messagestringrequired
  • detailsobject