Send Location
Send a static geographic location to a chat.
Authentication Required
Login to swap the placeholders with your real Instance ID and Access Token.
Log InNo query parameters required
This endpoint doesn't expect data in the URL.
Best practices
Use "reply_to" to maintain conversation context.
Handle distinct message types (text, image, video) appropriately.
Implement a robust retry mechanism for failed sends.
Precision Positioning: Mastering the Geographic Location Engine
Location sharing is a powerful tool for bridging the gap between the digital conversation and the physical world. Whether you are helping a customer find a brick-and-mortar store, directing a delivery rider to a precise drop-off point, or organizing a physical meetup, the /v2/send/location endpoint provides a reliable way to send interactive map pins directly into a WhatsApp chat.
🏗️ The Geolocation Pipeline: From Data to Pin
When you call the /send/location endpoint, Wawp’s engine translates raw geographic data into a rich, interactive bubble on the recipient's phone:
- Coordinate Verification: The engine accepts
latitudeandlongitudeas decimal strings. It validates that these coordinates fall within the valid ranges (-90 to 90 for latitude, -180 to 180 for longitude). - Metadata Injection: The
titleandmessagefields are injected into the message's metadata. These don't just appear on the bubble; they are often used as the "Label" when the user clicks the pin and opens it in external apps like Google Maps or Waze. - Interactive Rendering: Wawp ensures the resulting message is rendered with a clickable map thumbnail. This thumbnail is generated by the WhatsApp network based on the coordinates provided, giving the user an instant visual "Context" of the surrounding area.
🛡️ Strategic Best Practices for Geographic Data
1. Decimal Precision (The Roof-Top Rule)
For location data, precision is everything.
- Developer Action: Use at least 6 decimal places for your coordinates (e.g.,
38.893725). This level of precision is accurate to approximately 0.1 meters—the difference between a pin landing on a building's roof and landing in the middle of a busy intersection. - Safety: Avoid rounding coordinates in your backend, as even slight changes in the 4th decimal place can shift a location by dozens of meters.
2. Crafting Meaningful Labels
The title and message fields are your chance to provide brand clarity.
- Title (Place Name): Use the name of the destination (e.g., "Grand Plaza Hotel - Main Entrance").
- Message (Context/Address): Use this for the specific address or helpful hints (e.g., "1st Floor, next to the fountain").
- UX Impact: High-quality labels reduce user anxiety and make the automated message feel deliberate and professional.
3. Static vs. Dynamic Locations
- Static Pins: This endpoint sends a Static Pin. It represents a specific "Snapshot" in space.
- Live Location: Note that Wawp currently focuses on static pins for high-concurrency business flows. If your use case requires a real-time moving dot (Live Location), we recommend combining static pins with regular text updates or external tracking links via
/v2/send/link-preview.
🧩 Advanced Use Cases
Last-Mile Delivery Support
In a delivery app, as soon as the rider clicks "Arrived," your system can automatically send the exact location pin to the customer. This enables the customer to open the pin in their preferred navigation app to cross-verify the rider's position, drastically reducing support calls.
Geo-Fenced Personalized Offers
If your system detects a user is near a specific retail branch, you can trigger an automated "Welcome" message that includes the location pin for that exact branch. Using the reply_to parameter, you can link this location to a specific discount coupon message, creating a highly relevant "Online-to-Offline" funnel.
🛠️ Common Pitfalls and Solutions
- Swapped Coordinates: Mixing up latitude and longitude is a common developer error that results in pins landing in the middle of the ocean. Always double-check your coordinate pairs.
- Blank Labels: Sending a location with an empty
titleoften results in a generic "Location" bubble. To maintain brand authority, always provide a descriptive title. - Coordinate Strings: Ensure you send the coordinates as strings through the API to prevent floating-point precision loss that sometimes occurs with JSON number types at high decimal counts.
Summary of Capabilities:
- Send interactive, clickable static map pins with custom titles and addresses.
- High-precision support for decimal coordinates (latitude/longitude).
- Seamless integration with Google Maps, Apple Maps, and Waze for the end-user.
- Support for complex thread-nesting via the
reply_toparameter. - Reliable success reporting with unique
message_idgeneration for full delivery tracking.
Request Parameters
Configure the parameters required to interact with this endpoint. All query and body arguments are listed below with their details.
Request Body
Sent as a JSON objectstring | Unique ID of the WhatsApp session Example: | ||
string | API access token Example: | ||
string | Recipient's WhatsApp number Example: | ||
string | Geographic latitude (e.g. 38.8937255) Example: | ||
string | Geographic longitude (e.g. -77.0969763) Example: | ||
string | Name of the place (e.g., 'Our Office') Example: | ||
string | Address or additional description text Example: | ||
string | — | Message ID to reply to Example: |
Request Samples
Use these ready-to-go code snippets to integrate our API into your project quickly and efficiently. Choose your preferred language and library.
Expected Responses
Explore all possible responses and outcomes from the server. We have documented each status code with data examples to make success and error handling easier.
Example
{
"_data": {
"id": {
"fromMe": true,
"remote": "000000000000@c.us",
"id": "MSG_ID_123456",
"_serialized": "true_000000000000@c.us_MSG_ID_123456"
},
"viewed": false,
"body": "BASE64_IMAGE_DATA",
"type": "image",
"t": 1759108866,
"from": {
"server": "c.us",
"user": "111111111111",
"_serialized": "111111111111@c.us"
},
"to": {
"server": "c.us",
"user": "000000000000",
"_serialized": "000000000000@c.us"
},
"ack": 0,
"isNewMsg": true,
"star": false,
"kicNotified": false,
"caption": "Here's your requested image.",
"deprecatedMms3Url": "https://example.com/media-url",
"directPath": "/media/direct/path/example",
"mimetype": "image/jpeg",
"filehash": "FILE_HASH_PLACEHOLDER",
"encFilehash": "ENC_FILE_HASH_PLACEHOLDER",
"size": 192487,
"mediaKey": "MEDIA_KEY_PLACEHOLDER",
"mediaKeyTimestamp": 1759108865,
"streamable": false,
"mediaHandle": null,
"isFromTemplate": false,
"pollInvalidated": false,
"isSentCagPollCreation": false,
"latestEditMsgKey": null,
"latestEditSenderTimestampMs": null,
"mentionedJidList": {
},
"groupMentions": {
},
"isEventCanceled": false,
"eventInvalidated": false,
"isVcardOverMmsDocument": false,
"isForwarded": false,
"isQuestion": false,
"questionReplyQuotedMessage": null,
"questionResponsesCount": 0,
"readQuestionResponsesCount": 0,
"labels": {
},
"hasReaction": false,
"disappearingModeInitiator": "chat",
"disappearingModeTrigger": "chat_settings",
"productHeaderImageRejected": false,
"lastPlaybackProgress": 0,
"isDynamicReplyButtonsMsg": false,
"isCarouselCard": false,
"parentMsgId": null,
"callSilenceReason": null,
"isVideoCall": false,
"callDuration": null,
"callCreator": null,
"callParticipants": null,
"isCallLink": null,
"callLinkToken": null,
"isMdHistoryMsg": false,
"stickerSentTs": 0,
"lastUpdateFromServerTs": 0,
"invokedBotWid": null,
"bizBotType": null,
"botResponseTargetId": null,
"botPluginType": null,
"botPluginReferenceIndex": null,
"botPluginSearchProvider": null,
"botPluginSearchUrl": null,
"botPluginSearchQuery": null,
"botPluginMaybeParent": false,
"botReelPluginThumbnailCdnUrl": null,
"botMessageDisclaimerText": null,
"botMsgBodyType": null,
"requiresDirectConnection": false,
"bizContentPlaceholderType": null,
"hostedBizEncStateMismatch": false,
"senderOrRecipientAccountTypeHosted": false,
"placeholderCreatedWhenAccountIsHosted": false,
"galaxyFlowDisabled": false,
"links": {
}
},
"mediaKey": "MEDIA_KEY_PLACEHOLDER",
"id": {
"fromMe": true,
"remote": "000000000000@c.us",
"id": "MSG_ID_123456",
"_serialized": "true_000000000000@c.us_MSG_ID_123456"
},
"ack": 0,
"hasMedia": true,
"body": "Here's your requested image.",
"type": "image",
"timestamp": 1759108866,
"from": "111111111111@c.us",
"to": "000000000000@c.us",
"deviceType": "android",
"isForwarded": false,
"forwardingScore": 0,
"isStatus": false,
"isStarred": false,
"fromMe": true,
"hasQuotedMsg": false,
"hasReaction": false,
"vCards": {
},
"mentionedIds": {
},
"groupMentions": {
},
"isGif": false,
"links": {
}
}Command Palette
Search for a command to run...