Get started
Welcome to Threadwire
What the Threadwire WhatsApp API gives you, how it fits with your systems, and the fastest way to start: code, no-code tools or a plugin.
Threadwire connects your own systems to WhatsApp through a WhatsApp number you already have. You link the number by scanning a QR code, as with WhatsApp Web: no Meta approval and no message templates. Then your code sends with one REST request, and we post every reply and delivery update to your webhook.
What you get
- Send any kind of message Text, images, documents, video, voice notes, stickers, locations, contact cards and polls, each with one request.
- Receive replies by webhook Every incoming message and status change, posted to your URL and signed. Or fetch them when you like.
- Your own numbers, linked by QR Link a number you already use, and add more as you grow. Each linked number is an instance.
- Protection for your number Optional pacing and limits that keep sending human, plus a safety score for each number.
- WhatsApp OTP Verify a phone number at sign-up or sign-in: by a link the person sends a code from, or a code you send.
- Safe broadcasts One message to many people who opted in, sent one at a time, with a stop that protects the number.
- Chats, contacts and groups Read chats and contacts, manage labels, and send to your groups and channels.
- An AI agent and a menu Answer people automatically, from what you tell the agent about your business, or with a menu of choices.
Some features come with some plans only: see Plans and limits.
How it works
- Your system calls the API with your key.
- Threadwire checks it, queues it and paces it.
- Your WhatsApp number sends it from the linked phone.
- Your customer reads it and replies.
The way back is the same in reverse. When someone replies, or a message is delivered or read, we post an event to your webhook URL.
| Word | What it means |
|---|---|
| Instance | One WhatsApp number linked to Threadwire. Requests name it by its ID, instance_id. |
| API key | Your system's password for the API, sent as Authorization: Bearer …. One per system. |
| Message | One message to one person, group or channel. Its status goes from queued to sent, delivered and read, or to failed with the reason in error. |
| Event | Something that happened, such as message.received or message.status. Posted to your webhook, or fetched with GET /v1/events. |
Every request goes to https://threadwire.net/api/v1. A send is answered 202 at once, and the message then goes out at a human pace.
Choose how to connect
- Quickstart Your first message and its reply in five steps, with code in cURL, PHP, Node.js and Python.
- API reference Every endpoint, with its fields, its answers and a button to try it.
- Laravel and Node.js packages Our own packages send, check webhook signatures and handle errors for you.
- n8n, Make and WooCommerce Workflows ready to import, an n8n node and a plugin for order updates. No code needed.
- Postman Every request ready to run, with sample files to send.
- AI agents (MCP) Let an AI assistant read your chats and send through your instances.
Prefer no code at all? Your panel at /app links numbers, answers chats as a team, sets auto-replies and runs broadcasts.
What you need
- A WhatsApp number on a phone you hold, on WhatsApp or WhatsApp Business. A number in daily use for months is safer than a new one.
- A Threadwire account. The trial lasts 7 days, and needs no card: sign up.
- To receive: a public
https://address that takes aPOST. No address yet? Fetch events withGET /v1/eventsinstead.
Good to know
Threadwire links a number the way WhatsApp Web does. It is not WhatsApp's official Business API, and it is not made or endorsed by WhatsApp or Meta. WhatsApp may restrict any number that sends messages people did not ask for. So write to people who expect you, and let them write first where you can.
Read How sending protects your number before you send to people who never wrote to you. Unsure which way suits you? Official API or a linked number? compares the two.