Quick start: send your first SMS
You need a VoidFix SMS account with at least one Android phone connected. If you haven't connected one yet, follow the Android device connection guide first.
-
Copy your API key from the portal
Log in to the SMS portal and open API in the left menu, or go straight to sms.voidfix.com/api.php. Copy the key shown there. Every request sends it as the
keyparameter. -
Find the ID of the device you'll send from
List the phones connected to your account and note the device ID you want to use.
curlcurl "https://sms.voidfix.com/services/get-devices.php?key=YOUR_API_KEY" -
Send a single SMS
Post a form-encoded request to
/services/send.phpwith your key, the recipient in international format, the message and the device ID.curlcurl -X POST "https://sms.voidfix.com/services/send.php" \ -H "Content-Type: application/x-www-form-urlencoded" \ --data-urlencode "key=YOUR_API_KEY" \ --data-urlencode "number=+15551234567" \ --data-urlencode "message=Hi Sam, your appointment is tomorrow at 10am." \ --data-urlencode "devices=YOUR_DEVICE_ID"The raw request looks like this:
HTTPPOST https://sms.voidfix.com/services/send.php Content-Type: application/x-www-form-urlencoded key=YOUR_API_KEY&number=+15551234567&message=Hi! Your appointment is tomorrow at 10am.&devices=215 -
Check the message status
Look the message up by its ID, or list messages by status, with
/services/read-messages.php. You can also watch it move from pending to delivered in the dashboard.curlcurl "https://sms.voidfix.com/services/read-messages.php?key=YOUR_API_KEY&id=MESSAGE_ID"
Base URL and authentication
- Base URL for SMS, MMS and iMessage:
https://sms.voidfix.com - Authentication: your account API key, passed as the
keyparameter on every request. Find it in the portal's API section. - Phone numbers: use international format, for example
+15551234567. - WhatsApp uses separate API keys from the WhatsApp portal. See WhatsApp API keys below.
Your API key gives full access to sending from your account. Keep it on your server and out of front-end code or public repositories.
SMS and MMS endpoints
| Endpoint | Method | What it does |
|---|---|---|
/services/send.php | POST | Send a single or bulk SMS/MMS |
/services/read-messages.php | GET | Get messages by ID, group ID or status |
/services/resend.php | POST | Resend messages by ID or group ID |
/services/manage-contacts.php | POST | Add a contact or unsubscribe a contact |
/services/get-devices.php | GET | List your connected devices |
/ajax/zapier/get-contacts-list.php | GET | Get your contact lists |
/ajax/services/create-contacts-list.php | POST | Create a contact list |
Send a single SMS or MMS
POST /services/send.php with these parameters:
| Parameter | Description |
|---|---|
key | Your API key |
number | Recipient phone number in international format, e.g. +15551234567 |
message | Message text. Spintax such as {Hi|Hello} is supported |
devices | Device ID(s) to send from |
schedule | Date and time to send the message later |
isMMS | true to send an MMS |
attachments | Media URL(s) for MMS |
prioritize | true to send ahead of the queue |
To send an MMS, add isMMS=true and the media URL in attachments:
curl -X POST "https://sms.voidfix.com/services/send.php" \
-H "Content-Type: application/x-www-form-urlencoded" \
--data-urlencode "key=YOUR_API_KEY" \
--data-urlencode "number=+15551234567" \
--data-urlencode "message=Here is your order photo." \
--data-urlencode "devices=YOUR_DEVICE_ID" \
--data-urlencode "isMMS=true" \
--data-urlencode "attachments=https://example.com/photo.jpg"Send bulk messages
The same endpoint sends many messages in one request. Instead of number and message, pass a messages array.
| Parameter | Description |
|---|---|
key | Your API key |
messages | Array of messages, each with number, message, type and attachments |
devices | Device ID or array of device IDs to send from |
schedule | Optional date and time to send later |
useRandomDevice | true to rotate sending across your devices |
option | Sending option |
prioritize | true to send ahead of the queue |
Each item in messages has this shape. Accepted type and option values are listed in the full SMS API reference.
{
"number": "+15551234567",
"message": "{Hi|Hello} Sam, your order has shipped.",
"type": "...",
"attachments": ""
}For large sends, spread the load across several SIMs with useRandomDevice, vary the wording with Spintax, and turn on Number Warmup for new numbers. Carriers can still filter or suspend a line that sends high volumes or unwanted messages, so send only to people who opted in.
Read, resend and manage contacts
- Read messages:
GET /services/read-messages.phpwithkeyplus one ofid,groupIdorstatus. When filtering by status you can adddeviceID,simSlot,startTimestampandendTimestamp. - Resend:
POST /services/resend.phpwithkeyand eitherid, orgroupIdwith astatus. Useful for messages that failed while a phone was offline. - Contacts:
POST /services/manage-contacts.phpwithkey,listIDandnumber. Addnameandresubscribeto add a contact, orunsubscribe=trueto opt a contact out. - Contact lists:
GET /ajax/zapier/get-contacts-list.phplists them, andPOST /ajax/services/create-contacts-list.phpwithkeyandnamecreates one.
iMessage API endpoints
The iMessage API uses the same base URL and API key. You need an active iMessage line, and each line can message up to 50 unique contacts per day.
| Endpoint | Method | What it does |
|---|---|---|
/services/send-imessage.php | POST | Send an iMessage with key, number, message and deviceID |
/services/read-imessage-by-guid.php | POST | Get a message by its ID (guid) |
/services/read-messages.php | POST | Get messages by status, optionally filtered by device and time range |
/services/resend.php | POST | Resend a message by id |
Request bodies, field types and a try-it console are in the iMessage API documentation.
WhatsApp API keys
WhatsApp runs in its own portal. Generate API keys at Tools, Keys in the WhatsApp portal (wa.voidfix.com/dashboard/tools/keys) and use them with GoHighLevel, Zapier, Make, Zoho, HubSpot or your own code. For custom WhatsApp API requirements, talk to the team.
Delivery status, replies and webhooks
Messages move through these statuses, which you can see in the dashboard and query with read-messages.php: pending, queued, scheduled, delivered and failed. A phone has to be online with the VoidFix service running to send and receive. If it goes offline, messages wait as pending or queued, and any that fail can be resent by ID or group ID.
Replies show up in your dashboard, and in your CRM if you use a native integration like GoHighLevel. Tools like Zoho and Make use a webhook or HTTP step to call send.php, as shown in the Zoho and Make guides. For webhook details beyond that, check the full SMS API reference or ask our team.
No-code and low-code guides
Full API references
- SMS and MMS API reference on sms.voidfix.com
- iMessage API documentation
- All integrations, including HubSpot, N8N, Pabbly and Bitrix24
Get help with your integration
Email support@voidfix.com (24/7) or open a ticket. Need an integration we don't have? Our development team can build custom integrations, so book a call to talk it through.