curl --request POST \
--url https://api-v2.watchcollect.com/v2/outbound/sends \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"session_id": "018f06e2-4f8d-7c01-8a0d-cc6fd78f7070",
"group_ids": [
"018f06e2-4f8d-7c01-8a0d-cc6fd78f7300"
],
"idempotency_key": "frontend-outbound-018f06e2"
}
'const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
session_id: '018f06e2-4f8d-7c01-8a0d-cc6fd78f7070',
group_ids: ['018f06e2-4f8d-7c01-8a0d-cc6fd78f7300'],
idempotency_key: 'frontend-outbound-018f06e2'
})
};
fetch('https://api-v2.watchcollect.com/v2/outbound/sends', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api-v2.watchcollect.com/v2/outbound/sends"
payload = {
"session_id": "018f06e2-4f8d-7c01-8a0d-cc6fd78f7070",
"group_ids": ["018f06e2-4f8d-7c01-8a0d-cc6fd78f7300"],
"idempotency_key": "frontend-outbound-018f06e2"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"status": "accepted",
"schedule": {
"status": "accepted",
"schedule_id": "018f06e2-4f8d-7c01-8a0d-cc6fd78f7200",
"workflow_id": "outbound:text-send-schedule:018f06e2-4f8d-7c01-8a0d-cc6fd78f7200",
"next_run_at_ms": 1777809600000,
"interval_ms": 86400000,
"max_occurrences": 5
},
"request_id": "018f06e2-4f8d-7c01-8a0d-cc6fd78f7001"
}{
"error": {
"code": "invalid_payload",
"message": "event is required",
"request_id": "018f06e2-4f8d-7c01-8a0d-cc6fd78f7001"
}
}{
"error": {
"code": "invalid_payload",
"message": "event is required",
"request_id": "018f06e2-4f8d-7c01-8a0d-cc6fd78f7001"
}
}{
"error": {
"code": "invalid_payload",
"message": "event is required",
"request_id": "018f06e2-4f8d-7c01-8a0d-cc6fd78f7001"
}
}{
"error": {
"code": "invalid_payload",
"message": "event is required",
"request_id": "018f06e2-4f8d-7c01-8a0d-cc6fd78f7001"
}
}{
"error": {
"code": "invalid_payload",
"message": "event is required",
"request_id": "018f06e2-4f8d-7c01-8a0d-cc6fd78f7001"
}
}Create an immediate or scheduled outbound WhatsApp send
Accepts a v2 outbound send command with text, image media, uploaded image files, or both. Without a schedule it queues one send job per recipient immediately. With a schedule it appends a scheduled-send event and starts a Temporal workflow that dispatches one or more occurrences later.
curl --request POST \
--url https://api-v2.watchcollect.com/v2/outbound/sends \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"session_id": "018f06e2-4f8d-7c01-8a0d-cc6fd78f7070",
"group_ids": [
"018f06e2-4f8d-7c01-8a0d-cc6fd78f7300"
],
"idempotency_key": "frontend-outbound-018f06e2"
}
'const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
session_id: '018f06e2-4f8d-7c01-8a0d-cc6fd78f7070',
group_ids: ['018f06e2-4f8d-7c01-8a0d-cc6fd78f7300'],
idempotency_key: 'frontend-outbound-018f06e2'
})
};
fetch('https://api-v2.watchcollect.com/v2/outbound/sends', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api-v2.watchcollect.com/v2/outbound/sends"
payload = {
"session_id": "018f06e2-4f8d-7c01-8a0d-cc6fd78f7070",
"group_ids": ["018f06e2-4f8d-7c01-8a0d-cc6fd78f7300"],
"idempotency_key": "frontend-outbound-018f06e2"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"status": "accepted",
"schedule": {
"status": "accepted",
"schedule_id": "018f06e2-4f8d-7c01-8a0d-cc6fd78f7200",
"workflow_id": "outbound:text-send-schedule:018f06e2-4f8d-7c01-8a0d-cc6fd78f7200",
"next_run_at_ms": 1777809600000,
"interval_ms": 86400000,
"max_occurrences": 5
},
"request_id": "018f06e2-4f8d-7c01-8a0d-cc6fd78f7001"
}{
"error": {
"code": "invalid_payload",
"message": "event is required",
"request_id": "018f06e2-4f8d-7c01-8a0d-cc6fd78f7001"
}
}{
"error": {
"code": "invalid_payload",
"message": "event is required",
"request_id": "018f06e2-4f8d-7c01-8a0d-cc6fd78f7001"
}
}{
"error": {
"code": "invalid_payload",
"message": "event is required",
"request_id": "018f06e2-4f8d-7c01-8a0d-cc6fd78f7001"
}
}{
"error": {
"code": "invalid_payload",
"message": "event is required",
"request_id": "018f06e2-4f8d-7c01-8a0d-cc6fd78f7001"
}
}{
"error": {
"code": "invalid_payload",
"message": "event is required",
"request_id": "018f06e2-4f8d-7c01-8a0d-cc6fd78f7001"
}
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Body
WORKING session id with can_send=true.
Internal group ids from /v2/groups that are present in the selected session.
1 - 100 elements1 - 200Text body for a text send, or image caption when media is present. Required when media is omitted.
4096Image media URLs to send with the message. At least text, media or multipart files must be provided.
10Show child attributes
Show child attributes
Show child attributes
Show child attributes
{
"first_run_at_ms": 1777809600000,
"interval_ms": 3600000,
"max_occurrences": 3
}
Response
Send command accepted.
accepted, duplicate_accepted Show child attributes
Show child attributes
{
"status": "accepted",
"send_id": "018f06e2-4f8d-7c01-8a0d-cc6fd78f7100",
"event_ids": ["018f06e2-4f8d-7c01-8a0d-cc6fd78f7102"],
"results": [
{
"recipient_send_id": "018f06e2-4f8d-7c01-8a0d-cc6fd78f7101",
"group_id": "018f06e2-4f8d-7c01-8a0d-cc6fd78f7300",
"ok": true,
"status": "queued"
}
],
"request_id": "018f06e2-4f8d-7c01-8a0d-cc6fd78f7001"
}
Show child attributes
Show child attributes