Integration

Send SMS from Zapier or Make, no code, from your own phone

A new booking in Calendly, a row in Google Sheets, a paid invoice: any trigger in Zapier or Make can end with a text from your paired Android phone. It is one HTTP action with a form payload, and the message costs nothing on top of your plan.

Form-encoded POST, JSON back, HTTP always 200. Read the status field.

  • 1 requestPOST /api/send/sms with secret, device, phone, message.
  • 0 per messageSends ride on the SIM plan of the phone you paired.
  • 5 secondsWebhook timeout for replies. Ack fast, work later.

lang_undefined

lang_undefined

lang_undefined · lang_undefined REST API

lang_undefined

  1. Pair an Android phone in your dashboard (Devices, Add device, scan the QR code) and copy its device ID.
  2. Create an API key under Tools, API Keys, with the sms_send permission (and wa_send for WhatsApp). Copy the secret into an environment variable; never into source.
  3. A Zapier or Make account. In Zapier use the Webhooks by Zapier action (Custom Request or POST); in Make use the HTTP module (Make a request).

lang_undefined

Four fields. The only one people get wrong is the payload type: it must be form, not JSON.

  1. Add your trigger (new booking, new row, new order).
  2. Add an action: Webhooks by Zapier, POST (Zapier) or HTTP, Make a request (Make).
  3. Fill the fields from the table below, mapping the phone and any names or times from the trigger.
  4. Test the step. You should see status 200 and a messageId in the response, and the text on your own phone if you used your number.

Fields, exactly.

FieldValue
URLhttps://sharksms.com/api/send/sms
MethodPOST
Payload typeform (Zapier: "Payload Type: form"; Make: "Body type: application/x-www-form-urlencoded")
Datasecret = your API secret · mode = devices · device = your device ID · sim = 1 · phone = the mapped phone field · message = your text with mapped fields

A successful test returns this. If you get status 400, the payload type is JSON or a field name is misspelled; if 401, the secret is wrong; if 404, the device ID is not one of yours.

{"status":200,"message":"Message has been queued for sending!","data":{"messageId":123}}

lang_undefined

Send to your own phone first. Then call GET /api/get/sms.message with the returned messageId and type=sent and watch it go queued, sent. If it stays queued, the paired phone is off, offline or battery-optimised; see the Android gateway page.

lang_undefined

  • The API reads a form body, not JSON. A JSON body is ignored and you get status 400 for missing parameters.
  • HTTP is always 200. Branch on the JSON status field, never on the HTTP status.
  • No deduplication. A retry after a timeout can send twice; record the messageId on success and check status before resending.
  • Phone numbers from spreadsheets often lose their leading + or 0. Use a Formatter step to normalise to international format (+15551234567) before the request.

Straight answers

Do I need an SDK?

No. It is one HTTPS POST with a form body. Any language that can make an HTTP request can send. The snippets on this page are complete.

Can my code receive replies?

Yes. Add a webhook under Tools, Webhooks and every incoming SMS or WhatsApp message is POSTed to your URL as a form body with the sender, the text and a timestamp. See the webhooks reference.

Can Zapier or Make receive replies too?

Yes. Create a Catch Hook trigger (Zapier) or a Custom webhook (Make), paste its URL into a SharkSMS webhook under Tools, Webhooks, and every incoming SMS or WhatsApp message starts a new run with the sender and text as fields.