190 | Access token expired or invalid | The daily sweep refreshes tokens before they lapse; a dead token flips the connection to DISCONNECTED. See token expiry. |
131021 | Recipient and sender are the same number | Sends normalize phone numbers to E.164 and validate before the Graph call. |
131008, 131009 | Malformed request: missing or invalid parameter | The send tool checks the slot count against the template and rejects blank slots before calling Meta. |
131026 | The recipient is not reachable on WhatsApp | The receipt fails with recipient_unavailable. Kylo marks the number and does not retry it. |
131051, 131060 | Unsupported message type, or the number is in use by another API client | The composer only sends supported types; a number claimed elsewhere is a Meta-side fix. |
131056 | Too many messages to the same recipient in a short period (anti-spam throttle) | Per-recipient dedupe via send receipts; the failure shows in receipts and runtime logs. |
132000 | Template parameter count mismatch | The template editor renders {{n}} slots at create time; the send tool fills each slot by name and fails closed on a mismatch. |
132015, 132016 | Template paused for low quality; 132016 is permanent after repeated pauses | Template status syncs into the Templates tab; sends only pick APPROVED, non-paused templates. |
130429, 80007, 4 | Throughput or rate limit reached on the WABA or app | Campaign sends are sequential; the failed send lands as a FAILED receipt with Meta’s error body. |
| Payment errors | No payment method on the WABA, credit line over limit, or WABA deleted | A Meta-side fix in Business Settings → Billing; Kylo surfaces the failed send with the error. |