Skip to main content
POST
cURL (Windows)
The playground on this page is live. There is no test mode and no sandbox: pressing Send authenticates with the key you paste and really calls https://api.bulkneo.com — a send delivers a real WhatsApp message to the number you type, and an instance call really changes your account. Use your own number while you are exploring, and paste a key only from a machine you trust.Your browser remembers what you type into the playground, so a key you paste here is still in the Authorization box on your next visit. Nobody else sees it — it never leaves your machine and it is not part of this site — but on a shared or borrowed computer, clear the site data when you are done.
“Here is our showroom.” “Your delivery agent is here.”

Notes

  • latitude must be between −90 and 90, longitude between −180 and 180. A JSON number or a numeric string both work — 21.1702 and "21.1702" are equivalent.
  • name and address are optional to you. Under the hood both are always sent, as empty strings if you omit them, because WhatsApp requires both fields to be present.
  • name is capped at 255 characters, address at 512.
  • This is a static pin, not live location sharing. There is no way to send a moving location that updates.

Example

Send the pin and a text message together — a pin alone gives no context. Many businesses send the address as text first, then the location.

Authorizations

apikey
string
header
required

Your API key, sent in an apikey request header. Never in the URL, never as a Bearer token.

Headers

Idempotency-Key
string

OPTIONAL. A unique string you choose, 8-255 characters of letters, digits or . _ : ~ -

Send the same key with the same body again within 24 hours and the ORIGINAL result is returned without sending a second message — which is what makes a network retry safe. A different body on the same key is refused with 422 idempotency_key_reused rather than silently overwriting either result.

Responses carry Idempotency-Replayed: true|false while this is active. If that header is ABSENT, idempotency is not enabled on this deployment and retries will send again.

Required string length: 8 - 255
Pattern: ^[A-Za-z0-9._:~-]{8,255}$

Body

application/json
instance_id
string<uuid>
required

Which of your connected numbers to send FROM. Copy it from your numbers screen in the portal, or from GET /v1/instances. It must belong to your account.

Example:

"3f9c1a2b-7d4e-4c81-9f0a-2b6d5e8c1a34"

to
string
required

The recipient, with country code and no leading zero — for example 919000000000. Spaces, dashes, brackets and a leading + are accepted and stripped; 6 to 15 digits must remain.

Example:

"919000000000"

latitude
number
required

Between -90 and 90. A numeric string such as "21.1702" is accepted too.

Required range: -90 <= x <= 90
Example:

21.1702

longitude
number
required

Between -180 and 180. A numeric string is accepted too.

Required range: -180 <= x <= 180
Example:

72.8311

name
string

Place name shown on the pin, for example your shop. Sent as an empty string when omitted.

Maximum string length: 255
Example:

"Our showroom"

address
string

Street address shown under the name. Sent as an empty string when omitted.

Maximum string length: 512
Example:

"Ring Road, Surat"

quoted_message_id
string

Send this message as a reply, quoting an earlier one. Use the data.message_id returned by a previous send.

Maximum string length: 128
Example:

"3EB0C1D2F4A5B6C7D8E9"

quoted_from_me
boolean
default:false

Set true when the quoted message is one you sent from this number. Only valid together with quoted_message_id.

Response

Accepted for delivery. data.type is always location on this endpoint.

success
boolean
data
object
request_id
string<uuid>