API Documentation
Full reference for every WALinkr endpoint
Overview
Send Messages
Message Actions
Groups
Contacts & Presence
Profile
Webhooks
Session & Usage

Getting Started

Every endpoint below lives under /api/* and works as either a GET (params in the query string) or a POST (params as JSON body) unless noted otherwise — pick whichever is easier to call from your language.

Authenticate every request with your API key, either as a query param or as a header:

?apikey=YOUR_API_KEY
X-Api-Key: YOUR_API_KEY

💡 Want to try requests live instead of reading examples? Use the API Playground.

Errors & Rate Limits

Errors are returned as JSON with an HTTP status code and a detail field, e.g. {"detail": "..."}.

StatusMeaning
400Missing or invalid required field(s).
401Missing or invalid API key.
429Rate limit exceeded — see the Retry-After response header for how long to wait.
502Could not reach the WhatsApp engine — try again shortly.

Sending is limited to a sustained 0.5 messages/second with a burst of 3, per account — this keeps your connected number in good standing with WhatsApp.

Send Text

GET / POST/api/send

Send a plain text message.

ParamRequiredDescription
torequiredRecipient number with country code, e.g. 923001234567
textrequiredMessage body
curl "http://www.walinkr.com/api/send?apikey=YOUR_KEY&to=923001234567&text=Hello!"

Send Image

GET / POST/api/send-image

Send an image from a public URL, with an optional caption.

ParamRequiredDescription
torequiredRecipient number
imagerequiredPublic image URL
captionoptionalCaption text
curl "http://www.walinkr.com/api/send-image?apikey=YOUR_KEY&to=923001234567&image=https://example.com/photo.jpg&caption=Nice!"

Send File

GET / POST/api/send-file

Send any document/file from a public URL.

ParamRequiredDescription
torequiredRecipient number
filerequiredPublic file URL
filenameoptionalFilename shown to the recipient
curl "http://www.walinkr.com/api/send-file?apikey=YOUR_KEY&to=923001234567&file=https://example.com/doc.pdf&filename=invoice.pdf"

Send Location

GET / POST/api/send-location

Share a map location.

ParamRequiredDescription
torequiredRecipient number
latrequiredLatitude
lngrequiredLongitude
titleoptionalLabel for the pin
curl "http://www.walinkr.com/api/send-location?apikey=YOUR_KEY&to=923001234567&lat=24.8607&lng=67.0011&title=Karachi"

Send Contact

GET / POST/api/send-contact

Send a vCard contact card.

ParamRequiredDescription
torequiredRecipient number
contact_namerequiredName shown on the card
contact_phonerequiredPhone number on the card
curl "http://www.walinkr.com/api/send-contact?apikey=YOUR_KEY&to=923001234567&contact_name=Ali+Khan&contact_phone=+923001234567"

Check Number on WhatsApp

GET / POST/api/check-number

Check whether a phone number is registered on WhatsApp before sending.

ParamRequiredDescription
phonerequiredNumber to check
curl "http://www.walinkr.com/api/check-number?apikey=YOUR_KEY&phone=923001234567"

React to a Message

GET / POST/api/react

Add an emoji reaction to a message you sent or received.

ParamRequiredDescription
message_idrequiredFull message ID, returned as messageId in a send response
reactionrequiredAn emoji, e.g. 👍
curl "http://www.walinkr.com/api/react?apikey=YOUR_KEY&message_id=true_923001234567@c.us_XXXXXXXX&reaction=👍"

Mark as Read

GET / POST/api/mark-read

Mark a message as seen (blue ticks).

ParamRequiredDescription
torequiredChat the message belongs to
message_idrequiredFull message ID
curl "http://www.walinkr.com/api/mark-read?apikey=YOUR_KEY&to=923001234567&message_id=true_923001234567@c.us_XXXXXXXX"

Edit Message

GET / POST/api/edit-message

Edit the text of a message you already sent.

ParamRequiredDescription
torequiredChat the message belongs to
message_idrequiredFull message ID
textrequiredNew message text
curl "http://www.walinkr.com/api/edit-message?apikey=YOUR_KEY&to=923001234567&message_id=true_923001234567@c.us_XXXXXXXX&text=Updated+text"

Delete Message

GET / POST/api/delete-message

Delete a message you sent (for everyone).

ParamRequiredDescription
torequiredChat the message belongs to
message_idrequiredFull message ID
curl "http://www.walinkr.com/api/delete-message?apikey=YOUR_KEY&to=923001234567&message_id=true_923001234567@c.us_XXXXXXXX"

List My Groups

GET/api/groups

List every group your connected number is a member of. No params needed besides apikey.

curl "http://www.walinkr.com/api/groups?apikey=YOUR_KEY"

Create Group

GET / POST/api/groups/create
ParamRequiredDescription
namerequiredGroup name
participantsrequiredComma-separated phone numbers
curl "http://www.walinkr.com/api/groups/create?apikey=YOUR_KEY&name=My+Group&participants=923001234567,923009876543"

Get Group Info

GET/api/groups/{group_id}

group_id is part of the URL path, e.g. 123456789@g.us.

curl "http://www.walinkr.com/api/groups/123456789@g.us?apikey=YOUR_KEY"

Join via Invite Code

GET / POST/api/groups/join
ParamRequiredDescription
coderequiredInvite code from a chat.whatsapp.com/... link
curl "http://www.walinkr.com/api/groups/join?apikey=YOUR_KEY&code=INVITE_CODE"

Preview Invite Code

GET/api/groups/preview

See a group's info before joining it.

ParamRequiredDescription
coderequiredInvite code
curl "http://www.walinkr.com/api/groups/preview?apikey=YOUR_KEY&code=INVITE_CODE"

Leave Group

GET / POST/api/groups/{group_id}/leave
curl "http://www.walinkr.com/api/groups/123456789@g.us/leave?apikey=YOUR_KEY"

Get Invite Code

GET/api/groups/{group_id}/invite-code

Returns {"code": "...", "link": "https://chat.whatsapp.com/..."}.

curl "http://www.walinkr.com/api/groups/123456789@g.us/invite-code?apikey=YOUR_KEY"

Revoke Invite Code

GET / POST/api/groups/{group_id}/invite-code/revoke

Invalidates the old link and generates a new one.

curl "http://www.walinkr.com/api/groups/123456789@g.us/invite-code/revoke?apikey=YOUR_KEY"

Set Group Subject

GET / POST/api/groups/{group_id}/subject
ParamRequiredDescription
subjectrequiredNew group name
curl "http://www.walinkr.com/api/groups/123456789@g.us/subject?apikey=YOUR_KEY&subject=New+Name"

Set Group Description

GET / POST/api/groups/{group_id}/description
ParamRequiredDescription
descriptionrequiredNew group description
curl "http://www.walinkr.com/api/groups/123456789@g.us/description?apikey=YOUR_KEY&description=Hello"

Get Contact Picture

GET/api/contact/picture
ParamRequiredDescription
phonerequiredContact's number
curl "http://www.walinkr.com/api/contact/picture?apikey=YOUR_KEY&phone=923001234567"

Start Typing Indicator

GET / POST/api/typing/start
ParamRequiredDescription
torequiredChat to show "typing..." in
curl "http://www.walinkr.com/api/typing/start?apikey=YOUR_KEY&to=923001234567"

Stop Typing Indicator

GET / POST/api/typing/stop
ParamRequiredDescription
torequiredChat to clear the indicator in
curl "http://www.walinkr.com/api/typing/stop?apikey=YOUR_KEY&to=923001234567"

Get Real-Time Online Status

GET/api/presence

Real-time online/typing/recording status only — expires within seconds, not the persistent "last seen at..." timestamp.

ParamRequiredDescription
torequiredContact to check
curl "http://www.walinkr.com/api/presence?apikey=YOUR_KEY&to=923001234567"

Get My Profile

GET/api/profile
curl "http://www.walinkr.com/api/profile?apikey=YOUR_KEY"

Set Display Name

GET / POST/api/profile/name
ParamRequiredDescription
namerequiredNew display name
curl "http://www.walinkr.com/api/profile/name?apikey=YOUR_KEY&name=My+Business"

Set Status / About

GET / POST/api/profile/status
ParamRequiredDescription
statusrequiredNew about/status text
curl "http://www.walinkr.com/api/profile/status?apikey=YOUR_KEY&status=Available"

Get Webhook URL

GET/api/webhook

Returns {"webhook_url": "..." | null}.

curl "http://www.walinkr.com/api/webhook?apikey=YOUR_KEY"

Set Webhook URL

GET / POST/api/webhook/set
ParamRequiredDescription
webhook_urlrequiredURL we POST incoming messages to
curl "http://www.walinkr.com/api/webhook/set?apikey=YOUR_KEY&webhook_url=https://your-app.com/webhook"

Remove Webhook

GET / POST/api/webhook/remove
curl "http://www.walinkr.com/api/webhook/remove?apikey=YOUR_KEY"

Incoming Payload Format

When someone messages your connected number, we POST the full event as JSON to your webhook URL. Try it live in the Webhook Demo.

{
  "event": "message",
  "session": "your_session",
  "payload": {
    "id": "true_923001234567@c.us_XXXXXXXX",
    "from": "923001234567@c.us",
    "fromMe": false,
    "body": "Hello!",
    "timestamp": 1717000000
  }
}

Connection Status

GET/api/status

Requires a logged-in session cookie (used by the dashboard) rather than an API key.

{"status": "WORKING", "engine": "NOWEB"}

Session Info

GET/api/session

Same as above, but authenticated with your API key and includes the connected phone number.

curl "http://www.walinkr.com/api/session?apikey=YOUR_KEY"
Example response
{"status": "WORKING", "engine": "NOWEB", "phone": "923001234567@c.us"}

Restart Session

GET / POST/api/session/restart

Forces a reconnect — use if your session gets stuck.

curl "http://www.walinkr.com/api/session/restart?apikey=YOUR_KEY"

Usage Stats

GET/api/usage

Message counts for today, this week, and all time, plus your success rate.

curl "http://www.walinkr.com/api/usage?apikey=YOUR_KEY"
Example response
{"today": 12, "week": 84, "total_sent": 512, "total_received": 201, "success_rate": 98.4, "daily": [...]}