# whatsapi.sh > Turn your WhatsApp into an API. One key works for the REST API and the MCP server. This is an unofficial WhatsApp API, and WhatsApp can restrict or ban a number that uses it. ## Guides - [Send your first message](https://docs.whatsapi.sh/en): One key, one paired number, one POST. If any of this takes more than five minutes, that is a bug in the product. Tell us. - [The send queue](https://docs.whatsapi.sh/en/guides/pacing): Messages you start wait in the queue, even for people you have contacted before. We accept and charge each message, then release them one at a time, 15 to 25 minutes apart by default. Replies to a message received in the last 24 hours go out now. - [The TypeScript client](https://docs.whatsapi.sh/en/guides/sdk): One typed method per endpoint, generated from the same definitions that answer your requests. What your editor says is what the API does. Zero dependencies, ESM, Node 20+. - [OTP that gives you the code](https://docs.whatsapi.sh/en/guides/otp): One call sends the login code to your user and returns the same code to you, so your app verifies it however it likes. Most WhatsApp OTP integrations spend a week building exactly this. - [Supabase phone codes over WhatsApp](https://docs.whatsapi.sh/en/guides/supabase): Supabase keeps creating and checking the code. whatsapi delivers it on WhatsApp, from your own number, instead of by SMS. It works on Supabase Cloud and on a Supabase you host yourself. - [Event webhooks, signed](https://docs.whatsapi.sh/en/guides/webhooks): Seven events, one endpoint per account, and every delivery is signed like Stripe's. Each payload names the number it happened on, so one URL serves however many numbers you run. - [Errors that tell you what to do](https://docs.whatsapi.sh/en/guides/errors): Every error is a JSON envelope with a stable code, a message that names the fix, and Retry-After on anything that clears by waiting. This page is the table your retry logic needs. - [Coming from wuzapi](https://docs.whatsapi.sh/en/guides/wuzapi): whatsapi runs wuzapi underneath, so nothing you already know is wrong. It is just no longer the surface you touch. Here is the translation table. - [Avoiding bans](https://docs.whatsapi.sh/en/guides/bans): This is an unofficial WhatsApp API. WhatsApp can restrict or ban a number that uses it. The limits and send queue reduce risky bursts, but cannot remove that risk. This guide explains what to check before sending and how to recover a disconnected number. - [The MCP server](https://docs.whatsapi.sh/en/mcp): Connect an AI app to send WhatsApp messages, read chats and manage your numbers. Calls use your account quota and sending limits. - [The REST reference](https://docs.whatsapi.sh/en/api): Every endpoint, every field, every error. This page is generated from the same definitions that answer your requests, so it always matches the API you are calling. ## Reference - [Everything on one page](https://docs.whatsapi.sh/llms-full.txt): setup, access, failures and tools - [OpenAPI](https://api.whatsapi.sh/openapi.json): the REST reference, with every tool's fields - [MCP discovery](https://whatsapi.sh/.well-known/mcp.json): the server address and sign-in methods, as JSON