---
title: "POST /whatsapp/magic-message/ensure-template"
method: POST
path: "/whatsapp/magic-message/ensure-template"
tags: ["WhatsApp Templates"]
---

# POST /whatsapp/magic-message/ensure-template

`POST /whatsapp/magic-message/ensure-template`

## Request

- Base URL: `https://api.spurnow.com`
- URL: `https://api.spurnow.com/whatsapp/magic-message/ensure-template`
- Auth: HTTP bearer

## Query parameters

- `channelId` number, required

## Response `200`

Ensures the configured magic message template exists and is approved for 24hr bypass feature

- EnsureMagicMessageTemplateResponseDto
  - `exists` boolean, required
  - `approved` boolean, required
  - `status` 'APPROVED' | 'PENDING' | 'REJECTED' | 'NOT_FOUND', required
  - `message` string, required
  - `templateName` string
  - `directSend` DirectSendStatusDto
    - `supported` boolean, required: Whether Spur tries Direct Send for this number at all: the provider must be Cloud API or Onextel and the platform switch on. An inbox reply also needs the workspace on the rollout list while one is set; the API and MCP skip the list (PRO-2453).
    - `unsupportedReason` 'NO_WABA' | 'PROVIDER' | 'KILL_SWITCH' | 'NOT_ALLOWLISTED', nullable, required: Why `supported` is false; null when it is true.
    - `status` 'UNKNOWN' | 'ENABLED' | 'NOT_ENABLED' | 'BLOCKED', required: What Meta last told us about this WhatsApp Business Account. UNKNOWN until the first outside-window text tries; Meta exposes no eligibility API.
    - `lastCheckedAt` string, nullable, required: ISO time of the last Direct Send attempt for this WABA.
    - `nextCheckAt` string, nullable, required: NOT_ENABLED only: ISO time after which the next outside-window text tries Direct Send again.
    - `blockedUntil` string, nullable, required: BLOCKED only: ISO time Meta’s block is expected to lift.
    - `rateLimitedUntil` string, nullable, required: Set while Meta rate-limits utility sends for this WABA (error 131064); replies go out as Magic Messages until then.
    - `wabaId` string, nullable, required: The WABA id, for Meta’s access form.
    - `phoneNumberId` string, nullable, required: The number’s Meta phone number id, to quote to Meta or support.
    - `requestAccessUrl` string, required: Meta’s Direct Send access request form, prefilled with the WABA id and business name.

## Other responses

- `201`

---

[API](https://skmtc.dev/spurnow/apis/spur-apis.md) - [All operations](https://skmtc.dev/spurnow/apis/spur-apis/llms.txt) - [OpenAPI document](https://skmtc.dev/spurnow/apis/spur-apis/revisions/27ca7bf002cb?raw)
