Developer hub

SMS and iMessage API: developer quick start

The VoidFix Gateway SMS and iMessage API lets you send texts, MMS and iMessages from your own code through the phones connected to your account. Get your API key, send your first SMS with one curl request, then use the endpoint tables below as your reference.

8 min readPublished 23 Oct 2026Base URL: https://sms.voidfix.com

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.

  1. 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 key parameter.

  2. 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.

    curl
    curl "https://sms.voidfix.com/services/get-devices.php?key=YOUR_API_KEY"
  3. Send a single SMS

    Post a form-encoded request to /services/send.php with your key, the recipient in international format, the message and the device ID.

    curl
    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=Hi Sam, your appointment is tomorrow at 10am." \
      --data-urlencode "devices=YOUR_DEVICE_ID"

    The raw request looks like this:

    HTTP
    POST 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
  4. 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.

    curl
    curl "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 key parameter 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

EndpointMethodWhat it does
/services/send.phpPOSTSend a single or bulk SMS/MMS
/services/read-messages.phpGETGet messages by ID, group ID or status
/services/resend.phpPOSTResend messages by ID or group ID
/services/manage-contacts.phpPOSTAdd a contact or unsubscribe a contact
/services/get-devices.phpGETList your connected devices
/ajax/zapier/get-contacts-list.phpGETGet your contact lists
/ajax/services/create-contacts-list.phpPOSTCreate a contact list

Send a single SMS or MMS

POST /services/send.php with these parameters:

ParameterDescription
keyYour API key
numberRecipient phone number in international format, e.g. +15551234567
messageMessage text. Spintax such as {Hi|Hello} is supported
devicesDevice ID(s) to send from
scheduleDate and time to send the message later
isMMStrue to send an MMS
attachmentsMedia URL(s) for MMS
prioritizetrue to send ahead of the queue

To send an MMS, add isMMS=true and the media URL in attachments:

curl
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.

ParameterDescription
keyYour API key
messagesArray of messages, each with number, message, type and attachments
devicesDevice ID or array of device IDs to send from
scheduleOptional date and time to send later
useRandomDevicetrue to rotate sending across your devices
optionSending option
prioritizetrue 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.

JSON
{
  "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.php with key plus one of id, groupId or status. When filtering by status you can add deviceID, simSlot, startTimestamp and endTimestamp.
  • Resend: POST /services/resend.php with key and either id, or groupId with a status. Useful for messages that failed while a phone was offline.
  • Contacts: POST /services/manage-contacts.php with key, listID and number. Add name and resubscribe to add a contact, or unsubscribe=true to opt a contact out.
  • Contact lists: GET /ajax/zapier/get-contacts-list.php lists them, and POST /ajax/services/create-contacts-list.php with key and name creates 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.

EndpointMethodWhat it does
/services/send-imessage.phpPOSTSend an iMessage with key, number, message and deviceID
/services/read-imessage-by-guid.phpPOSTGet a message by its ID (guid)
/services/read-messages.phpPOSTGet messages by status, optionally filtered by device and time range
/services/resend.phpPOSTResend 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

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.

Get an API key and start sending

Create your account, connect an Android phone and copy your API key from the portal. Stuck at any step? Our team will help on a call.