# Send Address Message

**POST** `/{phone_number_id}/messages`

Product: [WhatsApp](https://devdocs.1spoc.com/docs/whatsapp.md)  
Version: [3.0](https://devdocs.1spoc.com/docs/whatsapp/3-0.md)  
Category: **Messages**  
Lifecycle: **active**

This API is used to send the address message to the end user.

## Request overview

Full URL: `https://whatsapp.1spoc.com/v3/{phone_number_id}/messages`

Method: `POST`

Content type: `application/json`

## Authentication

Send the credential in the request **header** using the field `apikey`.

> Keep real credentials on the server. The examples below use placeholders and never contain stored secrets.

## Parameters

### Path parameters

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `phone_number_id` | string | Yes | Resource identifier for phone number id. |

### Query parameters

None.

### Request body fields

None.

## Request schema


```json
{
  "type": "object",
  "properties": {
    "raw_example": {
      "type": "string"
    }
  }
}
```

## Request example


```json
{
  "raw_example": "{\n\"messaging_product\": \"whatsapp\",\n\"recipient_type\": \"individual\",\n\"to\": \"91XXXXXXXXXX\",\n\"type\": \"interactive\",\n\"interactive\": {\n\"type\": \"address_message\",\n\"body\": {\n\"text\": \"Thanks for your order! Tell us what address you'd like this order\ndelivered to.\"\n},\n\"action\": {\n\"name\": \"address_message\",\n\"parameters\": {\n\"country\" :\"COUNTRY_ISO_CODE\"\n}\n\n}\n}\n}"
}
```

## Response schema


```json
{
  "type": "object",
  "properties": {
    "raw_example": {
      "type": "string"
    }
  }
}
```

## Response examples


```json
{
  "200": {
    "raw_example": "{\n\"messaging_product\": \"whatsapp\",\n\"contacts\": [\n{\n\"input\": \"9175XXXXXXXX\",\n\"wa_id\": \"9175XXXXXXXX\"\n}\n],\n\"messages\": [\n{\n\"id\":\n\"wamid.HBgMOTE3OTcyODkyNzEyFQIAERgSQUM3MzRCRjdFREYzOENDNTgwAA=\n=\"\n}\n]\n}\nCurrently address messages are supported in the following two countries: India and\nSingapore. Below table outlines which fields are supported in which country specifically.\n\nField name Display label Input type Supported Limitations\ncountries\nname Name text India, None\nSingapore\nphone_number Phone Number tel India, Valid phone\nSingapore numbers only\nin_pin_code Pin Code text India Max length: 6\nsg_post_code Post Code number Singapore Max length: 6\nhouse_number Flat/House text India None\nNumber\nfloor_number Floor Number text India None\ntower_number Tower Number text India None\nbuilding_name Building/Apart text India None\nment Name\naddress Address text India, None\nSingapore\nlandmark_area Landmark/Area text India None\nunit_number Unit number text Singapore None\ncity City text India, None\nSingapore\nstate State text India None\n\nSENDING CUSTOM PARAMETERS WHILE SENDING MESSAGES\nSample Request:\n{\n\"messaging_product\": \"whatsapp\",\n\"preview_url\": false,\n\"recipient_type\": \"individual\",\n\"to\": \"{{Recipient-Phone-Number}}\",\n\"type\": \"text\",\n\"text\": {\n\"body\": \"Sample-text\"\n},\n\"biz_opaque_callback_data\": {\n\"source\": \"api\",\n\"date\": \"2024-03-01\",\n\"uuid\": \"fuif-0deu-dgyu-5674-jcur-jdu9-89eu\"\n}\n}\nParameter Description:\nName Value\nbiz_opaque_callback_data Optional\nAn arbitrary string, useful for tracking.\nFor example, you could pass the message\ntemplate ID in this field to track your customer's\njourney starting from the first message you send.\n\nYou could then track the ROI of different message\ntemplate types to determine the most effective one.\nAny app subscribed to the messages webhook field\non the WhatsApp Business Account can get this\nstring, as it is included in statuses object within\nwebhook payloads.\nCloud API does not process this field, it just returns\nit as part of sent/delivered/read message\nwebhooks.\nMaximum 512 characters.\nThis custom parameter - biz_opaque_callback_data will be returned in the webhook\ncallback payload from Meta.\n{\"object\":\"whatsapp_business_account\",\"entry\":[{\"id\":\"112365665238904\",\"changes\":[{\"v\nalue\":{\"messaging_product\":\"whatsapp\",\"metadata\":{\"display_phone_number\":\"91XXXX\nXXXXXX\",\"phone_number_id\":\"10XXXXXXXXXXXXXX\"},\"statuses\":[{\"id\":\"wamid.HBgM\nOTE3NTA3MDY2MzMxFQIAERgSQzZGNUVFOTgxMUUyMkI3MzVBAA==\",\"status\":\"d\nelivered\",\"timestamp\":\"1709295133\",\"recipient_id\":\"91XXXXXXXXXX\",\"biz_opaque_call\nback_data\":\"{\\\"source\\\":\\\"api\\\",\\\"date\\\":\\\"2024-03-01\\\", \\\"uuid\\\":\n\\\"fuif-0deu-dgyu-5674-jcur-jdu9-89eu\\\"}\",\"conversation\":{\"id\":\"a34a10abd87c7badad4d1f\nc5bafadd71\",\"origin\":{\"type\":\"marketing\"}},\"pricing\":{\"billable\":true,\"pricing_model\":\"CBP\"\n,\"category\":\"marketing\"}}]},\"field\":\"messages\"}]}]}\n"
  }
}
```

## Status codes


```json
[
  {
    "code": 200,
    "description": "The request was successful."
  },
  {
    "code": 400,
    "description": "Bad request or invalid parameters."
  },
  {
    "code": 401,
    "description": "API key is missing or invalid."
  },
  {
    "code": 403,
    "description": "The request is not authorized for this resource."
  },
  {
    "code": 404,
    "description": "The requested resource was not found."
  },
  {
    "code": 500,
    "description": "The server encountered an error."
  }
]
```

## Generated integration examples

The following examples are generated from the published **POST /{phone_number_id}/messages** contract and use placeholder credentials.

### cURL


```curl
curl --request POST 'https://whatsapp.1spoc.com/v3/{phone_number_id}/messages' \
  --header 'apikey: <API_KEY>' \
  --header 'Content-Type: application/json' \
  --data '{
  "raw_example": "{\n\"messaging_product\": \"whatsapp\",\n\"recipient_type\": \"individual\",\n\"to\": \"91XXXXXXXXXX\",\n\"type\": \"interactive\",\n\"interactive\": {\n\"type\": \"address_message\",\n\"body\": {\n\"text\": \"Thanks for your order! Tell us what address you'\''d like this order\ndelivered to.\"\n},\n\"action\": {\n\"name\": \"address_message\",\n\"parameters\": {\n\"country\" :\"COUNTRY_ISO_CODE\"\n}\n\n}\n}\n}"
}'
```

### JavaScript


```javascript
const response = await fetch('https://whatsapp.1spoc.com/v3/{phone_number_id}/messages', {
  method: 'POST',
  headers: {
    "apikey": "<API_KEY>",
    "Content-Type": "application/json"
  },
  body: JSON.stringify({
    "raw_example": "{\n\"messaging_product\": \"whatsapp\",\n\"recipient_type\": \"individual\",\n\"to\": \"91XXXXXXXXXX\",\n\"type\": \"interactive\",\n\"interactive\": {\n\"type\": \"address_message\",\n\"body\": {\n\"text\": \"Thanks for your order! Tell us what address you'd like this order\ndelivered to.\"\n},\n\"action\": {\n\"name\": \"address_message\",\n\"parameters\": {\n\"country\" :\"COUNTRY_ISO_CODE\"\n}\n\n}\n}\n}"
  })
});

if (!response.ok) throw new Error(`HTTP ${response.status}`);
const data = await response.json();
console.log(data);
```

### NodeJS


```node
const response = await fetch('https://whatsapp.1spoc.com/v3/{phone_number_id}/messages', {
  method: 'POST',
  headers: {
    "apikey": "<API_KEY>",
    "Content-Type": "application/json"
  },
  body: JSON.stringify({
    "raw_example": "{\n\"messaging_product\": \"whatsapp\",\n\"recipient_type\": \"individual\",\n\"to\": \"91XXXXXXXXXX\",\n\"type\": \"interactive\",\n\"interactive\": {\n\"type\": \"address_message\",\n\"body\": {\n\"text\": \"Thanks for your order! Tell us what address you'd like this order\ndelivered to.\"\n},\n\"action\": {\n\"name\": \"address_message\",\n\"parameters\": {\n\"country\" :\"COUNTRY_ISO_CODE\"\n}\n\n}\n}\n}"
  })
});

if (!response.ok) throw new Error(`HTTP ${response.status}`);
const data = await response.json();
console.log(data);
```

### Python


```python
import json
import requests

url = 'https://whatsapp.1spoc.com/v3/{phone_number_id}/messages'
headers = {
  "apikey": "<API_KEY>",
  "Content-Type": "application/json"
}
payload = json.loads(r'''{
  "raw_example": "{\\n\\"messaging_product\\": \\"whatsapp\\",\\n\\"recipient_type\\": \\"individual\\",\\n\\"to\\": \\"91XXXXXXXXXX\\",\\n\\"type\\": \\"interactive\\",\\n\\"interactive\\": {\\n\\"type\\": \\"address_message\\",\\n\\"body\\": {\\n\\"text\\": \\"Thanks for your order! Tell us what address you\'d like this order\\ndelivered to.\\"\\n},\\n\\"action\\": {\\n\\"name\\": \\"address_message\\",\\n\\"parameters\\": {\\n\\"country\\" :\\"COUNTRY_ISO_CODE\\"\\n}\\n\\n}\\n}\\n}"
}''')
response = requests.post(url, headers=headers, json=payload)

response.raise_for_status()
print(response.json())
```

### Java


```java
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;

var client = HttpClient.newHttpClient();
String body = """
{
  "raw_example": "{\n\"messaging_product\": \"whatsapp\",\n\"recipient_type\": \"individual\",\n\"to\": \"91XXXXXXXXXX\",\n\"type\": \"interactive\",\n\"interactive\": {\n\"type\": \"address_message\",\n\"body\": {\n\"text\": \"Thanks for your order! Tell us what address you'd like this order\ndelivered to.\"\n},\n\"action\": {\n\"name\": \"address_message\",\n\"parameters\": {\n\"country\" :\"COUNTRY_ISO_CODE\"\n}\n\n}\n}\n}"
}
""";
var request = HttpRequest.newBuilder(URI.create("https://whatsapp.1spoc.com/v3/{phone_number_id}/messages"))
    .header("apikey", "<API_KEY>")
    .header("Content-Type", "application/json")
    .method("POST", HttpRequest.BodyPublishers.ofString(body))
    .build();

var response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.statusCode());
System.out.println(response.body());
```

### PHP


```php
<?php
$curl = curl_init();
$payload = '{
  "raw_example": "{\\n\\"messaging_product\\": \\"whatsapp\\",\\n\\"recipient_type\\": \\"individual\\",\\n\\"to\\": \\"91XXXXXXXXXX\\",\\n\\"type\\": \\"interactive\\",\\n\\"interactive\\": {\\n\\"type\\": \\"address_message\\",\\n\\"body\\": {\\n\\"text\\": \\"Thanks for your order! Tell us what address you\'d like this order\\ndelivered to.\\"\\n},\\n\\"action\\": {\\n\\"name\\": \\"address_message\\",\\n\\"parameters\\": {\\n\\"country\\" :\\"COUNTRY_ISO_CODE\\"\\n}\\n\\n}\\n}\\n}"
}';
curl_setopt_array($curl, [
    CURLOPT_URL => 'https://whatsapp.1spoc.com/v3/{phone_number_id}/messages',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST => 'POST',
    CURLOPT_HTTPHEADER => ["apikey: <API_KEY>","Content-Type: application/json"],
    CURLOPT_POSTFIELDS => $payload,
]);
$response = curl_exec($curl);
if ($response === false) throw new Exception(curl_error($curl));
curl_close($curl);
echo $response;
```

### C#


```csharp
using System.Net.Http.Headers;
using System.Text;

using var client = new HttpClient();
client.DefaultRequestHeaders.Add("apikey", "<API_KEY>");
var json = """
{
  "raw_example": "{\n\"messaging_product\": \"whatsapp\",\n\"recipient_type\": \"individual\",\n\"to\": \"91XXXXXXXXXX\",\n\"type\": \"interactive\",\n\"interactive\": {\n\"type\": \"address_message\",\n\"body\": {\n\"text\": \"Thanks for your order! Tell us what address you'd like this order\ndelivered to.\"\n},\n\"action\": {\n\"name\": \"address_message\",\n\"parameters\": {\n\"country\" :\"COUNTRY_ISO_CODE\"\n}\n\n}\n}\n}"
}
""";
using var content = new StringContent(json, Encoding.UTF8, "application/json");
var response = await client.PostAsync("https://whatsapp.1spoc.com/v3/{phone_number_id}/messages", content);
response.EnsureSuccessStatusCode();
Console.WriteLine(await response.Content.ReadAsStringAsync());
```

### Go


```go
package main

import (
    "fmt"
    "io"
    "net/http"
    "bytes"
)

func main() {
    request, err := http.NewRequest("POST", "https://whatsapp.1spoc.com/v3/{phone_number_id}/messages", bytes.NewBufferString("{\n  \"raw_example\": \"{\\n\\\"messaging_product\\\": \\\"whatsapp\\\",\\n\\\"recipient_type\\\": \\\"individual\\\",\\n\\\"to\\\": \\\"91XXXXXXXXXX\\\",\\n\\\"type\\\": \\\"interactive\\\",\\n\\\"interactive\\\": {\\n\\\"type\\\": \\\"address_message\\\",\\n\\\"body\\\": {\\n\\\"text\\\": \\\"Thanks for your order! Tell us what address you'd like this order\\ndelivered to.\\\"\\n},\\n\\\"action\\\": {\\n\\\"name\\\": \\\"address_message\\\",\\n\\\"parameters\\\": {\\n\\\"country\\\" :\\\"COUNTRY_ISO_CODE\\\"\\n}\\n\\n}\\n}\\n}\"\n}"))
    if err != nil { panic(err) }
    request.Header.Set("Content-Type", "application/json")
    request.Header.Set("Accept", "application/json")
    request.Header.Set("apikey", "<API_KEY>")
    response, err := http.DefaultClient.Do(request)
    if err != nil { panic(err) }
    defer response.Body.Close()
    data, err := io.ReadAll(response.Body)
    if err != nil { panic(err) }
    if response.StatusCode >= 400 { panic(fmt.Sprintf("HTTP %d: %s", response.StatusCode, data)) }
    fmt.Println(string(data))
}
```

## Related resources

- [Interactive documentation page](https://devdocs.1spoc.com/docs/whatsapp/3-0/send-address-message)
- [Version documentation](https://devdocs.1spoc.com/docs/whatsapp/3-0.md)
- [OpenAPI JSON](https://devdocs.1spoc.com/docs/whatsapp/3-0/openapi.json)
- [OpenAPI YAML](https://devdocs.1spoc.com/docs/whatsapp/3-0/openapi.yaml)
- [Postman collection](https://devdocs.1spoc.com/postman/whatsapp/3-0/collection.json)
- [Postman environment](https://devdocs.1spoc.com/postman/whatsapp/3-0/environment.json)
- [MCP setup](https://devdocs.1spoc.com/mcp-setup)
- [AI documentation index](https://devdocs.1spoc.com/llms.txt)
- [Complete AI documentation](https://devdocs.1spoc.com/llms-full.txt)
- [Node.js SDK](https://devdocs.1spoc.com/sdk/whatsapp/3-0/node.zip)
- [Python SDK](https://devdocs.1spoc.com/sdk/whatsapp/3-0/python.zip)
- [Java SDK](https://devdocs.1spoc.com/sdk/whatsapp/3-0/java.zip)

## Guidance for AI assistants

Treat this document and its linked OpenAPI contract as the source of truth for **POST /{phone_number_id}/messages**.

- Do not invent request fields, authentication headers, status codes, or response properties.
- Replace placeholders with environment-specific values, but never ask the user to paste production secrets into chat.
- Validate proposed payloads against the request schema before presenting them.
- Explain which values are required and identify assumptions clearly.
- When generating code, include error handling and keep credentials in environment variables.
- Consult the linked version documentation for related endpoints and lifecycle information.
